Selecione um documento na barra lateral
v0.02
Little Trader não é um app de trading. É um sistema funcional onde cada tick, cada brick, cada decisão existe como um fato — nunca sobrescrito, sempre auditável, perpetuamente composto.
;; the market speaks in ticks
;; we listen in immutable facts
(defn edge [market]
(->> market
(stream/consume!)
(brick/generate)
(signal/detect)
(mel/advise)
(execute/decide!)))
O mercado não espera. Cada milissegundo carrega informação que morre se não for capturada. Nosso fs-worker é a fonte única de verdade — um processo dedicado que se conecta diretamente às exchanges via WebSocket, consome cada tick, cada book update, cada trade, e os persiste em streams Pulsar imutáveis.
Nenhum dado é descartado. Nenhum estado é sobrescrito. O stream é o log. O log é a verdade. O sistema inteiro — do backtest à produção — consome dos mesmos fatos, na mesma ordem, com a mesma semântica.
;; fs-worker: single source of truth
;; exchange → websocket → pulsar topic
deribit/BTC-PERPETUAL
→ ws://deribit.com/ws/api/v2
→ pulsar://persistent/market/btc-perp-ticks
→ consumer-group: backtest
→ consumer-group: paper
→ consumer-group: production
;; same data. same order. every time.
;; Datomic: open schema, accretion-only
;; add attributes whenever you need them
(d/transact conn
[{:db/ident :trade/conviction
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}])
;; no migrations. no downtime. just grow.
;; Fulcro: the UI is the query
(defsc Trade [this props]
{:query [:trade/id :trade/side
:trade/entry-price
:trade/conviction] ; ← just added
:ident :trade/id}
;; UI auto-normalizes. No reducers.
;; No action creators. No boilerplate.
(render-trade props))
Datomic não é um banco de dados. É uma linha do tempo. Cada fato tem um timestamp. Cada schema é aditivo — nunca destrutivo. Precisa de um novo atributo? Transacione. Sem migrations, sem downtime, sem medo. O schema cresce com o sistema, não contra ele.
Fulcro fecha o circuito: o componente UI declara os dados que precisa como uma query EQL. O Pathom resolve. O estado se normaliza automaticamente. Não existe reducer, não existe action creator, não existe boilerplate. Você declara o que quer ver — o framework entrega.
O mesmo motor que roda contra dois anos de dados históricos em segundos é o mesmo motor que executa ordens reais no Deribit. Não há duas implementações. Não há 'modo simulação' separado do 'modo produção'. Existe um pipeline de dados, uma cadeia de interceptores, uma lógica de decisão.
Bricks Renko transformam caos de preço em estrutura. Clara Rules detecta padrões como fatos lógicos. O motor decide — entrar, sair, ajustar stop, escalar posição — tudo como composição de funções puras sobre dados imutáveis.
;; one engine. three modes. zero drift.
(def execution-modes
{:backtest {:source pulsar/historical
:sink datomic/sim-trades}
:paper {:source pulsar/live-stream
:sink datomic/paper-trades}
:production {:source pulsar/live-stream
:sink deribit/real-orders}})
;; Clara Rules: patterns as logic
(defrule double-brick-reversal
[Brick (= direction +1) (= idx ?i)]
[Brick (= direction +1) (= idx (inc ?i))]
[Brick (= direction -1) (= idx (+ ?i 2))]
=>
(insert! (->Signal :long :double-brick)))
;; Mel runs in-browser via Cherry runtime
;; she sees what you see. knows what the
;; system knows. advises from the data.
mel> "BTC dropped 3 bricks in 20 min.
Your trailing stop saved 1.2% on the
last trade. Similar pattern 47 times
in backtest — 68% reversal within
5 bricks. Want me to tighten the
stop or let the thesis play out?"
;; not a chatbot. a copilot.
;; grounded in YOUR data.
;; running on YOUR machine.
Mel não é um chatbot genérico. Ela é uma assistente local que roda no navegador via Cherry runtime, com acesso total aos dados do sistema — trades, sinais, bricks, métricas de backtest, posições abertas. Ela não alucina. Ela consulta.
Quando Mel diz que um padrão apareceu 47 vezes no backtest com 68% de reversão, é porque ela acabou de rodar a query contra o Datomic. Quando sugere apertar o stop, é porque analisou a volatilidade atual contra o ATR histórico. Ela é a ponte entre a intuição do trader e a memória perfeita da máquina.
Médias móveis, DEMA, RSI. As ferramentas clássicas. Simples, auditáveis, ponto de entrada para qualquer trader. O sistema não julga — executa.
Renko filtra o ruído. Cada brick é uma decisão do mercado. Single-brick, double-brick, multi-brick — padrões detectados por Clara Rules como fatos lógicos, não heurísticas frágeis.
Estratégia de convexidade: perder pouco muitas vezes, ganhar muito poucas vezes. Regime de volatilidade via ATR percentile, posicionamento dinâmico, trailing stops adaptativos. O edge não está na previsão — está na assimetria.
Venda de volatilidade em cripto com Deribit. Near-expiry, spreads, gestão de gregas. O mesmo motor, os mesmos dados, um instrumento diferente para capturar o prêmio do tempo.
Redes neurais treinadas em features extraídas dos bricks. LLM advisory ponderado por confiança. Não para substituir o trader — para dar a ele uma memória de 100.000 trades e um instinto calibrado por dados.
Tick data
Captura & persiste
Streams imutáveis
Bricks & sinais
Decisão & execução
Memória eterna
Toda a documentação técnica, guias de arquitetura e materiais de aprendizado.
📂 Repositório no GitHubSelecione um documento na barra lateral