算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型

单只股票的Buy-Sell时间点的选择模型

上回书说到,如何抓取A股股票数据进行趋势和可视化分析。今天讲讲单只股票的Buy-Sell时间点的选择模型。

公号推送后有朋友说你抓的数据和趋势图表,如果有股市分析软件这些分析功能都有,你玩的有什么用呢?——公号留言

嘿嘿,真让你说着了,还真是对一般炒股者没用,但对学习Python软件还是有用的,况且有没有用也要针对不同的人来说,比如如果你学会了分析股票,用同样的思想可以分析任何时间序列的数据集,方法论或许是一样的,你总要先展示你有这种能力。特别是对学生在学习阶段评价一个知识点不是用有用无用来简单评估的。

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型

俺拍的一张日落

接下来我们看看能否变得有点用,分析多只股票的投资组合模型。

首先我们要假设你的投资策略:

1-你投入股票一笔资金,这里假设100万人民币;

2-你有选对的多只股票用于相对长线的投资策略——股票篮子;

3-你设定的相对长线的预期盈利目标,收益=10%;

4-你有设定的相对长线的止损底线,止损=20%——亏损20%就抛掉股票;

俺不炒股也不太懂股票,这里目的还是告诉大家用Python如何玩玩,建模啥的。所以我找人告诉我假设的10只股票,作为我们测试的股票篮子。

600050中国联通,600519贵州茅台,002186全聚德,600085同仁堂,000002万科A,601398工商银行,000917电广传媒,600030中信证券,000027深圳能源,000665湖北广电

这篇文章先玩玩如何测算一只股票的Buy-Sell时间点;——下一篇讲多只投资组合

股票交易策略是什么?

1-长线还是短线:这里我们期望一个相对长线的投资策略(至少在我们模型期足够长的周期以上);

2-看多的市场预期:多头市场预期是股票上涨趋势,你会选择融资高价抛售,期望值:预期收益没上限,但至少没用亏损,因为股票市值不可能变为零(排除利息、停牌、退市极端情况);

3-看空的市场预期:看空市场预期意味着可以从券商融券,当股票跌到一定价位,高价位融券抛售,低价赎回获取利润。预期值:收益有限,但损失无限。如果你花了大笔钱购买,股票没用直线下跌的话。

基于以上假设,我们开始设定股票Buy-Sell策略,这里我们采用简单的移动平均Moving Average进行建模。

相关文章:http://www.investopedia.com/articles/active-trading/052014/how-use-moving-average-buy-stocks.asp

The strategy is:

  • Trade the asset when the fast moving average crosses over the slow moving average.
  • Exit the trade when the fast moving average crosses over the slow moving average again.

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型

Sell-卖信号:如果短期移动平均的均线(20d)与长期移动平均均线(50d)交叉点后位于下方时卖出Sell股票,抛售——俗称死叉(Dead Cross)——红色尖头

Buy-买信号:如果短期移动平均的均线(20d)与长期移动平均均线(50d)交叉点后位于上方时表征买出Buy股票,购入——俗称金叉(Gold Cross)——绿色尖头。

这里我们以20d和50d天的移动平均作为案例进行预测建模。

我们还是通过pandas-datareader包先获取2016年贵州茅台600519.SS股票数据。

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型
接下来我们计算该只股票的20d和50d的移动平均,20d我们称为短线-快线,50d我们称为长线-慢线。

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型
从上图我们看2016年下半年出现了两个交叉点(先死叉,后金叉)

我们计算20d与50d移动平均值的差值

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型

我们通过判别20d-50d的差值给出判断状态:

(Regime:1=牛市看涨,0=不交易,-1=熊市看跌)
算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型
图中看到三个状态点,请对应上面的阴阳烛图趋势看。

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型
计算一下看到,贵州茅台股票在2016年出现了166日牛市,36个日熊市,49日平盘的趋势预测。

下面是关键,我们需要定义Buy-Sell的信号,生成Signal列

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型
这里注意两点:1-我们要设定Regime字段的最后一行为零,以保证交易的截止。2-我们让Regime列下行错位一行,用Shift(1)功能,然后Regime与Regime.shift(1)相减表示Signal:

(Signal:1=Buy,0=不交易,-1=Sell)

在251个交易日中,明显出现四个买卖信号点

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型
我们看看四个信号点的交易情况:

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型
我们基于收盘价,将买卖信号标示成为Buy-Sell

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型
如果按照上述策略,在长线投资情况下,选择某日买入至某日卖出后的股价每股盈亏或盈利是:

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型
我们用阴阳烛图看看结果:

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型

至此我们基本上完成了一只股票——贵州茅台的Buy-Sell投资时间点模型,但是我们应该知道,我们不该把所有的鸡蛋放在一个篮子里,也不会傻到只是在最晚时间点交易,而应该选择最低股票价格点交易,所以在移动平均线下的最低交易日更理想。

这里需要大家理解移动平均的原理,不仅有选择k-周期的移动平均方法,加权移动平均等,还有指数平滑复杂些的移动平均技术,下图是SPSS的不同移动平均技术。

算计股票 | 用Python玩玩A股某股票确定Buy-Sell时间点模型

好了,至于10支股票的投资组合Buy-Sell模型,且听下回分解!

来源:沈浩老师(微信公众号:artofdata)

本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。

(0)
沈浩老师的头像沈浩老师专栏
上一篇 2016-12-15 19:24
下一篇 2016-12-22 12:00

相关文章

关注我们
关注我们
分享本页
返回顶部