BotsfolioBotsfolio
Methodology

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.

Jay Sharma
Jay Sharma · Founder, Botsfolio
Published October 15, 2026
In short

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:

WhatWeightABCD
Yearly return (median start)30%25% or more15% or more5% or morebelow 5%
Against holding (median start, points a year)25%+10 or more0 or more-10 or morebelow -10
Biggest drop (median start)25%15% or less25% or less40% or lessmore than 40%
Worst start (total)20%0% or better-10% or better-25% or betterworse than -25%
Each score counts D = 0 to A = 3, blended by weight: A from 2.5, B from 1.75, C from 1.0, otherwise D.

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:

TestBar set before the runResult
Every monthly start since 2018Smaller biggest drop than holding in at least 90% of startsPassed
Coins the rules never sawSmaller drop on at least 90% of coins, better worst start on at least 75%Passed
1,000 random basketsSmaller drop than holding in at least 95% of basketsPassed
Timing, BTC and ETHBeat at least 95% of 500 random-timing versionsDid not pass
Timing, coins the rules never sawBeat the random-timing median on at least 75% of coinsDid not pass
Pre-registration prereg13.md, written and hashed on Oct 15, 2026 before anything ran (SHA-256 53cfd08a0d5e…). Data through Oct 8, 2026.

1. Every monthly start since 2018

PortfolioStartsSmaller dropBeat holdingYearlyHoldingWorst startHolding
BTC & ETH Cycle Trader94100%100%+33.6%+24.1%+14.5%-37.2%
BTC & ETH Trend Rider94100%52.1%+18.4%+24.1%-4.4%-37.2%
BTC & ETH Steady Trader94100%25.5%+10.1%+24.1%-1.9%-37.2%
Bitcoin Cycle Trader94100%60.6%+28.0%+32.7%-6.0%-31.2%
Every first of the month from Jan 2018, each held to Oct 8, 2026, after a 0.10% cost per trade. "Yearly" is the median start's yearly return; "worst start" is the total from the worst of all 94 starts. Holding = buying the same coins on the same day.
Start yearCycle TraderTrend RiderSteady TraderBitcoin 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%
Median yearly return of the starts in each year, against holding the same coins from the same starts.

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 aloneCoinsSmaller dropBetter worst startLost less than holdingMedian coin: yearlyHolding
Trend Rider rules169100%100%95.9%-10.0%-51.0%
Steady Trader rules169100%99.4%95.9%-0.6%-51.0%
169 Coinbase coins with at least three years of daily history, none of them used to set the rules' numbers. Each coin's median start, about 33 monthly starts per coin, 0.10% per trade. Median biggest drop -44% (Trend Rider rules) and -12% (Steady Trader rules) against -95% for holding.

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).

Note

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.

RealRandom timing: medianRandom timing: 95th percentileReal beats
BTC & ETH Trend Rider+17.5%/yr+8.7%/yr+21.5%/yr86.2% of 500
Median yearly return over every monthly start since 2018, 0.10% per trade. For a like-for-like comparison, the real and the random versions both trade only at the daily close here, which is why the real figure is a little below the start-date table's.

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 trade0.25% per trade0.50% per tradeHolding
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%
The same starts at three cost levels. 0.10% is what the portfolios are graded at. Drops barely move with fees; returns do, and more trading-heavy portfolios lose more.

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.

CutoffUnseen startsSetting chosen before the cutoffSame, every tuned setting offSetting in useHolding BTC and ETH
Oct 8, 202412+23.9%/yr, drop -31%+20.3%/yr+26.9%/yr, drop -19%-10.7%/yr, drop -61%
Jan 1, 202422+30.2%/yr, drop -23%+23.9%/yr+25.0%/yr, drop -21%+0.5%/yr, drop -60%
BTC & ETH Cycle Trader. The tuned setting re-chosen from 28 candidates using only data up to the cutoff, then run on the monthly starts after it, which it never saw, each held to Oct 8, 2026. Median start, 0.10% per trade.

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

PortfolioStartsYearlyHoldingBiggest dropHoldingWorst startHolding
Crypto Cycle Trader82 from Jan 2019+24.4%+23.5%-23%-71%+21.1%-25.8%
Altcoin Trend Rider82 from Jan 2019+20.7%+26.3%-28%-72%+8.1%-55.9%
Memecoin Trend Rider34 from Jan 2023+6.6%-32.4%-29%-88%-19.1%-83.4%
Baskets picked by their published rule as of each past date, from all 662 coins that traded on Binance, delisted coins included, through Oct 6, 2026. Median start, 0.10% per trade; holding = the same picks.

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

Educational analysis, not financial advice. Past performance does not predict future results.