Botsfolio AI Portfolios: How the Track Record Is Tested
What the numbers on the track record mean, how a backtest grade is earned, and the stress tests behind the portfolios, including the one they didn't pass.
Every Botsfolio AI portfolio is measured against the simplest alternative: buying and holding the same coins on the same day. Its backtest runs the same rules from every monthly start since 2018, not one flattering start, after a 0.10 percent cost on every trade. Its A-to-D grade weighs return, the gap to holding, the biggest drop and the single worst start, so one lucky stretch can't carry it. Before publishing, we wrote down five stress tests and the bar each had to clear, hashed the file, then ran them on the code the portfolios trade with. The BTC and ETH portfolios fell less than holding from every monthly start since 2018, and the same rules fell less than holding on every one of 169 other coins and in 1,000 random baskets of them. A random-timing test did not pass, and we publish that too. The rules themselves are not public; every trade the portfolios make is.
What we publish
- The live record. Each portfolio from its first day, valued at every daily close (00:00 UTC) on Coinbase prices, after a 0.10 percent cost per trade. Botsfolio AI trades these portfolios with paper money at real market prices.
- Buy and hold. The same coins bought on the portfolio's first day with the same money, held. It is the benchmark for every number on this page.
- The backtest. The same rules run on the past from every monthly start, shown next to holding.
- Two grades. A backtest grade from the history, and a live grade from the portfolio's own record once it is six months old.
What we don't publish is how the portfolios decide. That stays private. The results don't: every order each portfolio places is listed on its live page as it happens.
Data
- Prices: Coinbase Advanced Trade daily candles, the same public series anyone can download.
- Baskets with delisted coins: Binance daily candles for every USDT pair that ever traded, including coins that were later delisted, so a basket backtest can't quietly skip the coins that died.
- Valuation: every portfolio and every backtest is valued at the 00:00 UTC daily close.
Costs
Every buy and every sell pays 0.10 percent in the backtest and in the live record. Each portfolio's page also shows the backtest with no costs, and the stress test below re-runs the main portfolios at 0.25 and 0.50 percent.
The backtest: every start, not the best one
A backtest that starts on one chosen day can make almost anything look good. Ours starts on the first day of every month from January 2018 (or from the month at least half of the portfolio's coins have a year of history), and each start is held to the latest close, at least a year. A portfolio's backtest is the spread of all those outcomes: the median start, the best, the worst, and how often it beat holding.
- At least 12 starts are needed for a grade. A coin that is too new to give that many still gets a backtest, built on the history there is and marked as such, but no grade.
- Coins that were listed later join only the starts after their first close; earlier starts split the money over the coins that existed.
- Baskets (portfolios that pick their coins by a published rule) are backtested point in time: at each past date the basket is picked from the coins as they stood that day, delisted coins included.
The grade (A to D)
The backtest grade is computed from all the starts above, after costs. Four things are scored A to D and blended:
| What | Weight | A | B | C | D |
|---|---|---|---|---|---|
| Yearly return (median start) | 30% | 25% or more | 15% or more | 5% or more | below 5% |
| Against holding (median start, points a year) | 25% | +10 or more | 0 or more | -10 or more | below -10 |
| Biggest drop (median start) | 25% | 15% or less | 25% or less | 40% or less | more than 40% |
| Worst start (total) | 20% | 0% or better | -10% or better | -25% or better | worse than -25% |
Two rules sit on top. A portfolio that lost money can never earn an A, even when holding lost more. A portfolio that lost money and did worse than holding is always a D.
The live grade uses the same scale on the portfolio's own record: its yearly return so far, its gap to holding, its biggest drop, and its deepest dip below the starting money. It appears after 180 days. Until then the live grade reads "building". Both grades describe a record. Neither is a recommendation or a forecast.
Stress tests, set before the run
In October 2026 we wrote down five tests and the bar each one had to clear, hashed the file, and only then ran them, on the same code the portfolios trade with. Here are the results as they came out:
| Test | Bar set before the run | Result |
|---|---|---|
| Every monthly start since 2018 | Smaller biggest drop than holding in at least 90% of starts | Passed |
| Coins the rules never saw | Smaller drop on at least 90% of coins, better worst start on at least 75% | Passed |
| 1,000 random baskets | Smaller drop than holding in at least 95% of baskets | Passed |
| Timing, BTC and ETH | Beat at least 95% of 500 random-timing versions | Did not pass |
| Timing, coins the rules never saw | Beat the random-timing median on at least 75% of coins | Did not pass |
1. Every monthly start since 2018
| Portfolio | Starts | Smaller drop | Beat holding | Yearly | Holding | Worst start | Holding |
|---|---|---|---|---|---|---|---|
| BTC & ETH Cycle Trader | 94 | 100% | 100% | +33.6% | +24.1% | +14.5% | -37.2% |
| BTC & ETH Trend Rider | 94 | 100% | 52.1% | +18.4% | +24.1% | -4.4% | -37.2% |
| BTC & ETH Steady Trader | 94 | 100% | 25.5% | +10.1% | +24.1% | -1.9% | -37.2% |
| Bitcoin Cycle Trader | 94 | 100% | 60.6% | +28.0% | +32.7% | -6.0% | -31.2% |
| Start year | Cycle Trader | Trend Rider | Steady Trader | Bitcoin Cycle Trader |
|---|---|---|---|---|
| 2018 | +43.5% vs +29.7% | +33.6% vs +29.7% | +14.0% vs +29.7% | +44.0% vs +33.7% |
| 2019 | +57.0% vs +43.4% | +34.3% vs +43.4% | +14.1% vs +43.4% | +44.6% vs +40.2% |
| 2020 | +52.7% vs +42.0% | +34.3% vs +42.0% | +14.2% vs +42.0% | +35.7% vs +39.6% |
| 2021 | +23.5% vs +6.7% | +13.2% vs +6.7% | +7.3% vs +6.7% | +18.8% vs +10.9% |
| 2022 | +30.0% vs +21.3% | +16.8% vs +21.3% | +9.3% vs +21.3% | +26.1% vs +30.5% |
| 2023 | +32.2% vs +25.6% | +18.7% vs +25.6% | +10.4% vs +25.6% | +27.5% vs +38.4% |
| 2024 | +23.4% vs +2.3% | +9.7% vs +2.3% | +4.4% vs +2.3% | +7.9% vs +11.6% |
| 2025 | +26.9% vs -10.7% | +7.1% vs -10.7% | +2.7% vs -10.7% | -0.4% vs -14.5% |
Passed. Every portfolio fell less than holding from every one of the 94 starts. On return the portfolios differ: BTC & ETH Cycle Trader beat holding from 100% of starts; Steady Trader, built for the smallest drops, trailed holding on return from most of them.
2. Coins the rules never saw
The rules were designed using nine coins: BTC, ETH, SOL, ADA, DOGE, LTC, LINK, AVAX and ZEC. On those, a backtest is partly in-sample. So we ran the same rules on every other coin on Coinbase with at least three years of daily history, one coin at a time, from every monthly start. Stablecoins and staking tokens that track ETH or SOL are left out. None of these coins was used to set any of the rules' numbers.
| On each coin alone | Coins | Smaller drop | Better worst start | Lost less than holding | Median coin: yearly | Holding |
|---|---|---|---|---|---|---|
| Trend Rider rules | 169 | 100% | 100% | 95.9% | -10.0% | -51.0% |
| Steady Trader rules | 169 | 100% | 99.4% | 95.9% | -0.6% | -51.0% |
Passed. On coins the rules were never designed on, they fell less than holding on 100% of coins and lost less than holding on 95.9% of them. Most of these coins fell hard after they were listed, so "lost less" is the honest word: the median coin returned -10.0% a year with the Trend Rider rules, against -51.0% for holding it, and the rules made money on 27.2% of these coins. Protection carries across coins; profit depends on the coin.
A stricter cut, decided after the run: 11 of these coins (ALGO, ATOM, BCH, DASH, DOT, ETC, NEAR, SHIB, UNI, XLM, XRP) appeared in earlier checks that decided which rules to keep. Without them, on the 158 coins left, the rules fell less than holding on 100% of coins and lost less than holding on 96.8% (median coin -11.6% a year against -52.4% for holding).
This test only includes coins still listed on Coinbase. Coins that died are missing, and holding a dead coin loses nearly everything, so leaving them out flatters holding, not the portfolios. The basket backtests further down include delisted coins.
3. Random baskets of unseen coins
Most people hold more than one coin, and a basket can behave differently from its parts. We drew 1,000 random three-coin baskets from the same unseen coins and ran each one from every monthly start.
Passed. 1,000 baskets of 3 coins drawn at random from the same unseen coins: a smaller drop than holding in 100% of baskets (median -39% against -92%), a better return in 99.8% and a better worst start in 100%.
4. Timing
A portfolio can beat holding for a dull reason: it simply held less while the coin fell. To check for that, we kept each portfolio's own day-by-day pattern of how much it held, and slid that whole pattern to a random point in the same history, 500 times for BTC and ETH and 200 times for each unseen coin. Each random version is invested for the same share of the time and trades as often. Only the timing changes. If the real record doesn't clearly beat its random versions, the timing itself isn't proven.
| Real | Random timing: median | Random timing: 95th percentile | Real beats | |
|---|---|---|---|---|
| BTC & ETH Trend Rider | +17.5%/yr | +8.7%/yr | +21.5%/yr | 86.2% of 500 |
Did not pass. On BTC and ETH the real timing earned 2.0 times the random-timing median and beat 86.2% of the random versions, short of the 95% bar. On the 169 unseen coins it beat the random median on 59.8% of coins (bar: 75%). The protection in the tests above is real, but this test can't show that the exact trading days, rather than the overall pattern of trading, produce it. So we don't claim proven timing skill. We publish the result because we said we would before running it.
5. Fees
| Yearly return (median start) | 0.10% per trade | 0.25% per trade | 0.50% per trade | Holding |
|---|---|---|---|---|
| BTC & ETH Cycle Trader | +33.6% (beat holding 100%) | +30.3% (beat holding 100%) | +25.1% (beat holding 80.9%) | +24.1% |
| BTC & ETH Trend Rider | +18.4% (beat holding 52.1%) | +15.5% (beat holding 46.8%) | +11.0% (beat holding 29.8%) | +24.1% |
| BTC & ETH Steady Trader | +10.1% (beat holding 25.5%) | +8.7% (beat holding 25.5%) | +6.4% (beat holding 20.2%) | +24.1% |
Earlier tests we cite
These two ran on October 9, 2026, with the same production code, before this page was planned.
Time holdout for the tuned setting
BTC & ETH Cycle Trader has one setting that was tuned on history. To check that it wasn't simply fit to the past, we re-chose it from 28 candidates using only data up to a cutoff, then ran the result on the starts after the cutoff, which it had never seen. We did this for two cutoffs. We ran it once more with every other tuned setting switched off as well.
| Cutoff | Unseen starts | Setting chosen before the cutoff | Same, every tuned setting off | Setting in use | Holding BTC and ETH |
|---|---|---|---|---|---|
| Oct 8, 2024 | 12 | +23.9%/yr, drop -31% | +20.3%/yr | +26.9%/yr, drop -19% | -10.7%/yr, drop -61% |
| Jan 1, 2024 | 22 | +30.2%/yr, drop -23% | +23.9%/yr | +25.0%/yr, drop -21% | +0.5%/yr, drop -60% |
Whichever value the earlier data picked, it beat holding BTC and ETH on the unseen years by a wide margin, with less than half of holding's biggest drop.
Baskets with delisted coins
| Portfolio | Starts | Yearly | Holding | Biggest drop | Holding | Worst start | Holding |
|---|---|---|---|---|---|---|---|
| Crypto Cycle Trader | 82 from Jan 2019 | +24.4% | +23.5% | -23% | -71% | +21.1% | -25.8% |
| Altcoin Trend Rider | 82 from Jan 2019 | +20.7% | +26.3% | -28% | -72% | +8.1% | -55.9% |
| Memecoin Trend Rider | 34 from Jan 2023 | +6.6% | -32.4% | -29% | -88% | -19.1% | -83.4% |
Across all three baskets the biggest drop was a fraction of holding's. On return the results are mixed and shown as they are.
Ideas we tested and dropped
Most ideas don't survive. Before the current rules were fixed we also tested, on the same history, and dropped: macro signals (money supply, market liquidity, the Nasdaq, Bitcoin's share of the crypto market), pausing after a winning streak, rotating baskets of trading setups, and trading the top 20 or 30 coins by volume. None of them held up.
The live record is the forward test
The rules the Botsfolio AI portfolios trade with were fixed on October 8, 2026. Every daily close since then is a result on data the rules had never seen, and it is public: each portfolio's live page lists every order. That record is still short, which is why the live grade waits for 180 days. When the live record and the backtest disagree, the live record is the one that counts.
Limitations we take seriously
- In-sample on the design coins. On BTC, ETH and the other seven design coins, the backtest is partly in-sample. The unseen-coin, basket and holdout tests are the out-of-sample evidence; the live record is the forward evidence.
- Timing is not proven. The random-timing test did not clear its bar.
- Protection is not profit. On many unseen coins the portfolios lost money, only far less than holding.
- Medians hide the spread. That is why the worst start is shown everywhere and weighs a fifth of the grade.
- Paper money. The live record trades paper money at real Coinbase prices. Real orders can fill at slightly different prices, and very small accounts hit exchange minimums.
- Fees differ by exchange. Above 0.10 percent per trade the returns fall, and faster for portfolios that trade more.
- Two cycles of history. Since 2018 crypto has been through roughly two full boom-and-bust cycles. A market that behaves differently could give different results.
Not investment advice
Botsfolio publishes historical results and the record of its own AI-traded portfolios. We don't give investment advice, don't issue trade signals, and don't tell anyone to buy or sell anything. Past results don't predict future ones.
Changelog
- 2026-10-15: First publication, with the results of the five pre-registered stress tests (data through October 8, 2026) and the two earlier tests they cite.
Related
- Track record: every Botsfolio AI portfolio
- Watch Botsfolio AI trade live
- How setups are backtested (SPI methodology)
Educational analysis, not financial advice. Past performance does not predict future results.