Skip to main content

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

MetricWithout OllamaWith OllamaΔ
Total trades2217−5 trades skipped
Total PNL+52.22%+68.90%+16.68 pp
Winrate68%82%+14 pp
Wins / Losses15 / 714 / 3−4 losing trades
Sharpe Ratio+0.309+0.512+0.203
Profit factor2.736.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:
SignalResult
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:
SignalResult
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):
#SymbolOpened (UTC)Closed (UTC)HeldDirOpenClosePeakDDPNL%Exit
1SOLJan 05 07:13Jan 05 20:0912.9hLONG$135.23$139.10+2.42%−1.72%+2.45%take-profit
2NEARJan 06 08:46Jan 06 11:443.0hLONG$1.77$1.80+1.57%−0.59%+1.64%take-profit
3HYPEJan 06 09:59Jan 06 12:132.2hLONG$26.52$27.04+1.55%−1.41%+1.56%take-profit
4TRXJan 06 10:17Jan 11 00:06109.8hSHORT$0.2915$0.3027−0.32%−4.21%−4.24%stop-loss
5FARTCOINJan 06 10:43Jan 17 23:50277.1hSHORT$0.4401$0.3500+19.34%−7.64%+20.13%take-profit
6NEARJan 06 19:10Jan 06 20:471.6hLONG$1.76$1.80+1.66%−0.71%+1.81%take-profit
7NEARJan 07 13:28Jan 08 06:1516.8hLONG$1.76$1.69−0.38%−4.09%−4.26%stop-loss
8NEARJan 09 15:23Jan 12 13:4570.4hSHORT$1.69$1.66+1.19%−4.93%+1.28%take-profit
9PUMPJan 10 14:13Jan 14 16:1298.0hLONG$0.002381$0.002930+21.10%−5.42%+22.58%take-profit
10TRXJan 12 13:09Jan 15 17:0776.0hSHORT$0.2979$0.3099−0.29%−4.43%−4.45%stop-loss
11BTCJan 13 11:31Jan 13 15:594.5hLONG$92,202.22$93,400.00+0.81%−0.71%+0.90%take-profit
12HYPEJan 13 17:21Jan 13 22:144.9hLONG$24.46$25.19+2.44%−0.40%+2.59%take-profit
13SOLJan 15 13:55Jan 18 23:4681.8hLONG$145.20$139.10−0.14%−4.58%−4.59%stop-loss
14TRXJan 16 17:59Jan 17 14:1520.3hLONG$0.3080$0.3144+1.66%−0.61%+1.66%take-profit
15SOLJan 19 05:26Jan 20 08:0726.7hSHORT$133.50$130.40+1.88%−1.56%+1.93%take-profit
16POLJan 21 17:41Jan 21 19:592.3hLONG$0.1329$0.1376+3.11%−0.40%+3.12%take-profit
17TRXJan 22 09:16Jan 28 08:46143.5hSHORT$0.2999$0.2930+1.89%−4.00%+1.89%take-profit
18SOLJan 22 09:32Jan 25 16:0178.5hLONG$129.90$125.10+0.20%−4.05%−4.08%stop-loss
19POLJan 22 12:26Jan 23 14:0325.6hLONG$0.1340$0.1290+0.15%−4.11%−4.15%stop-loss
20FARTCOINJan 26 16:21Jan 31 14:28118.1hSHORT$0.2824$0.2300+17.97%−11.99%+18.20%take-profit
21SOLJan 28 22:15Jan 29 14:5916.7hLONG$125.46$120.50−0.13%−4.21%−4.34%stop-loss
22TRXJan 30 12:19Jan 31 20:4432.4hSHORT$0.2895$0.2867+1.29%−2.44%+0.58%time-exit
Statistics
MetricValue
Total trades22
Total PNL+52.22%
Wins / Losses15 / 7
Winrate68%
Mean trade PNL+2.374%
Std dev per trade7.676%
Sharpe Ratio (per-trade)+0.309
Max drawdown (single trade)−4.59%
Profit factor2.73
Expectancy per trade**+2.37(per2.37** (per 100 stake)

Trade Log With Ollama

All 17 trades executed when the Ollama LLM risk filter was active:
#SymbolOpened (UTC)Closed (UTC)HeldDirOpenClosePeakDDPNL%Exit
1SOLJan 05 07:13Jan 05 20:0912.9hLONG$135.23$139.10+2.42%−1.72%+2.45%take-profit
2NEARJan 06 08:46Jan 06 11:443.0hLONG$1.77$1.80+1.57%−0.59%+1.64%take-profit
3HYPEJan 06 09:59Jan 06 12:132.2hLONG$26.52$27.04+1.55%−1.41%+1.56%take-profit
4FARTCOINJan 06 10:43Jan 17 23:50277.1hSHORT$0.4401$0.3500+19.34%−7.64%+20.13%take-profit
5NEARJan 06 19:10Jan 06 20:471.6hLONG$1.76$1.80+1.66%−0.71%+1.81%take-profit
6NEARJan 09 15:23Jan 12 13:4570.4hSHORT$1.69$1.66+1.19%−4.93%+1.28%take-profit
7PUMPJan 10 14:13Jan 14 16:1298.0hLONG$0.002381$0.002930+21.10%−5.42%+22.58%take-profit
8BTCJan 13 11:31Jan 13 15:594.5hLONG$92,202.22$93,400.00+0.81%−0.71%+0.90%take-profit
9HYPEJan 13 17:21Jan 13 22:144.9hLONG$24.46$25.19+2.44%−0.40%+2.59%take-profit
10TRXJan 15 12:11Jan 15 22:3510.4hLONG$0.3055$0.3124+1.86%−0.49%+1.86%take-profit
11SOLJan 15 13:55Jan 18 23:4681.8hLONG$145.20$139.10−0.14%−4.58%−4.59%stop-loss
12TRXJan 16 17:59Jan 17 14:1520.3hLONG$0.3080$0.3144+1.66%−0.61%+1.66%take-profit
13SOLJan 19 05:26Jan 20 08:0726.7hSHORT$133.50$130.40+1.88%−1.56%+1.93%take-profit
14POLJan 21 17:41Jan 21 19:592.3hLONG$0.1329$0.1376+3.11%−0.40%+3.12%take-profit
15SOLJan 22 09:32Jan 25 16:0178.5hLONG$129.90$125.10+0.20%−4.05%−4.08%stop-loss
16POLJan 22 12:26Jan 23 14:0325.6hLONG$0.1340$0.1290+0.15%−4.11%−4.15%stop-loss
17FARTCOINJan 26 16:21Jan 31 14:28118.1hSHORT$0.2824$0.2300+17.97%−11.99%+18.20%take-profit
Statistics
MetricValue
Total trades17
Total PNL+68.90%
Wins / Losses14 / 3
Winrate82%
Mean trade PNL+4.053%
Std dev per trade7.918%
Sharpe Ratio (per-trade)+0.512
Max drawdown (single trade)−4.59%
Profit factor6.37
Expectancy per trade**+4.05(per4.05** (per 100 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.

Build docs developers (and LLMs) love