HTR Invest
| Time (ET) | Ticker | Side | Strategy | Entry | Exit | P/L | Reason |
|---|---|---|---|---|---|---|---|
| No trades to show. This is a demo account over a simulated broker and nothing has been ordered. The columns are the ones a real blotter fills. | |||||||
Every refusal the risk engine can return, each a declared constant rather than a message assembled at the point of failure — so the reason a reader sees is the reason the code acted on.
| Code | What it means |
|---|---|
| R_ASSET_CLASS_OFF | asset_class_disabled_by_user |
| R_DAILY_LOSS_LIMIT | daily_loss_limit_reached |
| R_DAILY_TRADE_LIMIT | daily_trade_limit_reached |
| R_DRAWDOWN_LIMIT | portfolio_drawdown_limit_reached |
| R_ENGINE_UNHEALTHY | engine_unhealthy |
| R_MARKET_CLOSED | market_closed |
| R_NO_CONTEXT | insufficient_context |
| R_POSITION_LIMIT | position_limit_reached |
| R_POSITION_TOO_LARGE | position_exceeds_max_size |
| R_SHARIAH_FAIL | shariah_screen_failed |
| R_SHARIAH_UNKNOWN | shariah_verdict_unknown |
| R_STALE_MARKET_DATA | stale_market_data |
| R_STALE_SHARIAH_DATA | stale_shariah_data |
| R_STRATEGY_UNAVAILABLE | strategy_not_offerable |
| R_TRADING_HALTED | trading_halted |
The risk check fails closed: if any of these is missing it refuses rather than assuming a safe default. The realistic failure is a caller that forgot a key, not one that lied.
Every entry a live account writes is hash-chained: each row carries the previous row's hash, so a changed or deleted row breaks the chain and is detectable. That is tamper-EVIDENT, not tamper-proof, and the distinction is deliberate.
Paper and backtest results are hypothetical and do not represent actual trading. Past performance does not guarantee future results. Shariah screens and purification/Zakat figures are calculation aids, not religious rulings.