New Additions
A permanent record of every capability added to TradeRep: where it came from, its licence position, why it was added, how it was tested, what existing functionality it overlaps, and what a rollback would involve. Nothing is deleted from this ledger — a retired component keeps its entry, with the reason and the parity evidence behind any replacement.
All components
11 of 11 shown, newest firstThe research record was complete but only legible by opening committed JSON artifacts by hand, which is also how a program loses track of its own multiple-testing burden.
- Source
- Internal — Master Plan Reboot Phase 1
- Original implementation / inspiration
- docs/TRADE_REP_MASTER_PLAN_REBOOT.md sections 1, 2, 7, 10, 11
- TradeRep location
- lib/registry/, app/strategies/, app/bot-tester/, app/new-additions/, app/monitor/
- Licence / reuse constraints
- INTERNAL — First-party code.
- Tests performed
- · tests/integration/informationArchitecture.test.tsx — every nav route resolves, preserved surfaces stay reachable
- · tests/unit/registry/*.test.ts — registry status equals the shared roster's, metrics are quoted not recomputed, ledger drops nothing
- Overlaps with existing functionality
- /research-status card view → RETAINED — it is now a view inside the Strategies section, unchanged, at its original URL.
Rollback: Read-only surfaces over committed artifacts. Deleting app/strategies, app/bot-tester, app/new-additions, app/monitor and lib/registry removes the views and changes no research data. Navigation would need NAV_ITEMS reverted.
Give TradeRep independent invariants for event ordering, duplicate-event protection and monotonic replay so no strategy can benefit from future-confirmed state.
- Source
- Nautilus-style execution-integrity concepts (no code copied)
- Original implementation / inspiration
- research/external-systems/OPEN_SOURCE_FUTURES_EXPANSION.md section 3
- TradeRep location
- research/external-systems/deterministicReplay.ts — missing here: research/external-systems/deterministicReplay.ts
- Licence / reuse constraints
- CLEAN_ROOM — Concepts implemented independently; no third-party source reused.
- Tests performed
- · owned by the external-bot/multi-market research lane; unit tests accompany the module in that lane
- Overlaps with existing functionality
- lib/backtest/runner (canonical replay) → HARDENING, NOT REPLACEMENT — TradeRep remains the engine; these are assertions that can be applied to it.
Rollback: Standalone helpers in the research area with no production dependents; removal affects nothing in the canonical engine.
Let a finalist be independently reimplemented so that agreement between two engines becomes evidence, and disagreement becomes an investigation trigger.
- Source
- LEAN independent replication lane concept
- Original implementation / inspiration
- research/external-systems/OPEN_SOURCE_FUTURES_EXPANSION.md section 4
- TradeRep location
- research/external-systems/leanReplication.ts — missing here: research/external-systems/leanReplication.ts
- Licence / reuse constraints
- CLEAN_ROOM — Concept-level only.
- Tests performed
- · owned by the external-bot/multi-market research lane
- Overlaps with existing functionality
- canonical TradeRep backtest engine → REPLICATION ENGINE, NOT REPLACEMENT — engine policy: a stronger second engine is used to replicate finalists; replacing the canonical engine is a separate engineering decision requiring a parity migration.
Rollback: No dependents; removal affects nothing.
Define order-flow/volume-profile/regime research interfaces that refuse to run on data that cannot support them, instead of approximating microstructure from OHLC.
- Source
- Clean-room concepts from dearvn/tradovate-trading-bot
- Original implementation / inspiration
- research/external-systems/OPEN_SOURCE_FUTURES_EXPANSION.md section 2
- TradeRep location
- research/external-systems/marketIntelligence.ts — missing here: research/external-systems/marketIntelligence.ts
- Licence / reuse constraints
- CLEAN_ROOM — Concepts only; no implementation code copied.
- Tests performed
- · owned by the external-bot/multi-market research lane
- Overlaps with existing functionality
- existing OHLC-derived features (ATR, VWAP, volume) → COMPLEMENTARY — these guards cover tick/trade-derived features that the canonical dataset cannot currently supply (DATA_BLOCKED).
Rollback: No dependents; removal affects nothing. The DATA_BLOCKED finding stands independently of the code.
Planned research was being read as running work. The Monitor now derives RUNNING only from a real process signal (a live workflow run, or a job row holding a fresh advisory lock) and labels everything else PLANNED, QUEUED, IDLE or UNKNOWN.
- Source
- Internal — Master Plan Reboot section 10
- Original implementation / inspiration
- docs/TRADE_REP_MASTER_PLAN_REBOOT.md section 10 ('Never display a bot as RUNNING unless there is a real live process/workflow in a running state')
- TradeRep location
- lib/registry/monitorState.ts, app/api/monitor/state/route.ts, app/monitor/page.tsx
- Licence / reuse constraints
- INTERNAL — First-party code.
- Tests performed
- · tests/unit/registry/monitorState.test.ts — a planned campaign can never be RUNNING; a stale-locked job is reported degraded, not running; an unconfigured workflow source reports UNKNOWN rather than nothing-running
- Overlaps with existing functionality
- /api/live/readiness → RETAINED — readiness answers 'is the live pipeline trustworthy'; the Monitor answers 'what is executing'. The Monitor reads the readiness endpoint rather than reimplementing it.
- /api/backtest/jobs/[id] status polling → RETAINED — per-job polling for the Jobs UI is unchanged; the Monitor aggregates across jobs using the same lock-staleness predicate (isStaleRunningJob).
Rollback: Removing app/api/monitor/state and lib/registry/monitorState.ts restores the previous behaviour (no aggregate process view). No job, workflow or live-feed behaviour is affected — the Monitor only reads.
Re-express realized shadow R at a funded-account contract policy without touching canonical R or any strategy's logic.
- Source
- Internal
- Original implementation / inspiration
- lib/liveStatus/fundedSizing.ts (funded-sim-v1-provisional)
- TradeRep location
- lib/liveStatus/fundedSizing.ts, rendered on /live/strategies and /funded-simulation
- Licence / reuse constraints
- INTERNAL — First-party code.
- Tests performed
- · tests/unit/live/fundedSizing.test.ts
- Overlaps with existing functionality
- computePositionSize / DEFAULT_ENGINE_PARAMS (V1 sizing) → DELIBERATELY SEPARATE — V1 sizing gates real trade selection; this overlay is read-time only and shares no constants or code path.
Rollback: Read-time only, nothing persisted. Removing the module removes the amber simulation bands and changes no canonical figure.
Run large pre-registered candidate campaigns (A6+) through a certified declarative engine with per-candidate execution certification, integrity auditing and multiple-testing accounting.
- Source
- Internal
- Original implementation / inspiration
- docs/STRATEGY_FACTORY_ARCHITECTURE.md
- TradeRep location
- lib/strategy-engine/research/strategyFactory/ — missing here: lib/strategy-engine/research/strategyFactory/
- Licence / reuse constraints
- INTERNAL — First-party code.
- Tests performed
- · factory suite under tests/unit/strategy-engine/research/strategyFactory/ (owned by the multi-market lane)
- Overlaps with existing functionality
- Strategy Lab campaign runner (lib/strategy-engine/research/strategyLab/campaign/) → BOTH RETAINED — the Strategy Lab carries hand-written A0-A5 strategies through its gates; the Factory carries machine-generated declarative candidates. The Strategy Registry indexes both and labels which engine produced each record.
Rollback: Campaign artifacts are frozen on disk and remain readable even if the runner is removed; the registry reads the artifacts, not the runner.
Provide strictly-before-Discovery data that no pre-Holdout gate can see, handed out one chronological slice at a time.
- Source
- Internal
- Original implementation / inspiration
- research-output/strategy-lab/sealed-holdout-bank/
- TradeRep location
- research-output/strategy-lab/sealed-holdout-bank/, lib/strategy-engine/research/strategyLab/campaign/holdoutGate.ts
- Licence / reuse constraints
- INTERNAL — Derived market data, not third-party code.
- Tests performed
- · tests/unit/registry/holdoutPolicy.test.ts (surface honesty)
- · campaign-runner gate tests under tests/unit/strategy-engine/
- Overlaps with existing functionality
- per-campaign forward Holdout partition → BOTH RETAINED — the sealed bank is pre-Discovery data; the forward partition withholds post-boundary bars inside a campaign. They answer different questions.
Rollback: Not rollbackable in any meaningful sense: consumed slices are permanently spent. This entry exists so that fact stays visible.
Long historical replays exceeded the serverless request ceiling; the durable worker runs the same runBacktestJob on a GitHub-hosted runner with cooperative cancellation, TTL advisory locks and bounded re-dispatch.
- Source
- Internal
- Original implementation / inspiration
- lib/backtest/jobs/* + .github/workflows/backtest-job-worker.yml
- TradeRep location
- lib/backtest/jobs/dispatch.ts, lib/backtest/jobs/runBacktestJob.ts, lib/backtest/jobs/recovery.ts
- Licence / reuse constraints
- INTERNAL — First-party code.
- Tests performed
- · tests/unit/backtest/jobRecovery.test.ts
- · tests/unit/backtest/runBacktestJobCancellation.test.ts
- · tests/unit/backtest/progressPersistence.test.ts
- Overlaps with existing functionality
- in-process backtest execution → RETAINED as the fallback when no worker token is configured (local dev); identical compute path.
Rollback: Unsetting BACKTEST_WORKER_GITHUB_TOKEN/BACKTEST_WORKER_REPO falls back to in-process execution with no code change.
Collect genuinely prospective evidence on frozen specifications, with no order execution.
- Source
- Internal
- Original implementation / inspiration
- lib/strategy-engine/research/{family6Shadow,family2ArmCShadow,a2Dot10Shadow,pbEliteOutcome}/
- TradeRep location
- wired into lib/live/webhookProcessor.ts; read back via /api/live/f6-tally and /api/live/a2dot10-tally
- Licence / reuse constraints
- INTERNAL — First-party code.
- Tests performed
- · tests/phase4/07_a2dot10_shadow.test.ts
- · tests/integration/webhookProcessor.test.ts
- · tests/unit/live/strategyRosterArming.test.ts
- Overlaps with existing functionality
- backtest engine → BOTH RETAINED — a shadow runner cannot observe history it did not live through; the backtest engine cannot produce prospective evidence.
Rollback: Each runner is standalone and additive; removing one stops its observation writes and affects no other runner or V1.
Classify live decisions in shadow against the approved candidate architecture without changing V1 behaviour, sizing or risk.
- Source
- Internal
- Original implementation / inspiration
- docs/CANDIDATE_ARCHITECTURE_V2.md
- TradeRep location
- lib/strategy-engine/research/architectureV2/
- Licence / reuse constraints
- INTERNAL — First-party code.
- Tests performed
- · tests/unit/architectureV2/decisionIntegrity.test.ts
- · tests/integration/architectureV2LiveShadowIntegration.test.ts
- Overlaps with existing functionality
- AV2 challenger program (research-output/av2-planning/) → DISTINCT PROGRAMS — Architecture V2 is a candidate architecture for V1 setups; AV2 is challenger testing against the F6/A2.10 champions. Kept separate in every surface to prevent misreporting either.
Rollback: Shadow-only and non-executing; disabling the classifier stops classification writes only.
Replacement process
An independent second engine is valuable BECAUSE it is independent- 1. identify overlap
- 2. run parity / behaviour comparison
- 3. test scientific and operational assumptions
- 4. confirm no required use case is lost
- 5. migrate dependents
- 6. archive old implementation
- 7. only then remove dead code if safe
A stronger second engine is used to replicate finalists, not to automatically replace the canonical one: if both engines agree, confidence rises. Replacement is a separate engineering decision with its own parity migration.
Read from research-output/registry/new-additions.json · research-output/registry/README.md