金融市场量化交易的好处就像制造业中机器人替代手工操作,但在进行量化交易前需要做好量化分析。
下面将利用github上面的一个stocker模块进行基本的股票价格量化分析,本文只涉及到股票价格的预测分析介绍,没有交易策略和成型的模型。
本文要点:
I 介绍stocker模块运行环境的配置; II 调用模块中的方法来分析和预测股票价格
配置stocker模块运行环境
我是在pycharm+anaconda 平台上运行代码, 另外 由于stocker 模块中部分库需要手动安装,如quandl, pytrends, pystan, fbprophet这些库,因而在调用stocker模块前需要自己安装这些模块, 具体安装过程请参考我的另一篇博文:pycharm 使用小技巧---方便快捷获取python安装库
安装好这些库后,新建一个项目文件,最好是在jupter notebook中运行代码, 咱为了方便查询,将所有的代码放在一个quantitative_analysis.py文件中,另外建议将stocker.py 和新建的项目文件放在同一目录下,这样方便直接导入。
调用模块进行量化分析
导入模块 from stocker import Stocker
获取高盛公司历史股价(1999-05-04至今),并画图
goldman= Stocker("GS")
goldman.plot_stock()
最近一年股价和预测值对比 ,结果是预测值明显偏离实际值。
goldman.evaluate_prediction()
为了搜寻最佳预测模型,通过调整变点先验(Changepoint Prior)尺度参数对模型进行分析和评估,以便寻找最佳优化参数模型
goldman.changepoint_prior_analysis(changepoint_priors=[0.001,0.05,0.1,0.2])
goldman.changepoint_prior_validation(start_date="2016-01-04",end_date="2017-01-03",changepoint_priors=0.001,0.05,0.1,0.2])
根据上面两图的分析评估结果,发现取0.1为最佳参数,赋值给模型,
changepoint_prior_scale=0.1
接下来将利用最佳参数模型做简单的交易策略,策略要求如下:
1. 当模型预测股价会上涨的那一天,我们开始买入,并在一天结束时卖出;当模型预测股价下跌时,我们就不买入任何股票;
2. 如果我们买入的股票的价格在当天上涨,那么我们就把股票上涨的幅度乘以我们购买的股票数量;
3. 如果我们买入的股票价格下跌,我们就把下跌的幅度乘以股票的数量,计作我们的损失。
该策略买入1000股的效果如下:
goldman.evaluate_prediction(nshares=1000)
未来10天或3个月(66天)股价预测
goldman.predict_future(days=10)
goldman.predict_future(days=66)
全部合并代码文件可以参考github, 此处采用最佳参数优化模型在最近一年内量化交易的效果居然略好于持股策略,估计有巧合的成分。
本文借鉴公众号文章,原文:https://mp.weixin.qq.com/s/yqSo8nF9fCDzuBREHsx1Cg