YouMind
Accedi

Come trasformare Hermes in un analista finanziario di livello IB

867K
184
15
13
646

TL;DR

Questa guida tecnica illustra come configurare l'agente Hermes per un'analisi di livello investment banking, concentrandosi sull'architettura dei prompt, sulla matematica deterministica e sull'integrazione con fonti di dati finanziari come EDGAR e FRED.

Suppongo che tu sappia già come far dire a un LLM cose intelligenti su un titolo azionario. Lo sanno fare tutti. Non è quello il lavoro.

Il lavoro è l'infrastruttura, lo strato attorno al modello che decide se il tuo analista è una scrivania di cui ti fidi o un generatore di numeri casuali con una buona grammatica. Il modello è la parte più facilmente sostituibile di tutto il sistema.

gemchanger - inline image

Tre parti:

  1. Come eseguirlo correttamente
  2. Come trasformarlo in una macchina finanziaria (il vero vantaggio)
  3. I repository e i servizi che lo estendono.

Leggi la parte centrale due volte.

Non è una consulenza finanziaria. Fai le tue ricerche. Il mio progetto personale - @coldvisionXYZ

PARTE 1: ESEGUILO E CAPISCI COSA STAI ESEGUENDO

Una riga. Provisiona python, node, git, tutto, in ~/.hermes/:

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

Linux, macOS, WSL2, Android tramite Termux (rilevato automaticamente), Windows nativo (beta iniziale, senza bisogno di WSL). Python 3.11+. Poi hermes setup per la procedura guidata, oppure hermes model / hermes tools / hermes gateway setup singolarmente. Eseguilo con hermes (CLI classica) o hermes --tui (consigliato).

L'astrazione del provider è il superpotere silenzioso

Lo stesso runtime gestisce le API chat-completions, Anthropic Messages, Codex Responses, un percorso app-server Codex out-of-process e Bedrock.

I formati di chiamata degli strumenti e le peculiarità dei provider vengono normalizzati dagli adattatori di trasporto, quindi a livello di loop la superficie del modello appare identica indipendentemente da ciò che c'è dietro.

Ciò significa che il failover del provider è reale e cambiare modello è genuinamente senza codice.

Conseguenza pratica per il tuo portafoglio: non esegui un singolo modello.

Sotto auxiliary in config.yaml, ogni attività secondaria, esecuzione del curatore, visione, embeddings, generazione di titoli, ricerca di sessioni, riassunto per compressione, può fissare il proprio provider, modello, base_url e sforzo di ragionamento.

Quindi il tuo costoso modello di ragionamento non brucia mai token per riassumere vecchie chat o nominare una sessione.

C'è anche smart_model_routing per inviare le richieste difficili al modello forte e tutto il resto a uno economico.

La configurazione più economica e sensata: Nous Portal (un abbonamento, 300+ modelli + il Tool Gateway per web/browser/immagine/TTS) come primario, un modello economico fissato per tutto il lavoro ausiliario, Ollama/vLLM locale come fallback gratuito. Se vai sul locale, Ollama di default usa un contesto di 4k e tronca silenziosamente, imposta num_ctx a 64k+ o l'agente diventerà stupido e darai la colpa al modello.

La cosa che devi capire prima di toccare la configurazione: il prompt ha la forma della cache

Questo è l'invariante che l'intero sistema è progettato per proteggere, e se non lo capisci moltiplicherai silenziosamente la tua bolletta per 10.

Hermes compone il prompt di sistema in tre livelli:

  1. stable
  2. context
  3. volatile
gemchanger - inline image

stable porta l'identità (SOUL.md), le linee guida per gli strumenti solo per gli strumenti abilitati, l'indice delle skill, i suggerimenti sull'ambiente. context è derivato dalla directory di lavoro corrente. volatile cambia turno per turno. La suddivisione in livelli è esplicita nel codice per un solo motivo: la validità della cache del prefisso del prompt. I provider memorizzano nella cache il prefisso del tuo prompt e fatturano i token memorizzati a una frazione del costo. Ogni volta che il livello stable cambia, rompi quella cache e paghi l'intero prezzo per tutto.

Quindi Hermes considera la modifica del contesto quasi sacra. Dalle stesse regole di ingegneria dell'agente: l'unica volta che modifica deliberatamente il contesto è durante la compressione. I comandi slash che mutano lo stato del prompt di sistema (installare una skill, attivare/disattivare uno strumento) di default usano l'invalidazione differita: la modifica ha effetto nella sessione successiva, con un flag --now opzionale quando ne hai davvero bisogno in tempo reale. /skills install --now è il pattern canonico di "Accetto la rottura della cache".

Perché ti interessa come analista: ogni skill che abiliti e ogni strumento che attivi risiede in quel livello stable e costa token di prefisso su ogni singola chiamata. Un agente gonfio con 60 strumenti abilitati paga per tutte le 60 descrizioni ad ogni turno per sempre. Set di strumenti snelli e skill su richiesta non sono questione di ordine, sono il modello di costo.

La compressione è lignaggio, non troncamento

Quando il contesto si riempie, gli agenti ingenui lasciano cadere i turni vecchi e soffrono di amnesia.

Hermes esegue due livelli di compressione indipendenti:

  1. una rete di sicurezza di "igiene della sessione" del gateway che si attiva intorno all'85% del contesto su una stima approssimativa prima ancora che l'agente venga eseguito
  2. quella reale, il ContextCompressor nel loop che si attiva intorno al 50% utilizzando conteggi di token accurati riportati dall'API.

Riassume i turni intermedi in un nuovo messaggio invece di cancellarli, e le sessioni tengono traccia del lignaggio genitore-figlio per ogni suddivisione di compressione. Il riassunto diventa parte della trascrizione; l'originale è preservato nel lignaggio.

gemchanger - inline image

Con perdita va bene, senza perdita farebbe esaurire la memoria.

Le sessioni sono infrastruttura, non solo trascrizioni.

Trasportano tag di origine e metadati di instradamento, e c'è uno strumento session_search rivolto al modello più un indice FTS5 SQLite su ogni turno passato. Il tuo agente può ricordare "cosa ho concluso su COIN tre settimane fa" durante il ragionamento, non perché l'hai infilato nel contesto, ma perché può interrogare la propria storia su richiesta.

Dove viene eseguito

Sei backend terminali:

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

Modal e Daytona sono serverless, l'ambiente va in ibernazione quando è inattivo e si riattiva su richiesta, costando quasi nulla tra un'esecuzione e l'altra.

Un VPS da $5 o un box serverless in ibernazione è il vero "$5". Collega il gateway e lo stesso agente funziona su oltre 20 piattaforme (Telegram, Discord, Slack, Signal, …) con instradamento delle sessioni unificato, quindi gli parli dal telefono mentre lavora sul cloud.

Le sessioni sopravvivono ai riavvii tramite SQLite in modalità WAL con un livello di ripetizione personalizzato per la contesa di scrittura multi-processo, quindi i job cron e il lavoro del gateway non si corrompono a vicenda.

PARTE 2 - TRASFORMALO IN UNA MACCHINA FINANZIARIA

Un agente semplice è un brillante stagista senza formazione di dominio e senza disciplina di giudizio. Lo educhi letteralmente attraverso quattro canali: identità, playbook, memoria e standard. Poi si auto-educca, e il tuo vero lavoro diventa la cura.

2a. Identità - SOUL.md è lo slot #1

SOUL.md è letteralmente la prima cosa nel prompt di sistema, prima degli strumenti, prima delle skill, prima di qualsiasi altra cosa. È lo strato della personalità e dei valori.

Per un analista finanziario, qui imposti il temperamento epistemico, non fronzoli di personalità.

Cose come: "Sei un analista scettico dal lato degli acquisti. Diffidi dei numeri tondi e delle narrazioni. Non affermi mai una cifra che non hai estratto da uno strumento in questa sessione. Preferisci dire 'dati insufficienti' piuttosto che indovinare. Tratti le tue stesse conclusioni precedenti come priori da aggiornare."

Questo risiede nel livello stabile della cache e colora ogni singolo turno gratuitamente. La maggior parte delle persone lascia SOUL.md predefinito. Per un analista sono i tuoi 1.500 caratteri con la leva più alta.

2b. Playbook - skill, e perché la descrizione è la vera ingegneria

Una skill è un file SKILL.md, nome + descrizione + procedura, memorizzato in ~/.hermes/skills/.

Solo le brevi descrizioni risiedono nell'indice delle skill sempre caricato.

La procedura completa viene caricata su richiesta quando un'attività corrisponde. Quindi la tua libreria di skill può essere enorme senza gonfiare il prefisso.

Il che significa che la descrizione è il punto in cui la skill ha successo o fallisce.

È un instradatore. Se la descrizione è vaga, l'agente non carica mai la skill quando dovrebbe, o la carica quando non dovrebbe. Scrivi le descrizioni come condizioni di attivazione, non come riassunti.

"Usa quando l'utente nomina un'azione quotata negli Stati Uniti e vuole una lettura fondamentale" batte "analizza le azioni."

Una vera skill da analista, nota gli standard del punto 2d cotti direttamente nella procedura:

markdown
1---
2name: equity-snapshot
3description: Usa quando l'utente nomina un ticker quotato negli Stati Uniti e vuole una lettura fondamentale + del prezzo con indicatori di rischio.
4---
5
6# Equity Snapshot
7
81. Risolvi ticker -> CIK tramite la mappa company_tickers della SEC. NON indovinare mai un ticker.
92. Recupera l'ultimo 10-K/10-Q (ricavi, debito, FCF) tramite EDGAR. Registra il numero di accessione.
103. NON calcolare mai i rapporti da solo. Chiama lo strumento di calcolo per P/E, margini, YoY.
114. Incrocia i ricavi da due fonti. Se sono in disaccordo, RIPORTA il divario, non sceglierne uno.
125. Output: tesi (2 righe), 3 catalizzatori, 3 rischi, lettura della valutazione, confidenza 0-1,
13 e "un dato che ribalterebbe questo." Se i dati sono scarsi, restituisci "passa."

Le skill supportano l'abilitazione/disabilitazione per piattaforma, l'attivazione condizionale basata sulla disponibilità degli strumenti e la convalida dei prerequisiti, quindi una skill può dichiarare "disponibile solo se lo strumento EDGAR è presente."

Il formato è lo standard aperto agentskills.io, quindi ciò che scrivi è portabile ad altri agenti compatibili.

2c. Il ciclo di auto-miglioramento e la manutenzione

L'agente scrive le proprie skill.

Dopo aver risolto qualcosa per tentativi ed errori (tipicamente un'attività con diverse chiamate a strumenti), salva l'approccio funzionante come SKILL.md in agent_created/.

Lo strumento di gestione delle skill ha sei azioni e quella da conoscere è patch: una correzione mirata, preferita rispetto alle riscritture complete perché è efficiente in termini di token.

L'agente letteralmente perfeziona i propri playbook sul posto durante l'uso.

Senza manutenzione, le auto-skill metastatizzano.

Ti ritrovi con dozzine di playbook ristretti e sovrapposti che bruciano token di prefisso e inquinano l'instradatore.

gemchanger - inline image

Il Curatore se ne occupa, e i suoi meccanismi meritano di essere conosciuti. Non è un demone cron, viene eseguito su un controllo di inattività: approssimativamente quando sono passati 7 giorni dalla sua ultima esecuzione e l'agente è stato inattivo per 2+ ore, un fork in background si avvia con la propria cache del prompt, senza mai toccare la conversazione attiva, ed esegue un ciclo di revisione LLM che archivia automaticamente le skill obsolete (in .archive/, ripristinabile, non si perde mai nulla).

La configurazione si trova sotto curator in config.yaml: interval_hours, min_idle_hours, stale_after_days, archive_after_days.

Tratta le auto-skill come bozze di stagisti. hermes curator review per darci un'occhiata, fissa quelle veramente buone in modo che sopravvivano, lascia che il resto venga archiviato. Curare questo ciclo è l'educazione.

Un agente non curato peggiora nel tempo, non migliora.

2d. Standard - la disciplina, classificata in base a quanto ti fa risparmiare

Queste sono le regole che incorpori in SOUL.md e in ogni SKILL.md. In ordine di impatto.

1. Vieta l'aritmetica. Gli LLM predicono token. Questa è la fonte numero uno di numeri sbagliati con sicurezza. L'implementazione pulita usa execute_code (coperto nel punto 2e) in modo che uno script deterministico faccia i calcoli e il modello decida solo gli input e interpreti gli output.

Un DCF che il modello ha "stimato" è finzione; uno che uno script ha calcolato e il modello ha stress-testato è un prodotto.

2. Ricevute per ogni cifra. Ogni numero viene restituito con la sua fonte e la data di riferimento allegate, mai nudo. Il renderer elimina tutto ciò che non ha una ricevuta.

Il vantaggio è avversariale: quando due fonti sono in disaccordo, il disaccordo è il segnale.

3. Solo puntuale. Il bias di look-ahead è il killer silenzioso di ogni backtest e di ogni screenshot del tipo "l'aveva detto". Le API servono dati riformulati e correnti per impostazione predefinita.

Tagga i fatti con le date di riferimento e limita l'agente a ciò che era conoscibile alla data della decisione.

4. Avversariale per costruzione. Un sottoagente costruisce il caso rialzista, a un secondo viene ordinato di ucciderlo, un terzo riconcilia con una confidenza dichiarata. Il valore sta interamente negli obiettivi che sono genuinamente opposti, non nel numero di agenti.

I modelli con allineamento neutrale sono importanti qui perché sosterranno con forza il caso ribassista invece di annacquarlo in una via di mezzo.

5. Licenza di astenersi. Forza "un dato che ribalterebbe questo" su ogni chiamata.

Se quel dato l'agente non ce l'ha, la risposta è nessuna posizione.

2e. La mossa avanzata: la chiamata programmatica agli strumenti collassa le pipeline a costo di contesto zero

Questa è la funzionalità che, una volta capita, cambia il modo in cui costruisci ogni flusso di lavoro dell'analista.

Normalmente una pipeline multi-step brucia un turno LLM per passo: "Cercherò… ora leggerò… ora riassumerò… ora scriverò."

Ogni passo meccanico costa token di inferenza e inquina il contesto con robaccia intermedia.

execute_code elimina tutto questo

L'agente scrive uno script Python che chiama gli strumenti di Hermes tramite una RPC su socket Unix-domain. Lo script viene eseguito in un processo figlio; le chiamate agli strumenti viaggiano sul socket di ritorno al genitore e vengono smistate attraverso lo stesso gestore delle chiamate normali agli strumenti.

Fondamentalmente: solo l'output print() dello script ritorna al modello. I risultati intermedi degli strumenti non entrano mai nella finestra di contesto.

python
1# l'agente scrive questo UNA VOLTA; il modello è coinvolto solo al punto decisionale
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") # chiamata strumento tramite RPC
8 px = market_price(t) # chiamata strumento tramite RPC
9 pe = calc("pe", price=px["last"], eps=f["eps"]) # matematica deterministica, non l'LLM
10 rows.append({"ticker": t, "pe": pe, "src": f["accession"], "as_of": f["period_end"]})
11
12print(rows) # SOLO questo colpisce la finestra di contesto

Per un analista finanziario questo è enorme.

Una spazzolata mattutina su 20 ticker con tre chiamate a strumenti ciascuno sono 60 chiamate a strumenti che, fatte convenzionalmente, farebbero esplodere il tuo contesto e il tuo budget di token.

Come script è un turno, una tabella stampata pulita, matematica fatta deterministicamente in linea. Pieghi intere pipeline in singole inferenze e il modello pensa solo nei punti che richiedono effettivamente giudizio. Costruisci i tuoi flussi di lavoro ricorrenti da analista come script execute_code avvolti in skill. (Solo Linux/macOS, necessita di socket Unix domain.)

2f. Memoria - fatti vs. modello dell'utente

La memoria di Hermes è composta da tre meccanismi ortogonali (la strutturazione a "3 livelli" è una semplificazione didattica, nel codice sono indipendenti):

  • MEMORY.md - fatti durevoli. Limite di ~2.200 caratteri.
  • USER.md - il modello di te. Limite di ~1.375 caratteri.
  • SessionDB - SQLite, WAL, FTS5 su ogni turno passato, interrogato tramite session_search.

Un MemoryStore legge MEMORY.md e USER.md una volta all'inizio della sessione e li incorpora come un singolo blocco immutabile nel prompt di sistema.

L'agente può scrivere su quei file a metà sessione e le scritture arrivano su disco, ma la copia nel prompt non cambia fino alla sessione successiva, perché cambiarla romperebbe la cache del prefisso (lo stesso invariante di ovunque altro).

Più 8 provider esterni opzionali (modellazione utente dialettica di Honcho, Mem0, Hindsight, Supermemory…), selezione singola, hermes memory setup.

I limiti di caratteri sono una funzionalità. Ti costringono a mantenere USER.md come infrastruttura ad alto segnale, non una discarica.

Per un analista, USER.md è il tuo mandato: tolleranza al rischio, orizzonte, le metriche su cui agisci effettivamente, formato di output.

MEMORY.md è per i fatti durevoli che l'agente si è guadagnato ("I ricavi di COIN sono più allineati al 10-K che a FMP").

SessionDB come tuo segnapunti, memorizza ogni chiamata, valutala rispetto ai risultati, e l'agente aggiorna i priori mentre tu impari la sua calibrazione, dove è preciso e dove è cronicamente troppo rialzista. Quella mappa di calibrazione è alpha che nessun build retail si preoccupa di raccogliere.

2g. Quando i prompt non bastano: GAPA, poi RL

Prima di ricorrere al fine-tuning: Hermes ha GAPA, ottimizzazione sistematica dei prompt per il tuo SOUL.md, le istruzioni delle skill e i prompt di sistema, invece di modifiche manuali per tentativi ed errori.

Provalo quando le prestazioni si stabilizzano.

Oltre a questo, Hermes fa generazione batch di traiettorie ed esporta tracce in formato ShareGPT per SFT, e c'è un percorso RL (Atropos) per fare effettivamente fine-tuning del comportamento di chiamata degli strumenti sulle tue traiettorie. Questo è il vero tetto del "educalo", finisce nell'addestrare un modello su come funziona il tuo analista.

PARTE 3 - ESTENDILO: REPOSITORY, MCP, SERVIZI

MCP: separa la registrazione dall'esposizione

Aggiungi server tramite CLI o config.yaml; l'agente elenca i loro strumenti all'avvio e li registra insieme a quelli integrati. Disciplina chiave, che rispecchia la logica della cache di cui sopra: lista bianca con tools.include in modo da esporre solo ciò di cui hai bisogno, perché ogni strumento esposto costa token di prefisso e allarga la tua superficie d'attacco.

bash
1hermes mcp add github --command npx --args "-y,@modelcontextprotocol/server-github"
2hermes mcp configure github # attiva/disattiva singoli strumenti
yaml
1mcp_servers:
2 filesystem:
3 command: npx
4 args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/you/research"]
5 tools: { include: [read_file, list_directory] } # sola lettura, nessuna scrittura

/reload-mcp per applicare.

Composio MCP è il trucchetto, un server, centinaia di connessioni SaaS; la gente costruisce agenti finanziari su Hermes che recuperano dati di mercato e scrivono report su Google Docs interamente attraverso di esso. E hermes mcp serve esegue Hermes come server MCP, esponendo la sua cronologia delle sessioni in modo che Claude Desktop o Cursor possano interrogare ciò che il tuo analista ha trovato, l'agente diventa una knowledge base da cui i tuoi altri strumenti leggono.

I rubinetti dei dati (classificati: spina dorsale vs. guarnizione)

Spina dorsale crypto:

DefiLlama

(gratuito, senza chiave, senza limite di velocità reale, TVL/commissioni/rendimenti/prezzi, metà dei dashboard a pagamento sono re-skin)

+ Helius

(re di Solana, parsing delle transazioni avanzato trasforma byte-soup in swap leggibili).

Guarnizione:

Birdeye (OHLCV+websocket), Jupiter (instradamento/preventivi), Dune+Flipside (SQL on-chain), Bitquery (GraphQL multichain), Nansen/Arkham (etichette, a pagamento).

Spina dorsale TradFi:

FRED

(Fed di St. Louis, macro gratuita a più alto segnale, i dati che le scrivanie guardano realmente)

+ edgartools

(MIT, senza chiave, dati finanziari tipizzati dai 10-K con numeri di accessione).

Guarnizione:

Finnhub (miglior livello gratuito), FMP (rapporti pre-calcolati), Polygon/Tiingo (storico pulito), yfinance (nastro adesivo, si rompe silenziosamente), GDELT (eventi di notizie globali).

Trappola: i livelli gratuiti sono stretti (Alpha Vantage ~2 dozzine di chiamate/giorno). Penserai che il tuo codice si sia rotto. Fai cache di tutto e usa credential pools (config.yaml) per ruotare automaticamente tra più chiavi e sopravvivere ai limiti di velocità.

Repository che meritano il tuo tempo

  • NousResearch/hermes-agent

Leggi i documenti della guida per sviluppatori: architettura, ciclo dell'agente, compressione del contesto e caching. DeepWiki e mudrii/hermes-agent-docs sono buoni mirror per gli internals.

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

Skill, strumenti, server MCP, integrazioni curati. Inizia da qui. Hub di skill: l'Hub ufficiale (680+ skill, 18 categorie), skills.sh, ClawHub.

gemchanger - inline image
  • OpenBB-finance/OpenBB

Bloomberg open-source che spedisce server MCP, quindi si collega direttamente a Hermes e fornisce all'agente un'enorme superficie di dati di mercato + analisi attraverso un'unica interfaccia. Il singolo componente aggiuntivo con la leva più alta.

gemchanger - inline image
  • polakowo/vectorbt

Backtesting veloce come Numba, migliaia di variazioni in secondi. Avvolgilo in una skill in modo che l'agente testi ogni ipotesi prima che tu ti fidi.

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

Simulazione di società di trading multi-agente. Leggilo per la struttura, poi costruisci la versione più snella con sottoagenti rialzista/ribassista che capisci. microsoft/qlib e nautechsystems/nautilus_trader per strategie sistematiche reali. wilsonfreitas/awesome-quant come mappa delle librerie.

gemchanger - inline image
Salva con un clic

Leggi in profondità gli articoli virali con l’AI di YouMind

Salva la fonte, fai domande mirate, riassumi l’argomentazione e trasforma un articolo virale in note riutilizzabili in un unico spazio di lavoro AI.

Scopri YouMind
Per i creator

Trasforma il tuo Markdown in un articolo 𝕏 pulito

Quando pubblichi i tuoi testi lunghi, formattare immagini, tabelle e blocchi di codice per 𝕏 è una seccatura. YouMind trasforma un'intera bozza Markdown in un articolo 𝕏 pulito e pronto da pubblicare.

Prova Markdown verso 𝕏

Altri pattern da decodificare

Articoli virali recenti

Esplora altri articoli virali