Skip to content

Changelog

This is a public changelog focused on user-visible behavior (endpoints, tools, and workflows). It intentionally omits deployment/internal operational details.

  • Composite pair basis half-life: basis_theta default changed from 0.005 to 0.000035 (≈2000s half-life). The prior 13.9s half-life caused near-instant mean reversion that produced an artificial ≥99% backtest win rate. The basis now stays dislocated for hours before reverting.
  • Composite pair basis reach: basis_sigma_bps default changed from 0.15 to 0.5 bps/tick, allowing the process to reach ±10 bps entry zones within the half-life window.
  • Funding regime persistence: Replaced the strict-alternating period template with a Markov-switching regime model (p_stay_positive=0.85, p_stay_negative=0.75). Previously every period alternated sign; the model now generates realistic same-sign runs of 12+ periods during bull markets.
  • Dashboard usage table showing zeros: The usage rollup key used # as a separator in the Azure Cosmos PartitionKey — a reserved character that caused all writes to fail silently. Separator changed to __; usage data now records and displays correctly.
  • Burst coupling in composite basis: On burst/high-volatility events, the composite basis receives a ±[20, 80] bps jump matching liquidation-cascade dynamics, then slowly reverts over the 2000s+ half-life.
  • Funding-aware perp spread: Perp spread now widens with abs(funding_rate) — up to 2× spot spread at 10 bps funding — instead of a fixed 1.05× multiplier.
  • Composite pair stream (mode=composite_pair): GET /stream/live now accepts a mode query parameter. Setting mode=composite_pair emits interleaved {"type": "spot", "payload": {...}} and {"type": "perp", "payload": {...}} SSE events whose payloads conform to the TickSpotBook and TickPerpMark schemas. No client-side transformation is required — spot and perp instruments are fully separated and delivered in a flat payload format.
  • src_latency_mode query parameter on /stream/live: Controls simulated network latency in the src_latency_ms field. zero = 0ms (default), colocated = 1–5ms uniform, retail = 50–200ms uniform.
  • source_type field on all stream events: Every event payload now includes source_type — either "trade" or "depth". In composite mode, spot events use a 70/30 trade/depth mix; perp events are always "trade".
  • src_latency_ms field on all stream events: Float field indicating the simulated feed latency for that event. Value is controlled by src_latency_mode.
  • Funding schedule in simulate_funding_regime: POST /mcp/simulate_funding_regime now returns a periods array alongside the existing scalar fields. Each element contains period_index, start_ts_ms, next_funding_time, funding_rate, funding_rate_bps, and premium_bps. Response is fully backward compatible — existing clients that only read the scalar fields are unaffected.
  • num_periods param on simulate_funding_regime: Controls how many forward settlement periods to generate (default 1, max ~12 for a 4-day window on 8h venues). Each period has a distinct rate with alternating sign to exercise both long-perp and short-perp signal paths.
  • seed param on simulate_funding_regime: Makes multi-period rate generation deterministic. Useful for reproducible backtests that loop over a funding schedule.
  • Timestamp jitter in composite mode: Composite stream events inherit the Gaussian jitter (default ±3ms std) from MarketOrchestrationCore for book events and sub-step uniform offsets for trade events. This prevents the artificial zero-variance timestamp patterns that confuse EWMA-based nowcasters.
  • /v1/data/generate and /v1/stream/live routes: These paths are now available as aliases for POST /data/generate and GET /stream/live, bringing the generation endpoints in line with the /v1/* naming used by all other REST endpoints. The unprefixed routes remain fully operational.
  • POST /data/generate intermittent timeouts: Four compounding causes resolved: (1) generation and artifact upload now run under explicit time limits — if either exceeds the ceiling a 504 is returned with a clear message to use the async jobs endpoint instead of a silent connection drop; (2) Cosmos DB throughput increased from 400 to 1000 RU/s per table, eliminating 429 throttle retries that silently added latency to auth and usage-tracking operations under burst load; (3) container CPU increased from 0.5 to 1.0 cores, reducing generation time under concurrency; (4) Uvicorn workers increased from 2 to 4, reducing request queue depth.
  • Composite stream backward timestamps: Within each clock tick, the book event was emitted first (before the trade) but carried Gaussian jitter (±3ms) that could push it ahead of the trade’s uniform sub-step offset. Combined with the 0–2ms per-instrument composite jitter, consecutive events within each instrument’s subsequence could appear out of order by up to ~11ms. Fixed with per-instrument monotonic timestamp guards in the composite generator — each instrument’s ts is now clamped to be ≥ its last emitted value.
  • /stream/live mode default remains single for backward compatibility. Existing clients that omit mode continue to receive standard L2 book events unchanged.
  • Composite pair stream — natural cross-stream ordering: Spot and perp events at the same engine tick now carry independent timestamps (0–2ms apart) and are emitted in timestamp order. A perp event may arrive before its paired spot event when its timestamp is earlier, matching real asynchronous feed behavior.
  • Composite pair stream — independent src_latency_ms per event: Source latency is now drawn independently for each instrument per tick. Previously both events in a pair shared the same latency value.
  • Composite pair stream — basis OU target: The perp mark basis mean-reverts to ±2 bps aligned with the funding rate sign, replacing a more complex formula. This ensures the basis spans both positive and negative regimes and reaches entry zones reliably.
  • Free and Institutional plans: Two new plan tiers are now available. free (10k MCP pulls/month, no credit card required) and institutional (custom volume, dedicated infrastructure and SLA). Both route through Stripe Checkout to create a customer record.
  • Billing portal: Subscribers can manage their subscription, update payment methods, and view invoices at /dashboard. Free and institutional users will see billing information when applicable.
  • Usage tracking: Authenticated API request counts are now recorded per user per day. Usage data powers overage billing and plan-level dashboards.
  • Graceful Stripe fallback: If Stripe is temporarily unavailable during signup, the API key is returned immediately with a billing-pending notice rather than failing the registration.
  • Dashboard API keys list now scrolls at 240px when more than a few keys are present.
  • API status indicator in the navigation bar replaced with a compact pulsing colored dot.
  • Timestamp realism: Book events now carry Gaussian jitter (±3ms default, configurable via ts_jitter_ms) matching the variance observed on real depth5@100ms feeds. Set ts_jitter_ms=0 for a perfect deterministic grid.
  • Sub-step trade timestamps: Trade events receive a random offset within each 100ms clock step — trades no longer share the same timestamp as the book snapshot in that step.
  • next_funding_time_ms on every event: All streamed events now include the next settlement timestamp (milliseconds, UTC), computed continuously via ceiling arithmetic on the current sim time. Matches the markPrice stream convention. Returns 0 for CME (fixed-expiry, no perpetual funding).
  • Hawkes-driven book refreshes: After high-intensity trade bursts, an extra depth snapshot is emitted +10ms after the trade (configurable via hawkes_book_refresh_threshold). Simulates the rapid book refreshes venues push during active periods.
  • stream() event shape now always includes next_funding_time_ms — clients should expect this field on both book and trade events.
  • Causal arb pressure model: Funding rate now feeds back into spot drift — positive funding creates mild upward spot pressure, negative funding creates downward pressure. Configurable via arb_pressure_coeff (default 0.001). Set to 0.0 to disable.
  • 480-sample TWAP funding settlement (Binance): The Binance funding model now uses a recency-weighted 480-sample TWAP with the exchange-standard clamp (±0.05% band around the interest rate). Activates automatically for exchange="binance".
  • Regime-switching funding OU: Funding dynamics now switch between bull and bear regimes based on spot drift direction, with calibrated per-regime mean-reversion and drift parameters sourced from empirical BTC/USDT-PERP data.
  • Funding jump component: Jump-diffusion term added to the funding path, producing realistic spike-and-revert behavior matching observed extreme funding events (~0.1 jumps per 8h window).
  • Replay semantic fields: All events from generate_dataset now include mark (FDR clean perp price), index (FDR clean spot price), funding_rate_bps (per-tick, not static 8h), and source_type ("depth" or "trade").
  • basis_beta default changed from 4.0 to 1.5 (cross-venue calibrated). Explicit configs are unaffected.
  • generate_dataset default duration_seconds changed from 60 to 3600. The previous 60s produced only 600 steps — backtests looping the path would see ~20s cyclic repetition.
  • MCP tool parity: get_cache_manifest, delete_cache, stream_cache, and export_cache were declared in the MCP manifest and accessible via REST, but the JSON-RPC tools/call dispatcher returned “Unknown tool” for all four. All are now correctly wired.
  • Funding rate calibration: The default Ornstein-Uhlenbeck parameters were mis-scaled, producing near-random-walk funding paths. Recalibrated to empirical BTC/USDT-PERP data: 6-hour mean-reversion halflife, +1 bps structural long bias.
  • MCP manifest version: mcpVersion was set to "1.0.0" (non-existent). Corrected to "2024-11-05".
  • MCP tool count: 13 tools total, all accessible via both REST and JSON-RPC tools/call with zero gaps.
  • MCP JSON-RPC 2.0 at POST /mcp (initialize, tools/list, tools/call, ping).
  • Tool discovery: GET /mcp/tools/list.
  • MCP tools: health, presets, schema, validation/hash, batch generation, normalization, funding simulation, venue details, cache stats.
  • MCP tool responses align with the standard MCP content format.
  • Tool schemas include explicit JSON Schema inputSchema for clients.
  • Batch generation via MCP: generate_dataset.
  • Async job processing for long-running batch workloads.
  • Documentation updated to match the batch generation workflow.
  • Reduced timeout incidence for longer batch jobs through async processing improvements.
  • Authentication improvements (machine-to-machine support).
  • Improved health checks: GET /mcp/health.
  • Data validation: Additional validation capabilities for output quality checks.
  • Health check behavior tuned for monitoring use cases.
  • Stability and correctness fixes.
  • Additional venue models (including CME and SGX).
  • MCP Normalization Endpoint: POST /mcp/normalize for normalizing events from synthetic, HyperLiquid, Binance, CME, and SGX sources.
  • MCP Funding Simulation: POST /mcp/simulate_funding_regime for simulating funding rates across all 6 exchanges.
  • MCP Venue Discovery: GET /mcp/venues/{exchange} for venue details and supported features.
  • MCP Config Schema: GET /mcp/config/schema for JSON Schema export of SimulationManifest.
  • MCP Config Validation: POST /mcp/config/validate for validating configs and computing hashes.
  • MCP Presets Endpoint: GET /mcp/presets for listing available preset configurations.
  • MCP Health Endpoint: GET /mcp/health for MCP-specific health checks.
  • Updated API documentation to reflect actual endpoint signatures and response schemas.
  • Fixed batch generation response schema (status: "completed", download_url, row_count).
  • Fixed live stream parameters (removed non-existent preset and rate_multiplier, added seed).
  • Updated funding model documentation with correct file structure, CME/SGX support.
  • Fixed HyperLiquid documentation (8h default interval, ±4% hard cap, velocity range 0.3-2.5x).
  • Documentation now accurately reflects implemented code for all MCP endpoints.
  • Documentation fixes and corrections.
  • Batch generation, streaming, caching/export, and MCP tooling as first-class workflows.
  • Dual-driver architecture for batch + streaming.
  • Live streaming (SSE): GET /stream/live.
  • Batch Endpoint: POST /data/generate for triggering dataset creation.
  • Schemas for type-safe API interactions.
  • Architecture documentation updated.
  • Venue-specific funding models.
  • Microstructure features including burst behavior and network staleness simulation.
  • Core HyperSynthReactor generator.
  • Basic Normalization and Caching layers.
  • Initial project structure.