Skip to main content
Console →
Nous Ergon — Alpha Engine

Intelligence at work

Architecture

The system flow at a glance — six modules, three Step Functions, autonomous parameter feedback. For per-module deep dives, see the per-repo READMEs at github.com/cipher813 .

System

Six modules communicating exclusively through S3 — research, predictor, executor, backtester, dashboard, and the data layer that feeds them.

flowchart LR
    Data[Data<br/>prices · macro · features<br/>RAG corpus]
    Research[Research<br/>6 sector teams + CIO + macro<br/>incl. LLM-as-judge]
    Predictor[Predictor<br/>L1 momentum/vol GBMs + research calibrator<br/>+ L2 Ridge meta-learner]
    Executor[Executor<br/>risk-gated sizing + intraday daemon]
    Backtester[Backtester<br/>eval + parity + 4 config optimizers]
    Dashboard[Dashboard<br/>nousergon.ai + console.nousergon.ai]

    Data --> Research
    Data --> Predictor
    Research --> Predictor
    Research --> Executor
    Predictor --> Executor
    Executor --> Backtester

    Backtester -.config auto-apply.-> Research
    Backtester -.config auto-apply.-> Predictor
    Backtester -.config auto-apply.-> Executor

    Data -.read-only.-> Dashboard
    Research -.read-only.-> Dashboard
    Predictor -.read-only.-> Dashboard
    Executor -.read-only.-> Dashboard
    Backtester -.read-only.-> Dashboard

Step Function pipelines

Three orchestrated pipelines run on a fixed cadence. EventBridge fires the weekly + weekday triggers; daemon shutdown after the trading day fires the EOD pipeline (single authoritative path).

Weekly — alpha-engine-saturday-pipeline

EventBridge cron(0 9 ? * SAT *) — Sat 09:00 UTC (Sat 02:00 AM PT)

flowchart LR
    Trigger((Sat<br/>09:00 UTC)) --> P1
    P1[DataPhase1<br/>EC2 SSM<br/>30 min] --> RAG
    RAG[RAGIngestion<br/>EC2 SSM<br/>30 min] --> R
    R[Research<br/>Lambda · 15 min<br/><i>incl. LLM-as-judge</i>] --> P2
    P2[DataPhase2<br/>Lambda<br/>10 min] --> Train
    Train[PredictorTraining<br/>EC2 spot<br/>90 min] --> BT
    BT[Backtester<br/>EC2 spot · 120 min<br/><i>eval + parity + 4 optimizers</i>] --> Notify((SNS))
Weekday morning — alpha-engine-weekday-pipeline

EventBridge cron(5 13 ? * MON-FRI *) — 6:05 AM PT

flowchart LR
    Trigger((6:05 AM PT)) --> Inf
    Inf[PredictorInference<br/>Lambda] --> Start
    Start[StartExecutorEC2] --> Boot
    Boot[Trading EC2 boots<br/>systemd] --> Plan
    Plan[Executor Planner<br/>~6:15 AM PT] --> Daemon((Executor Daemon<br/>~6:20 AM PT))

The daemon runs through the trading day, executing urgent exits at open and timing entries via intraday triggers (pullback, VWAP, support, time-expiry). Daemon shutdown after close (~1:15 PM PT) triggers the EOD pipeline.

EOD — alpha-engine-eod-pipeline

Triggered by daemon shutdown — single authoritative path, no redundant cron

flowchart LR
    Trigger((Daemon shutdown<br/>~1:15 PM PT)) --> Post
    Post[PostMarketData<br/>SSM on ae-trading<br/><i>EOD OHLCV → ArcticDB</i>] --> EOD
    EOD[EODReconcile<br/>NAV · α · positions<br/>trades.db + EOD email] --> Stop((StopTradingInstance))

S3 data contracts

The wires between modules — every output is a named S3 path; every consumer reads on cold-start. Schema changes are additive only; path changes dual-write for at least a week to preserve consumers.

flowchart TB
    subgraph Producers
        D[Data]
        R[Research]
        P[Predictor]
        E[Executor]
        B[Backtester]
    end

    subgraph S3 ["s3://alpha-engine-research/"]
        Sig["signals/{date}/signals.json"]
        Pred["predictor/predictions/{date}.json"]
        Trades["trades/eod_pnl.csv<br/>trades/trades_full.csv"]
        Cfg["config/scoring_weights.json<br/>config/executor_params.json<br/>config/predictor_params.json<br/>config/research_params.json"]
        Arc["ArcticDB universe library<br/>predictor/price_cache_slim/<br/>predictor/daily_closes/"]
    end

    D --> Arc
    R --> Sig
    P --> Pred
    E --> Trades
    B --> Cfg

    Sig --> P
    Sig --> E
    Pred --> E
    Cfg --> R
    Cfg --> P
    Cfg --> E
    Arc --> P
    Arc --> B
    Arc --> E

Autonomous feedback loop

What turns a static system into a learning one. The backtester evaluates the system's own outputs each week, runs parameter sweeps, validates on holdout, and writes four optimized configs back to S3 — Research / Predictor / Executor read on cold-start. The mechanism that makes Phase 3 alpha tuning a configuration flip rather than a code change.

flowchart LR
    System[Live system outputs<br/>signals · predictions<br/>fills · P&L]
    Eval[Backtester evaluator<br/>weekly]
    Sweep[Parameter sweeps<br/>random search × Sharpe<br/>holdout validation]
    Cfg[4 optimized configs → S3<br/>scoring weights<br/>executor params<br/>predictor veto<br/>research params]
    Read[Research / Predictor / Executor<br/>read on cold-start]

    System --> Eval
    Eval --> Sweep
    Sweep -- holdout pass --> Cfg
    Cfg --> Read
    Read -.next week's behavior delta.-> System