Aprenda a ler o valor, evite os dois erros de leitura mais comuns e depois leve-o para uma estratégia e faça a varredura dos seus próprios limiares.
Os traders de futuros parecem muito otimistas. Isso quer dizer que você deve correr atrás da compra? O Sentimento do mercado só diz quanto mais otimistas que o normal eles estão nesta moeda, não quão otimistas estão em termos absolutos. É aí que está o erro de leitura mais comum.
O Sentimento do mercado (Market Sentiment, MS) é um indicador de sentimento próprio da Blave. Ele mede se os traders de futuros tendem ao otimismo ou ao pessimismo, em comparação com o nível normal da própria moeda.
O valor não tem limites: perto de 0 é o nível normal, e quanto maior o valor absoluto, mais incomum. Acima de ±2 é raro e acima de ±3, extremo, na mesma escala para todas as moedas; faça você mesmo a varredura dos limiares com um backtest. Os selos de status do Estúdio de dados usam estes limiares:
| Valor | Selo no Estúdio de dados | Significado |
|---|---|---|
| ≥ +3 | Otimismo excessivo | Muito mais otimistas que o normal, um valor extremo |
| +2 ~ +3 | Muito otimista | Claramente mais otimistas que o normal |
| +0.5 ~ +2 | Otimista | Mais otimistas que o normal |
| −0.5 ~ +0.5 | Neutro | Mais ou menos como o normal |
| ≤ −0.5 | Pessimista / Muito pessimista / Pessimismo excessivo | Simétrico ao lado positivo, com limiares em −0.5, −2 e −3: mais pessimistas que o normal |
A distribuição real é assimétrica: a cauda superior é mais profunda que a inferior. Estes são os quantis medidos pela Blave com candles de 1 hora, de 2024-09-15 a 2026-09-14, um valor por hora (n = 17,520):
| Moeda | p1 | p50 | p99 | Tempo acima de 0 |
|---|---|---|---|---|
| BTC | −2.84 | +0.03 | +4.00 | 51.0% |
| ETH | −2.98 | +0.18 | +3.64 | 55.1% |
| SOL | −2.59 | +0.13 | +3.79 | 54.1% |
| DOGE | −2.04 | +0.34 | +4.02 | 60.3% |
As quatro moedas passam mais da metade do tempo acima de 0, DOGE até 60.3%; o p99 fica acima de +3.6 em todas, enquanto o p1 só chega a −2.0 a −3.0. Não use o mesmo valor absoluto para os limiares de compra e de venda, e recalcule ao trocar de moeda.
O Sentimento do mercado compara cada moeda com o próprio nível normal. Numa moeda que há muito tempo tende ao otimismo, o otimismo é o normal e o valor volta para perto de 0. Esse 0 significa "mais ou menos como o normal", não "ninguém está comprado nem vendido".
O contrário também acontece: quando uma moeda passa de muito otimista para otimista comum, o valor pode ficar negativo mesmo com os traders ainda tendendo à alta. O mesmo +2 em moedas ou períodos diferentes também pode refletir sentimentos reais bem diferentes.
O Sentimento do mercado descreve quão incomum está o sentimento agora; não é uma previsão de preço. Depois de um otimismo extremo o preço pode continuar subindo ou reverter, e a Blave não verificou qual dos dois acontece mais.
Depois de uma alta ou queda forte do preço em pouco tempo, o valor também tende a ficar alto ou baixo. Parte dessa leitura incomum vem então do próprio preço, então não use isso sozinho como motivo de entrada.
Hoje nenhuma estratégia oficial usa o Sentimento do mercado, então os três usos abaixo são esboços sem backtest. O ±0.5 e o 3 do código pegam emprestados os limiares dos selos do Estúdio de dados como ponto de partida; não vieram de uma varredura de parâmetros. Para fazer a varredura, veja Como varrer limiares.
A versão mais direta: fique comprado quando o Sentimento do mercado passar de um limiar de entrada e zere quando cair abaixo de um limiar de saída. A folga entre os dois evita que a estratégia entre e saia sem parar quando o valor oscila em torno de um único nível.
ENTRY_TH = 0.5 # esboço: limiar do selo Otimista
EXIT_TH = -0.5 # esboço: limiar do selo Pessimista
def compute_signals(df, entry_th=ENTRY_TH, exit_th=EXIT_TH):
# df['MS'] = valor do Sentimento do mercado da moeda
signal = pd.Series(np.nan, index=df.index)
signal[df['MS'] > entry_th] = 1.0 # mais otimistas que o normal -> comprar
signal[df['MS'] < exit_th] = 0.0 # mais pessimistas que o normal -> ficar de fora
return signalO Sentimento do mercado muda devagar e não reage a movimentos de preço de poucos minutos. Ele não tem backtest: faça você mesmo a varredura e a verificação do limiar e da direção (a favor da tendência ou contrária).
Um valor de ±3 significa que o sentimento já está muito extremo. Um uso conservador é não tratá-lo como sinal de entrada, mas somá-lo às condições de entrada de uma estratégia existente e não abrir posições novas enquanto estiver extremo:
# esboço: sem entrada enquanto |MS| >= 3 (leitura excessiva)
too_hot = df['MS'].abs() >= 3
entry = compute_entry(df) & ~too_hotNão é um sinal de reversão e não tem backtest: a Blave não verificou que o preço reverte depois de um ±3, nem que evitar valores extremos melhora o desempenho. ±3 é relativo ao nível normal da moeda; numa moeda que costuma ser muito calma, uma variação pequena pode chegar a ±3. Troque compute_entry pela condição de entrada da sua estratégia.
O Sentimento do mercado muda devagar, então serve como filtro de fundo: aceite os sinais de compra de um indicador de janela curta (como a Intensidade taker) só enquanto ele estiver acima de 0, e fique de fora quando o Sentimento do mercado voltar para baixo de 0. Abaixo está um esboço da estrutura; troque compute_fast_entry pela sua própria condição:
ms = fetch_market_sentiment(SYMBOL, INTERVAL, START, END, hdrs)
df['MS'] = ms['alpha']
regime_long = df['MS'] > 0 # esboço: comprado só com mais otimismo que o normal
fast_entry = compute_fast_entry(df) # ex.: uma condição de Intensidade taker de janela curta
signal = pd.Series(np.nan, index=df.index)
signal[regime_long & fast_entry] = 1.0
signal[~regime_long] = 0.0Esta combinação não tem backtest e o limiar de 0 é só ilustrativo. Faça a varredura de parâmetros e confira o desempenho depois das taxas antes de usar.
O Sentimento do mercado tem uma única configuração: o intervalo dos candles (period), entre 5min, 15min, 1h, 4h, 8h e 1d, com 5 minutos como mínimo. Ele não tem um parâmetro de janela de tempo como o do Caçador de baleias; o intervalo só define a frequência com que um valor é tomado e não faz o valor mudar mais rápido, então em 5min você continua vendo um sentimento que muda devagar.
| Intervalo | Faixa padrão no Estúdio de dados | Observações |
|---|---|---|
5min / 15min | 5min: 3 dias; 15min: 7 dias | O traçado mais denso, mas o valor em si muda devagar; não serve para operar no curto prazo |
1h / 4h | 1h: 14 dias; 4h: 30 dias | Para estratégias que checam a cada poucas horas |
8h / 1d | 8h: 60 dias; 1d: 180 dias | Para ler a tendência do sentimento ao longo de um período maior |
Escolha o intervalo pela frequência com que sua estratégia verifica; não espere que um intervalo curto capte movimentos de curto prazo. Os dados começam em 2020-01-01 (ou na data de listagem, para moedas listadas depois). Quando uma moeda recém-listada começa a ter dados, o nível normal dela ainda não se formou, então os primeiros valores são menos confiáveis.
O ±0.5, o 3 e o 0 acima são só pontos de partida. O mais sólido é listar uma fileira de valores candidatos para o limiar de entrada e outra para o de saída, fazer backtest de cada combinação e escolher uma região onde todos os resultados sejam razoáveis, não a melhor célula.
results = []
for entry_th in [0.5, 1.0, 1.5, 2.0, 2.5]:
for exit_th in [-1.0, -0.5, 0.0]:
signal = compute_signals(df, entry_th, exit_th)
results.append((entry_th, exit_th, backtest(signal))) # troque backtest pela sua própria função de backtest; compare cada combinação depois das taxasFaça a varredura dos limiares separadamente para cada moeda e cada intervalo de candles; não reaproveite valores de outra configuração. Para entender por que escolher uma região plana e não o ponto mais alto, veja Evitando overfitting.
| Página | O que mostra |
|---|---|
| Visão geral | Um medidor semicircular do sentimento geral e dois rankings, otimistas e pessimistas, com colunas de moeda, variação em 24 horas, índice e status. |
| Setores | Ranking do Sentimento do mercado por setor. |
| Histórico | Barras do Sentimento do mercado de uma moeda sobre o preço, com intervalos de 5min a 1d e o campo stat. Para usuários sem Pro, os últimos 7 dias aparecem com atraso. |
São ideias de combinação, não resultados verificados:
| Combinação | Para quê |
|---|---|
| MS + Caçador de baleias | Quando o sentimento sobe, veja no Caçador de baleias se os contratos em aberto aumentam de forma incomum ao mesmo tempo, para avaliar se há posições novas por trás do otimismo. |
| MS + Intensidade taker | O Sentimento do mercado reage devagar; use a Intensidade taker para ver as compras e vendas agressivas numa janela curta e cobrir os movimentos de curto prazo que ele não vê. |
O endpoint da API é GET /market_sentiment/get_alpha, com symbol, period e datas de início e fim (start_date, end_date); no Blave Agent a função é fetch_market_sentiment. Em symbol vai o símbolo do perpétuo em USDT (por exemplo BTCUSDT). Só retorna candles fechados, com timestamp, alpha e stat e sem preço. Sem data de início, você recebe os últimos 365 dias, e intervalos maiores que 365 dias são cortados.
O objeto stat descreve o valor mais recente:
| Campo | Significado |
|---|---|
up_prob | A probabilidade, estimada pelo modelo, de o preço estar em alta 24 horas depois. É uma estimativa, não uma taxa de acerto garantida. |
avg_up_return /avg_down_return | A alta média quando o preço subiu 24 horas depois e a queda média quando caiu, sem distinguir o nível do Sentimento do mercado. |
exp_value | up_prob × avg_up_return + (1 − up_prob) × avg_down_return, em decimal, não em porcentagem. |
is_data_sufficient | Se há histórico suficiente; com false, use estes números só como referência. |
stat é uma estimativa, não uma taxa de acerto. Valide qualquer limiar com seu próprio backtest.