2014年10月18日星期六

交易策略與系統心得


程式交易小學堂─小散戶投機的王道
這篇文章,緣起於上過我課程的某位同學的來信。實際上,這幾年參與過課程的同學中,也有後來來信告訴我,他決定不走期貨交易這條路了,因為經過一段時間的努力,他真的找不到好的策略,也許他不適合往交易的路走。(這其實不是壞事)

因為,我給課程中的同學設下了一些開發策略應該遵守的 SOP,很可能是那些條件讓人很難找到一如網路上眾多分享回測報表的亮眼策略。這一方面我也常說,每次我看到那些回測分享,總是讓我自慚形穢:阿政的策略好爛喔。我知道要求同學在開發策略的過程中遵守那些規則去做,實在讓人感到很挫折。但我相信,通往失敗的道路總是坦途大道!


以下是我的回答,也是這篇文章的本文:
==============
策略失效的問題。記得我說所有策略的 MaxDD 都一定會突破,只是我們不知道這一天何時到來嗎?也許經過我們嚴苛條件所開發出來的策略其實是沒有失效的問題也不一定。實際上,就算 DrawDown 在今天大破過去的記錄,恐怕都不見得能證明是策略失效,如果幾天後或是幾個月後它的績效創新高了,今天的 MaxDD 被破還能算是策略失效嗎?這其實是個無解的問題。

這麼想可能比較容易釋懷。因為我們都沒有輸不完的錢,也沒無限長的壽命去等待策略績效的再創新高。所以,我們必須為策略設下一個停止線,這是個無奈的選擇。不管今天你創造出怎樣表現的策略,都是得為策略設下停止線的,不然,你打算為一個程式碼賭上你的人生嗎?交易不是人生的全部啊!

就因為單一策略都會有停止線被觸發的一天,所以多策略組合加上管理系統是我們必須要努力的方向。先找出較低可能是過度最佳化(垃圾)的策略,一個一個收集起來,你會有很多個低機率垃圾的策略,再透過管理系統,以動態調整的方式,不斷的把資金移往表現佳的策略上。如此一來,我們的資金會在多個策略內遊走,也許有策略破了停止線,我們錢就不會死攤在那個策略上,也許哪天那個策略的績效又有起色了,資金就自動配置回去,系統架構到了這個階段,個別策略是否失效已經不是我們該煩惱的了。

誇張一點說,只要有一個策略能獲利,管理系統會把錢往能獲利的策略去配置,而持續虧損、績效沒起色的策略,資金自然被抽走(一個沒有錢供其交易的策略還能傷害我嗎?)。

理論上來說,如果管理系統做到這個程度,我們是否就不需擔心策略失效的問題?但是,會不會全部策略都陸續是大賠破停止線後再無起色的呢?這就是為什麼我們得在源頭,開發交易策略時就降低要上線的策略是垃圾的機率了。如果我們每個策略是垃圾的機率都是 0.3,那麼10個策略全部都是垃圾的機率就只有 0.0000059049 !但如果每個策略是垃圾的機率是 0.95 呢?10個高垃圾機率的策略,依然是非常危險的

至於,為什麼每個策略的 MaxDD 都一定會破?雖然我們在測試的時候已經經過一整個景氣循環,未來也不過就是景氣循環的再來一次,問題是宏觀的景氣循環等同我們盤中決策的 pattern 嗎?一樣的波段上漲,其中的 K棒排列方式不同,就足以造成截然不同的績效表現,而未來總是有無限的可能性,天曉得會出現怎樣的 pattern 的排列組合?這也就人家說的:「歷史總是不斷重演,但不會完全相同。」因此,至少心態上我們就得準備好可能會有很倒楣的事情發生,而且不知道衰起來會衰多久,又有多嚴重?

還是那句話:「策略很可能從沒失效,因為在未來的某天它的績效或許再創新高。但跟單的過程中,你可能已經輸光你的錢了。」這是 無限大(不知多遠的"未來")對決 有限值(資金與青春有限)的不公平競賽,但現實就是如此!
==============


同學來信如下:



我們能做的是最悲觀的準備,但樂觀的執行。我想:「看到問題點,想辦法去解決它」肯定是邁向成功的必備態度。程式交易絕不是很多人幻想的躺著賺,把投機交易想盡辦法事業化,它就是個有非常高潛力成為個人高產值副業的自動化投資。

2014年10月11日星期六

風險的預期與思考


程式交易小學堂─小散戶投機的王道
根據維基百科上查到,風險的定義風險是相對某有機體的,指某可能發生的事件,如果發生,能阻礙有機體的發展,甚至走向衰亡,風險是指事件發生與否的不確定性。危險﹑危機。如:「期貨投資,必須負擔極大的風險。」(以上節錄一小段)

對我們從事於投機交易的人來說,風險其實就是建立部位之後,可能發生的損失。在當沖交易中,因為價格幾乎都是連續的,理想狀況下,只要部位在市場的時間且市場價格是連續的,風險的大小就是我們指定的停損金額。而如果持有部位會跨越價格不連續的時段,風險的大小就會多出了一段不可預期的時間。即便我們能用過去的歷史經驗來假設不可預期的這一段,可能會有多壞的狀況發生,以及發生的機率,來控制自己願意承受風險大小的對應部位數量,卻還是可能發生超出預期風險的超額損失。

2014年9月15日星期一

交易系統檢測 - 錯誤通報


程式交易小學堂─小散戶投機的王道
經過上次我的交易機器當機事件後,我思考了一番。系統正常運作的通報,因為每天幾乎都是正常的,而每天的定時通報,對於人來說,久而久之就會變成一種麻痺,慢慢的不在意例常通知,進而...忽視。

以我自己為例子,每天都會收到兩次系統運作正常的通報,慢慢的就連手機收到 mail 也會有點懶得去看,因為會直接當做那只是正常的通報而已,不管也不會怎樣...於是,我決定把系統運作狀況的通報,改成有異常才通報,平常運作 OK 的話就閉嘴吧。這部份的機制,我是透過 MacroExpress 與一個發 mail 的可執行檔來協力完成。

你可在這裡下載到所需要的檔案:下載點
壓縮檔中包含了兩個東西:一是 MacroExpress 的匯入檔(自行匯入),另一個是 AutoIt 的腳本檔。


2014年9月8日星期一

判斷今日休假 by MacroExpress


程式交易小學堂─小散戶投機的王道
因為今天想到我的機器不知道休假,會在盤中做一堆自我救援(沒有報價進來)的無謂動作。想到用 txt 記錄個 假日清單,然後用 MacroExpress 去檢查假日清單中的日期,來比對現在 RTC 的日期,判斷今天是否是放假日。

我做了個測試的示範影片,可以從右下角的小時鐘看到今天日期,畫面左側就是假日清單的日期(固定格式)。格式就是 yyyy/mm/dd。清單中沒有今天(2014/09/08),按下 macro run 後,什麼事也沒發生,而修改 holidayLIST 中的日期,把某一行改成今天,再按下 macro run,就可看到跳出個對話視窗,表示檢查到今天是假日清單中的某一天了。而假日清單的日期是不需要按照順序的。



這個 MacroExpress 的巨集檔可以無料下載,自行修改成你可能需要的功能。

下載點:https://drive.google.com/file/d/0ByO2dM_0djDvS2JHUW1LUnBzcHc/edit?usp=sharing

ps. 千萬不要問我這裡面寫什麼,以及怎麼改 =_=

2014年8月30日星期六

電腦當機之colocation服務與放心過頭


程式交易小學堂─小散戶投機的王道
昨天,我們一家子外出遊玩,交易的工作一如往常的全自動運作。

早上開盤前,我收到交易系統啟動的通知信我就沒管了(一大早就出門,人已經在高速公路上)。後來... 出包了!至於,為什麼我知道交易機器出包了呢?因為,到了晚上我想要檢查一下當天的交易狀況時,發現我的信箱中一封訊號變化或是下單的通知信也沒有!

接著我查看了一下週五這天的行情,看起來應該是會有某些策略會有動作的,而沒有任何一封通知信就怪怪的,再查了一下今天的委託單,真的一筆也沒有。於是,我就想遠端連進去確認一下,奇怪的事情發生了, TeamViewer 與 Radmin 都有 on line 的反應,但是卻一直卡在連線登入中,就是進不去。這表示電腦硬體還活著,Windows 也在,但就是連不進去 >"<。我不知道這算不算是當機...

2014年8月12日星期二

fuction_陣列偏移


程式交易小學堂─小散戶投機的王道
在某些情況中,我們會需要把陣列的數值做偏移的動作。而這個偏移指的是什麼呢?簡單的用 Excel 做了個示意圖,希望幫助你了解。我要把原陣列的數值如下圖所示的那樣,讓每個位置的值,往右移動 1 格,這就是我在這裡說的陣列偏移。以下圖的示範,這是偏移了 1 格,有的時候,我們可能需要偏移不同的格數。


2014年8月2日星期六

ShowMyPC_遠端控制軟體


程式交易小學堂─小散戶投機的王道
也許是我幫太多人做了遠端電腦設定的協助,後來 TeamViewer 把我的電腦列入"疑似商業使用"的警告名單,雖然目前沒有給我切斷或是只給非常短時間的使用限制,只是每次都會跳出的警告畫面來。我想,一是以後就不要幫人做遠端協助,二是付費給 TeamViewer,偏偏,TeamViewer 的最低授權版本的授權費都滿高昂的... 除非,每次我幫忙做遠端設定時可以收費,不然這會是筆負擔。

熱門文章