Active paper automationReading latest public snapshot

Automated multi-strategy
trading infrastructure

A paper-trading system that turns research signals into attributed orders through one capital-control layer. Strategies generate intent. The orchestrator enforces budgets, risk checks, execution rules, and audit logs.

Capital configured
not available
budget under control
Live strategies
not available
engines in the contract
Data source
not available
reported, not simulated
Order window
not available
full tagged order history
Order routingsystem path, not a live feed
UniverseSCANNERStrategy engineENGINERiskORCHESTRATORAlpaca paperEXECUTIONReport outputCSV HTML JSONcandidatesorder intentapproved
Order packetEngines routed through one capital contract
Why this exists

I built this to practice the part of quant trading that backtests ignore: capital limits, messy fills, attribution, and keeping an automated system alive without touching it every morning.

01. Architecture

How one order actually happens

Four stages, one direction. Each layer produces a specific artifact for the next layer, so research intent only becomes an order after risk approval.

  1. 01Universe
  2. 02Strategies
  3. 03Risk
  4. 04Execution
01 / Permitted universehands overTradable candidates

Each engine receives its own permitted tradable universe

Each strategy starts from its permitted tradable list. Equity engines screen for liquidity and price floors. Allocation engines use configured ETFs.

permitted listliquidity screenprice floorconfigured ETFs
02 / Strategy engineshands overOrder intent

Separate engines, one shared way of asking

Each engine turns its universe into order intent: target names, target weights, and requested notional. Engines share no state, so one bad signal cannot spread.

target namestarget weightsrequested notional
03 / Risk orchestratorhands overApproved orders

Intent is checked against real limits

One control layer checks budgets, position limits, cash, sell-before-buy rules, and attribution. Requests that breach a limit are trimmed or dropped here.

budget checkposition limitsell before buyattribution tag
04 / Execution and logginghands overFills and report rows

Orders go out on a schedule, and everything is written down

Approved orders route to Alpaca paper. Every order carries a strategy attribution label, so fills can be traced back to the engine that requested them.

order attribution labelfill recordaudit trail row
run replay / weekday cycleillustrative cadence, not a log of one date
  1. around 9:30 ETWeekday trading job startsThe scheduler wakes the run, no manual step involved.
  2. thenSignals generatedEach engine turns its permitted universe into order intent.
  3. thenRisk checks appliedBudgets, position limits, and sell-before-buy rules are enforced.
  4. thenOrders submittedApproved orders route to the broker with attribution labels attached.
  5. around 4:30 ETDaily audit trail generatedOrders, fills, holdings, and the website snapshot are written after the close.
02. Strategy map

One capital contract, several strategy engines

Each engine owns a capital cap and a mechanism. The orchestrator owns the money. Cards below are rendered from the latest snapshot, so the set changes when the system changes.

Sorted by closed-trade contribution in the latest snapshot. Closed paper trades only.

Reading latest snapshot.

03. Research pipeline

Research queue, no capital assigned

Ideas sit here until they survive validation. Nothing in this list can request an order, and none of it appears in the capital book.

queued / no budgetwalk-forward testing

Time-Series Momentum

Judges each fund against its own recent history. Simple enough to act as a yardstick for the live engines.

Moskowitz, Ooi & Pedersen

queued / no budgetdata validation

Betting Against Beta

Low-volatility tilt. The published construction needs leverage, so it stays out of the capital contract for now.

Frazzini & Pedersen

queued / no budgetresearch

Earnings Drift

Post-announcement drift on a fundamentals calendar. Event data quality is the open question.

Bernard & Thomas

queued / no budgetresearch

Deep Momentum

Learned momentum sizing rather than a fixed ranking rule. Reading stage only, and it would need a long validation window before it could ask for capital.

Lim, Zohren & Roberts, arXiv:1904.04912

04. Paper book

The capital contract, as reported

One control layer holds every engine to its cap. Below is the split of configured capital and the holdings the system currently attributes to each engine.

Capital contract
COMMITTEDn/a
  • Engine caps pending latest report.
Capital configured
not available
Committed
not available
Remaining
not available
Attributed market value
not available
Realized, closed trades
not available

Committed tracks budget usage. Attributed market value tracks current open-position value.

Holdings matrixengine to symbol attribution

Holdings pending latest report.

Closed paper trades only. Figures cover tagged history in the latest snapshot. Open positions are not a Sharpe ratio, investment result, or performance claim.

Proof it runs
Run schedule
Scheduled GitHub Actions
no manual step
Broker
Alpaca paper account
paper only
Attribution
Strategy-prefixed order IDs
order to engine
Daily audit trail
Orders, fills, and portfolio snapshot
generated per run
Latest entry
pending latest report
written after the close
Latest run evidenceRead from the committed snapshot
  1. Website snapshot committedpending latest report
  2. Tagged orders read back from the brokercount pending
  3. Order history coverednot available
  4. Broker positions reconciled into the snapshotnot included