Cách dùng Tâm lý thị trường

Hiểu cách tính phần bù hợp đồng, tránh hai lỗi đọc phổ biến nhất và đưa chỉ báo vào chiến lược.

Cập nhật lần cuối 2026-09
Điểm chính
  • Tâm lý thị trường (MS) là giá đóng cửa hợp đồng vĩnh cửu USDT-M của Binance trừ giá chỉ số Binance, lấy trung vị trượt 1 ngày, rồi đổi thành z-score so với 30 ngày gần nhất của chính coin đó.
  • Nó đo chênh lệch tuyệt đối bằng USDT, không phải phần trăm: nếu giá tăng gấp đôi trong 30 ngày, cùng một tỷ lệ phần bù tính ra USDT cũng gấp đôi và đẩy giá trị lên.
  • Cao hay thấp chỉ so với 30 ngày gần nhất của coin: coin duy trì phần bù lâu ngày sẽ có giá trị quay về gần 0, nên 0 không có nghĩa là không có phần bù, và giá trị âm cũng chưa chắc là chiết khấu.
  • Vì lấy trung vị 1 ngày trước, đây là tín hiệu chậm theo ngày. Hiện chưa có chiến lược chính thức nào dùng Tâm lý thị trường, nên mọi cách dùng trong bài đều là minh họa, chưa backtest.

Giá hợp đồng cao hơn giá giao ngay thì thị trường đang lạc quan? Tâm lý thị trường xem hợp đồng vĩnh cửu Binance cao hơn giá chỉ số bao nhiêu, nhưng nó dùng chênh lệch bằng USDT và chỉ so với 30 ngày gần nhất của chính coin đó. Hai điểm này là chỗ nhiều người đọc sai nhất.

Tâm lý thị trường là gì?

Tâm lý thị trường (Market Sentiment, MS) là chỉ báo phần bù hợp đồng của Blave: so sánh giá đóng cửa của hợp đồng vĩnh cửu USDT-M Binance với giá chỉ số Binance, rồi đổi chênh lệch thành z-score so với 30 ngày gần nhất của coin. Giá chỉ số do Binance tính bằng cách gia quyền giá giao ngay trên nhiều sàn, không phải giá giao ngay của một sàn duy nhất. Cách tính gồm ba bước:

BướcTính gì
1. Chênh lệchMỗi 5 phút, giá đóng cửa hợp đồng vĩnh cửu trừ giá đóng cửa của giá chỉ số, đơn vị USDT. Lớn hơn 0 là phần bù, nhỏ hơn 0 là chiết khấu.
2. Làm mượtLấy trung vị trượt 1 ngày của chênh lệch để lọc bỏ các cú nhảy ngắn.
3. Chuẩn hóaDùng trung bình và độ lệch chuẩn 30 ngày gần nhất để đổi thành z-score, ra giá trị cuối cùng.

Vì là z-score, giá trị không có giới hạn trên dưới và mọi coin đều nằm trên cùng một thang đo. Giá trị dương nghĩa là chênh lệch lớn hơn bình thường so với 30 ngày gần nhất: phe Long sẵn sàng vào lệnh ở giá cao hơn trên hợp đồng. Dữ liệu không có số lượng trader hay vị thế. Huy hiệu trạng thái trên Studio dùng các ngưỡng sau:

Giá trịHuy hiệu StudioÝ nghĩa
≥ +3Lạc quan thái quáChênh lệch cao hơn nhiều so với mức bình thường 30 ngày, là giá trị cực đoan
+2 ~ +3Rất lạc quanChênh lệch cao rõ rệt so với bình thường
+0.5 ~ +2Lạc quanChênh lệch cao hơn bình thường
−0.5 ~ +0.5Trung lậpTương đương mức bình thường 30 ngày
≤ −0.5Bi quan / Rất bi quan / Bi quan thái quáĐối xứng với phía dương, ngưỡng −0.5, −2, −3: chênh lệch thấp hơn bình thường, hợp đồng yếu so với giá chỉ số

Hai điểm quan trọng nhất: chênh lệch bằng USDT, và chỉ so với chính nó

Đây là chênh lệch tuyệt đối bằng USDT, không phải phần trăm

Nguyên liệu của Tâm lý thị trường là khoản chênh "giá hợp đồng − giá chỉ số" tính bằng USDT, và cả quá trình tính không hề chia cho giá. Vì vậy khi tỷ lệ phần bù không đổi, giá của cùng một coin tăng càng nhiều thì chênh lệch USDT càng lớn. Giữa các coin khác nhau thì mức giá không ảnh hưởng, vì mỗi coin được chuẩn hóa theo chính nó.

Một ví dụ giả định: 30 ngày trước một coin có giá khoảng 1 USDT, hợp đồng cao hơn giá chỉ số 0.001 USDT, tức phần bù 0.1%. Sau đó giá lên 2 USDT, phần bù vẫn là 0.1% nhưng chênh lệch đã thành 0.002 USDT. Tỷ lệ phần bù không đổi, nhưng chênh lệch cao hơn trung bình 30 ngày nên Tâm lý thị trường bị đẩy lên. Nếu giá giảm mạnh trong 30 ngày thì ngược lại, giá trị bị kéo xuống.

Cao hay thấp là so với 30 ngày gần nhất của coin, không phải mức tuyệt đối

z-score so sánh coin với trung bình 30 ngày của chính nó. Nếu hợp đồng của một coin giữ mức phần bù gần như không đổi suốt hai tháng, trung bình sẽ bị kéo lên theo và Tâm lý thị trường quay về gần 0. Lúc này 0 nghĩa là "tương đương 30 ngày gần nhất", không phải "không có phần bù".

Chiều ngược lại cũng xảy ra. Khi một coin từ phần bù lớn thu hẹp xuống phần bù nhỏ, chênh lệch thấp hơn trung bình 30 ngày và giá trị có thể thành âm, dù hợp đồng vẫn đắt hơn giá chỉ số. Cùng là +2 nhưng ở coin khác hoặc tháng khác, chênh lệch thực tế có thể khác nhau rất xa.

Trước khi đọc giá trị, hãy hỏi hai câu. Giá coin có biến động mạnh trong 30 ngày qua không (làm giãn hoặc co chênh lệch USDT)? Coin có nằm ở trạng thái phần bù hoặc chiết khấu trong thời gian dài không (kéo trung bình lên hoặc xuống)? Cả hai câu trả lời đều thay đổi ý nghĩa của cùng một con số.

Dựng chiến lược với Tâm lý thị trường thế nào?

Hiện chưa có chiến lược chính thức nào dùng Tâm lý thị trường, nên cả ba cách dưới đây đều là minh họa, chưa backtest. Các số ±0.5 và 3 trong code mượn ngưỡng huy hiệu của Studio làm điểm xuất phát, không phải kết quả quét tham số, nên phải tự backtest trước khi dùng.

1. Ngưỡng có vùng đệm: giữ lệnh khi chênh lệch cao

Cách viết trực tiếp nhất: vào Long khi Tâm lý thị trường vượt ngưỡng vào lệnh, và đóng về không vị thế khi xuống dưới ngưỡng thoát. Vùng đệm giữa hai ngưỡng giúp chiến lược không vào ra liên tục khi giá trị dao động quanh một mức.

ENTRY_TH = 0.5    # minh họa: ngưỡng huy hiệu Lạc quan
EXIT_TH  = -0.5   # minh họa: ngưỡng huy hiệu Bi quan

def compute_signals(df, entry_th=ENTRY_TH, exit_th=EXIT_TH):
    # df['MS'] = giá trị Tâm lý thị trường của coin
    signal = pd.Series(np.nan, index=df.index)
    signal[df['MS'] > entry_th] = 1.0   # chênh lệch cao hơn bình thường -> Long
    signal[df['MS'] < exit_th]  = 0.0   # chênh lệch thấp hơn bình thường -> không vị thế
    return signal

Vì giá trị đã là trung vị 1 ngày, tín hiệu này đi theo thay đổi chênh lệch ở cấp ngày và không phản ứng với biến động giá trong vài phút. Nó chưa được backtest, nên ngưỡng và hướng (theo xu hướng hay ngược xu hướng) đều phải tự quét và kiểm chứng.

2. Giá trị cực đoan làm kiểm soát rủi ro: không mở vị thế mới khi Lạc quan thái quá hoặc Bi quan thái quá

Giá trị chạm ±3 nghĩa là chênh lệch đã rất cực đoan so với 30 ngày gần nhất. Một cách dùng thận trọng là không coi nó là tín hiệu vào lệnh, mà thêm vào điều kiện vào lệnh của chiến lược sẵn có, tạm không mở vị thế mới khi giá trị cực đoan:

# minh họa: không vào lệnh khi |MS| >= 3 (quá lạc quan hoặc quá bi quan)
too_hot = df['MS'].abs() >= 3
entry = compute_entry(df) & ~too_hot

Đây không phải tín hiệu đảo chiều và cũng chưa được backtest: Blave chưa kiểm chứng việc giá đảo chiều sau khi chạm ±3, cũng chưa kiểm chứng việc tránh các giá trị cực đoan giúp cải thiện kết quả. Ở đây chỉ dùng trạng thái "chênh lệch đã cực đoan" làm điều kiện tạm dừng mở vị thế mới. ±3 là so với 30 ngày gần nhất, nên coin có chênh lệch ổn định lâu dài chỉ cần biến động nhỏ cũng có thể chạm ±3. Thay compute_entry bằng điều kiện vào lệnh của chiến lược bạn đang có.

3. Bộ lọc: Tâm lý thị trường chậm định hướng, chỉ báo nhanh chọn thời điểm

Tâm lý thị trường là tín hiệu chậm theo ngày, hợp làm bộ lọc nền: chỉ nhận tín hiệu Long từ chỉ báo khung ngắn (ví dụ Cường độ Taker) khi Tâm lý thị trường lớn hơn 0, và đứng ngoài khi nó về 0 hoặc thấp hơn. Dưới đây là phác thảo cấu trúc, thay compute_fast_entry bằng điều kiện của bạn:

ms = fetch_market_sentiment(SYMBOL, INTERVAL, START, END, hdrs)
df['MS'] = ms['alpha']
regime_long = df['MS'] > 0              # minh họa: chỉ Long khi chênh lệch cao hơn trung bình 30 ngày
fast_entry = compute_fast_entry(df)     # ví dụ điều kiện Cường độ Taker khung ngắn
signal = pd.Series(np.nan, index=df.index)
signal[regime_long & fast_entry] = 1.0
signal[~regime_long] = 0.0

Tổ hợp này chưa được backtest và ngưỡng 0 chỉ để minh họa. Trước khi dùng thật, hãy quét tham số và xem hiệu suất sau phí.

Chọn chu kỳ nến thế nào?

Tâm lý thị trường chỉ có một thiết lập: chu kỳ nến (period), gồm 5min, 15min, 1h, 4h, 8h, 1d, ngắn nhất 5 phút. Nó không có tham số cửa sổ thời gian như timeframe của Săn cá voi. Chọn chu kỳ nào thì giá trị cũng đã qua trung vị 1 ngày, nên chu kỳ chỉ quyết định bao lâu đọc giá trị một lần, không loại bỏ lớp làm mượt bằng trung vị 1 ngày bên dưới.

Chu kỳPhạm vi hiển thị mặc định trên StudioLưu ý
5min / 15min5min: 3 ngày; 15min: 7 ngàyVẽ dày nhất nhưng vẫn là thay đổi đã làm mượt theo ngày, không hợp để bắt nhịp ngắn hạn
1h / 4h1h: 14 ngày; 4h: 30 ngàyDùng khi chiến lược kiểm tra vài giờ một lần
8h / 1d8h: 60 ngày; 1d: 180 ngàyHợp để xem xu hướng tâm lý trong một khoảng thời gian dài hơn

Hãy chọn chu kỳ theo tần suất chiến lược kiểm tra, đừng kỳ vọng chu kỳ ngắn bắt được biến động ngắn hạn. Dữ liệu bắt đầu từ 2020-01-01 (coin niêm yết sau thì từ ngày niêm yết). z-score cần 30 ngày mẫu, nên giá trị có ý nghĩa bắt đầu khoảng 2020-01-31, và 30 ngày đầu của coin mới niêm yết cũng vậy.

Xem trên Studio ở đâu?

TrangHiển thị gì
Tổng quanĐồng hồ bán nguyệt tâm lý tổng thể (Tâm lý thị trường của mọi coin, bình quân gia quyền theo giá trị open interest tính bằng USDT) cùng hai bảng xếp hạng lạc quan và bi quan, với các cột coin, biến động 24 giờ, chỉ số và trạng thái.
Nhóm ngànhXếp hạng Tâm lý thị trường theo nhóm ngành; giá trị mỗi nhóm là bình quân gia quyền theo giá trị open interest của các coin trong nhóm.
Lịch sửBiểu đồ cột Tâm lý thị trường của một coin chồng lên giá, chọn chu kỳ 5min đến 1d, kèm trường stat. Người dùng không phải Pro sẽ thấy dữ liệu 7 ngày gần nhất bị hiển thị trễ.

Kết hợp với chỉ báo nào?

Đây là ý tưởng kết hợp, không phải kết luận đã kiểm chứng:

Kết hợpMục đích
MS + Săn cá voiKhi chênh lệch mở rộng, xem Săn cá voi để biết open interest có tăng bất thường cùng lúc không, giúp đánh giá phía sau phần bù có vị thế mới mở hay không.
MS + Cường độ TakerTâm lý thị trường phản ứng chậm; Cường độ Taker cho thấy lực mua bán chủ động ở khung ngắn, bù cho những biến động ngắn hạn mà nó không thấy.

Lấy dữ liệu qua API hoặc Blave Agent cần lưu ý gì?

Endpoint API là GET /market_sentiment/get_alpha với symbol, period và ngày bắt đầu/kết thúc (start_date, end_date); trong Blave Agent là hàm fetch_market_sentiment. Chỉ gồm hợp đồng vĩnh cửu USDT-M của Binance, không có sàn khác. Chỉ trả về nến đã đóng, với các trường timestamp, alpha và stat, không kèm giá. Không truyền ngày bắt đầu thì lấy 365 ngày gần nhất, khoảng dài hơn 365 ngày sẽ tự bị cắt.

Đối tượng stat mô tả giá trị mới nhất, nhưng tên gọi không hoàn toàn khớp với cách tính:

TrườngThực tế tính gì
up_probMô hình hồi quy logistic huấn luyện trên dữ liệu 365 ngày gần nhất, dùng Tâm lý thị trường để dự đoán giá tăng hay giảm sau 24 giờ và trả về xác suất tăng. Dữ liệu huấn luyện bao gồm cả giai đoạn hiện tại, nên đây là ước tính trong mẫu, không phải tỷ lệ thắng ngoài mẫu.
avg_up_return /
avg_down_return
Lợi nhuận trung bình của mọi thời điểm "tăng / giảm sau 24 giờ" trong 365 ngày gần nhất, không phân theo mức Tâm lý thị trường.
exp_valueup_prob × avg_up_return + (1 − up_prob) × avg_down_return, là số thập phân, không phải phần trăm.
is_data_sufficientDữ liệu của coin có bắt đầu từ hơn 365 ngày trước hay không, không phải "mức giá trị này có đủ mẫu hay không".
Hãy nhớ: Tâm lý thị trường là dữ liệu tham khảo, không phải tín hiệu mua/bán. Nó chỉ gồm Binance, đo chênh lệch bằng USDT chứ không phải phần trăm, "cao" hay "thấp" chỉ so với 30 ngày gần nhất, và stat là ước tính trong mẫu. Mọi ngưỡng đều phải kiểm chứng bằng backtest của chính bạn.