2017-2019-策略上千次的 回测 分析 等待 调优 小试 总结 迭代。

用户成长系列
标签: #<Tag:0x00007f4ce8cf2948>

(me_robot) #1

想到哪里写哪里,最近总结,把思路捋直了再说。
2017年开始接触策略下半年开始了解bigquant。之前在JD。。。。后来。。。。
2017下半年到2018年上半年策略从A策略开始接触,B从A升级过来, B到C策略建立,经过上千次的回测和修改,18年下半年放下休息,等结果。
这期间A建立之后做了几十次更改到C回测估计有上千次了。形成了ABC策略组合,每一个组是十几个A-copy1组成的。我没有跟上网站的升级,我宁愿升级慢点。从旧策略慢慢移植到新的框架去。至少bug更少点吧?心里作用。

总结一下策略误区吧。
如果这个策略以后会实盘,那就这样说起:
1 定义市场容量=多少资金投入,这个和策略框架有关。
2 定义实盘成本=开仓量,这个和1有关。
3 定义策略选股= (胜率:盈亏比)=平衡,这个和1-2有关。
4 定义策略运行数据集时间段选择强化学习,这个和框架有关。
5 定义策略学习数据集分类标示,这个和学习效率有关。
6 定义学习因子
7 定义买卖时机+持有时间周期
8 定义基本仓控
9 定义单股动态仓控
10 大量回测100次以上,每修改一点做一次统计。
11 分析回测,找极限,各种找,找到参考系。
12 根据参考系调优,回到1 2 3去。推翻这个策略!如果不能推翻进入13步。
13 如果能剩下,模拟盘跑半年以上。最好一次单边下跌行情,这个我18年正好碰上了,运气太好了!
14 如果这个策略经过13步后至少平盘不亏损,那进入下一个循环。。。。
15 回到1去吧。。把 123找到极限和参考系。。。。
16 再来一遍,,然后开始准备实盘了。。。18年低我小试了,,有点等不及了。。。。
----------------------------------后面还有 。。。等我想到了。。。。----------------------------


(chenys101) #5

单股动态仓控大概怎么做的啊


(me_robot) #6

简单说就是单股持仓的成本线控制。
当盈亏盘分开后执行下面策略。
1.单只持仓的总比例,这个有限度,1/5-1/10;可以根据你的策略盈利能力和抗风险能力去定义卡死 。
2.在不超1设定的氛围内,用动态的加减仓对成本线进行控制,要求是价格的和浮动盈亏相对位做正负10%之间浮动。
3.控制盈利和控制浮亏比。
4.把盈利优先拿到正10%以上,把浮亏兑换到0%去。


(maida) #7

这个很危险啊。能找到一个普适超额收益策略吗?
赞赏你的坚持和原则
image


(yangziriver) #8

总结得很详细的,是个有心人,学习了。可能大家都想找到一个一直有超额收益的策略,不过从理性上讲,这样的策略是很难找到的,市场风格不断变化,特别是A股,再好的策略,总有失效的时候,要不断调整才行。


(maida) #9

前辈,请教一个问题,买入后预计第二天卖出的,但是第二天一字板地量涨停,如何让策略保留仓位?



(focus777) #10

在 回测模块的 盘前处理加入这个就行了 def bigquant_run(context, data):
# 获取涨跌停状态数据
df_price_limit_status=context.status_df.set_index(‘date’)
today=data.current_dt.strftime(’%Y-%m-%d’)
# 得到当前未完成订单
for orders in get_open_orders().values():
# 循环,撤销订单
for _order in orders:
ins=str(_order.sid.symbol)
try:
#判断一下如果当日涨停,则取消卖单
if df_price_limit_status[df_price_limit_status.instrument==ins].price_limit_status_0.ix[today]>2 and _order.amount<0:
cancel_order(_order)
print(today,‘尾盘涨停取消卖单’,ins)
except:
continue


(focus777) #11

(yangziriver) #12

image
不需要引入训练的因子,没必要过滤掉。如图,m3是要导入训练的因子,m11和m5是需提取的所有因子,m10是因子简称(没有简称的话就不需要,直接用m3连接训练模块m6 就行了)。m6模块中,从特征列表接口导入的因子才用于训练,其它的中间因子是不用于训练的。