之前发过一篇:涨跌幅度分级,使用 SVM 分类预测
https://uqer.io/community/share/57ff4e54228e5b3658fac3f5 ,受欢迎程度颇高哈。今天就再发一篇和机器学习相关的模型——利用 SVR 模型来预测股票开盘价。
一、策略概述
本策略主旨思想是利用 SVR 建立的模型对股票每日开盘价进行回归拟合,即把前一日的 ['openPrice','highestPrice','lowestPrice','closePrice','turnoverVol','turnoverValue'] 作为当日 'openPrice' 的自变量,当日 'openPrice' 作为因变量。 SVR 的实现使用第三方库 scikit-learn 。
二、 SVR
SVR 详情
SVR 参考文献见下方:
https://uqer.io/community/share/5646f635f9f06c4446b48126![](//i.v2ex.co/B3rk0J5Ol.png)
![](//i.v2ex.co/mD0owg6wl.png)
代码请参考:
https://uqer.io/community/share/5646f635f9f06c4446b48126三、 PS
原本使用前一天数据预测当天的,但在 Quartz 中,交易策略被具体化为根据一定的规则,判断每个交易日以开盘价买入多少数量的何种股票。回测不影响,但在使模拟盘时无法获取当天的 closePrice 等,所以将程序改为用地 n-2 个交易日的数据作为自变量,第 n 个交易日的 openPrice 作为因变量。
股票筛选的方法还很欠缺,本程序只用了'去除流动性差的股票'和'净利润增长率大于 1 的前 N 支股票'分别进行股票筛选测试,个人感觉都不很理想,还希望大牛们能提供一些有效的筛选方法。
对于股票指数来说,大多数时候都无法对其进行精确的预测,本策略只做参考。
期间发现通过 get_attribute_history 与 DataAPI.MktEqudGet 获取的数据中,有些股票的数据存在一些差异。
关于止损,同样的止损策略,在其他平台可以明显看到,但在 Uqer 感觉并不起作用,不知是不是代码编写存在错误?还望大牛指正。
程序写的有点乱七八糟的,还望大家见谅,多有不足还望指导!
References:
“ A Tutorial on Support Vector Regression ” Alex J. Smola, Bernhard Schölkopf -Statistics and Computing archive Volume 14 Issue 3, August 2004, p. 199-222
代码请参考:
https://uqer.io/community/share/5646f635f9f06c4446b48126
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/320386
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.