Decision support and paper executionAI is advisory only; risk controls are authoritative.
Live disabledAutonomous offLocal auth placeholder
Loading settings
Secrets are read from environment variables or future encrypted storage. They are never exposed to the browser.
Shows which AI provider is active, which model is used for recommendations, and the exact prompt contract the app sends to the model.
The key is never sent to the browser. Settings can show whether the backend has a key, but not the key value.
Loaded only when requested because OpenAI admin usage calls can be slow.
Usage has not been loaded.
You are a cautious asset-class-aware decision-support analyst for a personal portfolio tool. You produce one auditable recommendation at a time. You must return exactly one schema-valid recommendation object. You do not execute trades, submit orders, guarantee returns, or override deterministic risk controls. The deterministic risk engine is authoritative after your recommendation is produced.
Summarizes the main runtime flags that decide whether the app can write data, use sandbox execution, or route anything toward live trading.
Explains what still blocks sandbox/live execution. These checks are separate from autonomous paper trading and protect real exchange actions.
| Check | Status | Detail |
|---|---|---|
| sandbox_gate | blocked | SANDBOX_TRADING_ENABLED must be true for sandbox orders. |
| live_gate | blocked | LIVE_TRADING_ENABLED must be true for live orders. |
| autonomous_live_gate | blocked | AUTONOMOUS_LIVE_TRADING_ENABLED is separate from manual live trading. |
| stock_live_gate | blocked | STOCK_LIVE_TRADING_ENABLED is separate from crypto live trading. |
| stock_autonomous_live_gate | blocked | STOCK_AUTONOMOUS_LIVE_TRADING_ENABLED is separate from every paper and crypto gate. |
| read_only_clear | passed | READ_ONLY_MODE must be false. |
| emergency_stop_clear | passed | EMERGENCY_STOP_ENABLED must be false. |
| autonomous_gate | blocked | Autonomous execution remains blocked in this implementation. |
| trade_only_key_configured | blocked | EXCHANGE_TRADE_KEY_CONFIGURED must be true before live routing. |
| withdrawals_disabled | passed | Exchange API keys must have withdrawals disabled. |
| circuit_breakers_clear | passed | No active persisted circuit breakers may be present. |
| broker_adapter_contract | passed | {"class_name":"DisabledSandboxExchangeAdapter","supports_submit_order":true,"supports_get_order_status":true,"supports_cancel_order":true,"supports_balances":true,"supports_symbol_rules":true,"requires_idempotency_key":true,"requires_trade_only_key":true,"withdrawals_allowed":false} |
Records that you understand autonomous execution risk. It does not enable live trading by itself.
Controls how long paper positions are reviewed, when exits are flagged, and which recommendation horizons map to holding periods.
Used when a recommendation does not specify a time horizon. It selects the review interval and maximum holding time from the horizon table below.
Fallback percentage below entry price where a holding plan becomes an exit candidate if the AI recommendation did not provide its own stop loss.
Fallback percentage above entry price where a holding plan is flagged for possible profit-taking.
Distance from a favorable price move used to protect gains during later holding-plan evaluation.
Minimum AI confidence required before a recommendation can renew or support an existing holding plan.
Maximum AI risk score allowed before the holding evaluator becomes more defensive about the position.
These values decide when the system reviews a position again and when a position has been held too long for its original thesis.
| Horizon | Review hours | Max hold days |
|---|---|---|
| short_term | ||
| medium_term | ||
| long_term |
Controls the local mock-trading cycle. These settings affect paper trades only; they do not enable live exchange execution.
Allows the autonomous paper cycle to evaluate approved recommendations and create mock paper orders. If disabled, scheduled and manual cycles are blocked.
Runs the recommendation scan immediately before the paper cycle trades. This makes paper trading use fresh AI/risk output, but each cycle takes longer.
Allows the paper cycle to sell mock positions that holding-plan evaluation marked as exit candidates.
Allows the paper cycle to add to a symbol that is already held. If off, the system skips BUY signals for existing open positions.
Blocks exits that would realize a loss when the reason is soft, such as low confidence or risk drift. Stop-loss exits and explicit SELL recommendations can still sell at a loss.
Minimum time between scheduled autonomous paper cycles. Manual runs can still be started from the autonomous paper page.
Maximum dollar amount the paper cycle may allocate to one mock BUY order.
Rolling 24-hour cap for mock BUY orders per asset. Use 1 to prevent repeated stacking into the same asset during one day; use 0 to disable this cap.
Minimum AI confidence required before the paper cycle can buy. Higher values reduce trade frequency.
Maximum AI risk score accepted for paper BUY orders. Lower values make the mock trader more conservative.
Caps how many different assets the autonomous paper account can hold at the same time.
Optional operator preference text appended to the AI recommendation prompt. It can steer style or preferences, but backend constraints prevent it from overriding schema, risk checks, or no-execution rules.
Shows safety stops that can block recommendations or execution when risk conditions are active.
| Name | Status | Severity | Reason | Updated |
|---|---|---|---|---|
| No circuit breakers have been persisted. | ||||
Shows where live prices come from. This is read-only here because provider changes are environment-backed and require a backend restart.
Coinbase means the app asks Coinbase for market candles/prices first. If Coinbase fails for a watched asset, the backend can fall back to mock data and marks that in provider health.
CoinGecko is another crypto market-data provider. Its demo key is only needed when you select `coingecko`; it is not used while Coinbase is selected.
Checks whether the configured provider can fetch current market data for the active watchlist and shows fallbacks or failures per asset.
| Asset | Status | Actual | Latency | Last event | Last candle | Counts | Error |
|---|---|---|---|---|---|---|---|
| AAPL | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| AAVE | success | coinbase | 196 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 237 / fallback 0 / fail 0 | None |
| ADA | success | coinbase | 191 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 215 / fallback 0 / fail 0 | None |
| AMZN | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| APT | success | coinbase | 395 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 203 / fallback 0 / fail 0 | None |
| ARB | success | coinbase | 448 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 214 / fallback 0 / fail 0 | None |
| ATOM | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| AVAX | success | coinbase | 193 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 214 / fallback 0 / fail 0 | None |
| BCH | unknown | unknown | Pending | N/A | N/A |
Shows which notification channels are configured. Secrets remain server-side.
| Provider | Configured | Secrets |
|---|---|---|
| not configured | server-side | |
| webhook | not configured | server-side |
| discord | not configured | server-side |
| stub | configured | server-side |
Shows recent notification delivery attempts and failures so alerts are auditable.
| Created | Type | Status | Attempts | Error | Title |
|---|---|---|---|---|---|
| Jul 05, 02:22 PM GMT+2 | new_recommendation | stubbed | 1 | None | AVAX WAIT |
| Jul 05, 02:22 PM GMT+2 | risk_rejection | stubbed | 1 | None | Risk rejected POL SELL |
| Jul 05, 02:22 PM GMT+2 | new_recommendation | stubbed | 1 | None | ADA BUY |
| Jul 05, 02:22 PM GMT+2 | new_recommendation | stubbed | 1 | None | AAVE BUY |
| Jul 05, 02:22 PM GMT+2 | new_recommendation | stubbed | 1 | None | OP BUY |
| Jul 05, 02:22 PM GMT+2 | new_recommendation | stubbed | 1 | None | BTC BUY |
| Jul 05, 02:22 PM GMT+2 | new_recommendation | stubbed | 1 | None | LINK BUY |
| Jul 05, 02:21 PM GMT+2 | new_recommendation | stubbed | 1 | None | ETH BUY |
| Jul 05, 11:12 AM GMT+2 | new_recommendation | stubbed | 1 | None | AAVE BUY |
| Jul 05, 11:11 AM GMT+2 | new_recommendation | stubbed | 1 | None | ADA BUY |
| Jul 05, 11:11 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected OP BUY |
| Jul 05, 11:11 AM GMT+2 | high_confidence_recommendation | stubbed | 1 | None | High-confidence APT BUY |
Summarizes external systems the app can talk to and whether they are currently real, stubbed, or paper-only.
| OpenAI | Configured server-side with AI_PROVIDER and OPENAI_API_KEY |
| Exchange sandbox | Adapter interface exists; no live adapter is wired in v1 |
| Notifications | Stub provider records notification events for auditability |
| Paper trading costs | bps means basis points. One basis point is 0.01%, so 60 bps is 0.60% simulated fee and 10 bps is 0.10% simulated slippage. This models trading costs without using real money. |
| live_broker_adapter_contract | passed | {"class_name":"DisabledLiveExchangeAdapter","supports_submit_order":true,"supports_get_order_status":true,"supports_cancel_order":true,"supports_balances":true,"supports_symbol_rules":true,"requires_idempotency_key":true,"requires_trade_only_key":true,"withdrawals_allowed":false} |
| autonomous_acknowledgement | blocked | Typed acknowledgement is required before autonomous mode can be considered. |
| ok 0 / fallback 0 / fail 0 |
| None |
| BTC | success | coinbase | 193 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 213 / fallback 0 / fail 0 | None |
| COMP | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| CRV | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| DOGE | success | coinbase | 186 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 213 / fallback 0 / fail 0 | None |
| DOT | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| DSV.CO | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| ENS | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| ETH | success | coinbase | 140 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 213 / fallback 0 / fail 0 | None |
| FIL | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| GOOGL | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| ICP | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| INJ | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| LDO | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| LINK | success | coinbase | 153 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 213 / fallback 0 / fail 0 | None |
| LTC | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| META | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| MSFT | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| NEAR | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| NVDA | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| OP | success | coinbase | 208 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 213 / fallback 0 / fail 0 | None |
| PEPE | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| POL | success | coinbase | 211 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 213 / fallback 0 / fail 0 | None |
| QQQ | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| SHIB | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| SNX | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| SOL | success | coinbase | 135 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 213 / fallback 0 / fail 0 | None |
| SPY | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| SUI | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| TSLA | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| UNI | success | coinbase | 149 ms | Jul 05, 02:22 PM GMT+2 | Jul 05, 02:00 PM GMT+2 | ok 213 / fallback 0 / fail 0 | None |
| USDC | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| USDT | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| XRP | unknown | unknown | Pending | N/A | N/A | ok 0 / fallback 0 / fail 0 | None |
| Jul 05, 11:11 AM GMT+2 | new_recommendation | stubbed | 1 | None | AVAX BUY |
| Jul 05, 11:11 AM GMT+2 | new_recommendation | stubbed | 1 | None | BTC HOLD |
| Jul 05, 11:11 AM GMT+2 | new_recommendation | stubbed | 1 | None | LINK BUY |
| Jul 05, 11:11 AM GMT+2 | new_recommendation | stubbed | 1 | None | ETH BUY |
| Jul 05, 10:21 AM GMT+2 | new_recommendation | stubbed | 1 | None | AAVE BUY |
| Jul 05, 10:21 AM GMT+2 | new_recommendation | stubbed | 1 | None | ADA BUY |
| Jul 05, 10:21 AM GMT+2 | new_recommendation | stubbed | 1 | None | BTC BUY |
| Jul 05, 10:21 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected OP BUY |
| Jul 05, 10:21 AM GMT+2 | new_recommendation | stubbed | 1 | None | APT BUY |
| Jul 05, 10:21 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected POL BUY |
| Jul 05, 10:21 AM GMT+2 | new_recommendation | stubbed | 1 | None | LINK BUY |
| Jul 05, 10:21 AM GMT+2 | high_confidence_recommendation | stubbed | 1 | None | High-confidence ETH BUY |
| Jul 05, 09:32 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected APT WAIT |
| Jul 05, 09:32 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected AVAX BUY |
| Jul 05, 09:32 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected ARB BUY |
| Jul 05, 09:32 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected OP BUY |
| Jul 05, 09:32 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected POL BUY |
| Jul 05, 09:32 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected LINK BUY |
| Jul 05, 09:32 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected BTC BUY |
| Jul 05, 09:32 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected ETH BUY |
| Jul 05, 09:26 AM GMT+2 | new_recommendation | stubbed | 1 | None | APT BUY |
| Jul 05, 09:26 AM GMT+2 | new_recommendation | stubbed | 1 | None | AVAX BUY |
| Jul 05, 09:26 AM GMT+2 | new_recommendation | stubbed | 1 | None | ARB BUY |
| Jul 05, 09:26 AM GMT+2 | new_recommendation | stubbed | 1 | None | LINK BUY |
| Jul 05, 09:26 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected OP BUY |
| Jul 05, 09:26 AM GMT+2 | new_recommendation | stubbed | 1 | None | POL BUY |
| Jul 05, 09:26 AM GMT+2 | new_recommendation | stubbed | 1 | None | BTC BUY |
| Jul 05, 09:26 AM GMT+2 | new_recommendation | stubbed | 1 | None | ETH BUY |
| Jul 05, 09:20 AM GMT+2 | new_recommendation | stubbed | 1 | None | APT WAIT |
| Jul 05, 09:20 AM GMT+2 | new_recommendation | stubbed | 1 | None | AVAX WAIT |
| Jul 05, 09:20 AM GMT+2 | new_recommendation | stubbed | 1 | None | ARB WAIT |
| Jul 05, 09:20 AM GMT+2 | new_recommendation | stubbed | 1 | None | LINK HOLD |
| Jul 05, 09:20 AM GMT+2 | stale_data | stubbed | 1 | None | Risk rejected OP BUY |
| Jul 05, 09:20 AM GMT+2 | new_recommendation | stubbed | 1 | None | POL BUY |
| Jul 05, 09:20 AM GMT+2 | new_recommendation | stubbed | 1 | None | ETH BUY |
| Jul 05, 09:20 AM GMT+2 | high_confidence_recommendation | stubbed | 1 | None | High-confidence BTC BUY |
| Jul 05, 09:14 AM GMT+2 | new_recommendation | stubbed | 1 | None | AVAX BUY |
| Jul 05, 09:14 AM GMT+2 | new_recommendation | stubbed | 1 | None | ARB WAIT |