2010年5月2日

更深入了解您的程式---交易損益歷程

兵法有云:”知彼知己,百戰不殆”,從TS提供的績效報告(Performance Report)裡我們可以得到關於交易策略的概貌,一般而言多是是看看累積損益圖(Graphs)跟匯整報告(Summary),其實在這份績效報告裡面還提供許多深入的資訊,例如光在Graphs裡除了我們常看的Equity Graphs外,尚提供Trade Graphs、Efficiency Graphs 等等分析圖表,無非就是希望協助使用者可以更深入去了解策略的特性。
如何提高程式交易的績效有許多方法與討論,資金管理/加減碼、程式或商品多樣化/差異化等等,不一而足,其實提高程式策略的績效也可以不假外求,深入且仔細的去觀察策略本身的盈虧變化也能提供我們許多線索。

筆者認識一個作程式交易相當資深的交易員,每當程式單進場沒多久,常會聽到他嘮叨:「這筆單賠錢賠定了」,或者有時候他會在程式單之外額外手動加碼同方向部位,我看過幾次他這樣神來一筆,於是忍不住問他為什麼,他回答我,這是他的經驗,當他的程式單一進場能夠達到某種獲利的感覺,他就會確認這次行情非同小可,就會另外手動加碼。


我們也似乎有共同的經驗,一進場就賠錢的單子最後都是虧損收場,反過來一進場就可以迅速脫離成本區的單子最終賺錢的機會很高,這個經驗其實提供了我們相當重要的暗示跟啟發,當程式交易的訊號發動,單子一進場,經歷第一根K棒、第二根K棒…一直到出場,當中損益的變化往往能預告這次訊號的成敗機率!


我的交易員朋友跟我們自身的經驗都屬於比較感覺或是經驗層次的,別忘了我們做程式交易就是講究統計、講究科學,這篇文章我們將示範如何在Easylanguage裡頭撰寫程式碼幫我們紀錄每一筆交易的盈虧變化,然後歸納出一些對交易有幫助的技巧,特別是加減碼的時機。


首先我們要做的就是在原本的策略程式碼加一段輸出損益紀錄(程式碼):


於是跑策略的同時會建立一個TXT檔紀錄每一筆交易從進場道出場的損益變化(每一根K棒),也可以說是每一筆交易的完整 ”生命歷程”紀錄,輸出TXT檔內容如下:

為求進一步分析,我們將上面的TXT檔匯入EXCEL做整理,並繪圖(縱軸是累積損益,橫軸是經歷K棒數):
<賠錢的交易>
<賺錢的交易>


接下就是從這些數據跟圖表去觀察賺錢交易跟賠錢交易有無各自共同的特性,甚至有無任何”先兆”,舉例而言,假設A策略的虧損交易平均虧損金額為10000,如果我們發現該策略的交易進場後一但在第N根K棒時還是處於虧損的狀態,則該筆交易最終賠錢的機率高達八成(合乎經驗法則,對的交易應該一進場就賺錢),則我們可據此寫一個停損機制:
if barssinceentry=n and positionfroit(0)<-10000 then exitlong/exitshort this bar on close; 這樣我們應可把賠錢的交易其平均虧損金額往下降;另外再觀察賺錢的交易,特別是大賺的交易,看是否有無共同之處,也可以做為加碼的機會。或是我們也可以再多切一類把多單跟空單分開看,這樣就變成賺錢多單、賠錢多單、賺錢空單、賠錢空單四類,再各別去觀察有無特別之處。 從每一交易的損益歷程紀錄中可以歸納出許多有用的資訊,在您花時間甚至是大把銀子去找新策略前,不妨先好好研究、好好了解既有的策略,相信其中便藏有寶藏。


參考資料:Stridsman, Thomas. The good, the bad and the ugly. Futures: News, Analysis & Strategies for Futures, Options & Derivatives Traders; Nov98, Vol. 27 Issue 11, p38, 3p.



歡迎加入LINE@
加入好友
(點擊上方圖示)