NokiMo
阿程量化交易
阿程量化交易

patreon


【內行人點用因子去搵 Alpha】

遲左出文,好多謝咁多位朋友仍然 subscribe 支持我,放心一定會追返文俾大家。話說最近咁忙因為有新投資者睇中我地套新stat arb系統,最後成功close到deal。而家放左手俾班小朋友去管套系統,又多返啲時間可以返黎做下自己野,寫文娛人娛己。


今篇文想講講「因子投資/投機」 (factor investing / speculating)。最近係置地 cafe 又同一位外國岩岩Maths PhD畢業既junior朋友仔傾計,言談中得知佢係一間 Tier 1 quant fund 做左成年research 都未搵到一個好既 factor model 去預測股票短期走勢,因為當個交易環境轉變少少已經令到個 portfolio performance 變動好大,好難有穩定的預測。咁我問佢覺得點解會咁,佢話原來佢95%時間都係睇論文,學左好多理論,但淨係得5%時間做實際既 model testing,所以好多時學左入左腦的野其實無太多時間用codes去將佢變現做實戰。


而個問題我係好多個posts都提過,總之結論係有個大概思維就直接去做回測,之後實盤做再諗點改善。例如你發覺做左幾十日 intraday 交易,做晒回測入面都出現到的交易之後,點解實戰最後扣晒 transaction costs 後平均每日會蝕錢而回測係賺錢幾十個 bps,其中一個可能當然係 slippage / spread,但如果你本身都 account 左而啲 transaction costs,咁另一個可能性就係其他原因,例如市場的 rebate (最有可能當然就係 crypto 市場) 就係等於而個差距,因為回測反映唔到有execution優勢的交易者所賺得到的 rebate 盈利,但實際成班人都做類似策略的時侯可能會 crowding 得太緊要,到最後都係會賺唔到而個你以為賺得到的肉。另外,如果一個PHD岩岩入行做QR,想要升PM或轉Quant Trader,一定要有個efficient框格去加快發掘策略研發同回測,咁樣先可以係而個field生存到。


所以今日想同大家講下 Quantitative Trading & Researching 入面最核心而又最基本必須認識的6個關鍵steps,每個step都同因子投資/投機有關,等大家唔使再浪費時間係唔efficient既理論研究度。如果你中意做因子投資/投機的話,以下內容應該對你黎講會幾有幫助。



我自己特別關注的6個關鍵步驟:


Step 1: 因子選擇 (Factor Selection)


呢個部分,我見到最多新手捉蟲。假設你的目標係搵一堆因子去預測股票回報走勢,好多人一上黎就諗住要搵好多factors,諗住愈多愈好,然後一氣過扔入去條regression公式去預測returns。記住一點,多factors唔係一個問題,但如果要花好多時間去搵大量自己都interpret唔到的factors,晒時間之餘,到時賺錢同蝕錢你都attribute唔到個原因,咁係為自己將來埋下一個大伏。你絕對唔會想搵晒一千個factors後發覺原來絕大部份都無乜預測作用,而IC / IR 相對較高原來一睇係唔太make sense 既九流亂砌出黎既 formula。


之前有段短時間係間local family office做,有個intern同我present佢既model,佢話:「我用左100個factors去預測個股票回報,R-square好高。」首先聽到R-square好高我已經打左個突,係金融市場預測回報,除非計錯數,唔係既話R-square係好難會高,至少唔係你係econometrics堂入面將d cross sectional data regress完得出黎個種80幾90% R-square的數字。其次係,100個因子,除非絕大部份都解得通點解佢地唔會係 multi-collinear,否則overfit的機會都係高。


再深一層睇,好多factors之間highly correlated,根本冇咁多獨立information,或者簡單d講,其實用好幾個傳統 factors 已經反映到大部份股價 returns (例如 size factor, momentum factor, value factors, etc)。未反映到出黎的因子 (影響 residual returns) 就係大家追求 Alphas 的先決條件,但唔會易搵,而且好多都係短時間一閃即瞬,你回測到的可能只係1, 2年的好成績,稱唔上係好有statistical significant既result。但亦可能因為咁,而d alpha periodically 都會復活。


另外,太多factors會導致overfitting,你可以用一啲方法去restrict左個 factor (e.g. Lasso / ridge,可參考我上篇關於 Linear regression文章) effect 去零,從而減少 factor 數量。最重要係,如果當你真係搵左100個factor出黎,但你真係了解晒每個factor點樣影響股票價格? 或者每個相對independent的因子對股價的影響速度有多快? Magnitude有多大? 而啲都係要諗的問題,如果未諗到解決/迥避的方法,你的model可以講仍然有相對大的risk對你黎講係未知之數。



我個人選擇因子時會睇的幾個重點:

1. 因子要可以解釋到點解呢個factor會係「某一段時間 / 平均係某一段時間」會影響股票回報,唔可以純靠數字上去量化,要intuition都解釋到覺得make sense

2. 令既portfolio入面factors之間既correlation通常唔會高

3. 個人preference,因子要容易計同更新, online 定 offline 計都好。你唔知邊日你係Bloomberg 某個field 拿的data會出現錯數而搞錯你的 allocation weighting。最好係你可以用其他方法去cross calculate到



Step 2: 數據準備 - Garbage-in-garbage-out


好多人覺得數據準備好悶,想快啲做modeling。但係數據準備做得好,已經贏一半。係我做QR的一段長時間入面,我了解到準備好數據的重要性,好多好的策略都來自於洗好數據及調整數據的format以適合我的model去分析。


數據準備要注意:

1. 橫截面數據:你要定義清楚你既回測範圍

- 全市場定係淨係大市值股?要包幾多隻先夠 statistical stability?

- 要唔要包括新上市公司?

- 停牌股點處理?

- Intraday 可以用不複權數據,但日線或以上用前複權/後複權比較好? 前複權keep最新股票價格不變而adjust以前股價去take into account corporate action 的價格變動,好處係方便睇圖分析; 而後複權就反映到投資者的真實收益率情況但會導成同近期股價差異大而不適合睇圖分析


2. 時間序列數據:

- 用幾耐既歷史數據?

- 用日頻定係月頻數據?

- 數據頻率同你既交易頻率要match (而part其實有一個好general的alpha可以exploit到,但原諒我唔可以赤裸裸講出黎,你可以Message我,如果我無覆到你的答案,咁即係唔中)


更重要既係,你要知道邊啲數據係reliable。我地做real time trading個陣,用到好多相對 high frequency的數據源,而且通常唔止一個,大機構通常都有好幾個黎cross check 啲數據有無出錯,確保個交易訊號係值得產生。



Step 3: Factor Exposure計算 


呢度好多人會貪快,直接用自己用開的programming language的package去計。但係要小心,唔同package計factor exposure既方法可能唔同。以前試過用Bloomberg同Reuters計P/B ratio,點知兩個數唔同。查左好耐先發現,原來兩個system對book value既定義唔同。一個包括intangible assets,一個唔包括。又例如處理negative book value既時候,部分package會將之設為missing value,部分則會直接用作計算。呢啲細微差異係單一股票可能影響唔大,但當我地將佢用黎做 cross-sectional analysis或者portfolio construction既時候,累積誤差可以好大。所以,首先要搞清楚package背後既methodology同埋assumption;其次要了解raw data既來源同埋清洗方法;最後就係要知道每個factor特有既限制,例如某啲factor係某啲市場環境可能會特別不穩定。經驗所得,最可靠既做法係自己寫定個calculation engine,由data cleaning到factor calculation都要自己控制,知道每個step入面發生咩事。雖然過程複雜啲,但係起碼知道自己做緊咩,唔會因為package既問題而影響策略表現。


同埋,特別留意以下幾點:

1. 你用既package的factor exposure點計 (最簡單一次過用幾個不同package去double confirm)

2. 有咩assumptions同埋violate左會導致個estimate有幾大standard error

3. 數據更新既頻率係幾多



Step 4: Factor Premium估計


Factor Premium估計可以話係量化策略最核心既部分之一。表面上好似係簡單既regression問題,實際上要處理既technical issues好多。以cross-sectional regression為例,估P/E ratio premium既時候除左要處理基本既heteroskedasticity同autocorrelation問題之外,仲要考慮到市場結構性既變化,例如 P/E ratio premium會隨市場regime改變而變化,特別係係利率環境轉變、市場風格轉換既時候。要正確估計premium,我地通常會用rolling window approach配合adaptive estimation,等model可以及時反映市場變化。同時要注意既係,premium estimation過程中既每個step都可能引入estimation error:sample selection可能有bias、極端值處理方法可能影響結果、missing data既處理方法都會影響estimation accuracy。所以實務上最穩妥既做法係將estimation問題分解成幾個sub-problems:首先要做好initial filtering,剔除明顯有問題既數據;然後用robust regression methods去降低極端值既影響;最後through multiple estimation windows去確保結果既穩定性。


重點重點重點提醒:唔好盲目信regression結果,要諗下個數字合唔合理。我以前寫寫下codes,一寫寫5-6個鐘,寫到個人傻下傻下個陣有個望落去好似幾令仔既sharpe,興奮下就即刻叫老細埋黎睇,點知老細一睇就知有問題,我當刻俾佢點醒左亦即刻知道係有問題。所以,重點在,幾時都要question你望落去好似令仔既results。



Step 5: Expected Return計算 


Expected Return既估計更加要注意市場微觀結構。單純將factor exposure同premium相乘係一個好簡單既linear approach,但市場往往存在好多non-linear relationships。例如value factor同momentum factor之間經常會出現interaction effect,high value stocks同high momentum stocks既組合可能會產生額外既premium。另外,市場cap size會影響expected return估計既準確度,細價股既估計誤差通常都大過大市值股票。係日常做野個陣,我地會用hierarchical model去處理呢啲問題:將股票分成唔同既group,每組用唔同既estimation方法。大市值股票可以用較為straightforward既方法,因為佢地既pricing效率較高;相反細價股就要加入額外既adjustment factor,考慮埋流動性premium同埋其他microstructure effects。最後仲要考慮到行業特性,某啲行業可能對某啲factor特別敏感,需要加入industry-specific adjustment。




Step 6: 風險評估 - 最多人忽略既部分


風險管理方面最重要係要將唔同層面既風險量化同埋整合。第一層係individual factor risk,要計算每個factor既exposure同埋相應既risk contribution。第二層係factor interaction risk,要考慮factor之間既correlation structure同埋可能既non-linear interaction。第三層係regime risk,要預計市場環境轉變時portfolio可能面對既風險。平時我地會用nested simulation既方法去估計呢啲風險:首先模擬市場既regime change,然後係每個regime入面再模擬factor收益率既變化,最後計算portfolio係唔同情境下既表現。特別要注意既係extreme event risk,傳統既VaR方法可能會低估tail risk,所以要用Extreme Value Theory或者Copula方法去做更準確既估計。


最後想同啲新入行既朋友講:


量化投資唔係純粹寫model咁簡單。大家要明白個market點運作,要知道邊啲野實際做到,邊啲野做唔到。最緊要係要有耐性,慢慢累積經驗。市場永遠都係最好既老師。就算大家個model幾完美,最後都係要經過市場既考驗。諗下個estimated expected returns 點樣可以就算唔中都唔會偏離太多航道,而唔係下下都要計個數出黎撞下睇中唔中,唔中個數就離天萬仗遠。


希望呢篇文可以幫到大家慳返啲時間。如果你覺得有用,請俾個like。下次我會同大家深入講解邊啲factors係真係work,等大家可以focus多啲時間係岩既野度去研究,話晒我個plan都係叫慳市場學費plan,而d tactics自然少不了。下次再見!


Cheers,

阿程


2024年9月 - 第4篇 (真‧搵Alpha策略系列 7) 


【內行人點用因子去搵 Alpha】

Comments

完全正確,以上通常係主因,如果無access to 以上real time data 可睇 fund flow 轉變

SY

請問預計regime shift會包括咩factors? 係咪利率, 政府政策, 政權轉移, 戰爭,.........?

Terry

一般情況,用1分鐘數據預測1日後回報,遠比預測5分鐘後回報更難

SY

數據頻率同你既交易頻率點解要match?

Ron chan


Related Creators