股票价格会经历周期性的下跌和上涨。我们将观察股价收益率的概率分布。
首先需要下载某只股票(例如AAPL)的历史数据,然后计算其收盘价的日收益率( http://en.wikipedia.org/wiki/Rate_of_return)。因为在之前的攻略中已详细介绍,所以这里省略了相关的步骤。
准备工作
如有必要,请先安装Matplotlib和SciPy。
具体步骤
有趣的部分来了!
- 计算突破和回调位置。
假设我们想每年交易五次,即大约每50天交易一次。一种策略是在股价回调的时候(下跌一定的百分比时)买入,在股价突破的时候(上涨一定的百分比时)卖出。
根据我们选定的交易频率设置适当的百分位数,换算出与之匹配的收益率。使用SciPy中的scoreatpercentile
函数,具体实现如下。
- 生成买入点和卖出点。
使用NumPy的compress
函数,利用收盘价数据生成买入点和卖出点。该函数依据给定条件确定索引位置并返回这些索引对应的数组元素。
也许是出于简化代码的考虑,这段代码不能保证卖出点一定会晚于买入点。
如果选择AAPL(苹果公司),交易周期设定为50天,输出如下。
可见,如果我们买卖AAPL股票五次,将获得24美元的收益。
- 绘制收益率直方图。
使用Matplotlib,为收益率数据绘制直方图。
得到如下的直方图。
本攻略的完整代码如下。
小结
compress
函数返回一个数组,其中包含了输入数组中满足指定条件的元素。输入数组的内容保持不变。