动量择时策略

动量策略开发Log

todo:1,卖点:对私募和公墓进行择时,而非长期持有,销售希望卖长期持有多赚钱和单一资产/策略有下跌期,存在利益冲突,不是为了客户利益最大化。

Log:
1,20240523,从“-量化策略”中将动量策略回测迁移过来。


动量策略



0,数据如代码列表

20240523,quote目录从C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\ 转到 C:\rc_2023\rc_202X\data_pms\wind_terminal\


代码文件地址:C:\rc_2023\rc_202X\data_pms\wind_terminal\quote\0list_code.xlsx

>
序号 代码 名称 类型 日最优参数 期末净值 最大回撤 年化收益率 是否日频 是否30分钟 是否属于组合 备注
0 510300.SH 沪深300ETF 市场 1.7648 -0.2371 1.0508 1 0.0 1.0 股票指数基金
1 513010.SH 恒生科技30ETF 风格 nan nan nan 1 1.0 1.0 海外指数基金
2 159967.SZ 创业板成长ETF 风格 nan nan nan 1 1.0 1.0 股票指数基金
3 588080.SH 科创板50ETF 市场 nan nan nan 1 1.0 nan 股票指数基金
4 510500.SH 中证500ETF 市场 nan nan nan 1 1.0 nan 股票指数基金
5 512100.SH 中证1000ETF 市场 nan nan nan 1 1.0 1.0 股票指数基金
6 513050.SH 中概互联网ETF 市场 nan nan nan 1 0.0 nan 海外指数基金
7 513100.SH 纳指ETF 市场 nan nan nan 1 0.0 1.0 海外指数基金
8 513500.SH 标普500ETF 市场 nan nan nan 1 0.0 1.0 海外指数基金
9 510380.SH 国寿300ETF 转债 nan nan nan 1 0.0 nan 股票指数基金
10 159992.SZ 创新药ETF 行业 nan nan nan 1 1.0 1.0 股票指数基金
11 512480.SH 半导体ETF 行业 nan nan nan 1 1.0 1.0 股票指数基金
12 510880.SH 红利ETF 风格 nan nan nan 1 1.0 1.0 股票指数基金
13 161028.OF 新能源车LOF 行业 nan nan nan 1 0.0 0.0 股票指数基金
14 159869.SZ 游戏ETF 行业 1.9683 -0.2352 1.2846 1 0.0 1.0 股票指数基金
15 511380.SH 可转债ETF 转债 1.1482 -0.1389 1.0336 1 0.0 nan 债券基金
16 889033.WI 万得可转债等权指数 转债 nan nan nan 1 1.0 nan 债券
17 T.CFE 10年期国债期货 期货 1.2686 -0.0669 1.0265 1 1.0 nan 债券
18 TL.CFE 30年期国债期货 期货 1.1087 -0.0324 1.11 1 1.0 nan 债券
19 CU.SHF SHFE铜 期货 11.7291 -0.3704 1.0881 1 0.0 nan 商品期货基金
20 AU.SHF SHFE黄金 期货 2.2102 -0.4791 1.0494 1 0.0 nan 商品期货基金
21 AG.SHF SHFE白银 期货 1.2493 -0.2535 1.0188 1 0.0 nan 商品期货基金
22 RB.SHF SHFE螺纹钢 期货 2.1226 -0.2659 1.0512 1 0.0 nan 商品期货基金
23 I.DCE DCE铁矿石 期货 6.8966 -0.2783 1.2019 1 0.0 nan 商品期货基金
24 LC.GFE GFEX碳酸锂 期货 1.072 -0.1068 1.0985 1 0.0 nan 商品期货基金
25 SC.INE INE原油 期货 2.0232 -0.3903 1.1232 1 0.0 nan 商品期货基金
26 RU.SHF SHFE橡胶 期货 1.846 -0.5823 1.0214 1 0.0 nan 商品期货基金
27 JM.DCE DCE焦煤 期货 4.523 -0.5835 1.146 1 0.0 nan 商品期货基金
28 LH.DCE DCE 生猪 期货 1.1241 -0.1278 1.0364 1 0.0 nan 商品期货基金
29 Y.DCE DCE豆油 期货 2.0703 -0.5262 1.0406 1 0.0 nan 商品期货基金
30 M.DCE DCE豆粕 期货 7.6762 -0.4356 1.0894 1 0.0 nan 商品期货基金
31 P.DCE DCE棕榈油 期货 3.624 -0.2745 1.0813 1 0.0 nan 商品期货基金
32 SR.CZC CZCE白糖 期货 1.1097 -0.1601 1.0057 1 0.0 nan 商品期货基金
33 JD.DCE DCE鸡蛋 期货 0.9723 -0.0612 0.9973 1 0.0 nan 商品期货基金
34 IF.CFE 沪深300期货 期货 1.9353 -0.4937 1.0483 1 0.0 nan 股票指数期货
35 IC.CFE 中证500期货 期货 1.349 -0.2445 1.0338 1 0.0 nan 股票指数期货
36 IH.CFE 上证50期货 期货 1.0937 -0.2094 1.01 1 0.0 nan 股票指数期货
37 IM.CFE 中证1000期货 期货 1.1019 -0.0498 1.0575 1 0.0 nan 股票指数期货
38 N225.GI 日经225 指数 nan nan nan 1 nan nan 海外
39 SPX.GI 标普500 指数 nan nan nan 1 nan nan 海外
40 164808.OF 工银四季收益A 基金 nan nan nan 1 nan nan 绩优债券基金
41 519702.OF 交银趋势优先A 基金 nan nan nan 1 nan nan 绩优股票基金
42 002943.OF 广发多因子 基金 nan nan nan 1 nan nan 绩优股票基金
43 001532.OF 华安文体健康主题A 基金 nan nan nan 1 nan nan 绩优股票基金
44 166301.OF 华商新趋势优选 基金 nan nan nan 1 nan nan 绩优股票基金
45 002363.OF 华安安康A 基金 nan nan nan 1 nan nan 绩优灵活配置基金,比较像2股8债
46 000385.OF 景顺长城景颐双利A 基金 nan nan nan 1 nan nan 绩优偏债混合基金
47 161716.OF 招商双债增强C 基金 nan nan nan 1 nan nan 绩优纯债基金
48 002245.OF 泰康稳健增利A 基金 nan nan nan 1 nan nan 绩优纯债基金
49 510880.OF 红利ETF 基金 nan nan nan 1 0.0 nan 股票指数基金
50 159980.SZ 有色ETF 基金 2.1095 -0.172 1.1841 1 0.0 nan 商品期货基金
51 006961.OF 南方7-10年国开债A 基金 1.3652 -0.0492 1.0611 1 0.0 nan 纯债指数基金
52 513050.OF 易方达中证海外互联ETF 基金 1.279 -0.2391 1.0339 1 nan nan 海外股票指数基金
53 513180.SH 恒生科技指数ETF 基金 1.0879 -0.1684 1.0285 1 nan nan 海外股票指数基金
54 8884057.WI TAMAMA科技指数 基金 17.2802 -0.4198 1.2678 1 nan nan 海外股票指数基金
55 511520.SH 政金债券ETF 基金 nan nan nan 1 nan nan 纯债指数基金
56 513300.SH 纳斯达克ETF 基金 1.8663 -0.1056 1.1891 1 nan nan 海外股票指数基金
57 513500.SH 标普500ETF 基金 4.0176 -0.2009 1.1429 1 nan nan 海外股票指数基金
58 1810.HK 小米集团-W 个股 nan nan nan 1 nan nan 重要个股
59 3690.HK 美团-W 个股 nan nan nan 1 nan nan 重要个股
60 0700.HK 腾讯控股 个股 nan nan nan 1 nan nan 重要个股
61 300750.SZ 宁德时代 个股 nan nan nan 1 nan nan 重要个股
62 9988.HK 阿里巴巴-SW 个股 nan nan nan 1 nan nan 重要个股
63 511020.SH 活跃国债ETF 基金 nan nan nan 1 0.0 nan 纯债指数基金
64 100050.OF 富国全球债券人民币A 基金 1.3309 -0.0871 1.0211 1 0.0 nan 海外债券,时间长的美债基金只有它了,易方达的007360.OF时间短了点
65 501300.SH 美元债LOF 基金 1.0035 -0.2889 1.0005 1 0.0 nan 场内美元债,501300.OF业绩太差了
66 000300.SH 沪深300 指数 nan nan nan 1 nan nan A股指数


1,择时策略

功能:输入代码和频率等相关参数,测试该择时策略的有效性。
INPUT:1,单一证券的行情时间序列文件|默认文件是日频率:file=511380.SH,511380.SH_15min.xlsx ;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\quote
INPUT:2,证券代码列表文件;file=0list_code.xlsx;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\quote
分析指标-策略算法文件py:1,file=
OUTPUT:file_template= ;path=D:\CISS_db\strategy\stra_momentum

1.1,择时策略:粗筛变量和参数 |含交易信号signal

Notes:1,若选择2+指标数量前,需要先完成单指标信号和绩效的计算,因为需要先从单指标绩效文件中提取有相对收益或风险的指标。

输入代码
多空方向,默认只做多:
测算指标数量|默认1:
每个指标对应参数间隔 :
1.2,择时策略:计算收益率和净值

主流择时策略均显示了显著的超额收益和更低回撤,如510300,513010,159967,588080,510500,512100
OUTPUT:PATH= C:\rc_2023\rc_202X\data_ciss_exhi\stra_momentum

若要画净值图,按如下方式运行服务器 python manage.py runserver --nothreading --noreload
净值图保存位置:C:\rc_2023\rc_202X\ciss_web\static\pictures\strategy\temp.PNG

输入代码
多空方向,默认只做多:
测算指标数量|默认1:
每个指标对应参数间隔|默认0.2%,-4%~+4%:
是否画净值图|1=是已有单策略信号文件|没有需要先算上一步

2,择时策略改进-持有期

功能:在择时策略结果的基础上进行改进,按ma-x的信号,每次买入后x/2 ~ x 天内不能卖,避免来回买卖
持有期,如最少持有3~100个交易日后才能卖出,卖出后x/2个交易日才能买入
INPUT:数据文件|默认文件是日频率:file=511380.SH,511380.SH_15min.xlsx ;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\quote
分析指标-策略算法文件py:1,file=
OUTPUT:file_template=C:\rc_2023\rc_202X\data_ciss_exhi\stra_momentum


2.1,择时策略:粗筛变量和参数 |含交易信号signal

Notes:1,若选择2+指标数量前,需要先完成单指标信号和绩效的计算,因为需要先从单指标绩效文件中提取有相对收益或风险的指标。

输入代码
测算指标数量|默认1:
多空方向,默认只做多:
每个指标对应参数间隔|默认0.2%,-4%~+4%:
交易组合类参数:1,买入和卖出持有期,如3~100个交易日

2.2,择时策略:计算收益率和净值

若要画净值图,按如下方式运行服务器 python manage.py runserver --nothreading --noreload
净值图保存位置:C:\rc_2023\rc_202X\ciss_web\static\pictures\strategy\temp.PNG

输入代码
测算指标数量|默认1:
多空方向,默认只做多:
每个指标对应参数间隔|默认0.2%,-4%~+4%:
交易组合类参数:1,买入和卖出持有期,如3~100个交易日
是否画净值图|1=是已有单策略信号文件|没有需要先算上一步

3,趋势和震荡策略 oscillate within the range

市场背景:A股牛短熊长,大部分时间都是在下跌震荡,需要在下跌震荡中抢反弹;国内债券市场长牛低波,需要寻找在上涨震荡中的盈利模式。
功能:对品种在无趋势期间,采取区间内低买高卖的策略
小结:
小结:
INPUT:数据文件|默认文件是日频率:file=511380.SH,511380.SH_15min.xlsx ;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\quote
分析指标-策略算法文件py:1,file=
OUTPUT:file_template=C:\rc_2023\rc_202X\data_ciss_exhi\stra_momentum

区间内震荡的逻辑
长期趋势 中期趋势 短期趋势 市场状态 交易方向 交易策略
111上涨初期买入上涨共振,理想买入区间但发生概率小
11-1上涨震荡买入如果有持仓可以先卖出,没有持仓不买
1-11上涨震荡卖出区间内逢低买入
1-1-1上涨末期卖出下跌风险较大
-1-1-1下跌初期卖出下跌风险较大
-1-11下跌震荡卖出如果有持仓可以持有,没有持仓不要买
-11-1下跌震荡卖出如果有持仓要卖出,没有持仓不要买
-111下跌末期买入下跌区间内抢反弹,一旦中短期转负或者价格达到盈利目标就卖出
3.1,趋势和震荡:计算策略信号
输入代码
测算指标数量|默认1:多空方向,默认只做多:
每个指标对应参数间隔|默认0.2%,-4%~+4%:


3.2,区间内震荡:计算收益率和净值

若要画净值图,按如下方式运行服务器 python manage.py runserver --nothreading --noreload
净值图保存位置:C:\rc_2023\rc_202X\ciss_web\static\pictures\strategy\temp.PNG

输入代码
测算指标数量|默认1:
多空方向,默认只做多:
每个指标对应参数间隔|:

已有单策略信号文件|没有需要先算上一步

4,代码组合回测-给定指标参数

功能:1,对所有样本池证券,用同一种固定的策略指标及参数测算;2,对不同证券,用给定的不同策略指标及参数测算
INPUT:0,list_code 证券代码列表文件;file=0list_code.xlsx;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\quote
回撤步骤:1,每40天调整样本池;2,每个交易日计算样本池内品种的交易信号;3,根据权重分配,计算组合收益率
INPUT:1,数据文件|默认文件是日频率:file=511380.SH,511380.SH_15min.xlsx ;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\quote
2,导入证券对应策略及参数的excel表格

OUTPUT:file_template=C:\rc_2023\rc_202X\data_ciss_exhi\stra_momentum
notes:小结:日线频率,即便用3周更短线的策略,依然会面临基础资产波动小+在1.0 +/-8%左右波动,导致的缺乏赚钱机会。可能更适合的方式是在30分钟频率下,通过8~16个周期内做短波段来赚钱。
notes:由于不同资产交易日不同,可能会出现证券x在某个日期前无收盘价,此时日收益率用 交易费率0.1%或 0 替代。
notes:240419,平滑了交易信号,如【0,1,1】才能买入,和【1,0,0】才能卖出,def tool_signal_lazy,file=indicator_momentum.py


4.1,给定单一指标及参数、时间区间,按list_code 回测

证券池:导入file=0list_code里 if_port=是否属于组合=1的代码。
选股因子权重及打分:引入季度总分数据;无【后期可考虑加入 】
调仓频率:3日、8日、15日、30日
Notes:不同起始时间不同,都有净值的区间一般从 20211122;20211122开始有7个有历史数据

step1:计算组合内所有个券在区间内的交易信号

notes:

多空方向,默认只做多:
起始日期输入单策略含指标数量:1~3

指标1名称:
指标1区间:
指标1参数:

指标1名称:
指标1区间:
指标1参数:

指标1名称:
指标1区间:
指标1参数:

组合名称前缀,port_ 或port_index 开头:

OUTPUT: port_str_mid= ||


step2:根据交易信号,计算组合净值和绩效的


notes:todo,调仓频率,单券权重上限,组合权重上限,目前还没用

输入组合名称/组合参数
多空方向,默认只做多:
起始日期结束日期输入最大持仓数量,1~100
调仓频率:
单券权重上限
组合权重上限


O,计算结果和图表

OUPUT:

OUPUT:df_stra_ma= ;


插入净值图png,还未成功

Table=组合绩效分析-PERFORMANCE EVALUATION

评估指标和参数需要关注:1,指标在某一参数下的绩效较好,需要观察相近参数策略是否具有类似表现,避免单一参数对应的特定时点交易没有可复制性。
2,关注持仓时间占比,若超过80%,收益可能更多来自于持有而非策略择时。
3,同样表现下,优先选择最大回撤更小的、再选择参数最接近0.0的。例如,最大回测每减小1%,累计收益可以减少2%
notes:

组合名称 期末净值 最大回撤 年化收益率 日均收益率 单日最大跌幅 持有时间占比 持有期间胜率 最新1年 前1年 前2年


细分动量策略


Log dev,择时日志

TODO:

log,20240606,Idea,均线策略本质上都是追涨,但是长牛低波品种会不如简单持有,只有长牛高波动品种用趋势才有意义。80%的没有趋势的时间内,区间内低买高卖才是高确定性。比如对于转债ETF这类低波动区间品种,反而应该在区间的显著低点买才合适,比如近60/120天价格百分比最低10%+ 最近8/16天波动放大+成交额变大
Qs:以沪深300为例,p_ma40_0.0单指标在长期的下跌中确实可以减少部分回撤,2014-2015大涨中可以跟上涨幅。但是2019~2020的牛市中却无法跟上,反映出策略开始失效。ma_up_16_0.0在2016年后表现甚至比p_ma_40还要差很多。 Ana:需要在不同的市场环境下用不同的策略:idea1:顺趋势,每隔40个交易日,选择过去
市场和资产情景分类:up,down,flat。短期8d,中期40d,长期100d。除了最理想的短中长期均匀发散,大部分时候其实是在震荡。 来看,如果最近120天市场震荡幅度小于过去500天,

log,20231123,区间震荡策略 oscillate within the range

功能:对品种在无趋势期间,采取区间内低买高卖的策略
小结:日线频率,即便用3周更短线的策略,依然会面临基础资产波动小+在1.0 +/-8%左右波动,导致的缺乏赚钱机会。可能更适合的方式是在30分钟频率下,通过8~16个周期内做短波段来赚钱。
小结:截至231123,2周以内的小区间震荡策略,对于个券和指数上,并没有明显优于标的本身的收益和回撤;
中证1000ETF,优。512100.SH,osci2_p_ma_40__-0.045策略净值1.1558,mdd=0,持有时间1.05%;同期512100基金净值0.9047,mdd=-22.81%,超额收益比较显著。
等权889033.WI,良。没有明显优于标的本身的收益和回撤,但也没有很差

区间内震荡的逻辑

确定股票目前处于震荡状态:ma8和ma40的近10日平均or最大偏离幅度不超过一定比例。 震荡或无趋势的定义:(ma_short - ma_long)/ma_long 偏离幅度 小于 5% ;
osci1,区间的上下沿-买入:连续10个交易日收盘价低于ma8后第一天突破,买入;卖出:连续10个交易日收盘价高于ma8后第一天突破,买入;
========
osci2,区间的上下沿-买入:close/ma8连续扩大3天; 卖出:close/ma8连续收窄3天;
========
osci3,区间的上下沿-买入:ma8或16_up,负值(ma下跌)连续超过8天后第一天转负; 卖出:ma8或16_up,正值(ma上升)后第一天转负;
主要上下区间(算法:q25-std+1%,q75+std-1%):p_ma8,-5%,+5%;p_ma16,-7%~7%;p_ma40,-10%,10%;p_ma60-12%,12%.ma_up_8,-0.3,0.3%,ma_up_16,-0.2,+0.2%;ma_up_40,-0.15%,0.15%;ma_up_60, -0.13%,0.13%.