偉仁,我最近寫了一支策略,但是表現很差,可以幫我看看怎樣修改才能讓它可以上線嗎?」朋友求助似的問我。我想了想,並不馬上搭話,然後慢慢的說道,「先別急,你先想想,這支策略的邏輯是怎麼來的呢?是你很確定這個策略真的能賺錢,只是你還無法寫出真實表現策略的語法;還是其實你不知道此策略是否有效,只是在驗證此做法是否可行呢?」他想了一下,說:「其實我不太懂你的意思。」
對我來說,程式交易策略的發想分成兩大部分,一是「驗證」,驗證某一想法是否可行,舉例而言,有教材說KD金叉後的突破勝率較高,我們可以寫成程式訊號,有過去的歷史回測這訊號是否可行,是否真能賺錢。但若寫好後發現其實是不可行的,我們要做的是放棄它,去尋找其他可行的策略,而不是改變它,讓它變成可行的策略。舉例而言,愛迪生在尋找燈絲材料時,他發現某幾種金屬是不堪用時,他是直接放棄此金屬材料,去尋找下一個可行的材料,而不是想盡辦法讓金屬變成可以使用的。
大家都知道,改變一個人很困難;要找到對的人放在對的位置,最簡單的方式就是直接找尋一個符合需求的人,然後信任他,支持他,讓他發揮;而不是將一個不適任的人安放在錯誤位置,再期待他改變。同樣的,策略發想也是一樣,當某個待驗證的策略,你用肉眼觀察時,發現它明顯無法執行時,嘗試做了幾個微調與處理,還是表現欠佳,明顯不可行時,我們要做的是放棄它。這很像禪學,空出雙手,才能擁抱希望,對吧?
二是「執行」,當你確認一策略確實可行,那你的目標就是要完整的將它的執行邏輯寫詳盡,讓你不在電腦前時,由程式代替你執行這一切。這時你要注意的是你的初始邏輯是否因為修修改改而偏離了原始方向,許多人改到最後,其實已經忘記每支策略最初代表的意義。要記得,程式交易只是個輔助工具,它是代為執行你的想法與意志,不是替你創造新的方式。一個負責任的交易者要對自己的每筆交易負責任,而不是把責任丟出給程式,然後用過度最佳化逃避判斷的機會。
那,怎麼樣的策略算是可行呢?「我要怎麼知道我要選多大的周期,哪些參數,運用哪些方式呢?」朋友疑惑的繼續提問。「別想得太複雜,你平常生活中是怎麼判斷一件事情可以還是不行呢?」簡單來說,如果一眼看上去明顯是不行的,就直接把它淘汰;乍看之下可以的,想一下它的邏輯是否合理,若是合理就加些你認為可行的濾網與參數,看看結果是否如你預期的發展與改善。
就像是面試人員,先選看起來可以的,問問通用的問題,看回答的大方向是否如你預期,如果可以,再問更詳細的部分即可。將你自己的角色定位成主管或是教練,將程式視為員工或是球員,一支策略的本質特性無法有過大的改變,你只能將其外加一些輔助,讓它在某些情境能有更好的表現。
至於你是不是一個好的主管,就跟你曾經歷過的經驗,腦袋中知識的廣度,跟遇到問題時的判斷力有關了。但記得,不要追求過小過細微瑣碎的細節,而是要確認方向是正確的即可。有些事物帶給你希望,好像很值得追尋,好像再努力一些就能改善,但方向錯了就是錯了,後退一步想想,不要因為已經投入不忍放棄而欺騙自己。在追尋過程中你可能會不小心陷入了繁瑣且複雜的死胡同中,這時候不要太執著,有時放開手,才能擁抱下一個機會,一切也會容易許多。
策略發想應從看似可行的周期與商品做出發
勿將時間浪費在明顯不適當的商品與周期