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

下面,我们着重对事后验证过去市场数据的研究,而不是过多低关注对未来股价变动的预测。我们选取的研究目标是标准普尔(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列(用“昨天”的头寸得出今天的收益):

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

【Python量化投资】基于技术分析研究股票市场的更多相关文章

  1. Python量化投资知识总结贴

    Ricequant 量化社区的初衷让各位爱好量化的人士可以碰撞思维,在分享和争辩中学习到有用且实战的量化知识.有赖于各位在社区中贡献满满的干货以及有质量的讨论,从编程入门教学到技术指标再到多因子选股. ...

  2. 量化投资技术分析工具---ipython使用

    量化投资实际上就是分析数据从而做出决策的过程python数据处理相关模块NumPy:数组批量计算pandas:灵活的表计算Matplotlib:数据可视化 学习目标:用NumPy+pandas+Mat ...

  3. 推荐学习《Python与量化投资从基础到实战》PDF及代码+《量化投资以Python为工具》PDF及代码

    利用python分析量化投资问题是现在研究的热点,推荐两份资料用于学习 <Python与量化投资:从基础到实战>主要讲解如何利用Python进行量化投资,包括对数据的获取.整理.分析挖掘. ...

  4. Python与金融量化分析----金融与量化投资

    一:金融了解 金融:就是对现有资源进行重新的整合之后,进行价值和利润的等效流通. 金融工具: 股票 期货 黄金 外汇 基金 ............. 股票: 股票是股份公司发给出资人多的一种凭证,股 ...

  5. Python金融应用编程(数据分析、定价与量化投资)

    近年来,金融领域的量化分析越来越受到理论界与实务界的重视,量化分析的技术也取得了较大的进展,成为备受关注的一个热点领域.所谓金融量化,就是将金融分析理论与计算机编程技术相结合,更为有效的利用现代计算技 ...

  6. 《Python与量化投资:从基础到实战》PDF高清完整版-PDF|网盘下载附提取码

    本书主要讲解如何利用Python进行量化投资,包括对数据的获取.整理.分析挖掘.信号构建.策略构建.回测.策略分析等.本书也是利用Python进行数据分析的指南,有大量的关于数据处理分析的应用,并将重 ...

  7. 基于802.11Fuzz技术的研究

    转自安全客 关于无线的Fuzz最开始接触了解时,国内基本毛线都搜不到.经过几个月的资料搜集和学习,将大约全网的fuzz资料整理翻译分析并读懂写下,就为填补国内空白,也希望无线爱好者能多多交流. 在各个 ...

  8. 1、量化投资—为什么选择Python?

    Python在量化领域的现状 就跟Java在web领域无可撼动的地位一样,Python也已经在金融量化投资领域占据了重要位置,从各个业务链条都能找到相应的框架实现. 在量化投资(证券和比特币)开源项目 ...

  9. python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据

    python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据 最近工作太忙了,有一个星期没有更新文章了,本来这一期打算分享一些对龙虎榜数据的分析结果的,现在还没有把数据内的价值很好 ...

随机推荐

  1. sed使用笔记

    1.在匹配行前后添加内容 i a sed -i -r '/Processrun.sh/a01 00 * * * /data/scripts/nginx/ngx_logcut.sh' /var/spoo ...

  2. ZZNU 2125:A + B 普拉斯(傻逼题+大数加法)

    2125: A + B 普拉斯 时间限制: 1 Sec  内存限制: 128 MB 提交: 94  解决: 28 [提交] [状态] [讨论版] [命题人:admin] 题目描述 "别人总说 ...

  3. HUD 1969:Pie(二分)

    Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  4. python 获取excel文件的所有sheet名字

    当一个excel文件的sheet比较多时候, 这时候需要获取所有的sheet的名字. xl = pd.ExcelFile('foo.xls') xl.sheet_names # see all she ...

  5. string str将str转字符数组以及字符数组初始化

    c和指针(<pointers on c>) 8.1.11 一个字符串,如"hello",一般为字符串常量,可以用它对字符指针赋值,或初始化,相当于把这个字符串常量的首地 ...

  6. oracle 、sql server 、mysql 复制表数据

    我们知道在oracle 中复制表数据的方式是使用 create table table_name as select * from table_name 而在sql server  中是不能这么使用的 ...

  7. idea中,war 与 war exploded 区别

    idea中,war 与 war exploded 区别: war模式:将WEB工程以包的形式上传到服务器 : war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器:其实访问的是 ...

  8. 49个你应该了解的Android Studio技巧、插件与资源 http://www.apkbus.com/blog-822721-72630.html (出处: 安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户)

    49个你应该了解的Android Studio技巧.插件与资源http://www.apkbus.com/blog-822721-72630.html(出处: 安卓巴士 - 安卓开发 - Androi ...

  9. Oracle的静默安装 升级和卸载 参考规范

    Oracle的静默安装 升级和卸载 参考规范 20180912 V1 一.Oracle的安装 Oracle产品的三种安装方式分别为: 1.图形化(Java向导)安装引导 2.使用应答文件静默安装 3. ...

  10. OOD与OOP的思想的感悟

    Walking on water and developing software from a specification are easy if both are frozen) -Edward V ...