期貨多空單:回測如何分開檢驗多單與空單
期貨多單在價格上漲時獲利,空單在價格下跌時獲利,兩者都是一般的合約交易,保證金與手續費相同。一個策略要把多單交易與空單交易分成兩份報表分別判斷,每份都有足夠的交易筆數,並且都已扣除成本,才算真正測試過。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
期貨的多單與空單代表什麼?
期貨多空單,也就是期貨的多單與空單,是同一口合約的兩個方向:多單在價格上漲時獲利,空單在價格下跌時獲利。放空期貨合約只需一筆委託,和買進一樣。多單與空單在扣除成本後各自單獨衡量,且每一邊都撐得起自己,策略才算測試過。
多單是你先買進、之後再賣出的合約,因此價格上漲時獲利,下跌時虧損。空單是你先賣出、之後再買回的合約,因此價格下跌時獲利,上漲時虧損。可以想像兩個朋友約定下個月交貨的一袋米的價格。其中一人希望米價上漲,另一人希望米價下跌。兩人今天手上都沒有米。這就是期貨合約。
假設性範例
假設那斯達克 100 期貨合約報價 20,000 點。交易者買進一口,在 20,050 賣出,獲利 50 點。另一位交易者在 20,000 賣出一口,在 19,950 買回,同樣獲利 50 點。E-mini 合約每點價值 $20,所以兩筆交易在扣除成本前都獲利 $1,000。價格方向相反,獲利大小相同。
鏡像在紙面上完美,在市場裡並不對稱。指數期貨緩升的時間多於急跌,因此程式碼上互為鏡像的規則,常產出兩份差異大的交易明細。這也是本文反覆強調的一點:不要用多空合計的總數來判斷多空策略。五種期貨演算法交易策略類型都能多空雙向交易,每一種都可能有一個弱勢的方向,被總數掩蓋。
為什麼期貨放空和買進一樣容易?
期貨合約是一紙約定,不是必須先借入的股票,所以先賣出不需要找券源、不用付借券費,也沒有價格下跌時禁止賣出的規定。賣出沒有持有的股票時,券商必須先找到可借的股票,向你收取借券費用,價格下跌期間賣單還可能無法成交。賣出尚未買進的期貨合約,則只是新建一口未平倉合約。交易所的結算所站在你與買方之間,雙方繳交相同的保證金。
| 步驟或成本 | 放空股票 | 放空期貨合約 |
|---|---|---|
| 必須先借入股票 | 是 | 否,新建一口合約 |
| 借券費或找券 | 是,且費用可能每天變動 | 否 |
| 價格下跌時賣出的限制 | 可能適用 | 否 |
| 需繳交的資金 | 賣出所得現金加保證金 | 與多單相同的保證金 |
| 委託的樣子 | 附帶額外條件的賣單 | 一筆委託,與買進相同 |
這點影響回測,因為股票策略的空方帶有難以模擬的成本與中斷,這也是股票交易演算法的運作原理常讓它們只做多的原因之一,也是美股當沖的日內想法測試需要為借入的股票另列一項成本的原因。期貨策略沒有這些問題。空方可以寫成多方的完全鏡像,手續費相同,回測用同一組成本設定處理兩邊。所謂指數與商品期貨策略天生對稱,指的就是這件事。規則對稱不等於結果對稱,本文後半談的正是這一點。
空單的保證金與手續費和多單相同嗎?
交易所為每口合約訂定一個原始保證金與一個維持保證金,多單與空單都適用;手續費與交易所費用依每口、每邊收取,因此回測的成本設定對兩個方向完全一致。保證金是結算所為你的未平倉合約保管的押金。原始保證金是建立部位所需的金額,維持保證金是持有部位期間帳戶必須維持的較低金額。兩者都與方向無關。
交易所會在波動率變化時調整這些數值,所以設定測試的部位大小之前,先到交易所的合約規格頁查看現行數字,再用免費的期貨合約與損益計算機,把跳動點大小與每點價值換算成每筆交易的美元金額。E-mini 那斯達克 100 的交易所頁面列出合約規模為指數乘以 $20,最小跳動點為 0.25 點,價值 $5.00,多單與空單皆同。
| 回測設定 | 多單 | 空單 |
|---|---|---|
| 原始保證金 | 每口相同 | 每口相同 |
| 維持保證金 | 每口相同 | 每口相同 |
| 每口每邊手續費 | 相同 | 相同 |
| 交易所與結算費用 | 相同 | 相同 |
| 滑價假設 | 相同設定 | 相同設定,但急跌時成交可能較差 |
| 價格行為 | 常不相同 | 常不相同 |
最後一列是兩邊分歧之處。指數期貨往往跌得比漲得快。急跌時以停損委託進場放空,成交價可能比觸發價差數個跳動點;緩漲中鏡像的多單進場,成交價則貼近觸發價。成本設定對兩邊是同一個數字,但空方的實際成本,可能在最關鍵的日子偏高。可行的檢查方法見回測裡的交易成本:只重跑空方,滑價加倍,看平均每筆損益是否仍高於零。
如何把回測報表拆成多單與空單的結果?
多單交易讀五個數字,空單交易讀同樣五個數字,當作兩份獨立報表:淨損益、交易筆數、扣除成本後的平均每筆損益、勝率與最大回撤。合併總數把兩邊加在一起,可能看起來健康,實際上卻是一邊賺走全部獲利,另一邊只增加回撤。扣除成本後的平均每筆損益,是淨損益除以交易筆數,且每筆交易都已扣掉手續費與滑價。它是兩邊比較的第一個數字,因為不受各邊交易筆數多寡影響。
| 要讀的數字 | 多單交易 | 空單交易 | 合計 |
|---|---|---|---|
| 扣除成本後的淨損益 | 各自的數字 | 各自的數字 | 兩邊加總 |
| 交易筆數 | 各自的筆數 | 各自的筆數 | 兩邊加總 |
| 扣除成本後的平均每筆損益 | 淨損益 ÷ 筆數 | 淨損益 ÷ 筆數 | 看不出由哪一邊貢獻 |
| 勝率 | 各自的數字 | 各自的數字 | 兩邊混合 |
| 最大回撤 | 取自僅做多的權益曲線 | 取自僅做空的權益曲線 | 通常不是兩者加總 |
假設性範例
兩個策略在同一段歷史上,合計淨損益都是 $40,000。第一個策略的多方以 60 筆交易賺 $45,000,空方以 40 筆交易虧 $5,000,大部分回撤出現在空單持有期間。第二個策略的多方以 50 筆交易賺 $22,000,空方以 48 筆交易賺 $18,000,兩條權益曲線在整段期間都向上。總數相同,證據卻不同。第一個策略其實是附帶一個只會花錢的空方的純做多策略;第二個策略的兩邊各有貢獻。
兩個細節讓拆分站得住腳。第一,每一邊的回撤,取自該邊自己的權益曲線,而不是把合併回撤拆開。純多曲線與純空曲線各有自己最差的一段,兩段通常落在不同日期。第二,每一邊的交易筆數,都要通過任何策略都該達到的同一個最低門檻。十年只有四十筆空單,只是線索,不是結論,由它算出的任何平均值,都不能單獨決定任何事。AlphaPrime(Valynox)績效報表中的多空分析,呈現的正是這種拆分,兩邊可以並排檢視,不必手動重建報表。
該測純做多、純做空,還是多空都做?
同一條規則跑三次:一次允許雙向,一次只做多,一次只做空;成本與交易時段一致,並且在跑之前,先寫下每個版本必須呈現什麼結果。Pardo(2008)將策略評估描述為以測試前定好的標準衡量績效,這裡的標準簡單明確:每一邊的最低交易筆數、扣除成本後的平均每筆損益高於零且明顯高於一買一賣(來回)成本,以及你在實單帳戶能接受的回撤上限。步驟順序重要,因為規則必須在看到任何結果之前就存在。
- 寫下通過規則。例如:每一邊至少 30 筆交易才算數,累積數百筆才可信;每一邊扣除成本後的平均每筆損益高於零;每一邊的回撤都在你的上限內。
- 跑雙向版本。記錄上一節的五個數字,涵蓋多單交易、空單交易與合併結果。
- 跑純做多版本,成本、交易時段與資料都相同,唯一的差別是停用空單進場。
- 跑純做空版本,做法相同。
- 決定:依步驟 1 寫下的通過規則,保留雙向、保留單向,或淘汰這條規則。
為什麼要跑三個版本,而不是直接拆分雙向報表?因為對許多規則來說,純做多版本的結果,並不等於合併回測中的多單交易。反手規則是平多單的同時建立空單、平空單的同時建立多單,因此永遠在場內。拿掉空方後,每筆多單都需要自己的出場,交易明細、在場時間與回撤都會改變。步驟 2 的拆分報表告訴你哪一邊撐起結果;步驟 3 與 4 的單獨回測告訴你,那一邊獨自上陣時是否仍然有效。當沖演算法的建立與測試中的流程符合這個模式:規則只建一次,再當成三個候選策略測試。
| 三次回測的結果 | 決定 | 原因 |
|---|---|---|
| 兩邊單獨都通過規則 | 兩邊都留 | 每一邊的回撤都有相應的報酬;合併後曲線更平滑 |
| 一邊通過,另一邊未通過或筆數太少 | 只留通過的一邊 | 未通過的一邊增加回撤與成本,卻沒有可衡量的優勢 |
| 兩邊單獨都未通過,但合併總數看起來不錯 | 淘汰,或回頭研究 | 總數是兩個弱結果的加總,不是一個強結果的證據 |
拆分之前,真實的 ES 多空回測長什麼樣子?
拆分之前,雙向回測只呈現一組摘要數字與一條權益曲線,以下圖表是 E-mini S&P 500 期貨一次真實搜尋的樣子。這次回測用 ES 日線,期間為 2019-01-02 至 2025-06-30,允許多空雙向,一口合約,每筆交易收 $20 手續費與 $25 滑價。它是搜尋嘗試的 1,024 個中,唯一保留的候選策略,依報酬與回撤的比值挑出。唯一的進出場來自一條 Record Test 規則,是用標準指標拼成的替代規則,沒有停損、沒有停利、沒有濾網,因此它測的是雙向報表的樣貌,而不是任何特定的多空策略。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。ES 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $25。
| 數字 | 結果 |
|---|---|
| 淨利(已平倉) | $56,377.5 |
| 最大回撤 | $30,507.5 |
| 交易筆數 | 98 |
| 勝率 | 60.2% |
| 獲利因子 | 1.498 |
| 平均每筆 | $575.28 |
| 在場時間 | 34.26% |

請把這些數字當成候選策略,而不是結論。事後挑出保留的候選,會讓它看起來比實際好:在同一段歷史上比較一千多組變體並保留最佳者,它呈現的一部分是剛好貼合那幾年的運氣,Bailey 等人(2014)把這點描述為搜尋中最佳回測通常被高估的原因。這些數字也看不出哪個方向賺了多少。整段期間共 98 筆交易,兩個方向共用,所以各邊單獨看只拿到其中一部分。預先寫好的通過規則裡的最低交易筆數條款,就是為這種情況而設。

下一步是本文一路鋪陳的重點。取一份你自己的雙向回測,資料類型相同,打開績效報表中的多空分析,把每一邊的五個數字寫進你在回測前訂下的通過規則。接著用相同的成本與交易時段,跑純做多與純做空版本,讓規則而不是合併總數,決定哪一邊保留。
常見問題
期貨交易中的多單與空單是什麼意思?
多單是做多部位:你先買進合約,價格上漲就獲利。空單是做空部位:你先賣出合約,價格下跌就獲利。兩者都是一般的期貨交易,以一筆委託建立,再以反向委託出場。兩者都不需要持有或借入任何東西。
期貨可以放空嗎?
可以,而且和買進一樣簡單。期貨合約是一紙約定,賣出尚未買進的合約,只是新建一口未平倉合約,不需要借入股票。沒有找券、沒有借券費,價格下跌時賣出也沒有限制。你繳交的保證金,與同樣大小的多單相同。
空單的手續費與保證金和多單相同嗎?
就單純的期貨部位而言,交易所對每口合約訂定一個原始保證金與一個維持保證金,多單與空單都適用。手續費與交易所費用依每口、每邊收取,與方向無關。唯一的實務差異是滑價:急跌時的空單進場,成交可能比鏡像的多單進場差,因此信任空方之前,先用較高的滑價設定測試。
回測中要怎麼分開看多單與空單的結果?
每個方向各讀五個數字,當作兩份獨立報表:扣除成本後的淨損益、交易筆數、扣除成本後的平均每筆損益、勝率,以及該邊自己權益曲線的最大回撤。有些報表工具直接列出這種拆分;否則匯出交易明細再依方向分組。接著把規則重跑成純做多與純做空版本,因為拿掉一邊,可能改變另一邊的出場。
為什麼策略在指數期貨上做多有效、做空卻無效?
指數期貨緩升的時間多於急跌,所以寫成鏡像的規則會產出兩份不同的交易明細:緩慢趨勢中有許多多單,急跌中則是較少、較快的空單。空方的筆數常少到無法判斷,而且在最關鍵的日子付出更多滑價。因此該用空方自己的交易筆數與扣除成本後的平均每筆損益來判斷,而不是看合併總數。
參考文獻
- 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.
- Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.
- CME Group. E-mini Nasdaq-100 Futures contract specifications (contract size $20 × index, minimum tick 0.25 index points = $5.00). cmegroup.com/markets/equities/nasdaq/e-mini-nasdaq-100.contractSpecs.html

