【Python量化投资】基于技术分析研究股票市场

金融专业人士以及对金融感兴趣的业余人士感兴趣的一类就是历史价格进行的技术分析。维基百科中定义如下,金融学中,技术分析是通过对过去市场数据(主要是价格和成交量)的研究预测价格方向的证券分析方法。

下面,我们着重对事后验证过去市场数据的研究,而不是过多低关注对未来股价变动的预测。我们选取的研究目标是标准普尔(S&P)500指数,这是美国股票市场有代表性的指标,包括了许多著名公司的股票,代表着高额的市场资本,而且,该指数也具有高流动性的期货和期权市场。

我们将从Web数据来源读取历史指数水平信息,并未一个基于趋势信号的交易系统实现简单的事后验证。但是,首先需要数据才能开始工资,这里我们主要靠pandas库,因为NumPy库比较常用,所以还是把该库导入。

(PS:除NumPy和SciPy,pandas也是Python的重要库之一)

这里DataReader函数来自pandas.io.data,可以用来从不同数据来源,尤其是雅虎财经网站上获取金融数据。

这里我们读取了从2000年的第一个交易日到结束日期的S&P500指数事件序列数据,而且自动地用TimeStamp对象生成一个时间索引。

收盘价的时间序列图如下:

所以先在pandas DataFrame对象上添加一个新列,用于两个趋势之间的差值。

此处的趋势策略是基于两个月(42个交易日)和一年(252个交易日)的趋势(也就是两种期间指数水平的移动平均数)。Pandas可以高效地生成各个时间序列。

首先先生成趋势数据:

现在数据已经已经完整,开始设计一条规则来生成趋势信号。规则如下:

买入信号(多头):

42天趋势第一次高于252天趋势SD点。

等待(持币):

42天趋势在252天趋势的+/-SD点范围内。

卖出信号(空头):

42天信号第一次低于252天趋势SD点。

Pandas数值运算通常以向量方式进行,这样可以取两列的全部差值:

在最后一个可用交易日上,42日趋势线远远高于252趋势线。尽管两个趋势列中的项目数量不相等,pandas通过在相应的指数位置放入NaN处理这种情况:

现在生成我们的投资机制,此处假定信号阈值为50:

即在1489个交易日中,42日趋势线高于252日趋势线SD个点以上,1232个交易日中,42日趋势线低于252日趋势线SD个点以上。所以,如果短期趋势线与长期趋势线交叉,它很可能在持续一段时间,即所谓的投资机制。图形如下:

至此,测试基于信号投资策略所需的数据都已准备就绪。为简化,假定投资者可以直接投资于指数或者直接做空指数,现实中要通过指数基金、交易所交易基金或者指数期货完成。这也会造成一些交易成本。因为不打算频繁交易,所以此处忽略交易成本。

根据投资机制,投资者可以选择做空、做多市场指数,或者持币观望。这种简化策略使我们只注意市场收益。当投资者做多时形成市场收益(1),做空时形成负的市场收益(-1),持币时不行成任何市场收益(0)。所以,需要先计算对数收益率。其中,shift方法按照所需指数输入项数量移动时间序列----这里,每移动一个交易日,就能得到每日的对数收益率:

而基于趋势的投资策略的收益,将Regime列乘以下一天的Returns列(用“昨天”的头寸得出今天的收益):

所以比较指数累计持续收益和我们所用策略的累积持续收益即可:

原文发布于微信公众号 - 量化投资与机器学习(ZXL_LHTZ_JQXX)

原文发表时间:2016-10-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器人网

4个步骤教你全面了解工业机器人基础知识

一篇文章4个表格教你看懂工业机器人基础知识,一个视频让你不再是机器人小白。看完本文,系统了解工业机器人! 机器人的分类 关于机器人如何分类,国际上没有制定统一...

28340
来自专栏大数据文摘

快讯 | Reddit关闭Deepfakes论坛,遏制“非自愿换脸情色”

49040
来自专栏企鹅号快讯

用照片也能追踪手机?人脸识别迎来“终结者”

就像世界上没有两片相同的雪花,你用手机拍摄的每张照片也是独一无二的。布法罗大学的研究人员掌握了一种方法,可以通过分析照片来追踪拍摄的手机,这项研究为身份验证提供...

29050
来自专栏Data Analysis & Viz

知乎上8个100K+高赞回答(筛选自63万个回答)

最近知乎首页上老是看到这个话题:《知乎上的高票答案就是好的吗?》,很好奇目前高赞回答都有哪些?各有多少赞同数?于是继续这些天爬知乎数据的节奏,以大小V主页的回答...

13230
来自专栏大数据文摘

基于大数据技术的手机用户画像与征信研究

29430
来自专栏企鹅号快讯

基于深度学习的人脸识别技术谜与思之莫辨雌雄

前言 年关将至,诸事缠身,今晚难得闲暇,可以静下心来继续我们的人工智能验证之旅。 就让我们先从性别识别开始吧。 困惑 雄兔脚扑朔, 雌兔眼迷离; 双兔傍地走, ...

248100
来自专栏PPV课数据科学社区

技术贴:大数据告诉你,如何给微信公众号文章取标题?

267个新闻时政类自媒体公号在11月23日—11月29日(周日—周六)的统计周期里共发表了1447篇文章。此次我们选择其中的1000篇文章作为样本进行分析。 ?...

34140
来自专栏达观数据

漆桂林 | 知识图谱的应用

本文首发于知乎专栏知识图谱和智能问答 作者简介 漆桂林:东南大学计算机系教授,发表高质量学术论文40多篇。特别是在国际人工智能顶级会议IJCAI, AAAI和K...

70470
来自专栏PPV课数据科学社区

好文丨数据挖掘界领军人物谢邦昌:深度剖析Data Mining

有问题直接微信我吧! 大家好,PPV课大数据微信开通了人工客服,大家有问题可以在工作时间:9:00-18:00直接通过微信与客服联系! ? 谢邦昌 深度剖析Da...

33670
来自专栏大数据钻研

如何考评一名前端工程师?

「如何考评」这个词看起来「diǎo * 2」的。虽然标题看起来很有逼格,但对于我这种面试(他人)经验用一个手就能数出来的菜鸟来说,谈这个话题还为时过早。(我感到...

27360

扫码关注云+社区

领取腾讯云代金券