methodology

How Pulse Bot makes decisions

An AI options-selling agent that selects which trades to take based on real market data, vol-aware Black-Scholes premium pricing, and walk-forward edge metrics. No magic — just disciplined math.

Return
Trades
Win rate
Max DD
Calmar

Numbers above are pulled live from the bot's current state. See the full track record →

Data pipeline

  1. Daily OHLCV bars pulled from Alpaca's free IEX feed for 5 high-volatility equities (AMD, NVDA, TSLA, META, AAPL) over the last 365 days. Cached in historical_bars table.
  2. Synthetic option pulses generated from those bars — one pulse per (ticker, strategy, entry date) using Black-Scholes pricing with rolling 30-day realized vol.
  3. Walk-forward edge metrics computed per (ticker, strategy, time window). Win rate, expectancy, edge score — all derived from outcomes already resolved at each decision point. No lookahead bias.
  4. Bot policy evaluates each pulse: passes risk gates (drawdown halt, position dedup, edge threshold), sizes via half-Kelly capped at max_position_pct, opens via simulated paper-trade.
  5. Lifecycle exits: bot terminates as succeeded at profit_target_pct or stopped_out at max_drawdown_pct. Open positions force-closed at cost basis on terminal status.

Strategies modelled

Four classic options-selling structures, all priced with Black-Scholes from realized volatility:

The Black-Scholes pricer

Every option leg is priced at entry time using:

European call (Black-Scholes)
d₁ = (ln(S/K) + (r + σ²/2)·T) / (σ·√T)
d₂ = d₁ − σ·√T
Call = S·N(d₁) − K·e−r·T·N(d₂)

Where S = spot, K = strike, T = time to expiry (years), σ = realized vol from the prior 30 trading-day window, r = 4% risk-free rate, N(·) = standard normal CDF.

This means a 21-DTE ATM call on SPY at ~12% vol pays ≈1.5% premium; the same call on NVDA at ~50% vol pays ≈5%. Strategy edges *vary by ticker and date* — the bot's per-(ticker, strategy) edge lookup captures this.

Decision logic

For every new pulse, the bot evaluates these gates in order:

  1. Strategy class — is this strategy enabled in the bot's risk profile?
  2. Edge gate — is the (ticker, strategy)'s recent edge_score ≥ min_algo_edge_score?
  3. Drawdown halt — is current drawdown above max_drawdown_pct?
  4. Position dedup — already holding this (ticker, strategy) pair?
  5. Concurrency cap — at max_concurrent_positions?
  6. Sizing — half-Kelly fraction of equity, capped at max_position_pct.
  7. Cash check — does the bot have liquid cash to deploy?

Edge score formula:

Edge score [0, 1]
expectancy_pct = win_rate × avg_win_pct + (1 − win_rate) × avg_loss_pct
confidence = min(1, trades / 30)
edge_raw = max(0, expectancy_pct / 0.05)
edge_score = clamp(0, 1, edge_raw × confidence)

Strategies with negative expectancy clamp to 0 and are filtered. The bot dynamically avoids strategies that have stopped working — this is what "agentic AI trading" means in practice.

Risk controls

Limitations & honest caveats

This is a simulated paper-trading model. Things it doesn't capture (yet):

What's next on the roadmap