VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 商品與交易時段

逆價差與正價差:轉倉跳空與連續月回測

正價差(contango)是指較遠月期貨價格高於較近月;逆價差(backwardation)則相反。這個差異在連續月序列中會變成每次轉倉的價格跳空,所以相信回測前,請先確認你的資料如何處理轉倉。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 正價差與逆價差是什麼意思?
  2. 期貨曲線為什麼會向上或向下傾斜?
  3. 每次轉倉時,你的圖表會發生什麼事?
  4. 該用還原調整還是未調整的連續月序列來回測?
  5. 還原調整序列為什麼會偏離現貨價格?
  6. 在相信跨越轉倉的回測之前,該檢查什麼?
  7. 常見問題

正價差(contango)是指較遠月期貨合約的價格高於較近月合約,或高於現貨。逆價差(backwardation)則是較遠月合約的價格低於較近月合約。在連續月序列中,這個差異會在每個轉倉日表現為一次價格跳空。未調整的資料會把這次跳空當成假的行情;還原調整後的資料能消除跳空,但會改變過去的價格水準。

正價差與逆價差是什麼意思?

正價差與逆價差描述的是較遠月期貨價格位於較近月價格之上或之下。你可以在期貨曲線上看到這一點。期貨曲線是一條線,把同一種商品或指數在各個交割月份的價格,從最近月合約連到最遠月合約。現貨價格是現在交割的價格;以指數期貨來說,現貨價格就是指數本身。

  • 正價差(contango)是指較遠交割月的價格高於較近月,或期貨價格高於現貨價格的市場狀態。曲線向上傾斜。
  • 逆價差(backwardation)是相反的狀態:較遠交割月的價格低於較近月,或期貨價格低於現貨價格。曲線向下傾斜。

台灣交易人使用兩個相關的詞。正價差指期貨價格高於指數,也就是 contango 這一側。逆價差指期貨價格低於指數,也就是 backwardation 這一側。在台灣,這兩個詞通常是拿近月台指期合約與加權指數本身比較,而不是拿兩個期貨月份互相比較。

曲線不一定只有一種形狀。前面幾個月可能是逆價差,後面幾個月卻是正價差。形狀也可能每週都在變。

正常逆價差(normal backwardation)是另一個概念。它是較早期的經濟學理論,認為期貨價格傾向低於交易人預期商品在到期時的價格,因為避險者要付錢給投機者,請他們承擔風險。預期的未來價格在任何螢幕上都看不到,所以你無法從圖表上讀出正常逆價差。許多人會隨口用這個詞來指一般的逆價差。閱讀時,請確認作者指的是哪一種意思。

假設的期貨曲線,起點為相同現貨價格:正價差(contango)時遠月交割價較高,曲線向上傾斜;逆價差(backwardation)時遠月價較低,曲線向下傾斜 曲線斜率往哪個方向 各交割月的假設價格 現貨 正價差 逆價差 每次轉倉都會出現價差。 所以:回測前先看斜率。
假設的期貨曲線,分別呈現正價差(較遠月較高)與逆價差(較遠月較低),兩者都從同一個現貨價格出發。

期貨曲線為什麼會向上或向下傾斜?

斜率主要反映持有標的直到交割的成本,減去持有所帶來的收益。想像你今天談好一輛車的價格,一年後才取車。賣方得把這輛車保管、投保並為它融資一年,所以較晚交割的價格會包含這些成本。如果賣方因為留著這輛車而能賺到一些東西,較晚交割的價格就可以比較低。

持有成本(cost of carry)是持有標的直到交割的成本,減去持有所帶來的任何收益。簡單的形式如下:

期貨價格 ≈ 現貨價格 + 融資成本 + 倉儲成本 − 持有收益

其中,融資成本是被占用資金直到到期的利息。倉儲成本是倉庫與保險費用,對實體商品很重要,對指數則為零。持有收益,對股價指數來說是股利,對實體商品來說則是手邊握有現貨的好處。當成本大於收益時,曲線呈正價差;當收益較大時,曲線呈逆價差。

原因最重要的市場對較遠月合約的影響
被占用資金的利息所有期貨推高價格(正價差)
倉儲與保險金屬、能源、穀物等實體商品推高價格(正價差)
到期前發放的股利股價指數期貨壓低價格(逆價差)
目前實體商品短缺能源與農產品市場壓低價格(逆價差)
預期供給變化,例如收成農產品市場可能逐月往不同方向推動

短缺的情況有自己的名稱。便利收益(convenience yield)是企業手上現在就握有實體商品所得到的好處,例如無法停工的煉油廠。當供給吃緊時,買方願意為現在交割付出比較晚交割更高的價格,曲線就會進入逆價差。

對指數期貨來說,股利是造成逆價差的常見原因。如果到期前預期的股利大於利息成本,期貨就會低於指數。許多台灣公司在夏季除息,這也是台指期的逆價差常在每年這個時期擴大的原因之一。

每次轉倉時,你的圖表會發生什麼事?

在每個轉倉日,連續月序列都會跳動一個等於舊合約與新合約之間價差的幅度。連續月是把個別期貨合約接在一起而形成的單一價格序列,在轉倉日從即將到期的合約切換到下一個合約。資料供應商依規則選擇轉倉日,例如到期前固定天數,或下一個合約成交量較大的那一天。

在正價差時,下一個合約比較貴,所以序列向上跳空。在逆價差時,下一個合約比較便宜,所以序列向下跳空。沒有人交易過這次跳空,它只是因為序列換了合約才出現。

假設範例

某指數期貨處於逆價差。轉倉日當天,即將到期的合約收在 20,000 點,下一個月合約的價格是 19,900。未調整的連續月序列從一根 K 棒到下一根 K 棒下跌 100 點。持有多單通過這根 K 棒,回測中會顯示 100 點的虧損。如果一點在你的帳戶幣別中價值 200,回測就會記入 20,000 的假虧損。在真實帳戶中,你會以 20,000 賣出舊合約,再以 19,900 買進新合約,跳空本身並不造成虧損。

以台指期來說,最後交易日是交割月份的第三個星期三,所以大部分轉倉發生在那之前的幾天。台指期結算日工具列出了這些日期,能告訴你要在資料的哪裡找跳空。交易所可能更改合約規則,例如最後交易日,所以在決定轉倉日之前,請先查看交易所的合約頁面。

假設轉倉時次一合約價格低 100 點:未調整資料在轉倉日出現假的 100 點下跌,後復權資料將舊價格下移,因此線圖沒有跳空 轉倉跳空:不是真實行情 假設轉倉:次月 −100 點 未調整 後復權 轉倉 轉倉 假的 −100 無跳空 轉倉是換約,不是行情。 所以:檢查資料如何轉倉。
上面的假設轉倉:未調整資料顯示下跌 100 點;還原調整資料把較舊的價格平移,線上就沒有跳空。

該用還原調整還是未調整的連續月序列來回測?

對根據價格變化反應的規則,使用還原調整資料;對依賴真實價格水準的規則,使用未調整資料。許多交易人兩種都會測。還原調整是把轉倉前所有價格平移一個轉倉價差的幅度,讓序列沒有跳空的過程。常見的做法有兩種:

  • 差額調整把以點數計的價差加到每個較早的價格上。在上面的例子中,轉倉前所有價格都減去 100 點。
  • 比例調整把每個較早的價格乘以新價格除以舊價格。在例子中,每個較早的價格都乘以 0.995。
未調整差額調整比例調整
過去價格是真實成交價是僅限最新合約僅限最新合約
轉倉日有跳空有沒有沒有
各合約內的點數波動正確正確在較舊的歷史中被重新縮放
各合約內的百分比波動正確在較舊的歷史中失真正確
可能出現低於零的價格只有市場本身曾以低於零成交時會,在多次大幅調整之後不會

像「價格突破 20 根 K 棒高點時買進」或「虧損 50 點後出場」這樣的規則,依賴的是價格變化,適合差額調整的資料。使用百分比停損或百分比報酬的規則,適合比例調整的資料。使用固定價位的規則,例如整數關卡或過去某一年的價格,則需要未調整資料,因為過去經還原調整的價位從未成交過。這篇談台指全與全時段台指期連續月資料的文章,說明了這些如何應用在台灣指數期貨上。

還原調整序列為什麼會偏離現貨價格?

還原調整序列記錄的是持續轉倉的交易人會獲得或損失多少,而在正價差或逆價差下,這與現貨的走勢不同。轉倉收益(roll yield)是被轉倉的期貨部位,隨著各合約價格在到期時向現貨靠攏所產生的損益,與現貨本身的任何變動無關。在正價差時,多單會損失轉倉收益。在逆價差時,只要曲線維持原有形狀,多單就會獲得轉倉收益。

假設範例

某商品的現貨價格 12 個月都維持在 70.00。每個月,下一個合約的價格是 70.50,並在到期時滑落到 70.00。多單交易人以 70.50 買進,到期時是 70.00,再轉到新合約以 70.50 買進,如此重複。經過 12 次轉倉,現貨價格沒有變動,但被轉倉的部位大約虧損了 6.00。還原調整序列把這件事顯示成一條從 76.00 降到 70.00 的線。

在假設的正價差市場中,現貨價格 12 個月維持在 70.00 不變,但經價差調整的期貨序列從 76.00 跌至 70.00,因為每次轉倉都讓多單損失 0.50 現貨持平,期貨下滑 假設正價差,12 次每月轉倉 76.00 70.00 價差調整後 −6.00 現貨 現貨資料看不到轉倉成本。 所以:期貨要用期貨資料回測。
在假設的正價差範例中,現貨價格維持不變,而還原調整序列下跌,因為每次轉倉都讓多單損失 0.50。

這有兩個實務上的結果。第一,不要在現貨指數或現貨商品價格上測試期貨策略。那種資料漏掉了轉倉收益,而期貨部位是要支付或收取這筆收益的。第二,比較多空結果時,要把曲線的歷史放在心上。在多年穩定的正價差期間測試的純多單規則,帶有一項現貨價格圖表看不到的成本。在多年穩定的逆價差期間測試的規則,則得到一個可能不會持續的順風,因為曲線形狀取決於持有成本與供給,而不是你的規則。

在相信跨越轉倉的回測之前,該檢查什麼?

檢查你的結果是來自市場,而不是來自資料接合合約的方式。請依序完成這些步驟:

  1. 說出你的序列是什麼。寫下它使用哪些合約月份、轉倉規則與調整方法:無、差額或比例。如果你不知道,測試前先問資料供應商。
  2. 列出每個轉倉日與跳空幅度。依大小排序。最大的幾個就是回測誤差會最大的地方。回測資料品質:跳空、壞跳動點、時區與轉倉這篇文章說明了如何找出它們。
  3. 檢視轉倉 K 棒上的交易。在未調整資料中,檢視每一筆發生在轉倉 K 棒上的進場、出場與停損。只被轉倉跳空觸發的停損,是一筆實際上不會發生的交易。
  4. 用另一種序列類型跑同一個策略。比較未調整與還原調整資料之間的淨損益、交易筆數與最大回撤。讀取價格變化的規則,在兩者上應該給出相近的結果。
  5. 加入每次轉倉的成本。連續月回測把跨越轉倉持有的交易顯示為一筆交易。真實帳戶要多付一次出場與一次進場。如何估算每一買一賣(來回)的手續費與滑價,請見回測中的交易成本。
  6. 在不同的曲線時期測試。分別檢查正價差與逆價差時期的結果,例如指數期貨在股利季之內與之外。只在其中一種狀態下有效的策略,依賴的是曲線形狀。

在 AlphaPrime(Valynox)中,你可以用同樣的研究設定在連續月序列的兩個版本上各跑一次並比較。AlphaPrime 的回測會對每個候選策略套用手續費、滑價、下一根 K 棒成交與你的交易時段,所以兩次執行使用相同的成本與時點假設。接著,包含推進分析的策略檢驗,會顯示策略在曲線形狀不同的各個時期是否站得住腳。還原調整與未調整兩個版本的結果,也可以放進 AlphaPrime 的策略資料庫,用搜尋、排序與分類把兩組結果分開,方便對照。

如果你使用 AlphaPrime,這代表:選擇與你的規則所讀取內容相符的連續月序列,並把重要的策略同時在還原調整與未調整資料上測試。結果取決於轉倉方法的策略,在你相信它之前還需要更多功夫。

常見問題

正價差與逆價差有什麼不同?

在正價差時,較遠月期貨合約的價格高於較近月合約,或期貨高於現貨。在逆價差時,較遠月合約的價格低於較近月合約,或期貨低於現貨。差異主要一方面來自利息與倉儲成本,另一方面來自股利或實體商品的短缺。

逆價差是看多的訊號嗎?

逆價差並不會告訴你價格會往哪裡走。它顯示的是持有標的所得到的比成本更多,通常是因為股利或供給吃緊。期貨多單只有在曲線維持那個形狀的期間,才會在逆價差中獲得轉倉收益,而形狀是會改變的。

台灣期貨中的逆價差是什麼意思?

逆價差指期貨價格低於指數,也就是 backwardation 這一側。正價差指期貨價格高於指數,也就是 contango 這一側。在台指期上,當到期前預期的股利大於利息成本時,常會出現逆價差。

我應該用還原調整還是未調整的期貨資料回測?

對讀取價格變化的規則,例如突破或以點數計的停損,使用還原調整資料,因為它消除了轉倉時的假跳空。對使用真實價格水準的規則,使用未調整資料,因為經還原調整的過去價格從未成交過。兩種都測,可以看出結果是否取決於轉倉方法。

轉倉收益會出現在回測中嗎?

轉倉收益會出現在還原調整的期貨序列中,因為序列記錄的是持續轉倉的交易人會經歷的情況。如果你在現貨指數或現貨商品價格上測試,它就不會出現。這是用期貨資料回測期貨策略的原因之一。