作者rcwang (啊嘻汪)
看板Trading
标题Re: [问题] 新手程式交易回测与交易请益
时间Sun Sep 30 22:36:27 2018
嗨你好,很高兴你能与大家分享你的绩效报告
前面 sma1033 大大有提到滚动式的回测,我觉得你可以尝试看看
单论你的这个绩效报告的话,我有一些小小的建议给你参考看看
我待会提的东西可能很多你没听过,你可以去查询相关资料和名词介绍
(一)首先,你 Recovery Factor (恢复因子) 过高
Recovery Factor 在你的报告中的计算方式是拿
净利 / 最大可能亏损
你的 RF 为 340664 / 11848 约莫是
28.75 左右
你可以 a 我的名字看 7/6 号我的文章 (
#1RFv5fWg)
里面提到 RF 如果超过 25 就要非常小心你可能过度优化
RF 高代表输一点点就想要马上赢回来,代表你对 MDD 有很强的风险厌恶
通常我个人会猜测你过度优化 MDD ,反过来说你应该没有好的资金管理操作
这种属性在某些情况会是好的,例如你的 Win Ratio 与 Profit Factor
甚至 SQN Value 都好的话,或许值得尝试,然而 …
(二)相对这麽高的 RF 你的 Profit Factor 太小
我之所以会这样说,还有一个原因
因为你的策略中, Profit Factor 只有 1.5 左右
就算按年看,你的 Profit Factor 也大概都是在 1 ~ 1.5 左右
我的经验是 RF 如果超过 15 以上,基本上 Profit Factor 应该要到 2 以上
也就是说你有太多不必要的亏损,为了赚 1.5 块你得赔 1 块
当 Profit Factor 不高时,交易量只要变少,你有很大可能让毛损超过毛利
假如你 胜率 (Win Ratio) 够高,那可能还有挽救的机会
通常胜率高
+ Recovery Factor 这麽高的策略,不太容易马上变成胜率低
所以交易量变少还能支撑一下,然而 …
(三)最糟糕的情况是,你的 Win Ratio 常年在 45% 左右
Win Ratio 在 45% 是什麽概念呢?你看你 Profit Factor 是 1.5 对不对
所以你能在只赢不到 5 成的情况,赔 1 元能赚 1.5 元
所以你的胜手交易的平均获利一定会远高於你的输手交易的平均亏损
仔细看会发现是 44369 / 23464 = 1.8
所以你赢都赢很大赢两倍,很好,但是如果胜手状况不稳定,你会直接挂掉
我建议你应该让回测年周期胜率先提高到 60%
你 RF 如果还能维持在 10 以上
我觉得你的 Profit Factor 应该可以到 2 整个策略才会比较健康 ...
疑,我还没提 MAE / MFE 呢...
你的停损和停利可以更小啦,我刚刚帮你看一下
停损大概可以放 400 百元位置, 停利可以放 1500 百元位置
但因为你有多时间尺度,我的建议可能没有用
然後我强烈建议你使用延迟进场(Delay Entry)
也就是进场时後放你的进场价成本更低的位置
你想想看你有一堆输一点点的交易,如果你放低一点的位置进场
这些交易可能就不会输,但是你牺牲掉可能只有一点点直接价格往上的交易
因为他没有往反方向走到你放限价单的位置
这样你的 Win Ratio 应该就会起来,你可以思考看看
我知道你应该看不懂我在写什麽 XD 可以再
推文讨论
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.194.177.141
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Trading/M.1538318192.A.FBC.html
1F:→ rcwang: 糟糕, 我前半段文章少掉, 我编辑一下 XD 09/30 22:37
※ 编辑: rcwang (123.194.177.141), 09/30/2018 22:38:34
2F:推 willchen: 实在是太感恩您的建议了!整个超专业的!我会再按照您提的 09/30 22:49
3F:→ willchen: 再下去进一步研究学习,毕竟很多东西自学乱学的,很多基 09/30 22:50
4F:→ willchen: 础都不太扎实!谢谢您的建议!我会再努力谦卑的学习下去! 09/30 22:51
5F:→ rcwang: 我可能烙太多术语... 不过你仔细思考就会渐渐明白我的意思 09/30 22:57
6F:→ rcwang: 就是一些逻辑推论, 像看医生一样 09/30 22:58
7F:推 micbrimac: 大大好认真 虽然我都懂您举的这些参数分析意思 09/30 23:04
8F:→ micbrimac: 但综合起来 真的不知道怎麽去考量这些参数 来评估一个 09/30 23:04
9F:→ micbrimac: 策略的好坏 以及要不要用@@ 09/30 23:04
10F:→ ProTrader: MC的回测教学应该有相关的内容可以参考 09/30 23:26
回复 micbrimac 的提问
每一种不同建构策略的方式,他的参数优化方式和轨迹都不太一样
包含你回测的时间尺度,回测的长度,你交易的标的数量等...
不过硬要给一个「抛砖引玉」让大家能自己发展优化方法的框架的话
我底下提供一个简单的方法,但是实际上绝对要根据你需求调整
1. 先看获利因子 Profit Fator
1.1. 获利因子没有超过 0.5 :
基本上很可能是输交易成本
这种情况你要画一条 Alpha Loss 的线出来,如下:
https://i.imgur.com/8IiBvEV.png
这条线的斜率就是负的单位交易成本,先看你的 payoff
如果你的线低於 Alpha Loss 很多,你可以考虑
策略倒置
也就是买变卖,卖变买,否则的话你应该还是会得到 Alpha Loss
一般来说 PF 小於 0.5 应该会优先
调整参数、修改策略讯号
或是观察策略进出场和 ATR / ADX 这种波动指标的关系
是不是都在波动太大的时候进场,在波动太小的时候出场
可能被市场噪音造成策略的无妄之灾,机率很低啦
1.2. 获利因子介在 0.5 到 2 之间:
通常情况获利因子能有 0.5 以上,我们就可以进到第二阶段
观察胜率 (Win Ratio)
1.3. 获利因子在 2-5 之间:
通常获利因子能到 2-5 ,我首先会做的是延长我的回测期间
固定参数来回测累积每一个区间的获利因子 (尚未Rolling)
如果都能在 2-5 左右的话,我会考虑进一步考虑资金管理稳定到 3
1.4. 获利因子在 5 以上:
获利因子在 5 以上很有可能交易数量不够
我不太喜欢获利因子太高的情况,我会先看夏普值
夏普值如果太高,超过 0.3 的话
我会猜测交易数量不到这个策略该有的水准
我会更激进的想要提高胜率,多输一点小 Trade 没关系
当然凡事都有例外(笑)
2. 观察胜率 Win Ratio
2.1. PF 在 0.5 ~ 2 ,但胜率在 40% - 60%
这个阶段你应该优先提升胜率到 60%
当然你说 53% 不行吗? 55% 不行吗?当然也可以
你会发现你在优化的时候,你优化的策略会有个接近 50% 的胜率瓶颈
这边只是要先确定,整个策略的体质是好的
一个策略在还没有使用资金管理之前,胜率是他基本的体质
如果你能做到 40% ,尝试看看在同样的回测区间优化到 60%
假设胜率可以提高到 60% 接下来就是 Recovery Factor
2.2. PF 在 0.5 ~ 2 或 2 ~ 5,但胜率低於 40%
这是很好玩的问题,你的 PF 有一咪咪,但你胜率极低
这个状况你的整个损益可能是透过期望驱动
所以这时候我会去看 Expected Payoff (期望报酬)
也就是 Win Ratio ×Avg. Gain + (1 - Win Ratio) × Avg. Loss
然後我会去尝试提高胜率,但每次都监察 Expected Payoff
只要 Expected Payoff 掉的太夸张,代表说这可能就是胜率频颈
我会看 Total Net Profit / Expected Payoff ,但我没办法给具体数字
一样,尝试提高胜率到一个阶段,我就会看 Recovery Factor
2.3. PF 在 2 ~ 5 且胜率也有 60%
这是最理想的情形,接着观察 Recovery Factor
这边要特别留意你不能使用到任何加减码
因为我会拿资金管理来优化 Recovery Factor
这个阶段你只能使用到 Stop Loss 及 Take Profit 而已
3. 观察 Recovery Factor
※底下开始碍於表达能力,很多东西可能很难懂※
3.1. Recovery Factor 低於 8
A. 使用延迟进场
我会尝试使用 MAE / MFE 分析,来调整 Stop Loss 及 Take Profit
以及透过延迟进场 (Delay Entry) 化部分 MAE 变成 MFE
也就是说进场买进 X 元,就改成在 X - 10 的位置放限价单
然後重新跑一次回测,看看 MAE 是否能减少
另外一种方式,就是考虑输手的 MFE
(Lose Trade MFE)
也就是输手的 MFE 如果都不超过 10 单位
那我就进场在 X+10 以上的位置,这些输手就绝对不会进场
但换过来就是所有交易都会被 -10 的损益
Trade 太多的时候可以用
另外,有时候我也会把延迟进场的参数和策略参数上下加减一个范围
下去一起做优化,目的就是调出一个类似的参数,但搭配延迟进场更好
B. 使用加减码
透过 MAE / MFE 分析,我会知道怎麽加减码
这部分有点复杂,简单来说就是价格不利时摊平加码 (Anti Martingale)
然後价格有利时提前减码 (Partial Close),大概是这样
C. 使用两平停损(Breakeven Stop) 及移动停损 (Trailing Stop)
透过 Mximal Higher Low (MHL) 找到最佳的移动停损方式
以及透过前面提到的输手 MFE (Lose Trade MFE) 位置放 Breakeven Stop
也就是说超过这个价格以上的交易,我认为他都应该要赢
所以把停损移动到进场价格
透过 A, B, C 原则上就会把部分的策略筛选出来
使得 Recovery Factor 达到 8 以上,到目前为止我都没有处理 MDD
我隐含在 Recovery Factor 的处理里面
如果是一般交易人,接下来就是开始滚动回测
然後各种可用性测试,观察参数微调影响幅度大小(敏感度分析)
模拟历史价格波动幅度放大 1.5x 2x 看策略反应情况
搭配选择权,搭配极小 TP 的 避险单(Sure-and-Fire)
基本上到这边能上场就上场了...
如果是机构交易人,还需要处理 Recovery Period
也就是多久能 Recovery 到前一个 Peak
因为机构每个月都要摊报表出去,对於 P&L 的要求会比较高
这部分的解法只能透过组合多个策略来达成,很难在单一策略优化 Recovery Period
以上,回复在此仅做留念 XD
※ 编辑: rcwang (123.194.177.141), 10/01/2018 00:13:52
11F:推 TwBuffett: 推专业文!!! 10/01 06:48
12F:→ TwBuffett: 有些策略常输,但输很少,一次赢很大.有些策略,常赢,但 10/01 07:05
13F:→ TwBuffett: 赢很少,偶而输一次大的.前题都要有足够大量的交易,要 10/01 07:07
14F:→ TwBuffett: 不然,某几次落入极限值,会很容易怀疑和放弃. 10/01 07:07
15F:→ TwBuffett: 另外程式交易把它当做基金来看,会比较平常心 10/01 07:08
16F:→ TwBuffett: 市场多变只要帐户余额,"稳定"保持退二进三节奏就是ok的 10/01 07:11
17F:推 vesta9: 推文 1.1 Profit Fator 小於零? 10/01 08:04
18F:推 vesta9: Factor 10/01 08:05
19F:推 yuiop0929: 10/01 09:25
20F:推 gdm0037: 推 10/01 09:38
21F:推 micbrimac: 感谢回覆! 好文推! 10/01 10:41
22F:推 willchen: 专业好文!感恩提点! 10/01 11:25
感谢 mvesta9 以及特地来信的一个朋友
Profit Factor 部分写错了, 应该是 0.5
我那时候在打的时候应该是想成 Expected Payoff ....
基本上 Profit Factor < 0.5 加上 Expected Payoff < 0
大概是我认为策略需要再修正的一个条件
有没有可能 Profit Factor < 0.5 但 Expected Payoff > 0 ?
有可能,就是你的赚钱幅度非常大,但是每次赚的次数都非常少
这有时候是有救,因为你如果有办法让输的幅度相对小的情况去避免
你就会剩下只赢很大,然後赢率接近 50% 的策略
这种策略有时候能用,但还需要再进一步调整...
感谢大家发现错误! 我的疏失,抱歉!
※ 编辑: rcwang (123.194.177.141), 10/01/2018 11:54:03
23F:推 sma1033: 推用心文解释详细 10/01 13:37
24F:推 nds3ds: 推专业好文 10/01 16:12
25F:推 Genki626: 感谢大大无私分享 10/01 16:33
26F:推 softpoal: 高手! 10/02 16:18
27F:推 cory8249: 推 值得研究 10/02 22:38
28F:→ interactive: 哇塞...感觉很专业 10/03 08:32
29F:推 harry901: 好文 10/03 21:19
30F:推 Clemens71: 推版大用心,谢谢 10/09 01:23
31F:推 gtyyxoxo: 专业推 10/15 06:52
32F:推 a78998042a: 推专业 10/19 23:29
33F:→ appleball200: 猛猛 10/22 14:04
34F:推 Lio41: 非常棒的分享 11/19 16:57
35F:推 PoBErLo: 推爆 02/10 03:23
36F:推 pillowkiller: 推 09/09 19:31