市場情緒怎麼用

看懂合約溢價怎麼算、避開兩個最常見的誤讀,以及怎麼放進策略。

最後更新 2026-09
重點整理
  • 市場情緒(MS)是 Binance USDT 本位永續合約收盤價減 Binance 指數價格的價差,先取 1 天滾動中位數,再換算成相對該幣近 30 天的 z-score。
  • 它算的是 USDT 絕對價差,不是百分比:幣價在 30 天內翻倍,同樣比例的溢價換成 USDT 也翻倍,數值會跟著被推高。
  • 高低只相對該幣近 30 天:長期維持溢價的幣,數值會回到 0 附近;0 不代表沒有溢價,負值也不一定是折價。
  • 因為先取 1 天中位數,它是日級的慢訊號;目前沒有官方策略使用市場情緒,本文的用法都是示意、未回測。

合約價格比現貨高,就代表市場很樂觀嗎?市場情緒看的是 Binance 永續合約比指數價格高出多少,但它用的是 USDT 價差、而且只跟自己近 30 天比——這兩點是最多人讀錯的地方。

什麼是市場情緒?

市場情緒(Market Sentiment,MS)是 Blave 的合約溢價指標:比較 Binance USDT 本位永續合約與 Binance 指數價格的收盤價差,換算成相對該幣近 30 天的 z-score。指數價格是 Binance 以多家交易所現貨報價加權而成,不是單一交易所的現貨價。計算分三步:

步驟算的是什麼
1. 價差每 5 分鐘,永續合約收盤價減指數價格收盤價,單位是 USDT。大於 0 是合約溢價,小於 0 是折價。
2. 平滑對價差取 1 天滾動中位數,濾掉短時間的跳動。
3. 標準化用近 30 天的平均與標準差換算成 z-score,得到最後的數值。

因為是 z-score,數值沒有上下限,各幣種能放在同一把尺上比較。正值代表價差比近 30 天平常大,多方願意用更高的價格在合約上進場;資料裡沒有多空人數,也沒有持倉。Studio 的狀態徽章用以下門檻分級:

數值Studio 徽章意思
≥ +3過度樂觀價差遠高於近 30 天常態,屬極端值
+2 ~ +3高度樂觀價差明顯高於常態
+0.5 ~ +2樂觀價差高於常態
−0.5 ~ +0.5中立與近 30 天常態差不多
≤ −0.5悲觀/高度悲觀/過度悲觀與正值對稱,門檻是 −0.5、−2、−3:價差低於常態,合約相對指數偏弱

最關鍵的兩點:它是 USDT 價差,而且只跟自己比

算的是 USDT 絕對價差,不是百分比

市場情緒的原料是「合約價 − 指數價格」的 USDT 差額,整個計算過程沒有除以價格。所以溢價比例不變時,同一個幣的價格漲得越多,USDT 價差就越大;不同幣之間則因為各自標準化,不受幣價高低影響。

舉個假設的例子:某幣 30 天前價格約 1 USDT,合約比指數高 0.001 USDT,溢價 0.1%;之後幣價漲到 2 USDT,合約仍比指數高 0.1%,價差卻變成 0.002 USDT。溢價比例完全沒變,但價差高於近 30 天平均,市場情緒會被推高。幣價在 30 天內大跌時則相反,數值會被壓低。

高低是相對該幣近 30 天,不是絕對水準

z-score 比的是這個幣自己近 30 天的平均。一個連續兩個月合約都比指數高出差不多價差的幣,平均會被墊高,市場情緒回到 0 附近——這時 0 的意思是「跟近 30 天差不多」,不是「沒有溢價」。

反過來,一個幣從大幅溢價回落到小幅溢價,價差低於近 30 天平均,數值可能轉成負的,但合約其實仍然比指數貴。同樣是 +2,放在不同幣、不同月份,背後的實際價差也可能差很多。

讀數之前先問兩件事:這個幣近 30 天價格有沒有大幅漲跌(會放大或縮小 USDT 價差)?它是不是長期處在溢價或折價(會把平均墊高或壓低)?兩個答案都會改變同一個數值的意思。

怎麼用市場情緒做策略?

目前沒有任何官方策略使用市場情緒,以下三種用法都是示意、未回測。程式碼裡的 ±0.5 與 3 是借用 Studio 徽章門檻當起點,不是參數掃描的結果,實際使用前都要自己回測。

1. 門檻+緩衝區:價差偏高時持有

最直接的寫法:市場情緒高於進場門檻時做多,跌破出場門檻就空手。兩個門檻中間留一段緩衝,避免數值在單一門檻附近來回時頻繁進出。

ENTRY_TH = 0.5    # 示意:借用「樂觀」徽章門檻
EXIT_TH  = -0.5   # 示意:借用「悲觀」徽章門檻

def compute_signals(df, entry_th=ENTRY_TH, exit_th=EXIT_TH):
    # df['MS'] = 該幣的市場情緒數值
    signal = pd.Series(np.nan, index=df.index)
    signal[df['MS'] > entry_th] = 1.0   # 價差高於常態 → 做多
    signal[df['MS'] < exit_th]  = 0.0   # 價差低於常態 → 空手
    return signal

因為數值先取過 1 天中位數,這個訊號跟著日級的價差變化走,不會對幾分鐘內的價格跳動反應。它沒有回測;門檻與方向(順勢或反向)都要自己掃描驗證。

2. 極端值當風控:過度樂觀或過度悲觀時先不開新倉

數值到 ±3,代表價差相對近 30 天已經非常極端。一種保守的用法是不把它當進場訊號,而是加在既有策略的進場條件上,極端時先不開新倉:

# 示意:|MS| ≥ 3(過度樂觀或過度悲觀)時不進場
too_hot = df['MS'].abs() >= 3
entry = compute_entry(df) & ~too_hot

這不是反轉訊號,也沒有回測:Blave 沒有驗證過數值到 ±3 之後價格會反轉,也沒有驗證過避開極端值能改善績效;這裡只是把「價差已經極端」當成暫停開新倉的條件。±3 是相對近 30 天,價差長期很穩的幣,小變動也能到 ±3。compute_entry 換成你原本策略的進場條件。

3. 濾網:慢的市場情緒定方向,快的指標抓時機

市場情緒是日級的慢訊號,適合當背景濾網:只在它大於 0 時,才接受短窗口指標(例如多空力道)給出的做多訊號;市場情緒回到 0 以下就空手。以下是結構示意,compute_fast_entry 換成你自己的條件:

ms = fetch_market_sentiment(SYMBOL, INTERVAL, START, END, hdrs)
df['MS'] = ms['alpha']
regime_long = df['MS'] > 0              # 示意:價差高於近 30 天平均才做多
fast_entry = compute_fast_entry(df)     # 例如短窗口的多空力道條件
signal = pd.Series(np.nan, index=df.index)
signal[regime_long & fast_entry] = 1.0
signal[~regime_long] = 0.0

這個組合沒有回測,門檻 0 只是示意;實際使用前要掃描參數、看扣掉手續費後的表現。

K 線週期怎麼選?

市場情緒只有一個設定:K 線週期(period),可選 5min、15min、1h、4h、8h、1d,最短 5 分鐘。它沒有巨鯨警報那種時間窗口參數;而且不管選哪個週期,數值都是先取過 1 天中位數的結果,週期只決定多久取一次值,不會拿掉底層的 1 天中位數平滑。

週期Studio 預設顯示範圍注意
5min / 15min5min:3 天;15min:7 天畫得最密,但看到的仍是日級平滑後的變化,不適合拿來抓短線
1h / 4h1h:14 天;4h:30 天策略想每幾小時檢查一次時使用
8h / 1d8h:60 天;1d:180 天適合看一段期間的情緒走向

選週期的依據是策略多久檢查一次,不要期待短週期能抓到短線。資料從 2020-01-01 起(晚上市的幣從上市日起);z-score 需要 30 天樣本,所以比較有意義的數值大約從 2020-01-31 開始,新上市的幣前 30 天也是同樣道理。

在 Studio 上怎麼看?

頁面看什麼
總覽整體情緒半圓儀表(全幣種以未平倉價值(USDT 計價)加權平均的市場情緒)+樂觀、悲觀兩張排行,欄位有幣別、24 小時漲跌、指數與狀態。
板塊各板塊的市場情緒排行,板塊數值是板塊內各幣以未平倉價值加權的平均。
歷史單一幣種的市場情緒柱狀圖疊上價格,可選 5min~1d 週期,並附 stat 欄位;非 Pro 用戶最近 7 天的資料延後顯示。

搭配哪些指標?

以下是組合思路,不是驗證過的結論:

組合用途
市場情緒 + 巨鯨警報價差升高時,用巨鯨警報看未平倉量有沒有同時反常增加,協助判斷溢價背後是否伴隨新開倉。
市場情緒 + 多空力道市場情緒反應慢,用多空力道看短窗口的主動買賣,補上它看不到的短期動態。

用 API 或 Blave Agent 取數要注意什麼?

API 端點是 GET /market_sentiment/get_alpha,參數有 symbol、period 與起訖日期(start_date、end_date);Blave Agent 裡對應 fetch_market_sentiment。幣種只涵蓋 Binance USDT 本位永續,其他交易所不在內。只回傳已收盤的 K 線,欄位是 timestamp、alpha 與 stat,不含價格;沒給起始日時預設抓最近 365 天,區間超過 365 天會自動截短。

stat 物件描述最新一筆數值,意思跟名字不完全一樣:

欄位實際算法
up_prob用近 365 天的資料訓練邏輯迴歸模型,以市場情緒預測 24 小時後漲跌,輸出上漲的機率。訓練資料包含當下這段,屬樣本內估計,不是樣本外勝率。
avg_up_return /
avg_down_return
近 365 天所有「24 小時後上漲/下跌」時點的平均報酬,不分市場情緒水位。
exp_valueup_prob × avg_up_return +(1 − up_prob)× avg_down_return,是小數,不是百分比。
is_data_sufficient該幣資料是否早於 365 天前就開始,不是「這個水位的樣本夠不夠」。
記得:市場情緒是參考資料,不是買賣訊號。它只看 Binance、算的是 USDT 價差而不是百分比、「高低」只相對近 30 天,stat 也是樣本內的估計——任何門檻都要用你自己的回測驗證。