Skip to content
Arian Khademi
All projects

Research systems · Data pipelines

FableBot

2026

Paper trading, strategy search, and research inspection in Python

  • Python
  • NumPy
  • pandas
  • Strategy DSL
  • Evolutionary Search
  • Q-learning

Saved demo · No sign-in needed

39-second silent walkthrough of ten saved paper books, instrument-level activity counts, and source limitations. Recorded activity spans June 10–September 15, 2026 UTC. This is a historical software showcase, not a live account or verified performance track record.

FableBot connects strategy research with paper execution and inspection. I built separate components for signals, position sizing, simulated fills, search, and decision records so that a research proposal can be examined before it becomes a configuration change. There is no real-money broker adapter.

What I built

  • A strategy DSL with composable indicators and conditions, searched through mutation and crossover alongside numeric TPE suggestions.
  • NumPy learning models: small gradient-boosted regression trees and a tabular Q-learning policy that proposes direction while the risk layer sizes positions.
  • Data adapters and a streaming CSV ingester for local market-history files, with separate feed and cache interfaces. Vendor data stays outside the repository.
  • Paper execution and observability: ATR-based sizing, stops, optional trailing, gap handling, decision journals, shadow positions, and reports.

Technical decisions

  • Separate proposal from execution. Search produces candidates for a review workflow; the running configuration is not automatically replaced by a score.
  • Make skipped checks visible. Validation reports whether held-out and deflated-Sharpe checks ran. Short histories or too few trials can skip checks; an internal qualification label is not evidence of an edge.
  • Keep software checks reproducible. Pinned dependencies, synthetic fixtures, and an offline demo exercise the code without credentials or vendor data.
  • Inspect historical records honestly. The public preview includes all ten saved books and flags shortened histories rather than ranking selected returns.

Quick walkthrough

  1. Open the interactive preview to compare saved books and recorded date ranges.
  2. Choose Inspect activity, then select a book to see counts by instrument and the strategy labels retained in its records.
  3. Read Source & limits. The date range describes recorded activity, and current configurations name Yahoo Finance through yfinance; individual records do not establish the exact provider or input bars for every fill.

The saved recording demonstrates the same workflow. Both previews contain only aggregate counts, dates, and labels; raw datasets and trade records remain private.

Scope and limits

The 1% setting is a sizing budget, not a guaranteed loss cap. Simulation uses simplified fills and costs. Validation uses heuristic trial counts and can reuse holdouts; its time blocks are not a general event-aware purge. Four saved books omit later records found in pre-rollback archives, so the showcase makes no performance claim.

The code is source-available under PolyForm Noncommercial 1.0.0 with attribution requirements. Third-party data and dependencies retain their own terms.