萬年船 發表於 22-8-12 08:29

最佳化的迷思

本帖最後由 萬年船 於 22-8-12 08:40 編輯

最佳化很容易上手,很多人剛接觸程式交易時,使用最佳化來開發策略,以為已經找到聖杯了,上線後才發現竟是所謂的靠杯,之後就再也不敢碰最佳化了,避之唯恐不及,一朝被蛇咬十年怕草繩,自此在草繩禁區蓋上封印;另外也有一些人雖然沒用過最佳化,但聽聞前人最佳化的慘痛教訓後,也自動的在草繩禁區蓋上封印了

最佳化確實是要謹慎使用的,不然容易走火入魔,但最佳化也並非邪魔歪道,只是要由統計的角度切入才是正道(需了解Overfitting概念且熟悉假設檢定、自由度等的統計核心意涵,不過細節就不討論了,請自行意會),唯有如此才能借助最佳化的威力來進行模型的提煉,以下提供一個最佳化提煉與驗證的成功例子,用以解開草繩禁區的封印

最佳化參數可直接用視覺化檢視的只有2個,但此交易策略使用的參數卻高達7個,參數雖多,但其交易邏輯卻十分簡單(主要只有兩個IF進場敘述、三個出場指令,結束),大部分人看到7個參數,大概就認定一定會有過度最佳化的問題,不過此最佳化範例跑完的結果或許可以讓你改觀


[*]商品:那斯達克(NQ)
[*]傭金設定:$2.03
[*]滑價設定:每口$2.15
[*]策略類型:當沖
[*]進場單:限價單
[*]出場單:限價單、停止單、市價單
[*]限價單回測設定:穿價1 tick才算成交(此設定實際交易,會比回測績效好)
[*]最佳化參數:7個
[*]最佳化解空間:19,575,270
[*]In-Sample:2007~2018(12年,約75%的資料)
[*]Out-of-Sample:2019~2022的7月(不到4年,約25%的資料)
















延伸閱讀:


[*]MC重新載入後最佳化GA參數指定無效的解法
[*]最佳化的另一種用法(Overfitting簡易偵測)



Option 發表於 22-8-15 15:55

萬年船前輩您好,

關於統計,有一個地方是我一直不確定的是「樣本數」
到底多少樣本數才是有效的?
10根K棒? 30根K棒?
感覺取多少樣本數是一種「藝術」
不曉得前輩在這方面是怎麼解決的
問了很多程式交易的同好,每個人的樣本數都不太一樣
希望前輩能提點

謝謝。

萬年船 發表於 22-8-15 21:11

本帖最後由 萬年船 於 22-8-15 21:39 編輯

Option 發表於 22-8-15 15:55
萬年船前輩您好,

關於統計,有一個地方是我一直不確定的是「樣本數」

交易模型的樣本數應該是交易次數,不是K棒數目
至於要多少交易次數才足夠,實際上會遠大於統計上所需要的交易次數
因為統計上的樣本必須是隨機採樣
但交易模型研發過程已經在消耗那些交易樣本的自由度了,所以很難滿足隨機採樣這個條件

交易次數(樣本數)多寡的原則是
1.以統計的角度,多多益善
2.交易模型越複雜、參數越多,交易次數的要求就要越高
【交易越簡單越好】這句話是有道理的
因為越複雜的交易規則,就需要更多的交易次數
而實際上可能根本就沒有足夠的交易次數來滿足如此複雜的交易規則

至於這個原則可否量化?答案是很難量化
每個人的模型複雜度都不一樣
每個人研發模型的過程會消耗多少自由度也都不一樣

不過trial and error的方式倒是可以試出來大概多少交易次數是足夠的
在進行Out-of-Sample Testing或WFO的時候
如果Out-of-Sample的結果或WFE還不錯時(能收斂),表示當下的樣本數是足夠的
如無法收斂,表示仍需要增加樣本數(調整參數,讓交易次數增加)
當樣本數增加到最大後,如仍無法收斂
則表示此模型不可行,亦或這個模型的複雜度無法在真實世界有足夠的樣本數進行統計驗證


liawfujin 發表於 22-8-16 01:16

本帖最後由 liawfujin 於 22-8-16 01:28 編輯

當然要使用最佳化! 回測是程式交易的優勢, 利用回測, 找出較佳的參數, 就是(寫)程式交易的主要工作, 怎能放棄呢?

期海茫茫, K 線上上下下不定, 數據海量,指標來回震盪, 如何不迷失方向, 唯有利用最佳化找出較佳參數, 而期盼其成為期海明燈!

通常我發展交易策略, 會從原始的交易策略的發想(如我提過的幾個交易策略)開始, 先從樣本內(通常是較早期)資料最佳化找出參數, 然後跑樣本外(通常是後期)資料, 也就是用早期的參數模擬跑後期的交易, 若成果不錯(成果一), 再與全部樣本最佳化跑出的結果(成果二)比較, 兩者(尤其比較樣本外的)參數跟結果相差不大, 那麼所得的參數, 在往後實際上線跑的時候, 可信度就大多了!

所以, 回測跟最佳化的重點是, 樣本內的參數要能通過樣本外的交易考驗, MDD不能發散! 而且我覺得樣本外的資料不能太少, 至少要佔三分之一以上,

至於參數的數目, 樓主文說的七個, 實在不算多! 像我提過的幾個原始交易策略發想, 若加上停損停利機制的參數, 早就超過七個了, 雖然跑出的結果差強人意, 看起來可以賺錢, 但是這樣 "原始" 的交易策略要實際上去跑, 虧錢的時候還很多, 尤其連續虧錢時, 實在會讓人喪失交易信心!

由於現今交易環境複雜, 參與的人數很多, 每個人都想賺錢, 都想盡一切方法要從市場賺錢, 有人看多, 有人看空, 以至市場很震盪, 波動很大, 若是只用很單純的 "原始" 交易策略去交易, 我是認為賺錢不易! 我的做法是, 仔細觀察所使用指標的可交易處, 增加買賣點(相對增加參數), 或是增加使用第二個, 第三個指標, 也是一樣仔細觀察所使用指標的可交易處, 增加買賣點! 所以, 最後我的策略的買賣點可能多達十個以上, 參數更是三十個, 四十個的!

當然, 這些參數都要用前述的最佳化方法來去尋找, 是由簡單的交易買賣, 逐步測試增加買賣點, 增加參數,

雖然, 寫出一個(回測)漂亮而可信度高的程式, 是程式交易最重要的工作, 但是程式交易的成功, 從來就不只是 "程式" 而已! 我也還在努力中!

Option 發表於 22-8-16 13:24

謝謝前輩們的回覆

我現在有個問題是,我對策略作類似評分的動作
例如某策略,過去N筆交易如果獲利大於XX就進場,小於XX就不進場
但每次進場就賠錢,不管順勢或逆勢策略,有點像遇到地獄倒楣鬼
我在想說是不是「N」這個樣本數的關係
前輩們的回覆我會再反覆思考

謝謝。

萬年船 發表於 22-8-16 14:02

Option 發表於 22-8-16 13:24
謝謝前輩們的回覆

我現在有個問題是,我對策略作類似評分的動作


聽起來像是Equity Curve Trading的東西
在原始交易模型上再進行一次交易(評分開關)
Equity Curve常會一陣子連續賺錢,一陣子連續賠錢,這點或許是個利基

但盲點是在原始交易模型上面再堆疊一層交易模型(評分開關)會讓第二層的交易模型樣本數更少
第一層的原始交易模型樣本數為交易次數,而第二層模型(評分開關)的樣本數會變成開關的次數(不是指評分用的前N筆)
第二層樣本數(開關的次數)這麼少的情況下,第二層模型如何在統計上取得顯著性呢?
交易模型的世界,樣本越少與模型越複雜,兩者都是越值得可疑的地方

Option 發表於 22-8-16 14:32

萬年船 發表於 22-8-16 14:02
聽起來像是Equity Curve Trading的東西
在原始交易模型上再進行一次交易(評分開關)
Equity Curve常會一 ...

您的回覆有點難懂呀..{:5_256:}看來要做的功課還很多

by the way, 這支NQ策略4.5倍槓桿DD最大到40多
不曉得遇到的時候撐不撐的ˊ住..

萬年船 發表於 22-8-16 15:01

本帖最後由 萬年船 於 22-8-16 15:07 編輯

Option 發表於 22-8-16 14:32
您的回覆有點難懂呀..看來要做的功課還很多

by the way, 這支NQ策略4.5倍槓桿DD最大到40多

我有好幾個不同市場的策略,就算這支NQ壽終正寢時,也不會對我有太大影響的
我每一個策略的MDD都是拉到50%,實際交易的DD到100%的時候就會把該策略下架
如果只有一個策略,這意味著破產
但如果投資組合有10個市場策略的話,影響也就是總資產的10%波動而已

不過交易模型越簡單、交易次數越多、獲利又穩定的話,其實是越不容易失效


Option 發表於 22-8-16 19:58

閒聊一下
我DD吃好久一直爬不起來0.0
心態快崩了..
不曉得前輩遇到這樣的情況有什麼比較好的處理方式呢?

萬年船 發表於 22-8-16 21:47

本帖最後由 萬年船 於 22-8-16 22:03 編輯

Option 發表於 22-8-16 19:58
閒聊一下
我DD吃好久一直爬不起來0.0
心態快崩了..

先講一下我的故事,希望對你的壓力舒緩有幫助
我2009年大賺約160%後,就很勇敢的離職了,當時也沒準備多少錢
而且手頭上有一半的資金都還是信用貸款來的
應該就是所謂年輕人的血氣方剛的魯莽吧
但是隔年2010年的時候,就遇到總資金很大幅度的回檔(約40%)
時間延續到2011年,在3月11日本福島核事故當日,原本策略該一口氣獲利20%的
但這顆大補丸卻沒吃到,因為當天全部下單失敗
(那次下單失敗其實是要結合好幾個湊巧事件才會發生的
但這麼湊巧的事卻發生在我身上,而且是發生在大DD的時候
那時我才體會到,當人在不順的時候,事情只會變的更不順
所以後來交易的路上我都用最嚴謹的態度面對)
當時我壓力也是大到極點,常常半夜去中和烘爐地拜拜
沒工作收入,每個月又有固定支出,且信貸每個月都要還錢
雖然總資金只回檔40%~50%,但已經變負債了
(總資金扣掉信貸餘額是負的)
撐到2011年7月的時候,就回去職場上班賺錢了
回去上班後下半年就開始大幅獲利了
(8月+47%、9月+16%、10月+10%、11月+13%、12月-4%)
回頭過來看,當年2010年雖然MDD高達41%,但當年報酬率還是正的(2%)
而2011年如果那顆20%的大補丸有吃到的話,理論上的報酬率也是正的(33%)
但實際上2011年卻不是那麼回事,因為我當年被迫要縮小部位
(一年沒獲利,開銷又吃掉總資金一大部分)
所以2011理論上是要賺錢的,但實際上卻變成賠錢
(賠100點時做10口,賺100點時卻只做5口,不賠才怪)
以上是我實戰交易最大MDD的經驗談

回到你的情況,如果你
1.每個月都還又固定工作收入的話
2.又沒有信用貸款或房貸
3.年紀也不大的話(年輕就是本錢)
其實,不用到心態崩潰的地步
我當年沒有工作收入,又有信用貸款
總資金扣掉信貸餘額的資產負債表大約是負債80萬
但兩年後我也重新站起來了(資產負債表又翻正了)
我都能站起來,而你情況沒我糟,應該更沒問題

至於DD要怎麼處理,只能事前處理,事後就很難處理了
如果事前能有個不同市場的投資組合的話
那麼某個市場大幅度DD時,對總資金影響就不會太大,要停掉策略或縮小部位都可以處之泰然
如果沒有不同市場的投資組合的話,那麼只有一個市場卻發生大幅度DD時,還真是兩難
原因是無法判斷到底是正常的DD或者是失效(兩者的特徵都一樣)
有時候破了歷史的2倍MDD或3倍MDD,卻仍是正常的DD,因為之後還會創新高
有時候破了歷史的MDD就已經是失效了
只有等時間拉長到最後,有沒有拉起來創新高才能判斷是否真的失效了
所以在DD的時候,如果沒有不同市場的投資組合的話,還真是難以抉擇
如果把策略停了(或縮小部位),萬一只是正常的DD,那就虧大了
如果不把策略停了(或縮小部位),萬一是真的失效,那就破產了
賭哪邊都不對

不過如果我沒有投資組合的話,我寧願賭策略失效這邊,以保護資金
因為就算過去賺了1,000,000,000,000%,但只要一次DD到100%,就什麼都沒了
留得青山在,不怕沒柴燒



Option 發表於 22-8-17 06:36

萬年船 發表於 22-8-16 21:47
先講一下我的故事,希望對你的壓力舒緩有幫助
我2009年大賺約160%後,就很勇敢的離職了,當時也沒準備多少 ...

謝謝前輩的開導,原來還有這段故事

我現在已是多商品組合
我覺得DD很常發生在一些經濟數據公佈,例如非農或CPI
即使策略或商品原本相關性不高,當數據一發佈時,如果部位錯邊的話,權益整個瞬間掉下去
當然對邊的話權益整個暴衝(我現在都錯邊T^T)
當沖沒這個問題,因為數據是盤前公佈,波段的話才有
不曉得前輩對於這種情況是怎麼處理的呢?

謝謝。

萬年船 發表於 22-8-17 10:18

本帖最後由 萬年船 於 22-8-17 10:31 編輯

Option 發表於 22-8-17 06:36
謝謝前輩的開導,原來還有這段故事

我現在已是多商品組合

我的投資組合好像不太有這個現象
以下是近五年實戰投資組合的統計

--------------------------------------------------
2022年實戰單日最大虧損-3.04%
2022年實戰單日最大獲利+9.45%
--------------------------------------------------
2021年實戰單日最大虧損-5.78%
2021年實戰單日最大獲利+7.05%
--------------------------------------------------
2020年實戰單日最大虧損-8.10%
2020年實戰單日最大獲利+16.96%
--------------------------------------------------
2019年實戰單日最大虧損-3.44%
2019年實戰單日最大獲利+6.22%
--------------------------------------------------
2018年實戰單日最大虧損-5.04%
2018年實戰單日最大獲利+5.07%
--------------------------------------------------

其實我沒在管基本面的東西,也不知道非農或CPI公布的時間點
如果是在波段交易的時間內,直接停損就好了
如果是在波段交易的時間外,也只能是跳空了
波段交易本來就存在跳空缺口的風險,降低幹桿才能遠離跳空缺口的風險

liawfujin 發表於 22-8-17 12:27

萬年船 發表於 22-8-16 21:47
先講一下我的故事,希望對你的壓力舒緩有幫助
我2009年大賺約160%後,就很勇敢的離職了,當時也沒準備多少 ...

在市場久了, 總是會遇到痛徹心扉的事件! 1997 東南亞金融風暴, 我融資斷頭被追繳! 但是經一事, 長一智, 學會風險控制, 總算存活到現在!

痛過才能成長, 大家加油!

萬年船 發表於 22-8-17 14:09

liawfujin 發表於 22-8-17 12:27
在市場久了, 總是會遇到痛徹心扉的事件! 1997 東南亞金融風暴, 我融資斷頭被追繳! 但是經一事, 長一智,...

唯有活下來,才能見證複利的絢麗
{:4_81:}

wldtw2008 發表於 22-9-17 10:23

本帖最後由 wldtw2008 於 22-9-17 10:27 編輯

萬年船 發表於 22-8-16 21:47
先講一下我的故事,希望對你的壓力舒緩有幫助
我2009年大賺約160%後,就很勇敢的離職了,當時也沒準備多少 ...
謝謝大大分享,其實要不要最佳化,都是看個人選擇的信仰,有聽過人用最佳化成功,也有人失敗,沒有一定的。我本人是選擇不使用最佳化的,不過通常自己刻意不跑最佳化,用體感選出來的參數,
幾乎會跟最佳化跑出來參數的差不多。

小弟不才分享個心得:程式交易到最後大家的策略、資金控管,等等都差不多,大概在前兩三年就
都能搞定,之後能長期存活的最大關鍵幾乎是比誰的技術性損失(少賺)比較少,以我來說程式交易的
日常就是排除那些永遠處理不完的小問題(斷線、後台錯、契約選錯、硬碟滿了、主機掛了)...

形象化的說,就是想盡辦法把電腦扶好扶穩,讓他不要倒掉能順利一天過一天把該賠得賠給市場,
然後在該賺的時候把錢拿回來。在這樣權益數不斷賠出去又收進來的過程中,攢下一些永遠進到
自己的口袋的利潤。







頁: [1] 2
查看完整版本: 最佳化的迷思