Documentation Index
Fetch the complete documentation index at: https://mintlify.com/backtest-kit/backtest-ollama-crontab/llms.txt
Use this file to discover all available pages before exploring further.
The January 2026 backtest was run on the same parsed signal set drawn from a public Telegram channel, executed twice: once without the LLM gate (every parsed signal is traded) and once with the Ollama risk filter active (signals that return riskAction: "skip" are dropped before order entry). Both runs use identical entry logic — a position opens only when the live price falls inside the channel’s entry zone, with TP set to targets[2] and SL set to signal.stoploss. The side-by-side results make the concrete P&L impact of the Ollama filter visible in hard numbers.
Summary Comparison
| Metric | Without Ollama | With Ollama | Δ |
|---|
| Total trades | 22 | 17 | −5 trades skipped |
| Total PNL | +52.22% | +68.90% | +16.68 pp |
| Winrate | 68% | 82% | +14 pp |
| Wins / Losses | 15 / 7 | 14 / 3 | −4 losing trades |
| Sharpe Ratio | +0.309 | +0.512 | +0.203 |
| Profit factor | 2.73 | 6.37 | +3.64 |
| Expectancy per trade | +$2.37 | +$4.05 | +$1.68 |
Signals Vetoed by LLM
The LLM vetoed 6 signals in total. Of those, 4 were losers that the baseline run took as losses:
| Signal | Result |
|---|
| TRX SHORT — Jan 06 | −4.24% |
| NEAR LONG — Jan 07 | −4.26% |
| TRX SHORT — Jan 12 | −4.45% |
| SOL LONG — Jan 28 | −4.34% |
Total losses avoided by these four vetoes: −17.29%.
Two of the six skipped signals were winners that the Ollama run therefore missed:
| Signal | Result |
|---|
| TRX SHORT — Jan 22 | +1.89% |
| TRX SHORT — Jan 30 | +0.58% |
Cost of the two skipped winners: −2.47%. Net gain from filtering: +14.82%.
In addition, the Ollama run captured one trade that the baseline did not: TRX LONG Jan 15 → +1.86%. This signal arrived between the two back-to-back vetoed TRX SHORTs; the LLM recognised the reversal context and voted follow on the long rather than blocking it.
Trade Log Without Ollama
All 22 trades executed in the baseline run (no LLM gate):
| # | Symbol | Opened (UTC) | Closed (UTC) | Held | Dir | Open | Close | Peak | DD | PNL% | Exit |
|---|
| 1 | SOL | Jan 05 07:13 | Jan 05 20:09 | 12.9h | LONG | $135.23 | $139.10 | +2.42% | −1.72% | +2.45% | take-profit |
| 2 | NEAR | Jan 06 08:46 | Jan 06 11:44 | 3.0h | LONG | $1.77 | $1.80 | +1.57% | −0.59% | +1.64% | take-profit |
| 3 | HYPE | Jan 06 09:59 | Jan 06 12:13 | 2.2h | LONG | $26.52 | $27.04 | +1.55% | −1.41% | +1.56% | take-profit |
| 4 | TRX | Jan 06 10:17 | Jan 11 00:06 | 109.8h | SHORT | $0.2915 | $0.3027 | −0.32% | −4.21% | −4.24% | stop-loss |
| 5 | FARTCOIN | Jan 06 10:43 | Jan 17 23:50 | 277.1h | SHORT | $0.4401 | $0.3500 | +19.34% | −7.64% | +20.13% | take-profit |
| 6 | NEAR | Jan 06 19:10 | Jan 06 20:47 | 1.6h | LONG | $1.76 | $1.80 | +1.66% | −0.71% | +1.81% | take-profit |
| 7 | NEAR | Jan 07 13:28 | Jan 08 06:15 | 16.8h | LONG | $1.76 | $1.69 | −0.38% | −4.09% | −4.26% | stop-loss |
| 8 | NEAR | Jan 09 15:23 | Jan 12 13:45 | 70.4h | SHORT | $1.69 | $1.66 | +1.19% | −4.93% | +1.28% | take-profit |
| 9 | PUMP | Jan 10 14:13 | Jan 14 16:12 | 98.0h | LONG | $0.002381 | $0.002930 | +21.10% | −5.42% | +22.58% | take-profit |
| 10 | TRX | Jan 12 13:09 | Jan 15 17:07 | 76.0h | SHORT | $0.2979 | $0.3099 | −0.29% | −4.43% | −4.45% | stop-loss |
| 11 | BTC | Jan 13 11:31 | Jan 13 15:59 | 4.5h | LONG | $92,202.22 | $93,400.00 | +0.81% | −0.71% | +0.90% | take-profit |
| 12 | HYPE | Jan 13 17:21 | Jan 13 22:14 | 4.9h | LONG | $24.46 | $25.19 | +2.44% | −0.40% | +2.59% | take-profit |
| 13 | SOL | Jan 15 13:55 | Jan 18 23:46 | 81.8h | LONG | $145.20 | $139.10 | −0.14% | −4.58% | −4.59% | stop-loss |
| 14 | TRX | Jan 16 17:59 | Jan 17 14:15 | 20.3h | LONG | $0.3080 | $0.3144 | +1.66% | −0.61% | +1.66% | take-profit |
| 15 | SOL | Jan 19 05:26 | Jan 20 08:07 | 26.7h | SHORT | $133.50 | $130.40 | +1.88% | −1.56% | +1.93% | take-profit |
| 16 | POL | Jan 21 17:41 | Jan 21 19:59 | 2.3h | LONG | $0.1329 | $0.1376 | +3.11% | −0.40% | +3.12% | take-profit |
| 17 | TRX | Jan 22 09:16 | Jan 28 08:46 | 143.5h | SHORT | $0.2999 | $0.2930 | +1.89% | −4.00% | +1.89% | take-profit |
| 18 | SOL | Jan 22 09:32 | Jan 25 16:01 | 78.5h | LONG | $129.90 | $125.10 | +0.20% | −4.05% | −4.08% | stop-loss |
| 19 | POL | Jan 22 12:26 | Jan 23 14:03 | 25.6h | LONG | $0.1340 | $0.1290 | +0.15% | −4.11% | −4.15% | stop-loss |
| 20 | FARTCOIN | Jan 26 16:21 | Jan 31 14:28 | 118.1h | SHORT | $0.2824 | $0.2300 | +17.97% | −11.99% | +18.20% | take-profit |
| 21 | SOL | Jan 28 22:15 | Jan 29 14:59 | 16.7h | LONG | $125.46 | $120.50 | −0.13% | −4.21% | −4.34% | stop-loss |
| 22 | TRX | Jan 30 12:19 | Jan 31 20:44 | 32.4h | SHORT | $0.2895 | $0.2867 | +1.29% | −2.44% | +0.58% | time-exit |
Statistics
| Metric | Value |
|---|
| Total trades | 22 |
| Total PNL | +52.22% |
| Wins / Losses | 15 / 7 |
| Winrate | 68% |
| Mean trade PNL | +2.374% |
| Std dev per trade | 7.676% |
| Sharpe Ratio (per-trade) | +0.309 |
| Max drawdown (single trade) | −4.59% |
| Profit factor | 2.73 |
| Expectancy per trade | **+2.37∗∗(per100 stake) |
Trade Log With Ollama
All 17 trades executed when the Ollama LLM risk filter was active:
| # | Symbol | Opened (UTC) | Closed (UTC) | Held | Dir | Open | Close | Peak | DD | PNL% | Exit |
|---|
| 1 | SOL | Jan 05 07:13 | Jan 05 20:09 | 12.9h | LONG | $135.23 | $139.10 | +2.42% | −1.72% | +2.45% | take-profit |
| 2 | NEAR | Jan 06 08:46 | Jan 06 11:44 | 3.0h | LONG | $1.77 | $1.80 | +1.57% | −0.59% | +1.64% | take-profit |
| 3 | HYPE | Jan 06 09:59 | Jan 06 12:13 | 2.2h | LONG | $26.52 | $27.04 | +1.55% | −1.41% | +1.56% | take-profit |
| 4 | FARTCOIN | Jan 06 10:43 | Jan 17 23:50 | 277.1h | SHORT | $0.4401 | $0.3500 | +19.34% | −7.64% | +20.13% | take-profit |
| 5 | NEAR | Jan 06 19:10 | Jan 06 20:47 | 1.6h | LONG | $1.76 | $1.80 | +1.66% | −0.71% | +1.81% | take-profit |
| 6 | NEAR | Jan 09 15:23 | Jan 12 13:45 | 70.4h | SHORT | $1.69 | $1.66 | +1.19% | −4.93% | +1.28% | take-profit |
| 7 | PUMP | Jan 10 14:13 | Jan 14 16:12 | 98.0h | LONG | $0.002381 | $0.002930 | +21.10% | −5.42% | +22.58% | take-profit |
| 8 | BTC | Jan 13 11:31 | Jan 13 15:59 | 4.5h | LONG | $92,202.22 | $93,400.00 | +0.81% | −0.71% | +0.90% | take-profit |
| 9 | HYPE | Jan 13 17:21 | Jan 13 22:14 | 4.9h | LONG | $24.46 | $25.19 | +2.44% | −0.40% | +2.59% | take-profit |
| 10 | TRX | Jan 15 12:11 | Jan 15 22:35 | 10.4h | LONG | $0.3055 | $0.3124 | +1.86% | −0.49% | +1.86% | take-profit |
| 11 | SOL | Jan 15 13:55 | Jan 18 23:46 | 81.8h | LONG | $145.20 | $139.10 | −0.14% | −4.58% | −4.59% | stop-loss |
| 12 | TRX | Jan 16 17:59 | Jan 17 14:15 | 20.3h | LONG | $0.3080 | $0.3144 | +1.66% | −0.61% | +1.66% | take-profit |
| 13 | SOL | Jan 19 05:26 | Jan 20 08:07 | 26.7h | SHORT | $133.50 | $130.40 | +1.88% | −1.56% | +1.93% | take-profit |
| 14 | POL | Jan 21 17:41 | Jan 21 19:59 | 2.3h | LONG | $0.1329 | $0.1376 | +3.11% | −0.40% | +3.12% | take-profit |
| 15 | SOL | Jan 22 09:32 | Jan 25 16:01 | 78.5h | LONG | $129.90 | $125.10 | +0.20% | −4.05% | −4.08% | stop-loss |
| 16 | POL | Jan 22 12:26 | Jan 23 14:03 | 25.6h | LONG | $0.1340 | $0.1290 | +0.15% | −4.11% | −4.15% | stop-loss |
| 17 | FARTCOIN | Jan 26 16:21 | Jan 31 14:28 | 118.1h | SHORT | $0.2824 | $0.2300 | +17.97% | −11.99% | +18.20% | take-profit |
Statistics
| Metric | Value |
|---|
| Total trades | 17 |
| Total PNL | +68.90% |
| Wins / Losses | 14 / 3 |
| Winrate | 82% |
| Mean trade PNL | +4.053% |
| Std dev per trade | 7.918% |
| Sharpe Ratio (per-trade) | +0.512 |
| Max drawdown (single trade) | −4.59% |
| Profit factor | 6.37 |
| Expectancy per trade | **+4.05∗∗(per100 stake) |
Interpretation
The LLM risk filter worked through two distinct rules embedded in the system prompt of packages/core/src/logic/outline/risk.outline.ts:
Rule 1 — sleeping-coin SHORT. A SHORT signal is flagged for veto when avgRangePct (the coin’s average 1-minute candle range over a recent window) falls below 0.07%. TRX is a low-volatility stablecoin-adjacent asset whose price moves in very narrow bands during quiet periods. Both the Jan 06 and Jan 12 TRX SHORT signals arrived when TRX was trading in exactly this thin-range regime — the LLM correctly identified that thin liquidity above a range low makes stop-hunt conditions more likely than a genuine breakout to target. NEAR SHORT signals were caught by the same rule. All four vetoed losers share this characteristic.
Rule 2 — knife-catching LONG. A LONG signal is vetoed when momentum24hPct (the 24-hour price momentum) is below −1%, indicating that the asset is in active downtrend. The SOL LONG vetoed on Jan 28 arrived after SOL had already been sliding for several days; the NEAR LONG vetoed on Jan 07 came in as NEAR momentum was negative. In both cases the LLM returned riskAction: "skip" because buying into a falling knife without momentum confirmation is a defined risk pattern in the outline.
Why two winners were still missed. The two skipped TRX SHORT signals from Jan 22 and Jan 30 (which were profitable at +1.89% and +0.58%) did not trigger either rule: TRX’s avgRangePct was above the 0.07% threshold at the time those signals arrived, and direction was SHORT so Rule 2 did not apply. No rule in the current outline catches late-January TRX SHORT signals, which is a known limitation of threshold-based filtering.
The backtest covers January 2026 data only, on signals from a single channel. Rule thresholds (avgRangePct < 0.07%, momentum24hPct < -1%) were tuned to match the patterns documented in the channel analysis; they are adjustable without recompiling any package — they live in the outline prompt text.
These results come from a single month (January 2026) on one public Telegram signal channel. A one-month sample is not sufficient to draw conclusions about the long-term statistical edge of either the underlying signals or the Ollama filter. Past results on historical data do not guarantee the same outcome on future signal sets, different market regimes, or different channels. Use this data as an illustration of the filtering mechanism, not as a performance guarantee.