Repository navigation
Releases: LuxAlgo/prop-firm-sim
Releases · LuxAlgo/prop-firm-sim
Release list
@luxalgo/prop-firm-sim-core@1.3.0
Minor Changes
- 452b286: Expose daily-loss boundaries as
dailyFlooron challenge and funded traces, aligned with each recorded equity value. Days without a daily-loss rule returnnull. Recording does not change simulation outcomes.
@luxalgo/prop-firm-sim-mcp@1.3.0
Minor Changes
-
Move the MCP server to
@modelcontextprotocol/server2 (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,--httpviacreateMcpHandler+@modelcontextprotocol/node'stoNodeHandler. 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
tradeLogTextsarray bounds carry explicit messages so the "at least 2 / at most 5" guidance no longer depends on zod's wording. - Package
exportsmap 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 ofdist/*.jsstill resolve but are no longer the intended surface.ToolDefinition.inputShapeis typed asz.ZodRawShape.
- 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
@luxalgo/prop-firm-sim-mcp@1.2.0
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 withoutexecutedAtare skipped loudly; snapshots with trades in several accounts are refused with instructions instead of being merged. The CLI--trade-logflag and the MCPtradeLogText/tradeLogTextsinputs 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
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
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 withoutexecutedAtare skipped loudly; snapshots with trades in several accounts are refused with instructions instead of being merged. The CLI--trade-logflag and the MCPtradeLogText/tradeLogTextsinputs 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
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 withoutexecutedAtare skipped loudly; snapshots with trades in several accounts are refused with instructions instead of being merged. The CLI--trade-logflag and the MCPtradeLogText/tradeLogTextsinputs 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
Minor Changes
tradeLogText/tradeLogTextsnow accept real platform exports
(TradingView, MT4/MT5 statements including pasted HTML, MT5 deals,
ThinkOrSwim statements) in addition to plain timestamped CSVs. New
importRiskargument ("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
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
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
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 explicitRiskSpec, or refused),
every assumption surfaces as a typed diagnostic, and garbage input returns
a structured refusal instead of throwing. Seedocs/trade-import.md. parseTimestampaccepts fractional seconds (truncated), so logs written
withDate.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
$idpointing at the
dataset path removed in the directory pivot.