策略與資金管理流程(二)實務補充

策略與資金管理流程(二)實務補充

延續上一篇<策略與資金管理流程(二)>,來作一些實務設定上的補充

前面我們講到,所謂策略或指標只是我們所打造的武器、基本招式或食譜,但真的要成為職人等級,我們要修練的重點其實不在那裡,因為真正更重要的是力道或火侯的控制、使用的時機、危機的處理等等,這才是真正的靈魂所在。策略的回測終究只是回測,策略上線之後的各種處理與分析才是交易者們真正的決勝場。

實務篇我盡量不講一些廢話(有點難)XD,還是直接看實務。我們先來幫我們所要管理的策略加上一顆腦,灌注我們操作魂的地方

我們透過新增一個額外的觀察者(行車電腦),在這裡進行統計資訊的彙整以及部位管理演算法的運作,不去干預我們原始策略的運行(很重要),過去的文章裡都有說過,很多東西我們無法在策略裡面直接撰寫,因為那會破壞原始模型的機率分布,例如我們前一篇所舉的透過DD作均值回歸風險管理,我們無法做到在策略裡撰寫觀察過往DD的動作直接進行部位的變化,因為一旦直接在策略裡進行部位的變化,DD的行為與機率分布就改變了。同理,策略品質分析也是一樣,所以只能透過這樣新增一個觀察者(行車電腦)的腳色,來幫我們做到策略管理的動作。這也是新一代科技汽車特斯拉的開發重點,導入AI(觀察者),透過各種統計數據來達到更多自動化以及安全保障的演算法。

在量化思維戰略交易平台裡會有兩個這樣的AI腳色可進行演算法的撰寫,一個是上面的QuantBrains_Connect(負責最基本的單元也就是策略模組的處理),另一個則是Level-2資金管理策略演算法(負責多商品加總後的總體帳戶的Total BIAS處理或Rebalance處理演算法,有興趣的同學可以先翻一下以前的介紹的文章,或這部分之後再來講)

既然是實務篇,那我們就直接來看這顆行車電腦可以幫我們做哪些事情或那些分析

首先我們先隨便拉一隻策略進來當例子,網路抓的或Multicharts裡面的等級就可以了,當然你精心設計的策略也可以。我這邊還是延續前面使用的常見均線型順勢策略,由high均線跟low均線組成的band,band上作多,band下放空,很經典的非多即空順勢型趨勢跟蹤策略,相信每個人一定都有一支這樣的傻瓜型態策略

PF值1.36,真的是隨便拉的XD 這種非多即空傻瓜策略在以前是很不錯用的,只要傻傻跟蹤追隨,如果你的信仰夠堅定的話,基本上長期報酬還是會趨向正值

接下來我們直接在Multicharts的策略列表掛上我們的行車電腦,進行第一步分析

我們的第一步分析先來對策略進行多空分析,基本上不需要動任何腦袋,直接告訴行車電腦我們要分析的交易屬性以及回溯時間即可

EquityType為我們要分析的交易型態,預設為0(分析原始型態),而我們這裡打算把多空屬性分離,進行個別分析,所以會填上 1 或 -1,代表我們要進行多單屬性與空單屬性的分析

回溯時間為我們移動窗格的範圍。我們在Multicharts中進行最佳化一般的習慣是有多久歷史資料就用多久歷史資料,有十年就用十年,有二十年就用二十年,但其實這樣的回測時間意義並不大,十年前的時空背景跟商品屬性可能跟現在早已有很大的差異,所以一般我們進行分析只要抓近幾年的就可以了,個人習慣是一年到三年(250~750)都可以接受,超過三年以上的資料意義並不大。當然如果你想設10年也沒有不可以。

所以現在多了兩顆腦,一顆上腦一顆下腦。掛上後,我們就可以看到在該回溯周期的分析結果已經出現在圖表上頭,上排數值為這個策略的多單屬性品質,下排為這個策略的空單屬性品質。

從這裡開始,垃圾已經開始慢慢變成黃金。透過行車電腦的數值動態自動追蹤跟分析,多單被認定為長期具有一定的操作價值(慣性),而空單則幾乎完全沒有運作效益,因此在此刻,多單將自動被分配0.49份資金權重,而空單則幾乎沒有被配重。當然可能有人會覺得,那我們自己把空單關掉就可以了,也不是不行,只是當你策略型態跟商品型態多了之後,每一支策略跟商品都要定期去檢查並給予權重,就會發現這種實在不需要人工的動作,還是讓他自動化就好,都要作量化交易程式交易了,然後還要一天到晚自己手動實在沒什麼意思。自動化的好處是省心省力又及時,哪一天屬性改變了,轉成了空頭大波波當道,才發現這個商品忘了定期檢視,那個策略忘了重新配重,少賺不打緊,多賠可能會要命。

多空自動分拆分析大概是最無腦什麼事都不用作就可以立即提升策略品質的步驟。(ProfitFactor:1.36 –> 2.36)

不過多空屬性分拆分析個別運作只是最基本的。在上一篇我們有提到,其實評價函數還有很多可自訂的發揮空間

既然是實務篇,直接來看一下我們QuantBrains_X1行車電腦裡面在作什麼,裡頭主要有兩個區塊,分別是基礎的EVA區塊以及風險管理區塊

第一個區塊是 EVA function (EVA(x)),目的是讓我們可以對我們的策略有一個基本的品質認識,我們在這裡可以直接自訂策略基本品質評鑑的一個標準。在預設範例中我們使用的是比較廣為人知的 Optimal-f,原始設計的基本原理主要是以獲利最大化作為目標。在機器學習的架構裡,評價函數也被稱為目標函數,也就是說,這個函數的設計是可以根據我們的目標而定的,像是這裡的Optimal-f設計目標可能為獲利最大化,但不一定會去考量其他方面,像是權益曲線的波動程度就不在OptF的設計考量裡,所以如果我們希望權益曲線的波動程度或是發生中的drawdown等也被納入考量,那我們也可以將這些元素直接納入評價函數(目標函數)的設計中,好比現成的Sharpe Ratio或是Sortino Ratio這樣的設計。

也有其他的更直覺的設計法,像是回歸線趨勢斜率、角度、積分等等,也都是可以作為策略基本品質分析函數的選擇之一。要是超級懶得想,直接用我們最佳化時最常用的netprofit%或直接給個固定值(可能需要定期檢視)也沒有不可以。

第一個區塊基本上大家都很熟悉了,也大都有現成的函數可以直接調用,就不佔用太多版面。接下來行車電腦原始碼中的第二個區塊則比較"個人化",我們可以在這裡實作我們的操作魂。

在這個區塊中,我們可以做兩件事情,第一個應用是將原本策略中的濾鏡拉到這個部分來。

濾鏡在我們的策略中原本的用途是用提高訊號可信度、作為降低雜訊或區分風險的工具,所以其實濾鏡就是策略裡我們對訊號的管理,通常我們會在<進場時>參考這個數據來決定訊號是否要開啟或關閉(該死的二分法,一路制約了我們的思考很長的一段時間),有部位管理概念的人則可能好一些,會讓(進場)部位有大小程度上的區別,但通常也僅止於<進場的當下>。只有極少部分的人會透過加減碼模組來根據濾鏡數據進行動態控制(需要對PL有一定的熟悉程度,不容易撰寫)。

濾鏡的種類算是非常多元化,常見的有價差/波動率/法人留倉籌碼/成交量變化/盤中即時資訊甚至是天氣預測(農產品)/季節循環/公司的營收(股票類)/利率等等都可以是濾鏡的一個來源,而這些數據並非靜態的,可能每天都會有變化,也常在"進場後"才變動或發生。

以我自己常用的一個風險濾鏡為例,(下方)數值幾乎是常有變動(市場是活的),但原本如果只寫在策略裡,可能只有作為資金標準化函數計算後的進場部位加權,雖然已經能看到噪音下降的改善,但如果噪音或是風險是在<進場後>才拉升,很顯然即使我們明明知道條件可能已經有所變化,對於部位的管理應該還有改善空間,但通常還是會因為MC撰寫上的困難或制約而選擇無視(如果以大家手中幾乎都有的價差濾鏡為例,大概九成的人使用的方法都仍停留在逆價差才進場作多,正價差才進場放空這樣的寫法,如果某一天訊號還在,但即時價差卻已經翻正到一定程度,你是否會有對應的部位控制?)。

如果把這個濾鏡從策略裡改移到行車電腦的第二個區塊來實作,直接作為EVA(x)的權值,我們就更能貼近原本濾鏡處理噪音的原理,也能作到即使是進場後也能透過評價函數動態控制部位的縮放。

一般來說濾鏡的蒐集與知道如何去使用,如果沒有人帶,通常需要偶爾神來一筆的頓悟跟時間的累積,隨著交易的時間越久經驗越足,對某些商品特性、特徵現象(比如厚尾跟波動率之間的關係)或資料(現貨、法人籌碼等)有了基本掌握之後才會有比較知道怎麼去進行量化以及順手的運用(如果是寫在策略裡就會開始呈現漂亮的階梯狀)。然後我們就會開始有機會從一般的雜魚兌變成傳說中的老司機。

講完了濾鏡,來講這第二個區塊的另一個應用,資金(風險)配置管理。我個人是這樣歸類,如果說濾鏡是主動式的管理(可能是某種商品特徵特性或是額外資訊,我們在使用時已經很清楚知道抗噪原理或因果的),那資金與風險配置管理就可以算是被動式的管理,像是我們在前一篇例子裡所舉的drawdown風險管理。換句話說,濾鏡注重的是某些現象或噪音的因果關係,例如法人盤後留倉量是大量作多,因此我們也就跟著作多(因果),或是可能天災的預測或延續會造成農產品期貨供需的改變(因果),或是網路上在十分鐘內突然出現大量的新聞標題出現"爆炸"兩個關鍵字可能會連動股市造成短暫的瞬跌(因果),知道因果關係可以讓我們在押注訊號的時候有比較高的準確性,減少沒有效率的出手。

而接下來要講的資金規劃或資金配置也就是前一篇說的(已發生的)風險管理,則是變成老司機的另一條路,濾鏡可以幫我們出手出的精準有效率,而資金規劃配置則可以幫我們盡量慢點死(比別人慢一點死,撐到黎明那一刻的機會就比別人多一點)

===>下面這兩段很重要

巴菲特說過:「無論是襪子還是股票,我都喜歡在減價時買優質的商品。」、「別人貪婪時我恐懼,別人恐懼時我貪婪」,德國股神科斯托蘭尼的雞蛋循環理論,講的全都是同一件事情,其實真正安全且利益豐厚的進場點,往往都發生在危機(風險)出現之後。如果我們始終都沒有順手的濾鏡(需要經驗的淬鍊,沒人帶急不來),更簡單的做法就是保留或切割某一部份現金專款專用,直接等風險(噪音)的發生成為既定的事實之後再出手就好(對這筆資金而言,沒賠到的部分就等於是賺到),對這筆現金而言,已發生的風險不是風險,是優勢!期貨是零和遊戲,與其總是在危機(DD)正在發生時一直告訴自己這是信仰這是信念苦苦等候黎明的到來,不如像邱吉爾說的"別浪費每一場危機!",危機真實發生後往往是最好的加碼時機! 一般交易者跟老司機的差異點就在於,一般交易者只靠信仰信念支撐等待(平注的悲哀),老司機則已經虎視眈眈準備著進行預備資金的戰略部署,同樣的食譜,同樣的一個策略,卻有著不一樣的資金戰略部署節奏,不一樣的火侯控制,在行情重新啟動之後,一般交易者還在慢慢補DD,老司機們則因為在DD時已率先利用好時機戰略部署提早創高了。

下注節奏很重要,因為這部分直接牽涉我們的"交易心理",如果我們策略用的永遠都是平注進出,一旦遇到危機或DD,那心理可能很直接的就是痛苦與恐懼。但如果我們的節奏對了,知道要切割一部份資金或部位來進行風險管理,這就非常有趣,我們會發現我們反而會有一種風險預期的心理,恐懼減少了,反而還可能會有微妙的部分心理在期待他發生,因為這樣預備金才有機會派上用場。換句話說,其實風險管理管理的不只是風險,他同時也管理著我們的心態,心理素質的重要性在交易裡有多重要這應該不用再講了。

<===上面這兩段很重要

不過這裡要特別提醒的是,上面老巴其實話裡已經告訴我們"優質的商品",股神靠基本面來判斷商品的優質程度,我們做量化的則靠統計(評價)。只要透過EVA(x)作為基礎防火牆,確認動能(期望值)向上,我們才可以放心作這樣均值回歸的風險資金配置。如果沒有EVA(x) 這層防火牆,慎防變成惡名昭彰的馬丁格爾。

這樣的配置需要很多的資金嗎?不需要,兩口小台就能作了。如果我們現在有兩口或多口小台權限能夠運用,我們該怎麼分配?我個人會優先考慮像上面這樣的戰略配置部署,而不是分成兩個或多個單口策略。

除了這邊所提的DD風險管理之外,損益管理亦可以在這一個區塊中實作,像是我們比較熟悉的inc項(從該筆交易中損益撥出特定%數再投入冒險),或是跟蹤停損(限制該筆交易的回落)等等…..再繼續講可能真的大家都懶得看了….

拉回風險管理實務,所以我們就可以在行車電腦的這個第二區塊中,透過下面的程式碼進行我們手中籌碼的戰略部署

filter=filter[1];

if 已創高and marketposition<>marketposition[1] then filter=0; //clear

If DD<-2*StdDev(i_OpenEquity,250) then filter=1;

EVA=EVA/2+filter*EVA/2;

如此這般,由於EVA會在資金管理平台內作為資金標準化函數結果的權重,一旦EVA條件符合,數值有了動態變化,資金管理平台便會立即自動進行部位的重新配置。當然,有了概念之後要手動進行加碼也是可以,不過就像前面說的,都已經作了量化交易、程式交易,自動化才是王道。

粉絲專頁

進化特區