2010年11月2日 星期二
關於Curve Fitting(歷史最佳化)
Curve Fitting 是什麼碗糕?這個名詞最早我應該是從藍色投機客那邊聽到的,當然我想他不是這個名詞的原創,因為他說他也是看了好多書。如果你去 Google 這個東西,大約會得到數學上的解釋,意思就是對於曲線以各種方式求出近似完全貼近的解或是通式之類的。而用在"程式交易"這方面則是,想辦法讓交易策略中的交易訊號,盡量去貼近交易標的過去的歷史價格可以取得的最好績效,也就是說想盡各種辦法讓自己的交易程式可以抓到歷史價格波動的每個轉折:低檔處買、高檔處空。而這樣做的效果就是希望看到回測報表中的帳戶淨值曲線長成類似這樣:
在知道了本篇所要談的 Curve Fitting 指的是什麼之後,我真正想談的是讓程式的模擬歷史表現得好像一個人可以擷盡世界的財富卻又承擔極小的風險這個行為本身背後的心態與這個心態對未來真的要發生的真實交易所造成的危害。
Fitting 本身並不可怕也有其必要,因為最佳化的報表觀察可以協助我們對自己策略的觀察,而可怕的是你想要 Fiitting,沒有 Fitting 就沒有信心,「沒 Fe~ 哇ㄟ係」的心態!
會想談這個在程式交易的世界普遍存在的 Fitting 就是因為網友在 Plurk 的討論:Eazy Mavin
在我的觀念中,交易永遠就是交易,不因為我們使用什麼工具而有多大的差別,交易就是人性的搏鬥!程式交易也是交易,只是我取用了電腦程式作為交易的工具而已。而程式交易的好處就必須另篇討論。我並不贊同純數學方式去找出一個看起來在歷史價格上可以獲得很好效果的策略就投入金錢下去操作,至少對我來說是不可行的。我不能直接否定純數學方式找到交易策略以求獲利的可能性,我做不到不代表沒有人做不到。程式交易做為交易的一種方式,最關鍵的所在依然是信心兩個字。即使我們可以讓電腦做到幾乎就是完全的全自動交易(我也在教這方法),但是我能不能把電腦的插頭拔掉?我能不能把網路線剪斷?我能不能把下單機程式關閉?當然能!,問題是什麼時候會幹這樣的事?
回測報表是用來評估一個交易策略的重要工具,但是不會用回測報表來開發交易策略。什麼?回測報表不是就是把策略寫成程式後丟進價格樣本跑出來的績效報告嗎?這也能用來開發交易策略!是啊,如果你會覺得這事件很不可思議的事情的話...啊,真的有很多人這樣做喔~
『先用一個簡單的交叉策略做進場/出場之後,看看回測:喔,真爛。接著看看之前的狀況:嗯,在這裡給它加個量能大小的比較,就可以買在低點翻轉的突破。看看回測:好一點點了,還不行。再去歷史圖表找找:那裡給它弄個指標背離就能高檔放空了...如此 Repeat ...』這就是用回測報表來開發交易策略。假設正在閱讀此文的您,想一想,你有沒有這樣類似的情景發生在自己的身上?最典型的徵兆就是交易程式行數滿百上千行還欲罷不能,這可不是百貨公司週年慶的滿千送百外加精美提袋耶~
我認為回測報表就是只能用來評估自己的交易策略有沒有可行的可能性,而不該為了讓回測報表的數據漂亮而去對交易策略的內容加東加西,特別是為了降低 MaxDD 這個數字,因為這樣做的結果是失去信心。如果我今天對交易策略內的某規則做更動,但是那其實不在我的交易經驗之中是有效的,未來這個規則"衰小"的時候,我一定會毫不猶豫的幹掉這個規則,因為我根本不相信它,一點都沒有,那樣被修改或是創造出來的規則只是我"玩"出來的。
任何交易策略與規則都會有"衰小"的時候,如果自己的策略/規則只是看著歷史圖表去玩出來,而不是透過個人的 觀察-歸納-整理 出自己能夠接受的道理的話,一旦這個 衰小時刻來臨的時候,我要怎麼應對?我壓根兒就不相信它,所以我應該改掉它、刪掉它?但是帳戶已經虧錢了啊!於是,當我不斷嘗試各種方式去 Curve Fittting 的時候,我已經失去了信心,不管有再優秀的交易策略是我能夠接觸到,我也無法在帳戶中給予夠多的時間與機會去實現那個優秀,這才是最可怕的。
當 Curve Fitting 成為一種習慣,而 Fitting 內化成心態的時候,過度的追求完美也就是沒有信心去承受虧損的明證,交易規則本身通常很少一次致命,而是我在發生了虧損的時候,馬上對交易策略刪改,企圖挽救每一個未來那才是慢性的帳戶自殺。因為,在真的讓策略上線之前,根本就沒有做好 "評估" 這件事,甚至自己也不相信評估的結果,所以在真實交易的時候一路對交易策略刪刪改改,帳戶損益也一路走空。
熱門文章
-
在 MultiCharts 或是 TradeStation 中都有 Set開頭的一些指令可以運用,比如 停損─SetStopLoss、停利─SetProfitTarget,這些都是所謂的 ThisBar 模式運作的特殊指令,它們讓你在條件成立的當根K棒就可以做出對應動作,而不是一...
-
在 MultiCharts 裡,本來我以為 EntryPrice(0) 就代表了最後一個進場的成本價,經過測試後,確定了 EntryPrice( 0 ) 不是最後一次進場價,而是最後進場方向的第一筆價格(可查閱"程式交易語法大全 page 255")。什麼意思...
-
去年開發「 把策略訊號轉換成選擇權去執行 」的時候,一直有個實務上的困擾:標的物價格。 我要把訊號轉成選擇權的時候,事前不能精準的知道要交易哪一個履約價、Put 或 Call,需要在訊號或市況變化的當下才決定交易標的。但在 MultiCharts 的運作架構上,需要開啟欲取...
-
殷鑑不遠。這是 2019/07/03 的台指期貨,在大約 10來秒的時間之中,台指閃崩了近 500點,並且快速回復。這樣類似的事件,在台指不是空前,也不會絕後,即使台灣期貨交易所有所謂的動態穩定機制在運作,這一天,據我所聽聞到也有不少友人在這很短的時間內... 中槍了。這裡,我們...