Nada acontece: um bot que sempre compra “No” em mercados não esportivos do Polymarket
(github.com/sterlingcrispin)- Um bot assíncrono em Python que compra automaticamente apenas posições “No” nos mercados de sim/não não esportivos do Polymarket, fornecido para fins de entretenimento
- Distingue entre modo de negociação simulada e modo de negociação real; no modo real, é obrigatório configurar várias variáveis de ambiente e chaves privadas
- Por meio de uma interface de dashboard, monitora o estado e, quando o envio de ordens está ativado, salva o estado de recuperação em tempo real
- Inclui scripts de implantação no Heroku para automatizar a verificação do estado do app, consulta de logs, ativação do modo real e encerramento de processos
- Inclui ferramentas de teste e gerenciamento de dados, permitindo execução e validação seguras tanto em ambientes locais quanto na nuvem
Visão geral
- Nothing Ever Happens é um bot assíncrono baseado em Python que sempre compra a posição “No” em mercados de sim/não não esportivos na plataforma Polymarket
- É fornecido para fins de entretenimento e executado por conta e risco do usuário, sem garantias nem responsabilidade
- O repositório é composto pelos diretórios
bot/,scripts/etests/, contendo respectivamente lógica de negociação, scripts operacionais e código de teste
Estrutura de runtime
- O runtime varre mercados independentes e rastreia posições ao buscar itens “No” abaixo do teto de preço configurado
- Exibe o estado por meio do dashboard e, quando o envio de ordens está ativado, salva o estado de recuperação em tempo real
- O módulo de execução é
nothing_happense, no modo inativo, usa o PaperExchangeClient
Modelo de segurança
- Para enviar ordens reais, as três variáveis de ambiente abaixo precisam estar configuradas
BOT_MODE=liveLIVE_TRADING_ENABLED=trueDRY_RUN=false
- Se qualquer uma dessas condições estiver ausente, o sistema muda para o modo de negociação simulada
- No modo real, as variáveis de ambiente adicionais abaixo também são necessárias
PRIVATE_KEYFUNDER_ADDRESS(para tipos de assinatura 1 e 2)DATABASE_URLPOLYGON_RPC_URL(para aprovação e resgate da carteira proxy)
Instalação e configuração
- A instalação é feita com
pip install -r requirements.txte, depois, copiando o arquivo de configuração de exemplo para uso como configuração local config.jsoncontém configurações de runtime não sigilosas, enquanto.envcontém chaves secretas e flags de execução- As configurações de runtime ficam em
strategies.nothing_happens, e é possível apontar para outro arquivo de configuração com a variável de ambienteCONFIG_PATH
Execução local
- Em ambiente local, é possível executar com o comando
python -m bot.main - O dashboard faz bind em
$PORTou na variável de ambienteDASHBOARD_PORT
Fluxo de implantação no Heroku
- No ambiente Heroku, usa-se
HEROKU_APP_NAMEou passa-se explicitamente o nome do app como argumento - Scripts fornecidos:
alive.sh: verifica o estado do applogs.sh: consulta logslive_enabled.sh/live_disabled.sh: alterna o modo de negociação realkill.sh: encerra o processo
- Um procedimento típico de implantação é o seguinte
- Configurar as variáveis de ambiente (
BOT_MODE,DRY_RUN,LIVE_TRADING_ENABLED,PRIVATE_KEY,FUNDER_ADDRESS,POLYGON_RPC_URL,DATABASE_URL) git push heroku <branch>:mainheroku ps:scale web=1 worker=0
- Configurar as variáveis de ambiente (
- O processo
workerfoi projetado para falhar rapidamente caso seja executado sem intenção
Testes
- Os testes usam
pytestpara validação unitária e de regressão - Comando:
python -m pytest -q
Scripts incluídos
-
scripts/db_stats.py- Verifica a contagem de tabelas do banco de dados em tempo real e a atividade recente
-
scripts/export_db.py- Exporta tabelas a partir de
DATABASE_URLou de um app Heroku
- Exporta tabelas a partir de
-
scripts/wallet_history.py- Consulta posições, transações e saldo da carteira configurada
-
scripts/parse_logs.py- Converte logs JSON do Heroku para formato de terminal ou HTML
Gerenciamento do repositório
- Configurações locais, ledger, dados exportados, relatórios e artefatos de implantação são excluídos do git por padrão
- O repositório foi estruturado para separar claramente o ambiente operacional do ambiente local
1 comentários
Comentários do Hacker News
Olhando este tweet, está explicitamente dito que não promete lucro nem reembolso
Parece só um projeto feito por diversão, com código baseado em meme
Mais um experimento engraçado do que um golpe
Há uma estatística de que cerca de 73% dos mercados da Polymarket de fato terminam em “No”
Se você se interessa por análise de dados, vale dar uma olhada no dataset do Hugging Face
Por causa do viés otimista humano, o lado “Yes” pode até ficar supervalorizado, mas a Polymarket já é acompanhada por traders, então os preços tendem a se formar de maneira realista
Se fosse possível apostar em moedas em queda, seria interessante, mas esse mercado também acabaria sendo precificado de forma eficiente
É interessante que esse projeto seja voltado para mercados não esportivos
Também se diz que, em apostas esportivas, na maioria dos casos o lado “No” tem retorno melhor, porque “Yes” é mais interessante e atrai mais gente
No fim, a “aposta chata” pode ter mais chance de gerar retorno melhor no longo prazo
Parece que esse tipo de insight de economia comportamental acumulado em apostas esportivas também pode se aplicar a mercados não esportivos
No fim, surge um loop de feedback em que o preço volta ao lugar certo
Por isso, se você encontrar uma estratégia realmente lucrativa, o mais sensato é não abrir em open source e rodá-la em silêncio
A ideia de “aposte sempre em No” é divertida, mas ainda precisa ser validado o quanto isso realmente dá lucro
Na prática, a liquidez é baixa, e uma única perda pode apagar vários ganhos
Mercados esportivos, na verdade, são mais previsíveis graças ao momento de encerramento bem definido e ao grande volume negociado
Em vez de simplesmente colocar No em tudo, algo como apostar em No em itens relacionados no momento em que as notícias começam a sair talvez permita um retorno relativamente estável
Eu vejo isso como uma arbitragem da imaginação humana
As pessoas gostam de cenários estimulantes, mas a realidade na maior parte do tempo é entediante
Eu também ganhei dinheiro explorando esse padrão na crise financeira e na COVID
Hoje me preocupo com a bolha de IA, mas acho mais provável que ela esfrie aos poucos do que desabe de uma vez, então aumentei minha alocação em títulos e caixa
Há quem diga que apostar em “No” é praticamente o mesmo que apostar em “Yes” para todos os outros resultados
A documentação da Polymarket tem os cálculos relacionados
Esse tipo de estratégia parece pegar moedas na frente de um trem
Você repete pequenos lucros até que um único evento de cauda longa leva tudo embora
Há um estudo relacionado: Prediction Market Microstructure
(discussão anterior: link do HN)
Eu diria que isso já está precificado pelo mercado
Veja este tweet relacionado
Link de referência
No fim, a volatilidade realizada tende, com o tempo, a ficar abaixo da volatilidade implícita
Claro, quando estoura, a perda pode ser grande
Só porque “No” sai em 70% dos casos não significa que isso dá dinheiro
Isso é matemática ruim clássica. É o tipo de estratégia de “pegar moedas na frente de um rolo compressor”
Só que mercados ineficientes assim são pequenos e raros, então no fim talvez você “pegue moedas, mas só moedas”
Mesmo seguindo o critério de Kelly, se você apostar aleatoriamente, a tendência é o capital acabar se esgotando. É preciso fazer uma análise detalhada (DD) de cada mercado