← Command view
OPTIONS · SIGNAL → FILL · PAPER

Options Flow Executor

Scans conditions, scores setups, and routes options orders through a full scan-to-execution pipeline — from signal to filled order.

◇ SIMULATED PAPER TRADING — demonstration only, not financial advice.
View source — oracle
Equity
Total Return
Today
Open Positions
Uptime
What it does

The job, in plain English

This system handles the whole options lifecycle on its own: it scans the market on an interval, scores the setups it finds, and when one clears the bar it routes the order and manages it through to a fill.

This is the IBKR-integrated system — it handles the full options lifecycle autonomously. It is the most infrastructure-heavy of the three, because options execution needs a live broker gateway running headless on the server.

How it runs

Architecture

Runtime: a Python scanning loop on an interval, run on the VM. Because it uses a broker gateway, it runs headless via a gateway controller + virtual display.

Pipeline: scan → score → route → manage. Orders flow through the broker connection; fills and lifecycle state persist to SQLite.

Resilience: auto-reconnect to the gateway, watchdog restart, and a remote kill switch.

Telemetry & control: a stats.json snapshot for this page, with a Telegram interface for monitoring and manual override.

PythonBroker GatewayOptions LogicSQLiteTelegramXvfb (headless display for gateway)
Guardrails

Rules & risk controls

  • Defined-risk structures only in the paper config
  • Max open contracts cap
  • Per-trade risk capped as a fixed % of equity
  • Time-of-day filter (avoids thin/erratic windows)
  • Auto-reconnect + kill switch
  • No naked/undefined exposure
Under the hood

Illustrative structure

The shape of the code — enough to show how it is engineered, with the actual strategy logic redacted. The edge stays private.

  options_executor.py
# options_executor.py — illustrative structure (strategy logic redacted)
def scan_and_execute():
    candidates = scanner.sweep(universe)      # interval scan
    for c in candidates:
        # --- proprietary signal scoring: REDACTED ---
        score = engine.evaluate(c)
        if score.qualified and risk.ok(c):
            order = build_defined_risk(c)     # capped risk
            gateway.route(order)              # scan → fill
    lifecycle.manage_open(); telemetry.write("data/stats.json")