淺談策略失效的原因與因應之道(二)

首先,我們先來看一下業界最常使用的移動窗格最佳化 (WFO或WFA)
WFO其實已經有點機器學習的味道在裡面了
WFO引入了<時間窗格>的概念,簡單講就是他把要分析的資料先做了一個範圍的限定,例如固定使用3年的資料來進行分析或最佳化(一般回測的平台像是multicharts在跑回測的時候不一定會對時間進行範圍的限定,可能是有多少資料就跑多多少資料,我們所讀到的回測報告上的數據或指標可能是一個十幾年的結果)。
然後如上圖所顯示的,選定分析時間範圍之後,我們會進一步把我們要分析的時間窗格再做切割成 In-sample Out-Sample兩個部分,像是 In-sample可能是4年,out-sample可能是1年。接著我們會利用 In-sample這四年的資料來找出最佳參數(最佳化)後讓系統再運行1年的out-sample時間,然後再等到下個out-sample時間後重複執行上述的動作
所以我們實際上運作的權益曲線結果,就會像上面這張圖最下方顯示的,是由每一年的 out-sample的結果所組成的
WFO/WFA主要的概念就是如上所述,是藉由不斷地重新進行參數最佳化,來重新貼近市場,來達到修正統計偏差的目的
不過上面講的只是一個核心概念,事實上如果要再深究下去,其實還有一些後續的延伸動作可以更進一步地再加強或改善。未來有機會會再針對這個部分進行討論。

前面我們說,其實WFO已經有一點機器學習的味道在裡面了
那到底什麼是機器學習,下面我們來稍微聊一下機器學習大概是怎麼樣的一個概念?

在前面的篇章我們一開始有講到,我們大多數人都是怎麼開始量化交易這條路。
我們大多都是先選定一個程式交易工具或平台比如說像是 Multicharts 或是 TradeStation,然後選定一個”商品”,接著就在上面寫我們所謂的”策略”
但大家有沒有發現,我們的量化交易開發模式其實已經在不知不覺中被我們所選擇的工具所制約了?
工具或平台塞給我們的命題是什麼?
工具塞給我們的命題是 “我要怎麼在這個商品的歷史走勢中獲利”
工具暗示我們,我們可以透過他的回測工具來驗證我們的經驗或是技術是不是能夠在歷史資料裡面獲利? 如果可以的話,我們或許可以機械化地把我們的策略用在新的資料上讓獲利的歷史重現。
那這樣的命題是不是正確? 其實也沒有什麼對錯,只是在量化交易這條路上,這樣的命題是不是足以解決所有我們遇到的問題?
還是說我們還可以有其他的思考
我後來發現一個很有趣的東西,就是<機器學習>
我第一次接觸到所謂的機器學習架構,是2016年那個時候,發生了一個全球都在關注的大新聞,就是AlphaGo跟李世石的圍棋大戰,當時我還全程觀看轉播。
這場大戰為什麼會這麼轟動,主要是因為圍棋一直都是幾十年來一個電腦AI無法跨越的障礙,突然就在那一年一戰成名。當時的我就有點好奇,當然我沒有辦法看得多深,只是簡單地花了一點時間大概地了解了一下機器學習的基本架構大約是怎麼樣。
剛好當時也正在煩惱一些問題,主要是當時操作的商品越來越多(當時大約操作15個海期商品),複雜度開始有點在拉高,那個時候還沒有什麼”命題”的概念,主要就是照著原本開發量化交易的方式,抓一個商品來,然後跑跑回測,看起來可以用,就丟進投資組合裡了,不諱言開發的速度沒什麼效率,上線的效果也不是很令人滿意。
接觸了這個機器學習架構以後,我就開始在思考,是不是有可能把這個東西跟我現有的東西做一個結合,所以當時腦袋裡面很自然地就開始有了一些新的命題
像是
1. 是否有可能直接告訴電腦我要做什麼商品,給電腦一個基本的資料(history),他就可以自己學習自己訓練或是自己分析這個商品該怎麼進行操作? (智能 AI)
2. 如何維持資金的高效率配置(延伸: 低風險配置/XOXO配置)

電腦是怎麼模擬人類思考,並且解決問題的? 如果你去google的話,網路上其實已經有相當多的參考資料,基本上這大概花一個星期也講不完,事實上太細節的東西我也不懂
不過我們還是可以先簡單來聊一下基本的概念就好,什麼是機器學習?
所謂的機器學習其實就是電腦透過模擬人類思考的方式來解決問題
那這樣就簡單了,我們可以先來回想一下,我們人類是怎麼開始做分析的? 像是當我們看到一個人,我們是怎麼開始認識一個人(或對他進行分析)
我們會用眼睛看他的外表 用耳朵聽他的聲音(有多尖有多低沉) 用手摸摸看她的皮膚是粗還是細 用體重計看看他的重量(有多重),用尺來量他的身高(有多高)
這就是我們人類在觀察一個物件的步驟
就像上面這張圖右下角,是一個神經網路的圖,我們其實是透過各種器官或工具,在感測器官觀察到之後透過神經傳導不斷地來得到一些細節的數據
所謂的機器學習或是人工智能就是透過這樣的基本概念模式來達到特定目的
我們透過建立 感知器官或偵測器(sensor) 來測量或是評價,以便得到一些特徵(統計學),然後再進一步應用這些特徵值來解決我們想要解決的問題,也就是我們前面所說的命題

舉例來說,當機器學習(電腦)第一次「看」到一隻貓咪的圖片資料時,會把貓咪圖片的感測結果透過神經網路從左向右傳遞過去,中間會經過特定幾個神經元、經過各個神經元上的機制進行彙整跟評價,然後產出最終的評價結果── 比如最後評價出來的結果是0.1,尚未達到某個閥值,機器學習(電腦)就會認為這張圖片裡面很可能沒有貓咪。
在這邊我們一直提到的一個東西,叫做"評價",講白一點就是打分數或是某一種特徵的程度,像是音量的大小,或是顏色的深淺等等
我們會在策略回測報告上看到的一些統計指標,像是 SharpeRatio或是ProfitFactor這些東西,都可以被視為是一種評價
所以又有人說機器學習是統計學的延伸

在上個步驟是感知器官或感測器的激發與評價結果對圖片的預測,可是預測基本上可能跟實際值會有誤差,也就是我們一開始所說的統計上的偏差,而這個步驟就是我們會進一步地把這個偏差值回授(feedback)回系統中進行修正的動作,回饋的步驟在一般的工程系統中也算是非常常見的作法,主要就是透過回授機制(feedback)來對系統進行偏差的修正,通常一個穩定態的系統大多都會有這樣的機制。
待續