YouMind
Iniciar sessão

Como transformar o Hermes em um analista financeiro de nível IB

867K
184
15
13
646

TL;DR

Este guia técnico detalha como configurar o agente Hermes para análises de nível de banco de investimento, com foco em arquitetura de prompts, matemática determinística e integração com fontes de dados financeiros como EDGAR e FRED.

Vou assumir que você já consegue fazer um LLM falar coisas inteligentes sobre uma ação. Qualquer um consegue. Esse não é o trabalho.

O trabalho é o arcabouço, a camada em torno do modelo que decide se seu analista é uma mesa em que você confia ou um gerador de números aleatórios com boa gramática. O modelo é a parte mais intercambiável de tudo.

gemchanger - inline image

Três partes:

  1. Como executá-lo corretamente
  2. Como educá-lo para se tornar uma máquina financeira (a verdadeira vantagem)
  3. Os repositórios e serviços que o estendem.

Leia a parte do meio duas vezes.

Não é um Conselho Financeiro. Faça Sua Própria Pesquisa. Meu próprio projeto - @coldvisionXYZ

PARTE 1: EXECUTE-O E ENTENDA O QUE VOCÊ ESTÁ EXECUTANDO

Uma linha. Ela provisiona python, node, git, tudo, em ~/.hermes/:

bash
1curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

Linux, macOS, WSL2, Android via Termux (detecção automática), Windows nativo (beta inicial, sem necessidade de WSL). Python 3.11+. Em seguida, hermes setup para o assistente, ou hermes model / hermes tools / hermes gateway setup em partes. Execute com hermes (CLI clássico) ou hermes --tui (recomendado).

A abstração do provedor é o superpoder silencioso

O mesmo runtime impulsiona APIs de chat-completions, Anthropic Messages, Codex Responses, um caminho de servidor de aplicativo Codex fora do processo e Bedrock.

Os formatos de chamada de ferramenta e peculiaridades do provedor são normalizados por adaptadores de transporte, de modo que, no nível do loop, a superfície do modelo parece idêntica, independentemente do que está por trás.

Isso significa que o failover do provedor é real, e trocar modelos é genuinamente sem código.

Consequência prática para seu bolso: você não executa um modelo.

Em auxiliary no config.yaml, cada tarefa secundária, execuções do curador, visão, embeddings, geração de títulos, pesquisa de sessão, o sumarizador de compressão, pode fixar seu próprio provedor, modelo, base_url e esforço de raciocínio.

Então, seu modelo de raciocínio caro nunca queima tokens resumindo um chat antigo ou nomeando uma sessão.

Também há smart_model_routing para enviar turnos difíceis para o modelo forte e todo o resto para um barato.

Configuração mais barata e sensata: Nous Portal (uma assinatura, 300+ modelos + o Tool Gateway para web/navegador/imagem/TTS) como principal, um modelo barato fixado para todo o trabalho auxiliar, Ollama/vLLM local como um fallback gratuito. Se for local, o Ollama padrão é um contexto de 4k e trunca silenciosamente, defina num_ctx para 64k+ ou o agente ficará estúpido e você culpará o modelo.

A coisa que você deve entender antes de tocar no config: o prompt tem formato de cache

Esta é a invariante que todo o sistema é construído para proteger, e se você não a entender, vai silenciosamente multiplicar sua conta por 10.

O Hermes compõe o prompt do sistema em três camadas:

  1. estável
  2. contexto
  3. volátil
gemchanger - inline image

A camada estável carrega a identidade (SOUL.md), orientação de ferramentas para apenas ferramentas habilitadas, o índice de habilidades, dicas de ambiente. O contexto é derivado do diretório de trabalho atual. A camada volátil muda a cada turno. A hierarquia é explícita no código por uma razão: validade do cache de prefixo do prompt. Os provedores armazenam em cache o prefixo do seu prompt e cobram pelos tokens em cache a uma fração do custo. Toda vez que a camada estável muda, você quebra esse cache e paga o valor integral por tudo.

Então, o Hermes trata a alteração do contexto como quase sagrada. Pelas próprias regras de engenharia do agente: a única vez que ele altera deliberadamente o contexto é durante a compressão. Comandos de barra que alteram o estado do prompt do sistema (instalar uma habilidade, ativar/desativar uma ferramenta) usam como padrão a invalidação adiada: a mudança entra em vigor na próxima sessão, com uma flag --now opcional para quando você realmente precisar dela ao vivo. /skills install --now é o padrão canônico de "Eu aceito a quebra de cache".

Por que você, como analista, deve se importar: toda habilidade que você ativa e toda ferramenta que você liga vive nessa camada estável e custa tokens de prefixo em cada chamada. Um agente inchado com 60 ferramentas habilitadas está pagando por todas as 60 descrições em cada turno para sempre. Conjuntos de ferramentas enxutos e habilidades sob demanda não são questão de organização, são o modelo de custo.

Compressão é linhagem, não truncamento

Quando o contexto se enche, agentes ingênuos descartam turnos antigos e ficam com amnésia.

O Hermes executa duas camadas de compressão independentes:

  1. uma rede de segurança de "higiene de sessão" do gateway que é acionada por volta de 85% do contexto em uma estimativa aproximada antes mesmo de o agente ser executado
  2. a real, o ContextCompressor no loop que é acionado por volta de 50% usando contagens de tokens precisas relatadas pela API.

Ele sumariza os turnos do meio em uma nova mensagem em vez de deletá-los, e as sessões rastreiam a linhagem pai-filho para cada divisão de compressão. O resumo se torna parte da transcrição; o original é preservado na linhagem.

gemchanger - inline image

Com perdas é aceitável, sem perdas estouraria a memória.

As sessões são infraestrutura, não apenas transcrições.

Elas carregam tags de origem e metadados de roteamento, e há uma ferramenta session_search voltada para o modelo, além de um índice FTS5 SQLite sobre cada turno passado. Seu agente pode lembrar "o que eu concluí sobre a COIN há três semanas" durante o raciocínio, não porque você colocou no contexto, mas porque ele pode consultar seu próprio histórico sob demanda.

Onde ele é executado

Seis backends de terminal:

  1. local
  2. Docker
  3. SSH
  4. Singularity
  5. Modal
  6. Daytona

Modal e Daytona são serverless, o ambiente hiberna quando ocioso e acorda sob demanda, custando quase nada entre as execuções.

Uma VPS de $5 ou uma caixa serverless em hibernação é o verdadeiro "$5". Conecte o gateway e o mesmo agente roda em 20+ plataformas (Telegram, Discord, Slack, Signal, …) com roteamento de sessão unificado, então você fala com ele do seu telefone enquanto ele trabalha na caixa na nuvem.

As sessões sobrevivem a reinicializações via SQLite no modo WAL com uma camada de repetição personalizada para contenção de gravação em vários processos, para que trabalhos cron e trabalho do gateway não se corrompam mutuamente.

PARTE 2 - EDUQUE-O PARA SE TORNAR UMA MÁQUINA FINANCEIRA

Um agente simples é um estagiário brilhante sem treinamento de domínio e sem disciplina de julgamento. Você literalmente o educa através de quatro canais: identidade, playbooks, memória e padrões. Então ele se autoeduca, e seu trabalho real se torna curadoria.

2a. Identidade - SOUL.md é o slot #1

SOUL.md é literalmente a primeira coisa no prompt do sistema, antes das ferramentas, antes das habilidades, antes de tudo. É a camada de persona e valores.

Para um analista financeiro, é aqui que você define o temperamento epistêmico, não enfeites de personalidade.

Coisas como: "Você é um analista do lado comprador cético. Você desconfia de números redondos e narrativas. Você nunca afirma um valor que não tenha extraído de uma ferramenta nesta sessão. Você prefere dizer 'dados insuficientes' a adivinhar. Você trata suas próprias conclusões anteriores como anteriores a serem atualizadas".

Isso fica na camada estável do cache e colore cada turno de graça. A maioria das pessoas deixa o SOUL.md padrão. Para um analista, são seus 1.500 caracteres mais alavancados.

2b. Playbooks - habilidades, e por que a descrição é a verdadeira engenharia

Uma habilidade é um SKILL.md, nome + descrição + procedimento, armazenado em ~/.hermes/skills/.

Apenas as descrições curtas ficam no índice de habilidades sempre carregado.

O procedimento completo é carregado sob demanda quando uma tarefa corresponde. Portanto, sua biblioteca de habilidades pode ser enorme sem inchar o prefixo.

O que significa que a descrição é onde a habilidade tem sucesso ou falha.

É um roteador. Se a descrição for vaga, o agente nunca carrega a habilidade quando deveria, ou a carrega quando não deveria. Escreva descrições como condições de gatilho, não resumos.

"Use quando o usuário nomear uma ação listada nos EUA e quiser uma leitura fundamental" é melhor do que "analisa ações."

Uma habilidade de analista real, observe os padrões da seção 2d incorporados diretamente no procedimento:

markdown
1---
2name: equity-snapshot
3description: Use quando o usuário nomear um ticker listado nos EUA e quiser uma leitura fundamental + de preço com flags de risco.
4---
5
6# Equity Snapshot
7
81. Resolver ticker -> CIK via o mapa company_tickers da SEC. NUNCA adivinhar um ticker.
92. Obter o último 10-K/10-Q (receita, dívida, FCF) via EDGAR. Registrar o número de accession.
103. NUNCA calcular índices você mesmo. Chamar a ferramenta calc para P/L, margens, YoY.
114. Verificar a receita em duas fontes. Se discordarem, RELATAR a lacuna, não escolher uma.
125. Saída: tese (2 linhas), 3 catalisadores, 3 riscos, leitura de valuation, confiança 0-1,
13 e "qual ponto de dados inverteria isso." Se os dados forem escassos, retornar "passar."

As habilidades suportam ativação/desativação por plataforma, ativação condicional baseada na disponibilidade da ferramenta e validação de pré-requisitos, para que uma habilidade possa declarar "disponível apenas se a ferramenta EDGAR estiver presente."

O formato é o padrão aberto agentskills.io, então o que você escreve é portável para outros agentes compatíveis.

2c. O ciclo de autoaperfeiçoamento e a manutenção

O agente escreve suas próprias habilidades.

Depois de resolver algo através de tentativa e erro (tipicamente uma tarefa com várias chamadas de ferramenta), ele salva a abordagem funcional como um SKILL.md em agent_created/.

A ferramenta de gerenciamento de habilidades tem seis ações, e a que você precisa conhecer é patch: uma correção direcionada, preferida em relação a reescritas completas porque é eficiente em tokens.

O agente literalmente refina seus próprios playbooks no local durante o uso.

Sem manutenção, as habilidades automáticas metastatizam.

Você acaba com dezenas de playbooks estreitos e sobrepostos queimando tokens de prefixo e poluindo o roteador.

gemchanger - inline image

O Curador cuida disso, e sua mecânica vale a pena conhecer. Ele não é um daemon cron, ele é executado em uma verificação de inatividade: aproximadamente quando 7 dias se passaram desde sua última execução e o agente está ocioso por 2+ horas, uma bifurcação em segundo plano é iniciada com seu próprio cache de prompt, nunca tocando na conversa ativa, e executa um loop de revisão LLM que arquiva automaticamente habilidades obsoletas (para .archive/, restaurável, nada é perdido).

A configuração fica em curator no config.yaml: interval_hours, min_idle_hours, stale_after_days, archive_after_days.

Trate as habilidades automáticas como rascunhos de estagiário. hermes curator review para examiná-las, fixe as genuinamente boas para que sobrevivam, deixe o resto ser arquivado. Cuidar deste ciclo é a educação.

Um agente sem curadoria piora com o tempo, não melhora.

2d. Padrões - a disciplina, classificada por quanto ela economiza para você

Estas são as regras que você incorpora no SOUL.md e em cada SKILL.md. Em ordem de impacto.

1. Proíba aritmética. LLMs preveem tokens. Esta é a fonte número um de números errados com confiança. A implementação limpa usa execute_code (abordado na seção 2e) para que um script determinístico faça a matemática e o modelo apenas decida as entradas e interprete as saídas.

Um DCF que o modelo "estimou" é ficção; um que um script calculou e o modelo submeteu a teste de estresse é produto.

2. Recibos em cada número. Cada número retorna com sua fonte e data de referência anexadas, nunca sozinho. O renderizador descarta qualquer coisa sem recibo.

O retorno é adversarial: quando duas fontes discordam, a discordância é o sinal.

3. Apenas ponto no tempo. O viés de olhar para frente é o assassino silencioso de todo backtest e de toda captura de tela "eu avisei". As APIs servem dados reafirmados e atuais por padrão.

Marque os fatos com datas de referência e limite o agente apenas ao que era conhecível na data da decisão.

4. Adversarial por construção. Um subagente constrói o caso de alta, um segundo recebe a ordem de matá-lo, um terceiro reconcilia com uma confiança declarada. O valor está inteiramente nos objetivos serem genuinamente opostos, não na contagem de agentes.

Modelos com alinhamento neutro são importantes aqui porque eles defenderão o caso de baixa com força, em vez de suavizá-lo até virar mingau.

5. Licença para se abster. Force "qual ponto de dados inverteria isso" em cada chamada.

Se esse é um dado que o agente não tem, a resposta é nenhuma posição.

2e. O movimento avançado: chamada de ferramenta programática colapsa pipelines a custo de contexto zero

Este é o recurso que, quando você o entende, muda a forma como você constrói cada fluxo de trabalho de analista.

Normalmente, um pipeline de várias etapas queima um turno de LLM por etapa: "Vou pesquisar… agora vou ler… agora vou resumir… agora vou escrever."

Cada etapa mecânica custa tokens de inferência e polui o contexto com lixo intermediário.

execute_code acaba com isso

O agente escreve um script Python que chama as próprias ferramentas do Hermes através de um RPC de socket de domínio Unix. O script é executado em um processo filho; as chamadas de ferramenta viajam pelo socket de volta ao pai e são despachadas através do mesmo manipulador que as chamadas de ferramenta normais.

Criticamente: apenas a saída print() do script retorna para o modelo. Os resultados intermediários da ferramenta nunca entram na janela de contexto.

python
1# o agente escreve isso UMA VEZ; o modelo está envolvido apenas no ponto de decisão
2from hermes_tools import edgar_fetch, market_price, calc
3
4tickers = ["TSLA", "NVDA", "COIN"]
5rows = []
6for t in tickers:
7 f = edgar_fetch(t, form="10-Q") # chamada de ferramenta via RPC
8 px = market_price(t) # chamada de ferramenta via RPC
9 pe = calc("pe", price=px["last"], eps=f["eps"]) # matemática determinística, não o LLM
10 rows.append({"ticker": t, "pe": pe, "src": f["accession"], "as_of": f["period_end"]})
11
12print(rows) # APENAS isso atinge a janela de contexto

Para um analista financeiro, isso é enorme.

Uma varredura matinal em 20 tickers com três chamadas de ferramenta cada são 60 chamadas de ferramenta que, feitas convencionalmente, explodiriam seu contexto e seu orçamento de tokens.

Como script, é um turno, uma tabela impressa limpa, matemática feita deterministicamente em linha. Você dobra pipelines inteiros em inferências únicas e o modelo só pensa nos pontos que realmente precisam de julgamento. Construa seus fluxos de trabalho de analista recorrentes como scripts execute_code envolvidos em habilidades. (Apenas Linux/macOS, precisa de sockets de domínio Unix.)

2f. Memória - fatos vs. modelo do usuário

A memória do Hermes consiste em três mecanismos ortogonais (a estrutura de "3 camadas" é uma simplificação de ensino, no código eles são independentes):

  • MEMORY.md - fatos duráveis. Limite de ~2.200 caracteres.
  • USER.md - o modelo de você. Limite de ~1.375 caracteres.
  • SessionDB - SQLite, WAL, FTS5 sobre cada turno passado, consultado via session_search.

Um MemoryStore lê MEMORY.md e USER.md uma vez no início da sessão e os incorpora como um único bloco imutável no prompt do sistema.

O agente pode escrever nesses arquivos no meio da sessão e as gravações atingem o disco, mas a cópia no prompt não muda até a próxima sessão, porque alterá-la quebraria o cache de prefixo (a mesma invariante de todos os outros lugares).

Mais 8 provedores externos opcionais (modelagem de usuário dialética do Honcho, Mem0, Hindsight, Supermemory…), seleção única, hermes memory setup.

Os limites de caracteres são um recurso. Eles forçam você a manter o USER.md como infraestrutura de alto sinal, não um depósito de lixo.

Para um analista, USER.md é seu mandato: tolerância ao risco, horizonte, as métricas nas quais você realmente age, formato de saída.

MEMORY.md é para fatos duráveis que o agente conquistou ("A receita da COIN se alinha melhor ao 10-K do que ao FMP").

SessionDB como seu placar: armazene cada chamada, pontue-a contra os resultados, e o agente atualiza as crenças anteriores enquanto você aprende sua calibração, onde ele é preciso e onde é cronicamente otimista demais. Esse mapa de calibração é um alfa que nenhum varejista se preocupa em coletar.

2g. Quando os prompts não são suficientes: GAPA, depois RL

Antes de recorrer ao fine-tuning: o Hermes tem GAPA, otimização sistemática de prompts para seu SOUL.md, instruções de habilidade e prompts de sistema, em vez de ajustes manuais de tentativa e erro.

Tente quando o desempenho estagnar.

Além disso, o Hermes faz geração de trajetória em lote e exporta rastros no formato ShareGPT para SFT, e há um caminho de RL (Atropos) para realmente ajustar o comportamento de chamada de ferramenta em suas próprias trajetórias. Este é o teto real de "educá-lo", termina no treinamento de um modelo sobre como seu analista trabalha.

PARTE 3 - ESTENDA-O: REPOSITÓRIOS, MCP, SERVIÇOS

MCP: separe o registro da exposição

Adicione servidores via CLI ou config.yaml; o agente lista suas ferramentas na inicialização e as registra junto com as embutidas. Disciplina chave, espelhando a lógica de cache acima: use a lista de permissões com tools.include para expor apenas o que você precisa, porque cada ferramenta exposta custa tokens de prefixo e amplia sua superfície de ataque.

bash
1hermes mcp add github --command npx --args "-y,@modelcontextprotocol/server-github"
2hermes mcp configure github # ativar/desativar ferramentas individuais
yaml
1mcp_servers:
2 filesystem:
3 command: npx
4 args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/voce/pesquisa"]
5 tools: { include: [read_file, list_directory] } # somente leitura, sem gravações

/reload-mcp para aplicar.

Composio MCP é o código de trapaça: um servidor, centenas de conexões SaaS; as pessoas constroem agentes financeiros no Hermes puxando dados de mercado e escrevendo relatórios no Google Docs inteiramente através dele. E hermes mcp serve executa o Hermes como um servidor MCP, expondo seu histórico de sessão para que o Claude Desktop ou o Cursor possam consultar o que seu analista encontrou; o agente se torna uma base de conhecimento que suas outras ferramentas leem.

As torneiras de dados (classificadas: espinha dorsal vs. enfeite)

Espinha dorsal de cripto:

DefiLlama

(gratuito, sem chave, sem limite de taxa real, TVL/taxas/rendimentos/preços, metade dos painéis pagos são reestilizações)

+ Helius

(rei da Solana, análise de transação aprimorada transforma sopa de bytes em swaps legíveis).

Enfeite:

Birdeye (OHLCV+websocket), Jupiter (roteamento/cotações), Dune+Flipside (SQL on-chain), Bitquery (GraphQL multicadeia), Nansen/Arkham (rótulos, pagos).

Espinha dorsal de TradFi:

FRED

(St Louis Fed, macro gratuito de maior sinal, os dados que as mesas realmente observam)

+ edgartools

(MIT, sem chave, financeiros tipados de 10-Ks com números de accession).

Enfeite:

Finnhub (melhor nível gratuito), FMP (índices pré-calculados), Polygon/Tiingo (histórico limpo), yfinance (fita adesiva, quebra silenciosamente), GDELT (eventos de notícias globais).

Armadilha: os níveis gratuitos são apertados (Alpha Vantage ~2 dúzias de chamadas/dia). Você vai pensar que seu código quebrou. Armazene tudo em cache e use pools de credenciais (config.yaml) para rotacionar automaticamente entre várias chaves e sobreviver aos limites de taxa.

Repositórios que valem seu tempo

  • NousResearch/hermes-agent

Leia os documentos do guia do desenvolvedor: arquitetura, loop do agente, compressão e cache de contexto. O DeepWiki e os espelhos mudrii/hermes-agent-docs são bons para os detalhes internos.

gemchanger - inline image
  • 0xNyk/awesome-hermes-agent

Habilidades, ferramentas, servidores MCP, integrações selecionadas. Comece aqui. Centrais de habilidades: o Hub oficial (680+ habilidades, 18 categorias), skills.sh, ClawHub.

gemchanger - inline image
  • OpenBB-finance/OpenBB

Bloomberg de código aberto que envia servidores MCP, então ele se conecta diretamente ao Hermes e entrega ao agente uma enorme superfície de dados de mercado + análises através de uma interface. O único complemento de maior alavancagem.

gemchanger - inline image
  • polakowo/vectorbt

Backtesting rápido como Numba, milhares de variações em segundos. Envolva em uma habilidade para que o agente teste toda hipótese antes de você confiar nela.

gemchanger - inline image
  • TauricResearch/TradingAgents (+ auronsun/TradingAgents-crypto)

Simulador de firma de trading multiagente. Leia pela estrutura, depois construa a versão mais enxuta de subagente alta/baixa que você entende. microsoft/qlib e nautechsystems/nautilus_trader para estratégias sistemáticas reais. wilsonfreitas/awesome-quant como o mapa da biblioteca.

gemchanger - inline image
Guardar com um clique

Faça leitura aprofundada de artigos virais com IA no YouMind

Guarde a fonte, faça perguntas específicas, resuma o argumento e transforme um artigo viral em notas reutilizáveis num único espaço de trabalho com IA.

Explorar o YouMind
Para criadores

Transforme o seu Markdown num artigo 𝕏 impecável

Quando publica os seus próprios textos longos, formatar imagens, tabelas e blocos de código para o 𝕏 é uma dor de cabeça. O YouMind transforma um rascunho completo em Markdown num artigo 𝕏 impecável e pronto a publicar.

Experimente Markdown para 𝕏

Mais padrões para decifrar

Artigos virais recentes

Explorar mais artigos virais