十一月 152017
 

在大致了解量化交易的基本概念後,接下我們要針對量化交易作一個更清楚的定義,因為這個概念和之前大多數人所認為的程式交易有很大的不同。

量化交易 (Quantitative Trading), 演算法交易 (Algorithm Trading), 有時也稱為系統化交易 (Systematic Trading),在國內一般都稱為程式交易。若您在 wiki 上查他們的定義或許會有些不同,但實際上指的都是同一件事,是指利用電腦幫忙做決策完成交易。不過這裡所謂程式交易似乎只有國內在用,國外還是以量化或演算法交易來稱呼。

 

先來看看一般人聽到程式交易大概會有什麼反應:

 

第一種是那些完全沒聽過的,很自然的會把它理解為:把證券市場的交易的規則寫成程式,再利用電腦執行進行下單,這樣做可以使整個交易流程自動化,中間沒有人為的介入,也因此就少了人類不理性的行為。聽起來好像不是很特別的方法,但如果就只是把交易方法自動化,對於投資者而言也只是省去看盤及下單的時間,對於獲利似乎幫助不大。
第二種是有聽說過,也可能有稍微了解過,這些人可能也知道有一些軟體可以幫忙,投資人只要想好策略,在這一類的軟體上編寫程式然後再利用歷史資料驗證(即所謂的回測)即可。由於一般的交易策略都需要大量的計算,所以藉由電腦輔助來完成交易是很自然的事情。 他們大概也知道投資人必須花一些時間想好策略才能開始,策略是整個交易的核心。
還有一種是有經驗的人,不過通常是慘賠的經驗。他們因對投資有興趣,亦或者是以投資為專職的投資人,會花很多時間(無數的熬夜)及金錢(通常是以萬為單位)學習程式及撰寫實際的交易策略,但上了戰場實際交易後才發現一切完全不一樣。
這些問題出在那?單純的只是沒有一個好的策略嗎?亦或是沒有做好風險控管?還是在做回測時沒有考慮週全?這個問題的答案會有多面向,我認為這些都對,但這些最終都是同一個問題根源,就是對量化交易這個領域的認知不足所致。不該把量化交易看成只是電腦交易而已,而這也是我不用電腦交易這個名詞的原因,它會誤導學習的人把電腦當成計算機在使用1
那什麼是量化交易?首先對於投資人而言,必需把它視為一門科學而不僅僅是個工具。視為工具,那真的只是把電腦來當一台計算機使用;視為科學,我們要學的就是一整套解決問題的手法。量化交易類似於資料分析的科學,它會有一套手法來分析實際市場上的資料。一般在遇到問題或者有觀察到某一現象會先提出假說,然後再收集資料並利這這些資料來驗證所提出的假說是否正確,最後才會形成可以實際交易的策略。對於利用這種資料分析方法而做投資決策的人我們稱為量化交易人(Quant Traders, 或 Quants),而對於一般沒有利用足夠的資料分析驗證投資策略的人我就稱為一般投資人(Discretionary Trader)2
我們可以回想過去我們所學的物理化學,舉凡一些假說在發表之前都會需要先去驗證,這也是科學家在發現新現象的重要方法。例如在國中時我們所學到有關彈簧力學的虎克定律,它是有關力和彈簧長度的關係。當初虎克也是因觀察到材料所受的力和長度的變化有關連而提出這個假說,然後進一步實驗來驗證。
在投資市場上對於資料的分析也是如此。例如我們可能觀察到某一檔個股的波動好像都在一定的價位附近波動3,那我們如何例用這個觀察到的現象來建立起一個投資策略?對於一般投資人而言,他的決策大多是憑感覺來決定,無論是買賣的價位,數量,亦或是最基本的問題:這個波動真的是可預測的嗎 — 這些都可能是簡單的圖表觀察就決定了。但對於一位嚴謹的量化投資人而言,這樣的單純觀察是遠遠不夠的。他第一步會先收集到足夠的歷史股價,然後利用統計方法來驗證這樣的價格波動是不是可預測的(也就是是否真的在均值附近來回振盪),若是真的如假設它會在平均值附近檢回波動,接下來才會利用歷史數據做嚴謹的測試看是否是有足夠的獲利來支撐這個策略,然後才會考慮利用這個策略到投資組合中,最後會再加上適當的風險控管以防若策略不可行時損害是可控制的4。所以總整而言,量化分析可以約略分為這四大步驟:
 
 
現象觀察 -> 資料收集 -> 驗證 -> 執行
第一個步驟現象觀察,就是在尋找有什麼樣的投資策略可以運用。其實若您有一些投資經驗,應該常會從報章雜誌或和一些朋友聊天中會有些啟發。另外常瀏覽國外一些量化分析的論壇也都會得到很多。我並不是說所有這些聽到或看到的發想都要納入來驗證,反而是要先有第一步的過濾看合不合理,這也是訓練思考的第一步。有沒有用我是認為要在思考及調整後才會有答案,但一個合理的策略通常會需要一些修正才有可能利用。Dr. Chan 在他的第一本書,Quantitative Trading5,中就利用一個章節來敘述如何發想一些策略的點子,建議大家可以看一下。
當有一個認為合理而且可行心中方案後,接下來就要利用歷史資料來驗證這個想法。網路上有很多免費的資料可以運用,我比較常用 yahoo finance 上所提供的歷史資料,主要是它有方便的 API 及除息調整的股價。不要小看資料收集這個階段,要找到並處理成有品質的資料還是需要花一些功夫的。像是掉資料或資料錯誤等都必需先做處理,否則直接拿來驗證會出現很多意想不到的問題。除了資料品質外,資料的收集還要考慮像是資料頻率、資料的種類以及即時性等問題。這一部分我想會需要另外一篇文章來說明。另外在收集資料的過程中它所需要的程式技巧也不會太高,所以對於初學者而言剛好可以拿來練功,並建立自己方便使用的函式庫。
 
接下來便是整個量化分析的核心了,策略驗證。這一個步驟我通常把它分為兩個部份,一個是研究 (Research),另一個是回測(backtest)分析。研究的目的主要是在驗證策略可不可行,回測的目的主要是要看在實戰上的可行性。例如均值回歸的策略,首先您會需要利用統計工具透過歷史股價資來尋找可以投資的標的或組合,然後才會再利用一些均值回歸特性的策略(例如 Dual Moving Average Cross-Over)來開發回測的程式,這個測試就要考慮交易成本,測試的方法,若可以的話,也可以納入投資組合分析看它對整效益的影響。另外測試也會有很多資料偏移 (Bias) 的問題, 這些也都會在我們以後的文章中進一步闡述。
若回測也可以了,那恭喜您可以開始準備上戰場了。不過這個前題是您的回測平台也同時有提供自動交易的能力。在做量化分析時多以 Python, R 或 Matlab 為平台來做的自由度會最大,它的好處也是您不用再另外開發一套相同程式來執行交易,另外它也不受您想要交易的市場而有所限制,只要有券商接口的 API 就可以執行。但它也有缺點,它不像一個市售的套裝軟體,例如 MultiCharts, TradeStation等多已經把券商的 API 接口做進系統中, 你大概也不需要煩腦怎麼下單的問題,不過這一類系統最大的問題就是在它沒有比較完整量化分析或統計相關的工具可以使用,完全受限於平台所能提供的。還有這一類的套裝軟體所需的費用也不低。
除了這些,一般做程式交易的人還有一個很大的問題就是把策略看成是一切,而忽略了風險控管的問題。甚至更極端的認為想要找到一個所謂的聖杯(Holy Grail) 程式,以後就可以安穩的賺錢過日子了。有一點對於量化投資人必需要知道的,量化分析主要是透過過去的歷史資料來預測未來,這一定會有誤差,有誤差就要做風險控管。風險控風的目的並不是要降低或消除風險,而是對於整體投資組合中的曝險部位做一個適當的控管,也就是將投資組合的各曝險的資產比例做一個最佳化的配置,使得策略的長期報酬率能夠穩定,不致因突然的市場變化而危周到整個投資組合。所以風險控管並非是要增加你的護利,但它會改善你每個策略長期的獲利率6
 
 
小結
這樣的一套分析手法其實並不特別,每個人在過去的教育與工作經驗中都已經知道。 但為何在一般投資人在投資市場上卻不會運用?我想答案終歸還是在人性。人類的思考總是會趨向於接受簡單的事而拒絕複雜的事,所以當有人推銷說簡單快速賺錢的方法,只要聽起來直覺上有理就很容易會被接受,這也是報章媒體常在講一些如何輕鬆理財等這一類議題的原因。另外對於量化交易的概念,也必需把它視為資料分析的科學,而不僅僅是一套自動化交易系統。這個觀念的偏差對於以後在建立自己量化交易系統時影響會很大。
 
 
 
Notes:
  1. 在往後的文章,除非有特別提到,否則我都會以 “量化交易” 來概括這個以電腦為輔助來完成交易的這個主題,另外若沒有特別提起,演算法交易也會和量化交易同義。
  2. Discretionary Trader 若直接翻譯會是:隨意交易人,感覺不是很尊重一般的投資大眾,所以我這邊把它翻成一般投資人。它的意義是說在做決策前並未經過嚴僅驗證的這一類投資人。
  3. 這就是我們後面會提到的均值回歸(Mean Reversion)策略
  4. 這邊我只大概描述一下量化投資的做法,實際上在實作時會考慮到更多問題,例如測試資料時要怎麼測才會比較好,該檔納入投資組合的標的要占多大的比例才會有較好的風險控管等等都是要進一步考慮的。
  5. 這一本有中譯本,譯名為計量交易
  6. 凱利準則(Kelly Crterion) 就是一個例子。它透過機率原理以及最佳化求解來決定每次買入或賣出的比例。
 Posted by at 16:22:26

您可點選下方留言