Contexto da Estratégia
No início deste ano, uma notícia sobre alguém que ganhou uma fortuna da noite para o dia no Polymarket se espalhou pela comunidade. Curioso, fui procurar a estrutura de negociação específica e descobri que era tudo clickbait, sem uma linha de código sequer. Sem alternativa, tive que fazer por conta própria.
No começo, estava realmente sem rumo. O Polymarket é a maior plataforma de mercado de previsão descentralizada atualmente, com mais de 60 mil ativos listados, cobrindo quase todos os eventos previsíveis, como política, esportes, macroeconomia, etc. Cada ativo é essencialmente um contrato de opção binária — se o resultado ocorrer, o preço converge para 1; caso contrário, vai a zero. Para ganhar dinheiro, nada melhor que informações privilegiadas. Mas uma pessoa comum não sabe quantos tweets o Elon Musk postará na próxima semana, não sabe se o Fed cortará juros na próxima reunião, e não tem tempo nem energia para monitorar o mercado, analisar cenários e tomar decisões.
Então pensei: será que podemos mudar de perspectiva? Em vez de perseguir informações, persiga o capital. Quem tem vantagem informacional se posiciona com antecedência, e a ação de compra inevitavelmente deixa vestígios no preço e no volume. Mesmo sem saber das "informações privilegiadas", é possível inferir se alguém está acumulando posições silenciosamente observando o comportamento do capital. Seguindo essa linha de raciocínio, montei um sistema de negociação analítico multiagente, conectando a identificação de sinais em gráficos de velas, verificação de sentimento do mercado, julgamento por IA e execução automática de ordens com gestão de risco em um pipeline completo.
Arquitetura do Sistema
Todo o sistema opera sobre o workflow do inventor, com duas vias de execução paralelas: a linha principal e a linha secundária, totalmente desacopladas e sem bloqueio mútuo.
| Via de Execução | Frequência de Gatilho | Módulos Responsáveis | Tarefa Principal |
|---|---|---|---|
| Linha Principal (Trading) | A cada 10 minutos | Filtrar ativos → Processamento em loop → Agente de IA → Execução de trades | Encontrar oportunidades, abrir posições |
| Linha Secundária (Trading) | A cada 30 segundos | Stop loss / Take profit | Monitoramento de posições, stop loss móvel, resgate no vencimento |
A linha principal é responsável por "encontrar oportunidades e abrir posições". Cada ciclo de execução contém quatro estágios sequenciais: triagem inicial → detecção de anomalias em candles → busca de notícias → análise multiagente por IA, culminando na emissão de um sinal de compra e entrada na execução da ordem. A linha secundária cuida apenas das "posições existentes", operando continuamente em ciclos de 30 segundos, independentemente de a linha principal estar ou não ocupada com alguma tarefa.
Esse design de separação resolve um problema prático: as variações de preço nos mercados de previsão são contínuas, mas a análise de seleção de ativos é pesada em termos de computação e alta latência. Se o monitoramento de stop loss fosse colocado na linha principal, atrasos na resposta de stop loss seriam graves sempre que a análise da IA fosse lenta. A independência de agendamento é uma compensação de engenharia necessária.
Detalhamento dos Módulos
Triagem Inicial: Eliminar Ativos "Lixo" Primeiro
Não é viável analisar 60 mil ativos um a um. Portanto, a primeira barreira é uma filtragem puramente baseada em regras, com um único objetivo: eliminar rapidamente os ativos que claramente não merecem atenção, reservando os recursos computacionais subsequentes para aqueles com valor real.
Os critérios de filtragem incluem: liquidez mínima (muito baixa significa dificuldade de compra e venda), volume de negociação mínimo em 24 horas (ativos quase sem negociação têm baixo valor de referência), spread máximo de compra e venda (spread alto implica alto custo de slippage), limite máximo de concorrência, e uma faixa de preço — focando apenas em ativos cuja probabilidade implícita de mercado está entre 5% e 50%. Preços muito altos já estão totalmente precificados, com espaço de alta limitado; preços muito baixos têm credibilidade duvidosa, aproximando-se mais de uma loteria do que de uma oportunidade de arbitragem.
Após a filtragem, um mesmo evento geralmente tem direções "Sim" e "Não" listadas simultaneamente. A estratégia mantém apenas aquela com o preço mais baixo, pois a elasticidade das odds no lado de baixo preço é maior, oferecendo retornos potenciais mais altos.
javascript
let truePrice = parseFloat(outcomePrices[outcomeIndex] || 0)
if (truePrice < CONFIG.MIN_TRUE_PRICE || truePrice > CONFIG.MAX_TRUE_PRICE) continue
let isActive = (
info.active === true && info.approved === true &&
info.closed === false && info.archived === false &&
info.acceptingOrders === true && info.pendingDeployment === false
)
if (!isActive) continue
let spreadPct = (ask - bid) / ask
if (spreadPct > CONFIG.MAX_SPREAD_PCT) continue
// Para o mesmo evento, manter apenas a direção de menor preço
if (!marketMap[baseSymbol]) {
marketMap[baseSymbol] = entry
} else if (truePrice < marketMap[baseSymbol].price) {
marketMap[baseSymbol] = entry
}
Todos os limites de filtragem são expostos como parâmetros externos através das variáveis $vars, permitindo ajustes livres de acordo com sua própria tolerância ao risco e tamanho de capital, sem necessidade de modificar o código.
Detecção de Anomalias em Candles: Encontrar Vestígios Deixados pelo Capital
Após a triagem grosseira, para cada ativo aprovado, são baixadas as últimas 240 velas de 60 minutos, e cinco tipos de detecção de anomalias são executados. Esta é a camada de sinal central da estratégia e a diferença mais fundamental entre todo o sistema e "simplesmente jogar o evento para a IA analisar" — não tentamos adivinhar o resultado do evento; procuramos comportamento do capital.
Subida Lenta: Aumento total superior a 5% nas últimas 120 velas, mas com ganho máximo individual inferior a 1,5%. Essa característica descreve uma postura de acumulação onde o capital deliberadamente controla o ritmo para evitar chamar a atenção.
Crescimento Linear do Volume: Regressão linear na sequência de volume das últimas 60 velas, com inclinação positiva e R² superior a 0,5, indicando que o volume está aumentando de forma contínua e estável, não em pulsos aleatórios. O R² é crucial, pois filtra o ruído de "um único candle com volume explosivo, o resto silencioso".
Estreitamento das Correções: Estatística da profundidade máxima de cada correção após o pico histórico. Se a correção média recente for inferior a 60% da correção inicial, isso indica que a pressão de venda está diminuindo, os ativos estão se estabilizando e alguém está absorvendo as ordens. Durante cada correção, o preço mínimo é continuamente monitorado, usando a amplitude total da correção como base de cálculo.
Rompimento de Congestionamento: Desvio entre MA60 e MA120 inferior a 2% (estado de congestão), enquanto o preço atual já ultrapassou a MA60 em 3%, sinalizando um rompimento de uma resistência anterior.
Aumento Súbito do Volume: Volume médio das últimas 5 velas excede em 2,5 vezes o volume de referência das últimas 60 velas, indicando aceleração da entrada de capital.
javascript
function linearRegression(values) {
let n = values.length
let sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0
for (let i = 0; i < n; i++) {
sumX += i; sumY += values[i]
sumXY += i * values[i]; sumX2 += i * i
}
let slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX)
let intercept = (sumY - slope * sumX) / n
let meanY = sumY / n
let ssTot = 0, ssRes = 0
for (let i = 0; i < n; i++) {
ssTot += Math.pow(values[i] - meanY, 2)
ssRes += Math.pow(values[i] - (slope * i + intercept), 2)
}
let r2 = ssTot === 0 ? 0 : 1 - ssRes / ssTot
return { slope, intercept, r2 }
}
function detectAnomaly(closes, volumes) {
if (closes.length < 60) return null
let anomalies = [], score = 0
let slice120 = closes.slice(-Math.min(120, closes.length))
// ── Anomalia 1: Subida lenta ──────────────────────────────────────
let totalChange = (slice120[slice120.length - 1] - slice120[0]) / slice120[0]
let maxSingle = 0
for (let i = 1; i < slice120.length; i++) {
let change = Math.abs(slice120[i] - slice120[i - 1]) / slice120[i - 1]
if (change > maxSingle) maxSingle = change
}
if (totalChange > 0.05 && maxSingle < 0.015) {
score++
anomalies.push(`Subida lenta: alta total de ${(totalChange * 100).toFixed(1)}%, máxima de um único candle ${(maxSingle * 100).toFixed(2)}%`)
}
// ── Anomalia 2: Crescimento linear do volume ─────────────────────────────────
let volSlice = volumes.slice(-60)
let volReg = linearRegression(volSlice)
if (volReg.slope > 0 && volReg.r2 > 0.5) {
score++
anomalies.push(`Volume com crescimento linear: inclinação ${volReg.slope.toFixed(4)}, R² ${volReg.r2.toFixed(2)}`)
}
// ── Anomalia 3: Correções mais estreitas (rastreia mínimos de cada correção, calcula profundidade total) ────
let pullbacks = [], localHigh = closes[0]
let inPullback = false, pullbackLow = closes[0]
for (let i = 1; i < slice120.length; i++) {
if (closes[i] > localHigh) {
if (inPullback) {
pullbacks.push((localHigh - pullbackLow) / localHigh)
inPullback = false
}
localHigh = closes[i]
} else if (closes[i] < localHigh * 0.99) {
if (!inPullback) { inPullback = true; pullbackLow = closes[i] }
else if (closes[i] < pullbackLow) { pullbackLow = closes[i] }
}
}
if (pullbacks.length >= 3) {
let first = pullbacks.slice(0, Math.floor(pullbacks.length / 2))
let last = pullbacks.slice(Math.floor(pullbacks.length / 2))
let firstAvg = first.reduce((a, b) => a + b, 0) / first.length
let lastAvg = last.reduce((a, b) => a + b, 0) / last.length
if (lastAvg < firstAvg * 0.6) {
score++
anomalies.push(`Correções mais estreitas: início ${(firstAvg * 100).toFixed(2)}%, recente ${(lastAvg * 100).toFixed(2)}%`)
}
}
// ── Anomalia 4: Rompimento de lateralização ───────────────────────────────────────
let ma60 = closes.slice(-60).reduce((a, b) => a + b, 0) / 60
let ma120 = closes.length >= 120
? closes.slice(-120).reduce((a, b) => a + b, 0) / 120
: ma60
let currentPrice = closes[closes.length - 1]
if (Math.abs(ma60 - ma120) / ma120 < 0.02 && currentPrice > ma60 * 1.03) {
score++
anomalies.push(`Rompimento de lateralização: MA60=${ma60.toFixed(3)}, MA120=${ma120.toFixed(3)}, atual=${currentPrice.toFixed(3)}`)
}
// ── Anomalia 5: Pico de volume ─────────────────────────────────────
let recentVol = volumes.slice(-5).reduce((a, b) => a + b, 0) / 5
let baseVol = volumes.slice(-65, -5).reduce((a, b) => a + b, 0) / 60
if (baseVol > 0 && recentVol > baseVol * 2.5) {
score++
anomalies.push(`Pico de volume: média dos últimos 5 candles é ${(recentVol / baseVol).toFixed(1)}x a base`)
}
return { score, anomalies }
}
Cada anomalia detectada adiciona um ponto, com pontuação máxima de 5. Somente com pontuação total igual ou superior a 2 o ativo avança para a próxima etapa. Um único sinal pode ser ruído aleatório; apenas a sobreposição de indícios indica comportamento de capital com credibilidade — esta é a hipótese central de toda a lógica de detecção nos candles.
Pesquisa de notícias: encontrar uma explicação fundamental para a anomalia
Os sinais nos candles são evidências de que "há capital se movendo", mas por que o capital está se movendo e se esse movimento tem fundamento precisa ser verificado pelo lado informacional. Este passo consiste em pesquisar notícias para cada ativo com anomalia nos candles, verificando se há eventos correspondentes que sustentem o movimento.
Aqui utilizamos a API Brave Search, que oferece 2000 consultas gratuitas por mês — suficientes para o ritmo de uma rodada principal a cada 10 minutos. As palavras‑chave de pesquisa são extraídas do símbolo, removendo sufixos direcionais e separadores, e então convertidas em descrições legíveis dos eventos.
javascript
const q = item.symbol
.replace("_USDC.No", "")
.replace("_USDC.Yes", "")
.replace(/-/g, "+")
const rawResponse = HttpQuery(
"https://api.search.brave.com/res/v1/web/search?q=" + q,
{ method: "GET", headers: { "X-Subscription-Token": CONFIG.BRAVE_API_KEY } }
)
// Iterar sobre todas as seções retornadas (web, notícias, etc.), extraindo campos estruturados de forma uniforme
Object.keys(data).forEach(key => {
const section = data[key]
if (section && section.results && Array.isArray(section.results)) {
section.results.forEach(r => {
news.push({ type: key, title: r.title, description: r.description, age: r.age })
})
}
})
As notícias encontradas são agrupadas com os dados dos candles e enviadas para a próxima etapa de análise de IA — duas linhas de verificação simultâneas, muito mais confiáveis do que analisar apenas um lado.
Análise Multifunção da IA: Quatro Perspectivas para Evitar o Autoconvencimento
Com os dados preparados, entra-se no nó de análise da IA, onde o modelo escolhe conforme suas necessidades. O prompt define quatro papéis independentes. Esta é a decisão de design mais central de todo o sistema e merece ser explicada separadamente.
Se uma única IA analisasse simultaneamente os candles e as notícias, ela tenderia a correlacioná-los, chegando a uma conclusão aparentemente razoável, mas carente de verificação independente — usando o sinal de capital para endossar as notícias e as notícias para endossar o sinal de capital, resultando numa autorreforço do tipo "acho que pode comprar". O isolamento de papéis força a independência das fontes de informação: cada papel analisa apenas seus próprios dados e emite suas próprias conclusões; o papel de decisão final vê apenas as conclusões, não o processo.
Papel Um: Analista de Capital (Candles) — ignora notícias, analisa apenas anomalias de preço e volume para determinar se há capital real comprando de forma consistente, emitindo a intensidade do sinal de capital (Forte/Médio/Base).
Papel Dois: Analista de Opinião Pública (Notícias) — ignora candles, apenas avalia o cenário informacional para determinar se há eventos positivos ainda não precificados pelo mercado, emitindo o nível de suporte das notícias (Forte/Fraco/Nenhum).
Papel Três: Analista de Avaliação de Preço — combina as conclusões dos dois primeiros papéis, estima o intervalo de probabilidade real do evento, compara com o preço de mercado atual e avalia se está Subvalorizado/Razoável/Sobrevalorizado. Este papel incorpora uma regra de peso baseada no vencimento: mais de 7 dias para o vencimento, estimativa normal; 3 dias ou menos e preço de mercado acima de 0,15, o intervalo de probabilidade é forçado a ser estreitado, proibindo a classificação "Fortemente Subvalorizado". A razão é direta — próximo ao vencimento, os participantes do mercado detêm informações mais atualizadas do que os dados de treinamento da IA; neste ponto, o julgamento da IA deve ceder ao preço de mercado.
Papel Quatro: Analista de Decisão Final — consolida as conclusões dos três papéis anteriores de acordo com uma matriz de decisão e emite a ação final. A lógica da matriz é: o sinal de capital é o pré-requisito, as notícias são a validação, e ambos determinam a confiança; mas, independentemente do nível de confiança, se a avaliação de preço não atingir "Subvalorizado", nenhuma ação é tomada.
A validação das notícias aqui não se trata de perseguir informações, mas de determinar se o comportamento do capital já possui suporte fundamental. Quando o capital interno está acumulando posições, a informação não aparece nas notícias públicas. No entanto, um sinal de capital combinado com suporte de notícias indica que a informação está na fase intermediária de disseminação, com o mercado ainda apresentando espaço para atraso na precificação — esta é a janela que a estratégia realmente busca capturar.
| Sinal de Capital \ Suporte de Notícias | Validação Forte | Validação Fraca | Sem Validação |
|---|---|---|---|
| Forte (score 4~5) | Comprar, Confiança=Alta | Comprar, Confiança=Média | Sem Ação |
| Médio (score 3) | Comprar, Confiança=Média | Observar | Sem Ação |
| Base (score 2) | Observar | Sem Ação | Sem Ação |
O formato de saída da IA é JSON estrito, contendo as conclusões de cada papel, o intervalo de probabilidade real, a avaliação de preço, a decisão final, a confiança e uma lista de riscos, pronto para ser consumido pelo nó de execução downstream.
Execução da Negociação: Compre Apenas o Melhor
Após a IA pontuar cada ativo do lote individualmente, a camada de execução não coloca ordens de compra para todos os sinais — o sistema seleciona apenas o ativo com a pontuação mais alta. A regra de ordenação é: Confiança (Alta > Média > Baixa) → Avaliação de Preço (Fortemente Subvalorizado > Subvalorizado) → Largura do Intervalo de Probabilidade Real (quanto mais estreito, mais certeza).
javascript
const buySignals = signals.filter(s => s.signal === 'buy')
bestSignal = buySignals.sort((a, b) => {
const confDiff = (confidenceRank[b.confidence] || 0) - (confidenceRank[a.confidence] || 0)
if (confDiff !== 0) return confDiff
const assessDiff = (assessmentRank[b.priceAssessment] || 0) - (assessmentRank[a.priceAssessment] || 0)
if (assessDiff !== 0) return assessDiff
// Quanto mais estreito o intervalo, mais certeza; priorizar o mais estreito
const aWidth = (a.trueProb.max || 0) - (a.trueProb.min || 0)
const bWidth = (b.trueProb.max || 0) - (b.trueProb.min || 0)
return aWidth - bWidth
})[0]
Selecionado o ativo, obtém-se o preço de Ask do livro de ofertas em tempo real, confirma-se que o saldo é suficiente e a ordem é submetida como ordem limitada. Após o envio, o status é consultado periodicamente, com um tempo máximo de espera de 30 segundos. Se houver timeout, a ordem é cancelada para evitar acúmulo de ordens pendentes. Se o preço Ask da rodada multiplicado pela parcela configurada for inferior a 1 USDC (pedido mínimo), o sistema automaticamente arredonda para cima com ceil(1/askPrice) para a parcela mínima executável.
Módulo de Stop Loss: Stop Móvel + Proteção Absoluta
A linha secundária é executada a cada 30 segundos, com lógica em duas etapas: primeiro, processar resgates no vencimento; depois, verificar o stop móvel para posições ativas.
A Polymarket tem um mecanismo especial — após o vencimento do contrato, os fundos não retornam automaticamente à conta; é necessário chamar o redeem ativamente. A estratégia, no início de cada rodada secundária, varre uniformemente as posições resgatáveis e libera os fundos em lote, evitando que o capital fique bloqueado por longos períodos.
O núcleo do stop móvel é um design de linha dupla: a linha de stop móvel (preço Bid histórico máximo - queda fixa LOSS_AMOUNT) e a linha de proteção absoluta (preço de entrada × 50%). O preço de stop real efetivo é o maior dos dois valores.
javascript
function calcStopPrice(entryPrice, maxPrice) {
const trailingStopPrice = maxPrice - CONFIG.LOSS_AMOUNT
const absoluteStopPrice = entryPrice * CONFIG.FALLBACK_STOP_RATIO // Fixo 0.50
const usingFallback = trailingStopPrice < absoluteStopPrice
const effectiveStopPrice = usingFallback ? absoluteStopPrice : trailingStopPrice
return { effectiveStopPrice, trailingStopPrice, absoluteStopPrice, usingFallback }
}
Este design de linha dupla corresponde a dois cenários típicos de posição: na fase lucrativa, a linha de stop móvel sobe com o preço, travando os lucros não realizados; quando a posição entra em prejuízo imediatamente, a linha de stop móvel pode cair para valores negativos ou próximos de zero. Nesse caso, a linha de proteção absoluta (preço de entrada × 50%) assume o controle, evitando que a posição despenque até zero antes de sair. As duas linhas têm funções distintas e são mutuamente indispensáveis.
Após a ativação do stop, é executada uma venda a mercado, o cache do preço máximo histórico daquele ativo é limpo e o sistema aguarda o próximo sinal de abertura de posição. O painel exibe em tempo real o espaço restante de cada posição até a linha de stop, com cores indicando o nível de alerta para facilitar a revisão manual.
Decisões Chave de Design
Por que usar múltiplos papéis em vez de um prompt único? Esta questão foi parcialmente abordada na seção de análise, mas merece ser detalhada. O problema de um prompt único não é apenas o "autoconvencimento"; há um risco mais sutil: quando a IA processa simultaneamente dados de candles e textos de notícias, ela tende a usar os últimos para explicar os primeiros, "racionalizando" a anomalia dos candles como uma consequência inevitável das notícias, em vez de tratar ambos como sinais independentes. O isolamento de papéis força a introdução de duas cadeias de informação independentes. Quando ambas as cadeias apontam na mesma direção na consolidação final, a credibilidade é genuína.
Por que comprar apenas o melhor em cada rodada, em vez de diversificar? A diversificação tem suporte teórico sólido em finanças tradicionais, mas a lógica não se aplica totalmente aos mercados de previsão. Os resultados dos ativos em mercados de previsão são binários, e o risco de perda total é real. Se três ativos de confiança média forem mantidos simultaneamente, e dois deles forem a zero enquanto um sobe, o retorno geral pode nem recuperar o capital. A escolha da estratégia atual é: é melhor concentrar a aposta na precisão do que usar a quantidade para diluir sinais de qualidade mista. Esta troca pode não ser a ideal, mas é logicamente consistente.
Por que a regra de peso baseada no vencimento deve ser uma restrição rígida? Próximo ao vencimento, o preço de mercado reflete as expectativas em tempo real dos participantes, muitos dos quais possuem informações mais atualizadas do que os dados de treinamento da IA. Se a IA ainda classificar o preço como "Fortemente Subvalorizado, deve comprar", é provável que sua informação já esteja desatualizada. Tornar esta regra uma restrição, e não uma sugestão, deve-se ao fato de que não é realista esperar que a IA identifique sozinha que "minha informação já não é mais atual". É necessária uma intervenção externa forçada.
Observações de Mercado em Tempo Real
A partir dos registros de operação real, a taxa de funnel da estratégia é bastante íngreme. Em uma execução, dos 141 ativos que passaram pela triagem inicial, restaram apenas 3 após a detecção de anomalias nos candles K. No final, apenas 1 atendeu simultaneamente aos três critérios — sinal de fluxo de capital, suporte de notícias e avaliação de preço —, gerando uma ordem de compra. Os outros dois foram ignorados, um por ter a avaliação de preço considerada "razoável" e o outro por pontuação composta insuficiente. Isso indica que a estratégia é geralmente conservadora, preferindo ficar sem posição a reduzir os critérios. Em períodos de mercado estável, sem eventos noticiosos relevantes, o sistema pode passar o dia inteiro sem gerar nenhum sinal de compra. Isso é uma escolha de design, não um bug.
Também houve casos em que um candle K anômalo mais tarde se mostrou um falso rompimento: o capital entrou brevemente e depois saiu, com o stop móvel sendo acionado para a saída. A análise de notícias também contém ruído; a própria cobertura de eventos relacionados pode ser defasada ou tendenciosa, e a IA sozinha não consegue identificar perfeitamente.
O painel exibe em tempo real o patrimônio da conta, o estado da posição (Bid/Ask atual, preço máximo, distância do recuo até o nível de stop, modo de stop) e os detalhes das decisões da IA, facilitando a revisão manual.
Conclusão
Para ser honesto, este sistema é mais um framework conceitual que pode ser executado do que uma máquina de imprimir dinheiro pronta para uso. A lógica central — rastreamento do comportamento do fluxo de capital, verificação dupla de sentimento de notícias e julgamento de IA com múltiplos papéis — tem certa razoabilidade em teoria, mas no mercado real a qualidade dos sinais é variada, o julgamento da IA também erra e o risco de convergência de preços perto do vencimento está sempre presente.
Há muitas áreas que podem ser aprimoradas: os ativos negociados podem ser focados ainda mais em setores que você conhece bem, os prompts da IA podem ser redesenhados de acordo com seu próprio estilo de negociação, os pesos e limites das cinco anomalias de candles K têm espaço para ajuste, e o coeficiente de stop-loss também merece ser iterado com base no desempenho real da posição. O código é totalmente open source, sinta-se à vontade para modificá-lo.
Aviso de Risco
Predizer ativos de mercado tem resultados binários, e a posição corre risco de valor zero. Sinais de anomalias em candles K e conclusões de análise de IA não constituem aconselhamento de investimento. Desempenho passado de sinais não representa ganhos futuros. A estratégia não foi validada em negociação real por um período longo, e a configuração de parâmetros afeta significativamente os resultados. Antes de usar esta estratégia em negociação real, compreenda completamente as regras da plataforma Polymarket, os mecanismos de expiração de contratos e os riscos de liquidez, e avalie por conta própria sua capacidade de suportar perdas de capital.
Código-fonte da estratégia: Polymarket Estratégia de Negociação com Análise Inteligente Multiagente
- 1




