一个IT人的金融梦(K8量化模型简介)

时光飞逝,一晃眼十年就过去了。07年底,想去金融行业做开发,从matlab到python,从网络爬虫、语义分析、大数据到现在的深度学习,从证券业资格到投资分析师认证,绕了一大圈。一觉醒来,还在IT圈。

闲话不说,一直想做个软件,现在总算是完成了。这些年零零碎碎的想法,凑成下面这张图:

各模块主要功能是:

1. 准备数据:

虽然从类似tushare网站可以获取相关数据,但在深度和广度上,不能很好满足自己的想法,所以干脆自己造车了。

1)通过爬虫软件从几个主要的财经网站获取资料并进行校验,包括交易数据、基本面数据、宏观数据、机构研报、资金面数据、舆情消息等;

2)建立股票和相应指数、行业的关联;

3)处理交易数据和其他数据的时间匹配问题;

2. 识别因子:

1)计算因子变量:可自定义因子的计算脚本,脚本公式选自文华和通达信软件,重新实现了一遍;

2)打标签:绝对值方式或相对值方式;

3)做截面处理;

4)标准化处理:均值-标准差方式或排序值方式;

5)样本抽样:按时间维度或个股进行抽样;

6)特征变量降维:PCA模型;

3. 选股模型:

选股方式包含以下几种,可进行模型的自由组合,实现择时与选股:

1)技术指标选股:传统技术指标,比如均线组合、KDJ、MACD等,也可以通过公式脚本进行自定义;

2)普通算法:包括KNN、SVM、DT、贝叶斯等分类算法,以及AdaBoost、GradientBoost、RandomForest等强化算法;

3)深度学习:包括CNN、LSTM模型;

4)模型的评价指标:综合考虑召回率和准确率

4. 风控模型:

基于选股模型的结果,计算组合权重,可采用三种方式,最终得到带权重的组合清单:

1)平均权重;

2)运用二次规划模型,设定约束条件(如收益目标、组合风险、个股权重、行业权重等),根据组合风险协方差矩阵,优化组合权重:

  A. 在一定的组合风险下,获得最大收益;

  B. 在一定的组合收益下,取得最小风险;

3)模型的评价指标:由所有截面期组成的简易分析结果,包括年化收益率、最大回撤比和信息比率

5. 回测模型:

根据风控模型的结果,逐日进行模拟交易:

1)可以通过公式脚本自定义止盈、止损条件;

2)可以设定杠杆比率、手续费、滑点;

3)消除停牌、涨跌停等干扰因素,使得回测模型更加贴近实盘。

4)模型的评价指标:最终得到包括年化收益率、最大回撤比、信息比率、夏普比率在内的50个统计指标。

6. 技术环境:

1)平台环境:阿里云ECS云服务器

2)主机环境:Ubuntu系统

3)开发语言:Python为主,Shell、SQL、Javascript、H5

4)数据采集:Scrapy框架

5)数据存储:MySQL、Hdfs文件系统

6)数据分析:Sklearn、Scipy、Keras+Tensorflow

7)数据展示:后端Matplotlib,前端ECharts

8)WEB服务:Flask+Gunicorn+Nginx

7. 其他:

针对以上3、4、5三个环节,采用了遗传算法进行优化,可逐层优化、也可以组合起来优化。

基本上,整个软件就是这个逻辑架构。目前软件已经完成,后续工作就是寻找更广泛的数据、希望能找到更多的有效因子。

第一次写博文,感谢hylas的鼓励!在此,也要推荐他的两篇博文:

深度神经网络在量化交易里的应用

用深度网络(LSTM)预测5日收盘价格

原文地址:https://www.cnblogs.com/kuai8/p/7920997.html