Re: [問題] 新手程式交易回測與交易請益

看板Trading (金融交易)作者 (啊嘻汪)時間6年前 (2018/09/30 22:36), 6年前編輯推噓20(20015)
留言35則, 21人參與, 6年前最新討論串3/4 (看更多)
嗨你好,很高興你能與大家分享你的績效報告 前面 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://www.ptt.cc/bbs/Trading/M.1538318192.A.FBC.html

09/30 22:37, 6年前 , 1F
糟糕, 我前半段文章少掉, 我編輯一下 XD
09/30 22:37, 1F
※ 編輯: rcwang (123.194.177.141), 09/30/2018 22:38:34

09/30 22:49, 6年前 , 2F
實在是太感恩您的建議了!整個超專業的!我會再按照您提的
09/30 22:49, 2F

09/30 22:50, 6年前 , 3F
再下去進一步研究學習,畢竟很多東西自學亂學的,很多基
09/30 22:50, 3F

09/30 22:51, 6年前 , 4F
礎都不太扎實!謝謝您的建議!我會再努力謙卑的學習下去!
09/30 22:51, 4F

09/30 22:57, 6年前 , 5F
我可能烙太多術語... 不過你仔細思考就會漸漸明白我的意思
09/30 22:57, 5F

09/30 22:58, 6年前 , 6F
就是一些邏輯推論, 像看醫生一樣
09/30 22:58, 6F

09/30 23:04, 6年前 , 7F
大大好認真 雖然我都懂您舉的這些參數分析意思
09/30 23:04, 7F

09/30 23:04, 6年前 , 8F
但綜合起來 真的不知道怎麼去考量這些參數 來評估一個
09/30 23:04, 8F

09/30 23:04, 6年前 , 9F
策略的好壞 以及要不要用@@
09/30 23:04, 9F

09/30 23:26, 6年前 , 10F
MC的回測教學應該有相關的內容可以參考
09/30 23:26, 10F
回復 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

10/01 06:48, 6年前 , 11F
推專業文!!!
10/01 06:48, 11F

10/01 07:05, 6年前 , 12F
有些策略常輸,但輸很少,一次贏很大.有些策略,常贏,但
10/01 07:05, 12F

10/01 07:07, 6年前 , 13F
贏很少,偶而輸一次大的.前題都要有足夠大量的交易,要
10/01 07:07, 13F

10/01 07:07, 6年前 , 14F
不然,某幾次落入極限值,會很容易懷疑和放棄.
10/01 07:07, 14F

10/01 07:08, 6年前 , 15F
另外程式交易把它當做基金來看,會比較平常心
10/01 07:08, 15F

10/01 07:11, 6年前 , 16F
市場多變只要帳戶餘額,"穩定"保持退二進三節奏就是ok的
10/01 07:11, 16F

10/01 08:04, 6年前 , 17F
推文 1.1 Profit Fator 小於零?
10/01 08:04, 17F

10/01 08:05, 6年前 , 18F
Factor
10/01 08:05, 18F

10/01 09:25, 6年前 , 19F
10/01 09:25, 19F

10/01 09:38, 6年前 , 20F
10/01 09:38, 20F

10/01 10:41, 6年前 , 21F
感謝回覆! 好文推!
10/01 10:41, 21F

10/01 11:25, 6年前 , 22F
專業好文!感恩提點!
10/01 11:25, 22F
感謝 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

10/01 13:37, 6年前 , 23F
推用心文解釋詳細
10/01 13:37, 23F

10/01 16:12, 6年前 , 24F
推專業好文
10/01 16:12, 24F

10/01 16:33, 6年前 , 25F
感謝大大無私分享
10/01 16:33, 25F

10/02 16:18, 6年前 , 26F
高手!
10/02 16:18, 26F

10/02 22:38, 6年前 , 27F
推 值得研究
10/02 22:38, 27F

10/03 08:32, 6年前 , 28F
哇塞...感覺很專業
10/03 08:32, 28F

10/03 21:19, 6年前 , 29F
好文
10/03 21:19, 29F

10/09 01:23, 6年前 , 30F
推版大用心,謝謝
10/09 01:23, 30F

10/15 06:52, 6年前 , 31F
專業推
10/15 06:52, 31F

10/19 23:29, 6年前 , 32F
推專業
10/19 23:29, 32F

10/22 14:04, 6年前 , 33F
猛猛
10/22 14:04, 33F

11/19 16:57, 6年前 , 34F
非常棒的分享
11/19 16:57, 34F

02/10 03:23, 6年前 , 35F
推爆
02/10 03:23, 35F
文章代碼(AID): #1RiDzm-y (Trading)
文章代碼(AID): #1RiDzm-y (Trading)