教學
從零開始,看懂我們在做什麼
這一頁不需要任何財經或統計背景。每個名詞出現的時候都會解釋, 而且盡量用你已經知道的東西打比方。讀完大概 10 分鐘。
① 什麼是因子
先講一個你一定做過的事:買水果的時候,你會挑。挑什麼?可能是「看起來比較紅」、 「摸起來比較硬」、「比較便宜」。每一個「挑的標準」,就是一個因子。
選股也一樣。有人挑「最近漲最多的」,有人挑「本益比最低的」, 有人挑「成交量突然變大的」。這些都是因子。
重點在「排出順序」。因子不會告訴你「這檔會漲」, 它只會說「按這個標準,這 1,125 檔股票從第 1 名排到第 1,125 名長這樣」。
為什麼一定要能排順序?因為只有能排順序,我們才能做這件事: 買排名前面的一群,然後看看它們是不是真的比排名後面的一群賺得多。 這就是整個平台在做的事。
一個具體例子
「20 日動能」這個因子的排序標準是:過去 20 個交易日漲最多的排前面。 它背後的想法是股市裡一個很老的說法——強者恆強。
這個想法對不對?不知道。這正是要拿歷史去測的原因。
② 怎麼排列組合出因子
「過去 20 個交易日漲最多」聽起來很具體,但其實藏著一個沒人回答過的問題: 為什麼是 20 天?
5 天呢?60 天呢?250 天呢?這些是完全不同的策略—— 5 天在賭短線情緒,250 天在賭長期趨勢。憑感覺挑一個數字, 就是大多數選股方法失敗的起點。
我們把一個想法(例如「動能」)拆成所有合理的版本: 3 天、5 天、10 天…一路到 250 天,每一種再搭配不同的平滑處理, 然後全部丟進歷史裡跑。
這就是「排列組合」。一個因子家族可以展開成幾十上百個具體版本, 十幾個家族加起來就是好幾百個候選。這件事人腦做不完,但電腦幾秒鐘就做完了。
兩種挑法,你都可以用
引導挖掘
從我們預先設計好的因子家族裡挑——動能、反轉、均線乖離、量能、 價值、規模…每一個都有人寫過的中文名字和說明。 適合不知道從何開始的時候。
自由組合
自己挑原始資料欄位——收盤價、成交量、營收、每股盈餘、現金流—— 讓系統把它們排列成因子。 適合心裡已經有想法的時候。
我們會告訴你每個因子在找什麼樣的股票、屬於哪一類、過去表現如何。 但具體的數學公式屬於我們的核心技術,不會公開—— 就像餐廳會告訴你這道菜有哪些食材、什麼口味,但不會給你食譜。
③ 怎麼把因子結合起來
單一個因子通常不夠。「便宜」的股票可能便宜得有道理(公司在走下坡), 「動能強」的股票可能已經漲過頭。把幾個角度加在一起, 往往比只看一個角度穩。
但直接相加會出事
假設你想結合「營收」和「日報酬率」。營收的數字是幾百萬、幾千萬, 日報酬率是 0.01、0.02。直接相加的話:
所以我們先把每個因子換成排名(第 1 名到第 1,125 名, 再換算成 0 到 1 的分數),然後才平均。 這樣不管原本的單位是元、是張、還是百分比,每個因子的話語權都一樣。
你可以等比例相加,也可以自己決定權重——例如「動能佔 60%、價值佔 40%」。
組合的時候要看兩件事
相關性。如果兩個因子挑出來的股票幾乎一樣, 把它們加在一起並沒有分散風險,只是把同一個賭注押了兩次。
集中度。如果組合出來的持股八成集中在半導體, 那你買的其實不是「一個策略」,是「一個產業」。
④ 回測是什麼
回測就是:假裝時光倒流回到 2019 年,照這個規則買賣一遍,看看會發生什麼事。
規則長這樣:
- 每隔一段時間(預設 20 個交易日,大約一個月)看一次排名
- 買進排名最前面的那一群(例如前 10%)
- 抱著,直到下一次換股
- 重複,一路做到今天
一個很容易被做錯的細節
如果回測假設「今天收盤算出排名,然後用今天的收盤價買進」, 那是不可能做到的事——你在收盤前並不知道收盤價。 這種假設會讓回測績效憑空多出一大截。
我們的引擎強制隔一天進場,而且這件事不是一個可以調的選項。
你會看到的數字
| 年化報酬 | 把整段期間的總報酬換算成「平均每年賺幾 %」。 |
|---|---|
| 風險報酬比 | 每承受一單位波動,換到多少報酬。數字越大越好; 1.0 已經是不錯的策略,超過 2.0 要先懷疑是不是哪裡算錯了。 |
| 最大回檔 | 從最高點跌到最低點的幅度。 這是你實際上要承受的痛——年化 20% 但中途跌掉一半,多數人撐不住。 |
| 月勝率 | 賺錢的月份佔多少比例。 |
| 換手率 | 每次換股要動掉多少比例的持股。這直接決定你要付多少交易成本。 |
十等分長條圖:最直觀的健康檢查
我們會把全市場依因子排名切成十等分,畫出每一等分的報酬。 如果這張圖是階梯狀(排名越前面賺越多),這個因子就有道理。 如果高高低低沒有規律,那前 10% 賺錢可能只是碰巧。
一條累積報酬曲線需要解釋,但這張圖任何人三秒就看懂。
⑤ 樣本內與樣本外
這是整個平台最重要的一節。如果你只讀一段,讀這一段。
老師給你 100 題練習題和答案,你反覆練,最後考 95 分。 這代表你學會了嗎?不一定。也可能你只是把那 100 題的答案背起來了。
真正能證明你學會的,是一份你沒看過的考卷。
回測完全一樣。我們用 2019–2023 的資料去「找」表現最好的因子—— 這段期間叫樣本內,就是那 100 題練習題。 在這段期間表現好,一點都不稀奇,因為我們本來就是照著它挑的。
然後我們把這個因子放到 2024 年以後—— 挑選它的當下還沒發生的期間。這叫樣本外,就是沒看過的考卷。
樣本內的成績我們刻意不放在顯眼的地方。不是要藏, 是因為那個數字必然好看,看了會誤導。
在實驗室裡,你可以自己畫這條線
回測實驗室讓你自己決定樣本內外的切點。還有一個開關叫 「隱藏樣本外數據」——打開之後,切點以後的數字根本不會傳回來, 不是在畫面上遮起來而已。
為什麼要這樣設計?因為人性。如果你一邊調參數一邊偷看樣本外的結果, 你就是在拿樣本外當練習題——那它就不再是樣本外了。 調完再看,才有意義。
⑥ 為什麼會有「可信度」這個東西
丟一枚硬幣連續五次正面,機率是 1/32——很不尋常。 但如果一千個人各丟五次,出現至少一個人連續五次正面, 機率幾乎是 100%。那個人不是有特異功能,只是人夠多。
測因子完全一樣。測 490 個組合,其中最好的那個看起來很漂亮, 本來就是預期中的事,即使 490 個全都是純粹的雜訊。
測得越多,門檻就要越高。同樣一個風險報酬比 1.2, 從 8 個裡挑出來的,和從 5,000 個裡挑出來的,可信度天差地遠。
結果會濃縮成三個徽章:
紅燈的因子我們照樣顯示。藏起來會讓平台看起來比較厲害, 但那正是我們反對的事。
⑦ 台股的交易成本,比你想的重要得多
台股每一筆賣出要付 0.30% 的證券交易稅,再加上券商手續費與買賣價差。
我們實際量過:台股一買一賣的真實成本中位數大約 80 bps(0.8%)。 而且差距很大——市值最大的一群約 58 bps,最小的一群高達 175 bps。
所以我們預設每 20 個交易日(約一個月)換一次股, 並且在實驗室裡把成本模擬的預設值直接填成實測的 80 bps——不是 0。
註:我們的成本模型只算稅費與買賣價差,不含滑價與市場衝擊 (下大單會把價格推走的部分)。真實下大單的成本會比這裡顯示的更高。