交易濾網怎麼寫
何謂「交易濾網」?簡單講就是在不該進場時阻止策略進場,以提高勝率。交易濾網怎麼寫,分為初階與進階,最基本的做法是直接修正訊號的敏感度或是增加進場確認條件,後者典型作法是設法先定義出大趨勢,例如用一條200MA定義長線趨勢,在均線上只做多訊(把空訊濾掉),在均線下指做空訊,不過這樣的濾網畢竟還是商品自身的價與量構成,如果可以把外部的資訊,例如大額交易人淨部位(籌碼)或是選擇權VIX指數等等,放進來當濾網,這個濾網是不是就更具有不同層次的視野與效果呢!進階做法就端看開發者的想像力與經驗值。通常,我們興之所至寫了一個策略,然後跑出一個不甚滿意的績效表如下(有設交易成本),此時請先別急著跑參數最佳化(壞習慣!),好好分析績效報告並比對一下訊號與行情,下面這個情況蠻常發生的,我們稱為「過度交易」:
[attach]5493[/attach] [attach]5494[/attach]
如何改善?除了根本上檢視交易策略的邏輯性外,最直接方式是降低進場次數,方法有二:
1. 改採用較長的時間架構(Time Frame)。(除非你的策略另有所圖,否則傳統的趨勢策略通常不建議採太短的時間架構,1分鐘或5分鐘,會產生許多雜訊,績效自然不會太好)
2. 增加限制進場的濾網條件。
於是我們把上面的策略,改放到30分K,並增加一個濾網規則,價位在60MA以上只做多訊訊,在60MA以下只做空訊,語法如下:
If [原多單進場條件] and close> average(close,60) then buy …
If [原空單進場條件] and close< average(close,60) then sellshort …
調整後的績效如下:
[attach]5495[/attach]
調整後的績效當然還沒有到可以提槍上陣的程度,不過至少在這個基礎雛型上再來修改會比較容易。
上面這個範例純用指標來當濾網,是比較典型的抓長線趨勢來增加勝率的做法。其實濾網還有很多寫法,以下提幾個思考設計的方向:
從統計角度:
比如根據統計(還是經驗?)通常大行情的隔天行情會比較小或是震盪,那麼當沖程式就可以寫一個濾網,限制大行情(例如高低點超過2%)隔日的進場訊號。之前筆者也寫過一篇台指週一到週五波動狀況的文章,這個統計也可以用來設計濾網。
運用外部資訊:
例如大額交易人淨部位當Data2已經有很多運用實例,此外選擇權的資訊,如VIX指數對市場波動度的解釋力學術上也證實要強過歷史波動濾,諸如此類都可以設計到程式邏輯中,讓我們在價與量之外找到更有用的資訊,進而提升交易策略層次,關於這個方向,筆者認為值得策略設計時好好去研究,才能走出不同的路。
從損益(資金管理)的角度:
例如限制每日當沖交易虧超過10,000後,當天就不再進場,這個概念延伸下去可以銜接上「Trade Equity Curve」,也就是資金管理的範疇。限制當沖每日最高虧損金額可以這樣寫:
Vars:NP(0);
If date<>date[1] then NP=netprofit; //每日第一根K重抓一次前一天的總淨損益
If [原進場條件] and netprofit-NP>-10000 then buy …
快速結論:
加濾網最初的概念就是減法邏輯,不要以為只有主觀交易才會有過度交易的問題,程式交易遇到這症狀也不算少見,除了檢查交易邏輯本身,先看是不是用了太短的時間架構或是太敏感的參數,接下來,濾網的設計其實可以天馬行空,也是策略開發可以突破傳統框架的地方,最後,加濾網的初衷就是期望在核心進出場邏輯外設法提高勝率,趨吉避凶,延伸到最後跟「Position Sizing 」或是「Trade Equity Curve」都算是殊途同歸,不過資金管理是另一議題,後續章節再來討論。
页:
[1]