Auto-Trade
Read-only status for the Trading212 connection: whether it's actually enabled, current risk limits and exposure, and the full order audit log. The cron reconciles new Top Picks basket entries into buy orders and basket exits into sell orders — see api/lib/auto_trade_lib.php for the full lifecycle.
Status
Performance
Real, realized returns from every position this app has actually opened with Trading212 — tracked since 2026-08-25 20:25:20. A closed position uses the exit price captured when its close confirmed; an open one is marked to the current spot (unrealized). Nothing here is a backtest or a simulation.
Win/loss asymmetry
A stop-loss caps a single position's loss (see Min quality/confidence above) while a winner is allowed to run uncapped — this only shows the ONE net avg return above; this splits it into what winners and losers each actually averaged, the direct check for whether that "small controlled losses, larger uncapped wins" structure is actually showing up in real fills.
Cumulative P&L
Conviction calibration — real fills
How real, closed Trading212 positions actually performed, binned by the confidence/quality they had at entry — the strongest evidence for whether the Min confidence/Min quality bars above are set at the right level, since it reflects real execution, not an "if you'd held it" approximation. This never changes those settings itself; that stays a deliberate config.local.php edit.
By confidence
| Band (0-100) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| 70..80 | 17 | 35.3% | +0.50% | sufficient |
| 80..90 | 6 | 50.0% | +0.07% | too few |
By quality percentile
| Band (0-100) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| 20..30 | 2 | 0.0% | -2.20% | too few |
| 30..40 | 1 | 0.0% | -1.75% | too few |
| 40..50 | 1 | 0.0% | -1.80% | too few |
| 60..70 | 7 | 71.4% | +0.82% | too few |
| 70..80 | 3 | 33.3% | +0.19% | too few |
| 80..90 | 4 | 25.0% | +2.13% | too few |
| 90..100 | 3 | 33.3% | +0.37% | too few |
By choppiness
| Band (0-100) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| 0..10 | 11 | 45.5% | -0.02% | sufficient |
| 20..30 | 7 | 42.9% | +1.80% | too few |
By stability
| Band (0-100) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| 60..70 | 1 | 0.0% | -2.15% | too few |
| 80..90 | 9 | 55.6% | +0.58% | sufficient |
| 90..100 | 6 | 50.0% | +1.65% | too few |
Raw pairs (confidence vs. quality, per closed position)
If confidence and quality look identical band-for-band above, this is where to check whether that's two genuinely different numbers that just usually land together, or the same number twice.
| Symbol | Entered | Confidence | Quality | Return |
|---|---|---|---|---|
| CVX | 2026-08-28 16:18 | 76 | 87 | -0.05% |
| SNAP | 2026-08-28 14:42 | 78 | 70 | +2.97% |
| PYPL | 2026-08-28 12:44 | 78 | 92 | +2.23% |
| PCG | 2026-08-28 12:32 | 82 | 83 | -0.49% |
| BB | 2026-08-28 09:56 | 80 | 83 | +0.89% |
| XYL | 2026-08-27 20:34 | 76 | 62 | -2.15% |
| ROKU | 2026-08-27 20:34 | 75 | 82 | +0.41% |
| PATH | 2026-08-27 20:34 | 83 | 84 | +0.08% |
| T | 2026-08-27 19:16 | 74 | 81 | +0.00% |
| BB | 2026-08-27 18:46 | 78 | 82 | +1.72% |
| ARM | 2026-08-27 18:03 | 83 | 92 | -0.62% |
| SNAP | 2026-08-27 17:07 | 77 | 69 | -1.80% |
| ARM | 2026-08-27 17:06 | 82 | 91 | -0.49% |
| OXY | 2026-08-27 16:20 | 80 | 82 | +1.04% |
| ARM | 2026-08-27 15:54 | 73 | 80 | +0.00% |
| ARM | 2026-08-27 15:44 | 73 | 80 | -0.64% |
| XPEV | 2026-08-27 14:36 | 75 | 79 | +0.00% |
| PURR | 2026-08-27 14:19 | 78 | 90 | +9.22% |
| HTZ | 2026-08-26 20:10 | 78 | 65 | -1.75% |
| CVX | 2026-08-26 20:02 | 76 | 86 | -0.31% |
| AMC | 2026-08-26 19:54 | 78 | 62 | -2.25% |
| CVX | 2026-08-26 18:09 | 77 | 80 | -0.39% |
| SOUN | 2026-08-26 17:58 | 79 | 78 | +1.23% |
Liquidity calibration — real fills
How real, closed Trading212 positions actually performed, binned by combined call+put options volume at entry — the same signal VerdictLib's VOL_USABLE=10000 gate dimension checks (verdict_lib.php), never checked against a real outcome until now. This never changes that threshold itself.
| Liquidity tier (combined call+put volume) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| Mid (5k-50k) | 18 | 44.4% | +0.68% | sufficient |
Conviction calibration — Top Picks basket (paper ledger)
Same idea, from the forward-tracked Top Picks basket ledger (every basket entry/exit, whether or not it was ever real-money traded) instead of real fills — accumulates faster, but doesn't reflect real slippage/execution. This never changes any setting itself either.
By confidence
| Band (0-100) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| 60..70 | 4 | 25.0% | +0.04% | too few |
| 70..80 | 73 | 16.4% | -0.39% | sufficient |
| 80..90 | 36 | 27.8% | -0.05% | sufficient |
| 90..100 | 5 | 40.0% | -0.32% | too few |
By quality percentile
| Band (0-100) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| 10..20 | 2 | 0.0% | -15.81% | too few |
| 20..30 | 8 | 25.0% | -0.39% | sufficient |
| 30..40 | 9 | 22.2% | -0.29% | sufficient |
| 40..50 | 9 | 11.1% | -0.42% | sufficient |
| 50..60 | 8 | 0.0% | +0.00% | sufficient |
| 60..70 | 28 | 17.9% | +0.04% | sufficient |
| 70..80 | 11 | 36.4% | +0.09% | sufficient |
| 80..90 | 10 | 20.0% | +0.83% | sufficient |
| 90..100 | 15 | 20.0% | -0.02% | sufficient |
By choppiness
| Band (0-100) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| 0..10 | 39 | 30.8% | -0.86% | sufficient |
| 20..30 | 41 | 7.3% | +0.23% | sufficient |
By stability
| Band (0-100) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| 60..70 | 3 | 33.3% | -0.80% | too few |
| 70..80 | 2 | 0.0% | -0.06% | too few |
| 80..90 | 25 | 32.0% | +0.10% | sufficient |
| 90..100 | 19 | 26.3% | -1.22% | sufficient |
Raw pairs (confidence vs. quality, per closed position)
Same check as above, from the paper-ledger side.
| Symbol | Entered | Confidence | Quality | Return |
|---|---|---|---|---|
| SIRI | 2026-08-30 02:38 | 74 | 82 | +0.00% |
| PG | 2026-08-30 00:27 | 72 | 81 | +0.00% |
| DOW | 2026-08-29 22:58 | 71 | 81 | +0.00% |
| AMC | 2026-08-29 22:06 | 74 | 82 | +0.00% |
| SIRI | 2026-08-29 21:37 | 74 | 82 | +0.00% |
| UNP | 2026-08-29 21:02 | 74 | 81 | +0.00% |
| SNAP | 2026-08-29 20:25 | 81 | 93 | +0.00% |
| KEEL | 2026-08-29 19:17 | 71 | 81 | +0.00% |
| HTZ | 2026-08-29 19:05 | 73 | 82 | +0.00% |
| DOW | 2026-08-29 18:26 | 71 | 81 | +0.00% |
| SIRI | 2026-08-29 17:14 | 74 | 82 | +0.00% |
| PG | 2026-08-29 15:31 | 80 | 91 | +0.00% |
| HTZ | 2026-08-29 13:32 | 73 | 82 | +0.00% |
| BB | 2026-08-29 12:12 | 81 | 92 | +0.00% |
| AMC | 2026-08-29 11:56 | 85 | 94 | +0.00% |
| SIRI | 2026-08-29 11:33 | 74 | 82 | +0.00% |
| UNP | 2026-08-29 11:07 | 79 | 88 | +0.00% |
| PG | 2026-08-29 09:54 | 72 | 81 | +0.00% |
| KEEL | 2026-08-29 09:13 | 78 | 90 | +0.00% |
| HTZ | 2026-08-29 09:02 | 73 | 82 | +0.00% |
| DOW | 2026-08-29 08:18 | 71 | 81 | +0.00% |
| AMC | 2026-08-29 07:19 | 74 | 82 | +0.00% |
| SIRI | 2026-08-29 06:54 | 74 | 82 | +0.00% |
| UNP | 2026-08-29 06:30 | 74 | 81 | +0.00% |
| SNAP | 2026-08-29 05:52 | 81 | 93 | +0.00% |
| S | 2026-08-29 05:35 | 78 | 91 | +0.00% |
| PG | 2026-08-29 05:14 | 72 | 81 | +0.00% |
| CVX | 2026-08-28 23:49 | 81 | 86 | -0.20% |
| FNGR | 2026-08-28 22:28 | 77 | 55 | -10.19% |
| SIRI | 2026-08-28 22:08 | 84 | 81 | +0.11% |
Liquidity calibration — Top Picks basket (paper ledger)
Same idea, from the forward-tracked Top Picks basket ledger instead of real fills — accumulates faster, doesn't reflect real slippage/execution. This never changes VerdictLib's VOL_USABLE threshold itself.
| Liquidity tier (combined call+put volume) | Closed trades | Win rate | Avg return | Sample |
|---|---|---|---|---|
| Mid (5k-50k) | 78 | 17.9% | -0.31% | sufficient |
| High (50k+) | 2 | 50.0% | -0.08% | too few |
Order audit log
| Placed | Symbol | Resolved code | Side | Qty | Target $ | Status | Error | Action |
|---|---|---|---|---|---|---|---|---|
| 2026-08-30 04:38:15 | DOW | — | BUY | 0.0000 | $100.00 | resolve_failed | could not resolve a Trading212 instrument code for this symbol (it may not be tradeable on this account) | — |
| 2026-08-30 04:22:17 | KEEL | — | BUY | 0.0000 | $100.00 | resolve_failed | could not resolve a Trading212 instrument code for this symbol (it may not be tradeable on this account) | — |
| 2026-08-30 03:12:18 | AMC | AMC_CA_EQ | BUY | 38.6100 | $100.00 | pending_fill | — | |
| 2026-08-30 02:51:13 | KEEL | — | BUY | 0.0000 | $100.00 | resolve_failed | could not resolve a Trading212 instrument code for this symbol (it may not be tradeable on this account) | — |
| 2026-08-30 02:38:16 | SIRI | SIRI_US_EQ | BUY | 3.5039 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-30 02:01:16 | UNP | UNP_US_EQ | BUY | 0.5000 | $100.00 | pending_fill | — | |
| 2026-08-30 01:20:29 | KEEL | — | BUY | 0.0000 | $100.00 | resolve_failed | could not resolve a Trading212 instrument code for this symbol (it may not be tradeable on this account) | — |
| 2026-08-30 00:46:20 | S | S_US_EQ | BUY | 4.6425 | $100.00 | pending_fill | — | |
| 2026-08-30 00:27:17 | PG | PG_US_EQ | BUY | 0.6955 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 23:49:13 | KEEL | — | BUY | 0.0000 | $100.00 | resolve_failed | could not resolve a Trading212 instrument code for this symbol (it may not be tradeable on this account) | — |
| 2026-08-29 23:38:20 | HTZ | HTZ_US_EQ | BUY | 46.7290 | $100.00 | pending_fill | — | |
| 2026-08-29 22:58:17 | DOW | — | BUY | 0.0000 | $100.00 | resolve_failed | could not resolve a Trading212 instrument code for this symbol (it may not be tradeable on this account) | — |
| 2026-08-29 22:06:20 | AMC | AMC_CA_EQ | BUY | 38.6100 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 21:37:28 | SIRI | SIRI_US_EQ | BUY | 3.5039 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 21:02:25 | UNP | UNP_US_EQ | BUY | 0.5000 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 20:25:23 | SNAP | SNAP_US_EQ | BUY | 18.4162 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 19:05:26 | HTZ | HTZ_US_EQ | BUY | 46.7290 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 17:14:18 | SIRI | SIRI_US_EQ | BUY | 3.5039 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 15:31:16 | PG | PG_US_EQ | BUY | 0.6955 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 13:32:55 | HTZ | HTZ_US_EQ | BUY | 46.7290 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 12:14:27 | KEEL | — | BUY | 0.0000 | $100.00 | resolve_failed | could not resolve a Trading212 instrument code for this symbol (it may not be tradeable on this account) | — |
| 2026-08-29 12:12:17 | BB | BB_CA_EQ | BUY | 12.2549 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 11:56:18 | AMC | AMC_CA_EQ | BUY | 38.6100 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 11:33:13 | SIRI | SIRI_US_EQ | BUY | 3.5039 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |
| 2026-08-29 11:07:21 | UNP | UNP_US_EQ | BUY | 0.5000 | $100.00 | cancelled | cancelled: Top Picks basket direction flipped before this order confirmed | — |