本文共 1526 字,大约阅读时间需要 5 分钟。
在文章:量化中需留意的坑之二:
中提出:使用常规的回测方式的收益率(年化收益)判断技术因子的优劣并不合理.
除了文中提到的日期问题,其实还有个问题,就是对于低频优质信号的不公平
如果有类信号(因子),(发出交易)频率非常低,但是准确率非常高,而且每次收益可观,那么按照常规的回测方式,可能整个周期都没有捕捉到信号,都没有建仓,那么收益自然不高.但不能因此判断这个指标不好.恰恰相反我们更希望遇到这样指标,因为每投必中,不投时完全可以投资货币基金获取无风险收益.
目前的主流回测其实是基于"资金有限"模型,来回测的,给定一定资金,然后使用资金获取最高年化收益,这样对于部分低频率的因子,不论这个因子是优还是劣,都是不公平的,因为低频因子在大部分情况资金都是闲置的,而在获取收益的周期得到收益却要分配给未获得收益的时间段,导致年化收益下降.所以说如果这类回测提供一个"有效资金收益率"年化收益,可能更为合适(有效资金就是参与交易的资金).
不妨换一个假设,假设资金是无限制的,银行授予无限信用额度.每次信号发出的时,可向银行实时提取可用资金.这样,假如有个信号,比如rsi,发出买入信号(>80).那就实时从银行提取一定资金,然后投入,即使目前以及有很多其他标的也发出了,由于资金无限,不需要平分资金,只管自己投资就行了.这样对信号评估更为合理.(其实,这就是通达信等软件提供的简单回测).对于其评估一般采用胜率和盈亏比来衡量.
上结果
分析:
target:用来评估好坏的列
close_future_5:5日后收盘价的涨跌率(%),
close_future5_max:未来5日收盘价最高价(%)
个人倾向于认为信号发出后,未来n日的最高价,更能体现信号优劣,
feature:评估的信号(因子)
close_ema5_derivatives_01:5日ema导数从负数变成正数
close_ema10_derivatives_01:10日ema导数从负数变成正数 close_ema20_derivatives_01:20日ema导数从负数变成正数 close_ema60_derivatives_01:60日ema导数从负数变成正数 close_ema0_5_01:收盘价上穿(金叉)5日ema close_ema5_10_01:5日ema上穿(金叉)10日ema close_ema10_20_01:10日ema上穿(金叉)20日ema DIF_DEA_relative_derivatives_01:dif上穿(金叉)dea RSA_80_relative_01A:RSA从80下方超过80win_count,loss_count,win_rate:盈利笔数,亏损笔数,胜率
win_avg loss_avg win_loss_rate avg_rate sum_rate:盈利交易的平均盈利,亏损交易的平均亏损,盈亏比,总平均盈亏,总盈亏
总平均盈亏作为评价标准比较好(总收益/总笔数)
使用:'close_future5_max','close_future10_max', 'close_future20_max'的平均作为评估各个信号优劣指标
可见最佳的是10日ema导数(从负数变正):5.93表示[close_future5_max','close_future10_max', 'close_future20_max]的平均
其次dif_dea金叉
如果采用传统的n日后收益考虑呢?
顺序基本一致的,也从侧面辅证猜测没错,用未来n日max和n日后涨跌作为判断信号优劣结果大体一致,但具体每个人认为哪个更合理,可能见仁见智的问题,
转载地址:http://jhyws.baihongyu.com/