Skip to content

Releases: LuxAlgo/prop-firm-sim

@luxalgo/prop-firm-sim-core@1.3.0

Choose a tag to compare

@github-actions github-actions released this 19 Sep 17:37
51cdbf2

Minor Changes

  • 452b286: Expose daily-loss boundaries as dailyFloor on challenge and funded traces, aligned with each recorded equity value. Days without a daily-loss rule return null. Recording does not change simulation outcomes.

@luxalgo/prop-firm-sim-mcp@1.3.0

Choose a tag to compare

Minor Changes

  • Move the MCP server to @modelcontextprotocol/server 2 (MCP 2026-07-28) and zod 4.

    • Both transports speak the stateless 2026-07-28 protocol and still serve 2025-era clients (current Cursor builds included) through the SDK's per-request legacy fallback: stdio via serveStdio, --http via createMcpHandler + @modelcontextprotocol/node's toNodeHandler. The public surface (POST /mcp, PROP_FIRM_SIM_MCP_PORT, the CLI flags) is unchanged.
    • One zod across the workspace: the package now shares core's zod 4, ending the v3/v4 split. Tool input schemas are unchanged in shape and semantics; the two tradeLogTexts array bounds carry explicit messages so the "at least 2 / at most 5" guidance no longer depends on zod's wording.
    • Package exports map added: @luxalgo/prop-firm-sim-mcp (server factory), @luxalgo/prop-firm-sim-mcp/tools (toolDefinitions, handlers), @luxalgo/prop-firm-sim-mcp/directory (fetchDirectory, resolveFirm). Deep imports of dist/*.js still resolve but are no longer the intended surface. ToolDefinition.inputShape is typed as z.ZodRawShape.

@luxalgo/prop-firm-sim-mcp@1.2.0

Choose a tag to compare

Minor Changes

  • Import broker trade-history JSON in the open-source @luxalgo/broker-sdk shape: a bare fills array, {"trades": [...]}, or a full account snapshot (accounts[].trades, exactly one account carrying trades). Fills replay FIFO into flat-to-flat round trips (volume-weighted basis, reversal splitting, fee proration); P&L comes from prices with a contract-multiplier disclosure in every result; fills without executedAt are skipped loudly; snapshots with trades in several accounts are refused with instructions instead of being merged. The CLI --trade-log flag and the MCP tradeLogText/tradeLogTexts inputs auto-detect the shape, so a live broker pull feeds the simulator directly; imports that carry P&L but no risk data still require --import-risk/importRisk, and R is never fabricated.

Patch Changes

  • Updated dependencies
    • @luxalgo/prop-firm-sim-core@1.2.0

@luxalgo/prop-firm-sim-core@1.2.1

Choose a tag to compare

Patch Changes

  • Broker JSON import: refuse a history that flattens several accounts into one array (rows tagged with distinct broker/accountId values), matching the multi-account snapshot refusal. Two equity curves replayed as one produce plausible-looking wrong trades; the error explains how to filter to one account or use portfolio mode.

@luxalgo/prop-firm-sim-core@1.2.0

Choose a tag to compare

Minor Changes

  • Import broker trade-history JSON in the open-source @luxalgo/broker-sdk shape: a bare fills array, {"trades": [...]}, or a full account snapshot (accounts[].trades, exactly one account carrying trades). Fills replay FIFO into flat-to-flat round trips (volume-weighted basis, reversal splitting, fee proration); P&L comes from prices with a contract-multiplier disclosure in every result; fills without executedAt are skipped loudly; snapshots with trades in several accounts are refused with instructions instead of being merged. The CLI --trade-log flag and the MCP tradeLogText/tradeLogTexts inputs auto-detect the shape, so a live broker pull feeds the simulator directly; imports that carry P&L but no risk data still require --import-risk/importRisk, and R is never fabricated.

@luxalgo/prop-firm-sim-cli@1.2.0

Choose a tag to compare

Minor Changes

  • Import broker trade-history JSON in the open-source @luxalgo/broker-sdk shape: a bare fills array, {"trades": [...]}, or a full account snapshot (accounts[].trades, exactly one account carrying trades). Fills replay FIFO into flat-to-flat round trips (volume-weighted basis, reversal splitting, fee proration); P&L comes from prices with a contract-multiplier disclosure in every result; fills without executedAt are skipped loudly; snapshots with trades in several accounts are refused with instructions instead of being merged. The CLI --trade-log flag and the MCP tradeLogText/tradeLogTexts inputs auto-detect the shape, so a live broker pull feeds the simulator directly; imports that carry P&L but no risk data still require --import-risk/importRisk, and R is never fabricated.

Patch Changes

  • Updated dependencies
    • @luxalgo/prop-firm-sim-core@1.2.0

@luxalgo/prop-firm-sim-mcp@1.1.0

Choose a tag to compare

Minor Changes

  • tradeLogText / tradeLogTexts now accept real platform exports
    (TradingView, MT4/MT5 statements including pasted HTML, MT5 deals,
    ThinkOrSwim statements) in addition to plain timestamped CSVs. New
    importRisk argument ("25" cash per trade, or "1%" of entry value)
    converts exports that carry P&L but no risk data; refusals carry the
    importer's diagnostics.

Patch Changes

  • Updated dependencies: @luxalgo/prop-firm-sim-core@1.1.0.

@luxalgo/prop-firm-sim-core@1.1.2

Choose a tag to compare

Patch Changes

  • Results report the correct engine version: the ENGINE_VERSION constant echoed in every SimResult now matches the published package version, and a test keeps the two aligned so they cannot drift again. Version 1.1.1 still reported itself as engine 1.1.0; the simulated numbers were unaffected.

@luxalgo/prop-firm-sim-core@1.1.1

Choose a tag to compare

Patch Changes

  • Restore the em dash in the import pipeline's character handling: — decodes to a real em dash again, and an em dash placeholder cell counts as empty in statement tables, matching hyphen and en dash. Both literals had regressed to plain hyphens in a documentation typography pass; they are now written as unicode escapes, with a regression test pinning the behavior.

@luxalgo/prop-firm-sim-core@1.1.0

Choose a tag to compare

Minor Changes

  • Multi-format trade-history import pipeline (importTradeHistory,
    parseTraderInput, toTradeLogEntries, decodeImportBytes): TradingView
    strategy-tester exports (both generations), MT4/MT5 account statements
    (CSV and HTML, UTF-16 decoded by BOM), MT5 deals tables (netting replay
    with reversal splits), ThinkOrSwim account statements, and a generic
    fallback with a published template (GENERIC_CSV_TEMPLATE). R-multiples
    resolve through a strict trust ladder (explicit, calculated from the
    file's own risk data, inferred from an explicit RiskSpec, or refused),
    every assumption surfaces as a typed diagnostic, and garbage input returns
    a structured refusal instead of throwing. See docs/trade-import.md.
  • parseTimestamp accepts fractional seconds (truncated), so logs written
    with Date.toISOString() parse instead of being skipped row by row.
  • Output typography: the disclaimer and the overlap verdict/disclosure
    sentences drop em dashes for plain punctuation (text-only change, no
    simulated number moved).
  • The firm-file JSON schema no longer advertises a $id pointing at the
    dataset path removed in the directory pivot.