Rules are data, not code
Each package versions its own rule set. Editing a package creates a new version; challenges already in flight keep the numbers they were sold under.
A trading evaluation only means something if the rules are the same for everyone and cannot change mid-challenge. Here is exactly how ours work.
Each package versions its own rule set. Editing a package creates a new version; challenges already in flight keep the numbers they were sold under.
Balances, P/L and rule outcomes are computed on the server from the ledger. Nothing you see in the browser is used to decide whether you passed.
A limit is the most you may lose. Losing exactly the daily limit is allowed; losing one cent more is a breach.
Once a hard limit is breached, later profits cannot undo it. Warnings fire at a configurable percentage of each limit before you get there.
Every balance change is a new ledger row. Corrections are new adjustment entries with a reason and an operator id — never edits or deletions.
Account transitions, manual adjustments and payments all write an immutable event and an audit record.