外資期貨未平倉與空單能當策略訊號嗎?先看公布時間再回測
外資期貨未平倉與空單口數可以測,但只能寫成「收盤後才公布、最早當晚夜盤或隔日日盤才能用」的延遲規則。口數背後的原因不只一種,歷史又短,從上千條候選裡挑出來的漂亮規律多半是事後美化,寫下規則再用樣本外資料檢查才算數。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
外資期貨未平倉與空單能用在策略嗎?
外資期貨未平倉與空單口數可以拿來測,但只能寫成「當日收盤後才公布、最早當晚夜盤或隔日日盤才能用」的延遲規則。它的有效歷史只有幾年,口數背後的原因不只一種,看起來漂亮的規律多半是事後挑出來的;先寫下規則再回測,大多會變淡或消失。
這篇文章只談一件事:把期交所公布的外資期貨未平倉資料,從「盤後新聞裡的一個數字」變成「一條時間戳正確、可以被推翻的規則」。我的看法很直接:口數本身不等於方向,而且在幾年的資料裡挑出最好的一條規則,結果一定比真實情況好看。如果你還沒有寫過任何一條可回測的規則,先讀台指期程式交易從零開始,把規則、下單時段、成本這三個名詞弄清楚,再回來處理外資資料。
延遲公布的部位資料不是台灣獨有。美國商品期貨交易委員會(CFTC)的持倉報告(Commitments of Traders)統計每週二收盤的部位,到週五才公布,中間隔了三個交易日;任何用它寫的規則,都只能在週五收盤後才動作。台灣期交所的三大法人資料是每日公布,延遲短得多,但「公布之後才能用」這一點完全相同。
外資期貨未平倉口數代表什麼?淨部位和未平倉差在哪?
未平倉口數和淨部位是兩個不同的數字,同一個淨空兩萬口,可能是多單少、空單多,也可能是兩邊都很大,意義不一樣。未平倉口數是某一類交易人(例如外資及陸資)在某個期貨契約上,尚未平倉的多單合約數與空單合約數,分成多方未平倉與空方未平倉兩個數字。淨部位是多方未平倉減去空方未平倉;小於零叫淨空,大於零叫淨多。新聞裡說的「外資空單口數」通常指的是淨部位,不是空方那一邊的總數。
一個生活上的比喻:一家公司帳上有一億的應收和八千萬的應付,淨資產兩千萬;另一家只有三千萬應收和一千萬應付,淨資產也是兩千萬。淨額一樣,但第一家的體質和第二家完全不同。期貨部位也是如此,所以回測時要把多方、空方、淨額三個數列都留下來,而不是只留一個淨值。期貨合約本身怎麼運作、一口代表什麼,請看系統交易者的期貨基礎。
假設範例
情境甲:外資在台指期多方未平倉約四萬口、空方約六萬口,淨部位 −20,000 口。情境乙:多方約五千口、空方約兩萬五千口,淨部位同樣 −20,000 口。兩者在盤後新聞裡都寫成「外資淨空兩萬口」,但情境甲的外資兩邊都有大部位,很可能一部分是互相對沖或分屬不同基金;情境乙幾乎是單邊看空。同一條「淨空超過一萬五千口就做空」的規則,在這兩種情境下其實在測不同的東西。
| 數字 | 定義 | 回測時的用途 |
|---|---|---|
| 多方未平倉 | 尚未平倉的多單合約數 | 看多方是否在加碼或減碼 |
| 空方未平倉 | 尚未平倉的空單合約數 | 看空方是否在加碼或減碼 |
| 淨部位 | 多方未平倉減空方未平倉 | 方向摘要,但看不出兩邊的大小 |
| 淨部位日變化 | 今日淨部位減昨日淨部位 | 最常被拿來當訊號的數列 |
| 當日交易口數 | 當天新成交的買方與賣方口數 | 區分「新建部位」與「平倉」 |
外資淨空單增加代表什麼?
外資淨空單增加只是說外資在期貨上的空方部位變多,背後至少有三種原因,口數本身分不出來。方向性看空是其中一種,但外資持有大量台股現貨,用期貨空單對沖持股是常態;結算週前後近月平倉、遠月建倉,也會讓某一個契約的空單暫時變多。三種情況看起來都是「淨空單 +5,000 口」,對隔天行情的意義卻不同。
- 方向性看空(直接做空)。要分辨它,同一天的外資現貨買賣超最好也是賣超,期貨與現貨方向一致。
- 現貨避險(持有台股,用期貨空單對沖)。典型特徵是現貨買超或持股不變,但期貨空單加碼;外資整體曝險其實沒有變空。
- 換月或套利(近月平倉、遠月建倉的暫時差額)。只看近月契約時最常誤判,因為遠月已經接手的部位在近月欄位裡看起來像是消失或新增。期交所的資料可以按契約月份分開看,結算週附近把各月份加總再判斷。
這就是為什麼「外資多少口算多」沒有固定答案。外資整體的台股持股市值、當時的指數水準、總未平倉量都會變,兩萬口在十年前和現在代表的曝險比例不同。回測裡比較穩的做法是不用絕對口數,改用相對量,例如淨部位除以全市場未平倉量,或淨部位日變化相對過去一段時間的平均變化幅度。這樣同一條規則在不同年份才是在測同一件事。
外資未平倉哪裡查?三大法人期貨與選擇權資料怎麼取
期交所每日公布三大法人(外資及陸資、投信、自營商)在期貨與選擇權的交易口數與未平倉口數,依日期、商品、身分別就能查到,整理成每日一列的時間序列是回測前的第一步。資料在期交所官網的「交易資訊」底下,期貨與選擇權各有一組表格;期貨部分可以選「依日期」或「區分各期貨契約」,後者才能看到台指期、小台等個別商品的數字,也才能依契約月份分開看。
- 決定要抓哪些欄位。最少要有:日期、外資及陸資在台指期的多方未平倉口數、空方未平倉口數、多方交易口數、空方交易口數。有需要再加投信、自營商,以及選擇權的買權與賣權部位。
- 決定契約範圍。只抓近月、還是各月份加總,要在這一步就定下來並寫進筆記。結算週前後兩種選法會給出不同的數字。
- 整理成每日一列。一個交易日一列,欄位固定,日期格式統一。期交所休市日不會有資料,這些日子在價格資料裡也不應該有日K。
- 自己算衍生欄位。淨部位、淨部位日變化、相對全市場未平倉量的比例,都用原始欄位重算,不直接抄新聞或第三方整理過的數字。
- 留一段最近的資料不碰。最後幾個月的資料先不載入任何研究,等規則定案後只測一次。
期交所網站上的歷史資料可以往回查很多年,但真正可用於回測的歷史要扣掉市場結構改變的部分:夜盤上線前後、微型台指推出前後,外資在期貨上的行為可能不同。每年的觀察值不到三百個交易日,十年也只有兩千多列,這個數量在下一節和最後一節都會變成限制。
公布有延遲,怎麼寫一條時間戳正確的可測規則?
三大法人資料在當日日盤收盤後才公布,所以規則只能用「昨日公布的數字」決定「今日的動作」,而且要先決定在當晚夜盤還是隔日日盤的哪一根K棒下單,否則就是前視偏誤。前視偏誤是回測在某一根K棒上用到了當時還不存在的資訊,結果看起來很好,實盤卻做不到。以日期為 T 的外資資料為例:它描述的是 T 日收盤時的部位,公布也在 T 日收盤之後;任何把它對到 T 日開盤、甚至 T 日日盤任何一根K棒的做法,都是用未來的資料交易過去。常見的漏法整理在回測中的前視偏誤與一根K棒的檢查法。
第一根可用K棒有兩種選法,各有代價。台指期目前日盤為 08:45 到 13:45,夜盤為 15:00 到次日 05:00(期交所可能調整時段,以期交所契約規格頁為準,也可以用免費的期貨交易時段查詢工具核對)。選當晚夜盤第一根K棒,優點是離資料公布最近,缺點是夜盤流動性較薄、滑價要設高一點,而且夜盤的K棒屬於哪一個交易日,資料供應商的定義不一;期貨全日盤回測與交易日的切法說明了怎麼統一。選隔日日盤第一根K棒,優點是流動性好、交易日定義清楚,缺點是中間隔了一整個夜盤,美股的變化已經反映在開盤價裡。週五公布的資料若對到週一日盤,中間還有整個週末,週一開盤跳空在期貨回測裡的處理會影響這條規則的結果。
假設範例
一條寫法正確的規則:「若 T 日公布的外資台指期淨部位日變化小於 −5,000 口,且同日外資現貨為賣超,則在 T+1 日盤第一根五分K的開盤價做空一口,持有到 T+1 日盤收盤平倉;每筆計入手續費與一跳滑價。」進場條件、下單K棒、出場時間、成本都在跑回測前寫死,之後只能看結果,不能回頭改門檻。
幾年資料裡的規律,哪些只是巧合?外資資料看不到什麼
外資資料能用的歷史只有幾年到十幾年、每年不到三百個觀察值,從上千條候選規則裡挑出最好的一條,結果必然被美化,而且口數看不到避險對應的現貨部位,也看不到當天盤中的進出。這不是外資資料獨有的問題,而是任何短歷史加上大量候選都會遇到的問題:Bailey 等人(2014)證明,嘗試的策略變體越多,最佳那一條的樣本內表現就越會超過它在新資料上的真實表現;Harvey 與 Liu(2015)則提出要依嘗試次數折減結果。用生活上的比喻:一千個人各丟十次銅板,總會有人丟出九次正面,但你不會因此說那個人會丟銅板。
下面這個回測就是為了把「挑選效應」具體化。它跑在 ES(芝商所 E-mini S&P 500 期貨)日K上,期間 2019-01-02 到 2025-06-30,用的是以 RSI 寫成的單一進出場規則、沒有停損停利、沒有濾網;它是一條用標準指標做的替身規則,不是外資口數本身,目的是示範流程,不是測這篇文章的主題。這條規則是搜尋嘗試的 1,024 條候選中,依報酬相對回撤留下的那一條。把這類候選交給 AlphaPrime (Valynox) 的策略驗證時,先寫好樣本外與前推分析的門檻,讓某一條候選在較早的檢查失敗時就不再進入後面的資料,能到達最後那段資料的候選數就會少很多。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。ES 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $25。
| 項目 | 結果 |
|---|---|
| 淨利(已平倉) | $89,155 |
| 最大回撤 | $68,387.5 |
| 交易筆數 | 56 |
| 勝率 | 58.93% |
| 獲利因子 | 1.693 |
| 平均每筆 | $1,592.05 |
| 在場時間 | 92.09% |

怎麼讀這個框:淨利 $89,155 對最大回撤 $68,387.5,代表這條規則在六年半裡曾經從高點回落的幅度,接近它最後賺到的總額;56 筆交易、在場時間 92.09%,表示它幾乎一直持有部位,結果大半來自 ES 這段期間本身的走勢。更重要的是,它是從 1,024 條裡事後挑出來的,所以這些數字必然比同一條規則在新資料上會出現的數字好看。不能說 RSI 賺了這筆錢,也不能把它當成任何人可以期待的結果;它只說明「挑出最好的一條」會長什麼樣子。把外資口數規則放進同樣的流程,候選數一樣多、歷史更短、每年觀察值更少,美化的幅度只會更大。
除了挑選效應,外資期貨資料本身還有三件事看不到:
- 避險對應的現貨部位。期貨空單對沖的是哪些持股、對沖比例多少,資料裡沒有,只能用現貨買賣超間接推測。
- 盤中的進出。公布的是收盤時的快照,外資在盤中建倉又平倉的動作完全不在裡面。
- 外資內部的分歧。「外資及陸資」是一個合計類別,裡面有看多的、看空的、純套利的,淨額把它們全部抵銷了。
下一步可以這樣做:到期交所下載外資及陸資在台指期最近幾年的每日未平倉資料,依第四節整理成每日一列,把日期往後移一日對齊你的K棒,寫下一條像第五節範例那樣完整的規則,先數一數它在樣本內會產生幾筆交易,再決定要不要花時間跑它。
常見問答
外資多少口算多?
沒有固定的口數門檻。外資的台股持股市值、指數水準和全市場未平倉量都會隨時間變,兩萬口在不同年份代表的曝險比例不同。回測時改用相對量,例如淨部位除以全市場未平倉量,或淨部位日變化相對過去一段時間的平均變化幅度,同一條規則在不同年份才是在測同一件事。
外資未平倉和散戶多空比差在哪?
外資未平倉是期交所公布的外資及陸資在期貨上的多方與空方未平倉口數,資料來源是身分別統計;散戶多空比通常是用小台指的未平倉量減去三大法人部位後推算出來的,是推估值而不是直接統計。兩者都是收盤後才公布的延遲資料,對齊K棒的做法相同。小台散戶多空比怎麼寫成規則,見小台散戶多空比當訊號的測法。
結算週外資空單突然增加或減少,怎麼處理?
先把同一商品各契約月份的部位加總再看,因為近月平倉、遠月建倉會讓單一月份的數字出現暫時的大幅變化。也可以在規則裡把結算日前後幾個交易日標記起來,另外統計這些日子的結果。台指期結算日的日期可用免費的台指期結算日查詢工具核對。
外資資料的規律在回測裡看起來很好,為什麼實盤會變差?
最常見的兩個原因是前視偏誤與挑選效應。前者是把 T 日的資料對到 T 日的K棒,用了當時還沒公布的數字;後者是從很多條候選規則裡挑出最好的一條,它的樣本內結果一定比新資料上的結果好看。兩者分別靠正確的日期位移和事前寫好的樣本外門檻處理,背後的研究整理在回測過度配適:為什麼最好的回測通常被高估。
參考文獻
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
- Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.
- U.S. Commodity Futures Trading Commission. Explanatory Notes: Commitments of Traders. https://www.cftc.gov/MarketReports/CommitmentsofTraders/ExplanatoryNotes/index.htm
- Taiwan Futures Exchange. Mini-TAIEX Futures. https://www.taifex.com.tw/enl/eng2/mTX

