基于数据挖掘框架下的策略公式生成器

财富   2024-08-08 10:16   美国  

转载自

基于数据挖掘框架下的策略公式生成器 - Kulolo的文章 - 知乎

https://zhuanlan.zhihu.com/p/711602814


普通CTA策略或者择时策略的决策过程,本来就可以简化为一颗颗决策树…….

而研发CTA策略的过程,本质上也就是寻找/建立一颗颗决策树的过程。



算法原理:

设立目标函数:夏普率/收益风险比/收益率/复合算法

思想:用数据挖掘的手段,替代人工迭代CTA的过程。

前期准备:1,算子公式池,穷举自己或他人的交易经验,将各类价量指标的公式跟使用方式列出来,数量越多,可行解的空间越大,挖掘效果也越好。

2,设定公式组合框架,其实就是如何从这边算子公式中,组合成完整的交易流程。这里也是跟据交易者的个人交易经验来设定,本文只以最简单的‘与或非’组合为例。

原理:运用改进过的Gplearn框架,将公式算子简化到(-1,0,1)状态,通过遗传规划算法让其随机组合、遗传、编译、迭代,遗传算法的适应度为如收益风险比之类的。

开仓变量准备:

技术指标-ROC、RSI、MACD、CCI、EMA、WR、KDJ、MOM、CMO、DMA、SAR、OBV、

DMI、ABO、ADX、TRIX、CMF、MFI、Stochastic Oscillator……..

通道-布林通道、海龟通道、开盘区间、肯特纳通道、斐波那契通道、ADX通道、伍尔夫通道………

变量用法:

>、<、>阈值、<阈值、突破上轨、突破下轨………….

逻辑判断:

与、或、非、是/否

状态:

空仓/持仓、亏损/盈利、持仓周期数、入场价

止盈止损:

盈利/亏损x%、盈利/亏损x*ATR、价格低于/高于y周期最高/最低价、价格高于/低于形态点位

仓位管理:

价值等权、ATR等权、波动率等权

公式组合框架设计



如,算法生成公式demo1:

and(open_signal_keltner_100, and(open_signal_CCI_100,open_signal_bias_250))

vol_amount_atr

or(or(close_signal_bias_150, close_signal_v_factor_150),stop_signal_3%)

公式解读:

开多条件:clsoe上穿 keltner上轨 且 CCI>100 且 bias>5%

开空条件:clsoe下穿keltner下轨 且 CCI<-100 且 bias<-5%

开仓量:value*0.01/ATR

平多条件:bias<-5% or close< v_factor_up

平空条件:bias>5% or close> v_factor_dm

止损条件:开仓价亏损3%

止盈条件:无



依此类推:

Demo2:

and(or(and(open_signal_boll_second_200, open_signal_boll_dul_150), open_signal_boll_250), not(and(open_signal_mfi_percent_250, open_signal_macd_200)));

vol_amount_bod;

or(or(close_signal_p_score_250,and(yes(close_signal_high_mean_250), close_signal_v_factor_250)) ,stop_signal_2atr);

Demo3:

or(not(or(yes(open_signal_bias_150), open_signal_resistance_200)), and(open_signal_boll_wma_250, open_signal_ma_slope_200));

vol_amount_bod;

or(and(not(close_signal_single_ema_150), yes(close_signal_single_t3_250)), stop_signal_open10);

发布于 2024-07-29 18:18・IP 属地广东


数据挖掘



量化交易与策略


赞同 167 条评论

分享

喜欢收藏申请转载

写下你的评论...


7 条评论

默认

最新

持元

这和决策树有什么区别吗,不能把这个流程优化到决策树上面吗

22 小时前 · 中国香港

回复喜欢

Kulolo

作者

没区别,一些CTA策略就是可以简化成决策树,决策树可以通过算法批量迭代来生成,那同样的,CTA策略也可以

20 小时前 · 广东

回复喜欢

恐龙宝宝

体量大了之后不能单纯用-1-0-1的方法决定持仓,很多时候都是动态的

07-30 · 上海

回复喜欢

Kulolo

作者

是的,简单的CTA用(-1,0,1)作为各个公式的信号进行组合可以,复杂CTA策略结构这些是不够的

07-30 · 广东

回复喜欢

秋叶予

我做过类似的研究,似乎难点还是怎么进行仓位管理

07-30 · 安徽

回复喜欢

唐士翔

大佬,不太懂遗传算法gplearn怎么实现开仓条件量平仓条件的筛选和组合

07-29 · 北京

回复喜欢

Kulolo

作者

最简单的做法,就是先让这些条件简化到(-1,0,1)状态里,这样子Gplearn进行组合的时候就能够从(-1,0,1)这些状态里得到交易信号了;复杂的做法,需要对Gplearn算法本身进行大量改进,这个工程量就很大了

人工智能与量化交易算法知识库
黄含驰的人工智能、优化与量化交易算法知识库,干货满满,不容错过!
 最新文章