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

我们将从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列(用“昨天”的头寸得出今天的收益):

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

往期精彩阅读链接

直接点击,查看往期精彩文章

听说,置顶关注我们的人都不一般

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值