资讯专栏INFORMATION COLUMN

Python进阶量化交易场外篇2——线性回归拟合股价沉浮

loonggg / 261人阅读

摘要:由于线性回归作用于股票收盘价的整个周期,因此选择合适的时间段非常重要。在制定量化交易策略时有一种方式是寻找现象中的特征,根据特征去生成交易条件。

新年伊始,很荣幸笔者的《教你用 Python 进阶量化交易》专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习本专栏内容,因此同学们无需担心专栏内容在学习上的困难,更多的是明确自己学习的目的即可。当然笔者也欢迎同学们踊跃留言,说出自己想扩展的知识点,笔者会根据同学们的意愿选择性的推出一些内容。

本次场外篇笔者在专栏《22、股票交易策略开发:走势线性回归选股策略》的基础上对线性回归方法的策略应用做进一步的扩展介绍,同时会涉及到多个小节的知识内容,大家可以参考专栏内容。

这里我们顺带介绍下搭建环境中可能会遇到的问题,如果有同学是用mac系统开发的,在MAC中调试matplotlib时中文显示框框解决方法:
1、下载simhei.ttf字体库拷贝至matplotlib字体文件夹(Macintosh HD ▸ 用户 ▸ SHQ ▸ anaconda3 ▸ lib ▸ python3.7 ▸ site-packages ▸ matplotlib ▸ mpl-data ▸ fonts▸ ttf)。
2、同样在matplotlib/mpl-data/fonts目录下面修改配置文件matplotlibrc
font.family : sans-serif
font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus:False
3、在Python中运行如下代码重新加载字体使配置生效:
from matplotlib.font_manager import _rebuild
_rebuild() #reload

言归正传,在22小节中笔者选取了浙大网新、高鸿股份、开山股份、水晶光电四只股票的收盘价以线性回归的方式拟合出走势的角度,从而评估它们未来的趋势。

由于线性回归作用于股票收盘价的整个周期,因此选择合适的时间段非常重要。比如以高鸿股份为例,以下是它从2018年1月1日至今的走势图(参照股票《16、股票交易数据可视化:技术分析常用指标绘制》实现)。

从图中可以看到2018年4月10月是单边下降趋势,而从10月份开始转为上升趋势。那么我们分别对这两段周期做线性回归后发现,单边下降通道的拟合直线角度为-0.97度,而上升通道拟合直线角度为1.5度,股价的拟合直线角度从-0.97度至1.5度的转变过程,其实也是由跌转涨的过程。


在制定量化交易策略时有一种方式是寻找现象中的特征,根据特征去生成交易条件。那么这里给大家一个衍生的策略思路,既然线性回归作用于股票收盘价的整个周期,前后两段完全相反的周期会彼此作用,最终影响拟合的角度值,我们可以设定窗口期用移动窗口的方式拟合股票的走势。

在22小节的FactorPickStockAng类中增加一个方法,代码如下:

def fit_price(self, symbols, cycle=30, show=True):
        
    for index, stockName in enumerate(symbols.keys()):
            
        #kl_pd = getdata #参考fit_pick()方法,此处略

        kl_pd.fillna(method="bfill", inplace=True) 
           
        for kl_index in np.arange(0, kl_pd.shape[0]):
                
            if kl_index >= cycle:
                    
                kl_pd.loc[kl_pd.index[kl_index], "ang"], x, reg_y_fit, y_arr = self.calc_regress_deg(kl_pd.Close[kl_index-cycle:kl_index])                 
                print(kl_pd.index[kl_index],kl_pd.iloc[kl_index, kl_pd.columns.get_loc("ang")])
            
        if show:
                
            kl_pd.fillna(method="bfill", inplace=True)    
            plt.plot(np.arange(0, len(kl_pd.index)), kl_pd.ang)
  
     plt.title("compare ang")
        
     plt.legend(symbols.keys(), loc="best")
        
     plt.show()

执行该代码examp_trade.fit_price(pick_stocks)可生成浙大网新、高鸿股份、开山股份、水晶光电四只股票的收盘价移动线性回归曲线图,可以发现角度曲线的拐点预示开始反转为新一轮的走势。

在《16、股票交易数据可视化:技术分析常用指标绘制》小节的基础上把移动线性回归拟合曲线增加到显示界面中,箭头所指示的位置作为买卖点目前来看是有一定的盈利特征的,不过此处只是为了扩展大家的思路达到教学目的而设定的策略,大家可以在这个基础上展开更多股票和周期的回测以验证策略的可靠性。更多的量化交易内容欢迎大家订阅专栏阅读!!

更多python量化交易内容互动请加微信公众号:PythonQT-YuanXiao

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43153.html

相关文章

  • Python进阶量化易场外篇3——最大回撤评价策略风险

    摘要:我们知道投资是有风险的,那么如何去衡量这个风险呢最大回撤率就是一种直观的将风险切实量化的指标。最大回撤率计算公式当日收盘价当日之前最高价最高价最低价最高价。显而易见,最大回撤率越小越好,因为回撤与风险成正比,回撤越大,风险也就越高。 新年伊始,很荣幸笔者的《教你用 Python 进阶量化交易》专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外...

    lcodecorex 评论0 收藏0
  • 「数据游戏」:使用 ARIMA 算法预测三日后招商银行收盘价

    摘要:作者天琼,数据游戏优胜队伍成员介绍本文整理记录了参与的一次小型数据分析竞赛数据游戏,竞赛目标是预测年月日股闭市时招商银行的股价。日发现的数据有错误,需要手工矫正日该数据恢复正常。而函数,是对样本外的数据进行预测。 作者:天琼,「数据游戏」优胜队伍成员 介绍 本文整理记录了参与的一次小型数据分析竞赛「数据游戏」,竞赛目标是预测2019年5月15日A股闭市时招商银行600036的股价。 主...

    xcc3641 评论0 收藏0
  • 「数据游戏」:使用 ARIMA 算法预测三日后招商银行收盘价

    摘要:作者天琼,数据游戏优胜队伍成员介绍本文整理记录了参与的一次小型数据分析竞赛数据游戏,竞赛目标是预测年月日股闭市时招商银行的股价。日发现的数据有错误,需要手工矫正日该数据恢复正常。而函数,是对样本外的数据进行预测。 作者:天琼,「数据游戏」优胜队伍成员 介绍 本文整理记录了参与的一次小型数据分析竞赛「数据游戏」,竞赛目标是预测2019年5月15日A股闭市时招商银行600036的股价。 主...

    Nino 评论0 收藏0
  • 使用机器学习和深度学习技术预测股票价格

    摘要:我们将使用多种机器学习算法来预测该公司的未来股票价格,从平均算法和线性回归等简单的算法开始,然后转向和等高级技术。开盘价和收盘价列表示股票在特定日期交易的起始和最终价格。 showImg(https://segmentfault.com/img/remote/1460000019112609); 介绍 预测股市的走势是最困难的事情之一。影响预测的因素很多 - 包括物理因素与心理因素,理...

    iliyaku 评论0 收藏0
  • 使用机器学习和深度学习技术预测股票价格

    摘要:我们将使用多种机器学习算法来预测该公司的未来股票价格,从平均算法和线性回归等简单的算法开始,然后转向和等高级技术。开盘价和收盘价列表示股票在特定日期交易的起始和最终价格。 showImg(https://segmentfault.com/img/remote/1460000019112609); 介绍 预测股市的走势是最困难的事情之一。影响预测的因素很多 - 包括物理因素与心理因素,理...

    vvpvvp 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<