楼主: _wallstreetcat_
4990 2

[程序化交易] 寻找不一样的指标:量化择时研究【附源码】 [推广有奖]

  • 0关注
  • 36粉丝

讲师

9%

还不是VIP/贵宾

-

威望
0
论坛币
98 个
通用积分
40.7754
学术水平
14 点
热心指数
13 点
信用等级
13 点
经验
6402 点
帖子
257
精华
0
在线时间
234 小时
注册时间
2017-3-16
最后登录
2023-11-21

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
一、背景介绍

1989年John R.Koza提出了遗传编程算法(Genetic Programming),该算法属于进化计算(Evolutionary Computation,EC)模型的一种。

GP算法通过模拟生物基因遗传,遵循物竞天择,适者生存的自然规律进化实现目标函数的最优化。

种群中每个个体通过适应度函数fitness(例如夏普比率、跟踪误差等)来评估其基因的优劣,通过对个体基因的复制、交叉等操作生成新的个体从而实现种群的进化。

这个进化过程重复进行,直到指定的迭代代数或者最优的个体被找到。



二、算法流程




种群(Population) :生进化是以群体的形式进行的,在量化研究中即表达式的集合(类似于技术指标库),比如{close_0/open_0+0.1 , (ta_sma_5_0+abs(close_0))*3};

个体(Individual) :组成种群的独立单个物种,在量化研究中对应着一个表达式(类似于技术指标),比如 close_0/open_0+0.1,在GP算法中表达式可以通过树形结构表达。

例如下图为表达式X0×X0−3×X1+0.5的树形结构表达:





染色体(Chromosome) :包含一组基因,个体由多个染色体组成,在量化研究中即因子,比如close_0,open_0;

基因(Gene) :可用于遗传的因子,并且携带特有的适应能力的信息,在量化研究中即表达式的值和组成表达式的各项因子和运算符,比如close_0/open_0+0.1在每一天的计算值和’close_0’、‘open_0’、‘0.1’、’/’、’+’ 。

交叉(Crossover) :个体之间交换染色体,交叉繁殖遗传基因,形成新的个体,例如:



复制(reproduction) :复制优秀的个体,遗传基因,例如下图中的优秀个体的左支表达式(灰色部分)被复制给新的个体:



变异(Mutation) :根据一定概率基金突变,增强基因的多样性,例如:



进化(Evaluation) :根据优胜劣汰原则,通过计算适应度函数(例如夏普比率、跟踪误差等),保留适应度高的精英优秀个体到下一代种群,淘汰劣类的本代种群的其余个体。

三、GP算法在股票市场中的应用

在传统技术分析中,人们构造了很多统计量来描述或拟合股票的价格走势,如MA、MACD等技术指标,这些指标都可以看作是一篮子因子和一篮子操作符的表达式组合。

因子集合:open、close、high、low、returns、volume、随机数等。操作符集合:+、-、*、/、rank等。适应度函数:因子ICIR、Sharp、Return等。

通过GP算法,我们可以根据一个因子集合和一个操作符集合随机组合生成海量的表达式,通过这些表达式计算指标值,利用指标值按照一定的规则产生买卖交易信号,进而回测出净值曲线。

根据净值曲线计算出夏普比率等统计量作为优化的目标函数(即适应度函数),筛选适应度最大的表达式并不断交叉、变异、进化,从而实现最优化目标函数。

四、策略流程

本文策略在bigquant平台AI可视化模板的基础上建立,使用遗传编程Gplearn开源库,针对个股开展了表达式的寻优。

关于Gplearn库中函数的调用方法和各参数的含义可以参考开源项目:

http://gplearn.readthedocs.io/en/latest/


本文策略中选取的参数如下:

适应度函数:使用总收益率和夏普比率两个适应度函数分别进行测试


股票标的:600000.SHA

  • 遗传代数:15
  • 每代的种群大小:200
  • 精英群大小:20
  • 变异率:0.05
  • 杂交率:0.75
  • 训练集:2017-01-01~2018-01-01
  • 验证集:2018-01-01~2018-05-01a




五、回测结果

1. 总收益率作为适应度函数的结果:

可以看到,进化14代后最优结果收敛到一个长度为6的表达式:

mul(min(abs(X1), X13), X1)



测试集上的收益率曲线如下图:





2. 夏普比率作为适应度函数的结果: 可以看到,进化14代后最优结果收敛到一个长度为9的表达式:

mul(log(sub(sqrt(sqrt(X11)), log(X12))), X1)




测试集上的收益率曲线如下图:





六、参考文献


七、附录
策略完整代码:可视化策略-遗传规划(GP)择时策略》

本文由BigQuant《量化研究每周精选》原创推出,版权归BigQuant所有,转载请注明出处。

《量化研究每周精选》每周一期,为大家提精选研报、前沿研究、热门文章等优质内容。

欢迎投稿 (i@bigquant.com)。













二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:量化择时 择时研究 Reproduction introduction Evolutionary

沙发
lwell20 发表于 2018-7-13 06:35:05 |只看作者 |坛友微信交流群
鸡屁股上栓绳子!!!!!!

使用道具

藤椅
oppy 发表于 2018-7-15 10:27:27 |只看作者 |坛友微信交流群
看不到图片

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 18:53