上個星期Trump加Tariff血洗美股,之後再單日大幅反彈,我問我以前班long bias學生,暫時問左三十六位,有廿八位都避開左今次跌浪,係個市由歷史最高位只係跌左4-5%左右個陣已經清左好多倉,幾和味。但原因係點解? 我估喳下,可能就係以前教落做因子投資研究的基礎做得好。(原諒我唔會再收生了,累) 其實當個市 (特別係美股) 升左好多之後開始橫行,如果你預先搵到一堆因子係反映到而個現象,好大機會你都可以避到而個跌浪,因為通常都代表會有個小幅回轍。有時大家對因子投資的睇法可能係錯左方向,所以做極都成績一般。今日同大家分享一啲我十幾年黎的因子投資心得,唔係複雜野黎,只係有用的心得。
話說想寫而篇文既原因係,再上一個星期五係IFC2食食下飯,搭台有兩個後生仔(可能係night trader要返黎睇美市,港股無開)開始係度傾因子投資 (factor investing) 應該點做先可以beat到個market,我望一望佢地,兩個都著住Patagonia外套,local香港人口音,應該都係岩岩入行。唔知點解,我第一刻感覺係有少少欣慰,可能人越黎越大,做耐左,好多時侯同事間傾的因子投資方法都已經無咁有嚴僅性,唔會郁啲就linear algebra 或者 probability 去解釋自己個新諗法。換言之,以一個流住quant血的人黎講,如果聽到一啲無咁有嚴僅性的所謂stock pitching之類的言論,感覺就係好多野都係基於simple heuristics 或者什至係吹出黎,對quant黎講永遠都係唔靠得住的一個策略基礎,所以都係聽下就算。
咁你可能會問,點解做做下會無咁有嚴謹性?因為做做下好多人會開始憑感覺及heuristics去做,搭配一啲基本風險管理的架構,就會用落去做trade。例如,見到Trump話大力支持Elon musk,幫佢買車,所以Tesla股價短價應該會有反彈 或者 因為最近美國通漲數據比預期差,估計短期內減息幅度有限,所以舊經濟股應該會跑贏tech股等等原因。唔係想話而啲諗法make唔make sense ,因為就算「聽落」make sense亦唔代表可以穩定賺錢落去。好多時大家以為的make sense,但其實市場上已經price in晒,你買入的時侯已經係水尾; 或者就算估岩方向都好,無一套好的出入市及評估風險機制,其實長遠黎睇都唔會穩定賺到錢。
唔嚴謹咁去做factor investing / trading有咩好處同壞處? 好處當然係個市場就你個factor個陣,你的trade係集中某一相似類型(等於相同因子)的股票咪會賺多好多,好過hedge晒啲重要style因子最後雖然低風險但無咩肉食。而啲交易方法通常會好有factor tilting effect,即係交易得返黎的回報係因為將portfolio 暴露於某種因子,例如2024年你極集中買semi con 及 AI 股,當然回報會好好; 咁壞處當然就係當個因子crowding得好緊要的時侯,回報自然會減少什至大量反手平倉而導致回報大幅回徹。例如當你係暴露個portfolio 風險去而啲產業/行業因子,如果而啲因子一回調,portfolio 回報就會重創。
有啲朋友可能會問,咁咩係因子? 點樣去構造而啲因子? 其實方法可以有好多種,但簡單黎講,係大fund做,通常佢地追求的唔係一兩隻股票的回測結果靚,而係當你的策略應用係一大堆股票既時侯,overall係有一個明顯的分別,例如知道點解排頭20%的股票係可以靠long賺到錢,而點解排尾20%的股票係靠short而賺錢。而個分別通常就係基於一個經濟原因,例如可能最簡單,假設個經濟原因係用Returns on Equity (而個就係因子) 排名,利用 ROE 好就買入,差就沽空,希望可以賺到個 average ROE alpha effect。例如頭20% ROE 的股票買入持有一季,尾20% ROE 就short並持有一季咁,希望可以係兼顧流動性做到更多股票的情況下最大化個 Alpha 優勢,而唔係一兩隻股票work就得。
但點解叫 average ROE alpha effect? 因為大行通常唔止做一兩隻股票,一做就係成個universe 幾十幾百隻咁做,所以會用到個 term - “average”。但點解要咁做?
1. 大行錢多,如果只將錢放係一兩隻股票,個market impact會好大,太容易買/沽貴左啲股票,對自己不利
2. 避免因為個股風險而賺唔到個 alpha effect,一兩隻可能會買錯,但一堆股票買賣的話,如果真係有個alpha effect係度,平均黎睇應該會賺。
如果叫我要總合幾條好重要既 rules 去搵股票新因子,我自己有以下幾條rules(以下幾條rules我係用左好多年既經驗得返黎,我唔知點定個價,但誇張咁講可以講係無價,如果你真係明既話。):
1. 新因子一定要有金融/經濟市場依據,要解釋得到點解有咁既股票價格推動原因。黑盒因子,其實更好可能係用 non-linear ML model去發揮更好,唔係一般 linear factor models的專長。
2. 新因子要同其他因子有互補性(或者學術啲叫「正交」),例如動量因子 VS 價值因子好明顯係兩樣野黎,一個買有動能可能向上升緊,另一個買啲有價值 (可能個價格仲跌緊) 的股票,變相唔會兩個因子其實係估緊同一個價格變動影響而令新因子變得無意思
3. 新因子在市場環境變化時要夠頑強,可預示唔會被取代。例如價值因子咁,永遠就係有人鐘意買所謂既「又平又筍貨」。
4. 新因子要係 long term accessible 同 cost effective 的因子
5. 有新因子係唔夠,要有全面可以蓋括到成個市場唔同走勢的一系列因子,從而去構成到一個模型。而度我解釋多少少:
成個股市走勢係受多種力量 (不同因子) 共同影響,例如:
宏觀因子:利率、通脹、GDP成長等(例如 2022年聯準會加息對科技股既負面影響)
基本面因子:企業盈利、估值、財務健康度(例如 PE比率低的價值股係衰退期抗跌)
情緒因子:恐慌指數(VIX)、資金流動(例如 2020年疫情初期散戶湧入美股推高meme股)﹑Trump Tweets﹑Elon Tweets
技術因子:均線突破、交易量異動(例如 BTC係2021年突破6萬美元時既量價背離)
有N種唔同其他因子,你上網搵一搵就大把,我講唔晒咁多。但都係個句,用上面果5個rules去睇下啲因子係咪附合晒資格,唔係既話,未必係好因子。
另外,如果你做trade個陣只係睇單一﹑兩個因子(如只看PE估值)就會導致系統性盲區,例如好似2021年成長股無視高估值持續上漲,你就咁睇一個PE值因子以為對股票回報係負影響,點知繼續升,所以如果靜係依賴估值因子去預判市況就會估錯晒。
好喇當大家搵到一系列的因子(要落功夫,遲下我專寫一篇文靜係講「有用既」因子),我會用咩方法去將佢變成一個多因子模型?
係變成一個多因子模型之前,行內公認有以下一大堆步驟要做 (點解話公認係因為基本上如果你有in過quant position係需要有因子投資經驗,基本上一定都會問到相關內容。當然實際上做大家都會有唔同),
針對每個因子做以下步驟:
了解因子的基本性質 -> 如果我諗住用 P/B ratio 做因子,你需要先檢查:
1.1 睇均值、中位數、標準差、偏度及峰度等統計量,檢查因子有無存在明顯的偏態、厚尾現象或極端值。嘗試了解因子黠解會有咁樣既統計量,儘量從金融角度出發去諗。
例如: 如果均值同中位數差距大,通常代表有分佈偏態 (skewed),而好多時我地見到P/B ratio數據都係正偏的數據,即係有少數數據的 P/B值極大,點解會咁呢? 因為P/B值中的P理論上可以無上限,但B值通常最低為0 (變了負數的話 P/B值已無常規比較意義),所以會P/B值會有right skewed分佈。另外,過低P/B值的公司又可能已經被de-list,所以睇唔到。
1.2 睇有無缺失值及異常值。缺失值考慮用 fill forward / rolling mean / rolling median / 0 填補,異常值就可用winsorization / truncation處理。
1.3 之後將B/P ratio 標準化,用rolling方法將佢變成 z-score 去方便比較,而度之後我地叫BP_z
1.4 假設我地既基本面數據已包含「industry」欄位,咁就可按照 GICS 為股票做分類。代表公司的行業分類(例如 “科技”、“金融”、“能源” 等)。通過對各行業內的 BP_z 去均值,令到每個行業的因子均值都變為 0,個效果係有助於跨行業比較使用。經過中性化處理後,每個行業均值都會趨近於 0。
咁你可能會問,點解將D因子標準化後,仲要再做中性化?
即使因子標準化(例如將原始因子轉換成 Z-score後,好似將上面的BP轉換成BP_z)後令到各樣本數值均值為 0、標準差為 1,但行業層面之間系統性差異仍然可能存在。下面解釋點解:
因子標準化的目的係令不同因子之間具有可比性,消除了不同單位或尺度的影響。但標準化後仍可能存在行業效應:
行業固有特性差異:唔同產業係財務結構、估值方法、成長性等方面有特定的行業特性。例如制造業、金融業和科技業的資產結構及盈利模式不同,而種差異性會反映係 P/B 等因子上。
行業均值偏差:即使將所有公司標準化了一次,唔同行業的股票可能仍然呈現系統性的均值偏差。例如某啲行業可能普遍具有較高或較低的標準化後數值,咁即係話而啲因子變化係一定程度上反映了行業效應,而非純粹的個股特異性信號。
所以行業中性化既目的係消除因子中來自行業分佈的系統性因素,令到個因子主要反映個股的相對表現而唔係行業層面上既整體波動,咁對構建多因子模型黎講係好重要,因為可以防止因子信號被某個行業過度影響,從而令到投資組合行業集中度過高。
行內通常既方法係會對標準化後的因子進行回歸 (Regression),用行業的變量作為解釋變量(或其他行業分類指標),然後攞回歸殘差作為行業中性化後的因子。咁樣既話殘差就唔再含有行業平均水平的影響,變相更準確地反映個股的相對風險及潛在收益能力。咁當然,所有步驟都係要rolling 咁去做。
換句話說,標準化係“數據淨化”的第一步,而中性化就係“剝離行業效應”的第二步。兩者互補,確保左單位一致性,同時減低左行業偏向的可能性。
今篇文講住咁多先,大家可以消化一下,下篇文直接用codes去複製 同埋再講埋點樣將因子變成一個完整的模型/策略咁去回測。
Cheers,
阿程
(Alpha - 多因子投資)