Testing our own signals
Maths double-checked · we ran every number twice, from the original data both times, and got the same answers. Nobody outside this lab has checked it.

This page in one lineCharlie Quant Lab is this website, and it publishes its own buy and sell signals. This page tests them against thousands of fake versions that pick their days at random. The short answer: the fakes did about as well.

Do Our Trading Signals Beat Random Timing?

Charlie’s six-reading rule made -3.4% while holding Bitcoin made -14.5% from 2026-01-20 to 2026-10-09. That period was deliberately hidden while the rule was being built, the way you would sit an exam on questions you had never seen. Then we made 1,000 fake versions of the rule. Each fake keeps the same prices and the same number of days holding Bitcoin, and changes only one thing: the days are picked at random instead of by the rule. 32 of every 100 fakes did as well as the real rule or better. We decided before testing that fewer than 10 in 100 would count as real skill, so 32 fails that bar by a wide margin. The rule cannot yet be separated from luck. The Alpha Tracker’s 493 short-term calls won 57% of the time, but they were made on only 35 separate days, so guessing at random once a day matches that record 22 times in 100.

Random versions that did as well32 of every 100We built 1,000 fake versions that keep the same prices and the same number of days invested, and pick the days at random instead. Fewer than 10 in 100 would have counted as real skill
Mixes that beat holding Bitcoin41 of 63There are six readings, so there are 63 ways to pick a set of them. We tried all 63. Beating holding is not the same as beating random timing, which the next card answers
Readings that stood up to retesting1 of 6We rebuilt the history 600 different ways by shuffling 30-day chunks. A reading only counts if it stayed helpful in nearly all 600 rebuilds rather than flipping between helping and hurting
Separate days behind the call record35493 calls published, 57% won
Famous signals that beat luck0 of 4Under 10 in 100 random matches, from 2018

First, what is being tested?

Charlie publishes a simple rule. Each day it looks at six market readings, each squeezed onto a fixed scale from -1 to +1 using rules set in advance: whether Bitcoin sits above its own average price of the last 200 days (Bitcoin trend), how technology shares moved over the last month (Technology shares), how the US dollar moved (US dollar, flipped so a weaker dollar counts as positive), how nervous the stock market looks (Equity stress, flipped), how fast the supply of stablecoins is growing (Stablecoin supply; stablecoins are digital dollars, coins built to stay worth one dollar), and how much traders are paying to hold Bitcoin futures (Futures cost, flipped; futures are contracts that bet on the price without owning the coin). The six are averaged. If the average is above zero the rule holds Bitcoin the next day; otherwise it sits in cash. A small fee is charged every time it switches. The chart follows $100 through the test period, the later 40% of the history, which was kept aside while the rule was built.

Drag the chart sideways to see the rest of it

$60$70$80$90$100$110Jan 26Feb 26Mar 26Apr 26May 26Jun 26Jul 26Aug 26Oct 26Oct 26The ruleJust holding Bitcoin

The rule was in the market 36% of the days and switched 10 times. Fee charged per switch: 0.10%.

What this meansThe rule finished at $97 and holding finished at $86. That is a gap of +11.1 points. The rest of this page asks whether a gap like that means anything.

How many real decisions was that?

The test period has 183 trading days, and the rule changed its mind only 10 times in that stretch. Separately, each of the six readings is judged on what Bitcoin did over the following 30 days. Those 30-day windows overlap like a sliding door: two windows one day apart share 29 of their 30 days, so they are almost the same bet counted twice. The whole history holds 427 such windows, which sounds like a lot. But each 30-day window shares 29 days with the next one, so divide by 30: that is about 14 windows that do not overlap. The test period holds 153 windows, which is about 5 that do not overlap. Those smaller numbers are the honest ones.

Drag the chart sideways to see the rest of it

0100200300400500183Test days10Times therule switched42730-day windows,whole history14Separate windows,whole history5Separate windows,test only

Big-looking counts shrink to small counts once overlap is removed.

What this meansA record built on 10 decisions is a short record. Nothing here is wrong, but the honest sample size is the small bars, not the big ones.

What this does not mean. A small number of decisions does not make the rule bad. It means the evidence is thin, so the next tests matter more.

If 1,000 fake versions picked their days at random, how many would beat holding by as much?

This is the test that matters most, and here is why it is fair. The rule only ever chooses one thing: when to be in the market. So freeze everything else and scramble only that one choice. If randomly chosen days earn the same money, then the choosing was never what earned it. Keep the exact same prices. Keep the exact same number of days in and out of the market. Only shuffle when those in-and-out stretches happen, in blocks of 30 days so the pretend versions still look like real rules. Do that 1,000 times and see where the real result lands.

Drag the chart sideways to see the rest of it

-20%+0%+20%+40%The real rule: +11.1 ptsResult minus holding Bitcoin, in percentage points

Each bar counts fake versions of the rule. Shaded area: the 32% who did as well as the real rule or better. The typical fake version landed at +2.5 points.

What this means32 of every 100 random versions matched the real rule, against the 10 in 100 we set as the bar beforehand. When random guessing gets there that often, the result is not evidence of skill yet. It is not proof the rule is bad either. It means we cannot tell.

What this does not mean. This does not say the rule will beat luck next year. It only says how special the past result was.

Would a different mix of the same six ingredients also have worked?

If a recipe only works with exactly these six ingredients and no others, that is a warning sign: it may have been tuned to the past. So every possible mix was tried, from one reading alone up to all six together. That is 63 recipes.

Drag the chart sideways to see the rest of it

-20%-10%+0%+10%+20%+30%All six together: +11.1 ptsResult minus holding Bitcoin for each of the 63 recipes

41 of 63 recipes beat holding Bitcoin. The published all-six recipe ranks 23 of 63. Best recipe: US dollar + Stablecoin supply + Futures cost at +28.7 pts. Worst: Technology shares + Stablecoin supply + Futures cost at -21.8 pts.

What this means41 of 63 mixes beat holding, a modest majority, so the idea is not hanging on one lucky combination; but 22 mixes lost to holding, and the published recipe sits at rank 23, so which ingredients you include still matters a lot.

What this does not mean. Coming 23 out of 63 mixes is not the same as beating random timing. The shuffle chart above is the test that matters, and this one does not replace it. Also worth knowing: Bitcoin fell over this period and the rule sat out of the market for much of it, so time in cash helped every mix. Even with that help only 41 of the 63 beat holding, which is about half.

Does each ingredient have a real edge on its own?

For each reading, look at what Bitcoin did over the next 30 days when the reading was positive, compared with when it was negative, using only the training part of the history. The dot is that difference. The bar is the range you get when the history is rebuilt from its own 30-day chunks 600 times (resampling). If the bar crosses zero, the edge could easily be nothing. A reading also fails if it spent fewer than 40 days on one side, because then one side is barely measured.

Drag the chart sideways to see the rest of it

Equity stress+3.5 pts · 133 up days, 111 down daysUS dollar+7.7 pts · 147 up days, 97 down daysTechnology shares-11.5 pts · 172 up days, 72 down daysStablecoin supply+1.2 pts · 203 up days, 41 down daysBitcoin trend-2.0 pts · 223 up days, 21 down daysFutures cost+4.9 pts · 19 up days, 225 down days-20 pts-10 pts0 pts10 pts20 pts

Colour key: green means the whole range sits above zero, so that reading helped; gold means the range crosses zero, so we cannot tell which way that reading goes. pts means percentage points. The day counts show how often each reading was positive and negative in training.

What this means1 of the six readings pass. The others might be real, but the history is too short to say. Bitcoin trend, Futures cost spent fewer than 40 training days on one side, so their bars rest on very little. One thing that is not a short-history problem: “Technology shares” has a measured edge of -11.5 points across 172 up days and 72 down days. The rule treats a high reading there as a good sign, but the middle of that measurement points the other way: Bitcoin did worse after it was high. Its range still crosses zero, so the direction is not settled. What we can say is that this one is not merely unmeasured like the others, it is leaning against the rule, and it is worth rebuilding before the next test.

What this does not mean. A reading whose bar crosses zero is not useless. It is unproven, which is a different thing.

Are the Alpha Tracker’s quick calls better than random guessing?

The Alpha Tracker is Charlie’s public list of short-term trading calls, each saying a small coin will rise or fall over the next hours or days. It has 493 finished calls, published between 2026-09-05 and 2026-10-09, and 57% of them ended in the direction they predicted (a bet on a fall counts as a win if the price fell). That sounds strong. But the calls were published on only 35 separate days, and calls made on the same day tend to win or lose together. So two 50-50 guesses are shown: one where the coin is flipped for every call, and one where it is flipped once per day.

Drag the chart sideways to see the rest of it

Charlie’s calls57% wonGuessing at random, every call50%, range 46–54%Guessing at random, once a day50%, range 35–65%+0%+20%+40%+60%

Guessing separately on every call reaches 57% basically never, fewer than once in 1,000 tries. But the calls were only made on a handful of days, and calls from the same day tend to win or lose together. Guessing once a day instead reaches it 22 times in 100, which is the fair comparison. Typical finished call: +1.3%.

What this meansAgainst guessing on every call the record looks good. Against guessing once a day, which is the honest comparison because the calls cluster on a few days, it reaches 22 in 100. That is the same bar we judged the rule by, and 22 fails it too. More separate days are needed before the record means much.

What this does not mean. This does not say the calls were bad. Most ended slightly positive. It says the record is young.

Do the famous Bitcoin signals beat luck over a longer history?

Charlie’s own rule only has a few years of history. Four well-known Bitcoin readings go back further, so each was turned into a simple rule fixed in advance, run from 2018 or from the first day the rule could be computed (each needs a run-up of past readings before its first day), with the same 0.10% switching fee, and put through the same shuffle test: keep the prices, shuffle when the rule was in and out, 1,000 times. The rules are as simple as they sound: for the three readings that measure how cheap or how crowded Bitcoin is, hold Bitcoin only when the reading is below its own middle value of the past year; for exchange flows, hold only when more coins left exchanges than arrived over the last 30 days. The bar is the share of pretend versions (the shuffled ones) that did as well as the real rule. Short bars are good. Each rule’s start year is shown in its label.

Drag the chart sideways to see the rest of it

Coins leaving exchanges (from 2018)23 in 100 · rule +316% vs holding +525% over the same 3,200 daysCrowd not long (from 2020)27 in 100 · rule +123% vs holding +266% over the same 2,109 daysCheap by MVRV (from 2018)95 in 100 · rule -44% vs holding +931% over the same 3,115 daysCheap by NUPL (from 2018)99 in 100 · rule -65% vs holding +931% over the same 3,115 days+0%+20%+40%+60%+80%+100%

Important: each rule can only be tested on the days its own reading exists, and those are different SETS of days, not just different counts. Two rules can both start in 2018 and still show very different holding-Bitcoin totals, because missing even a handful of the largest single days changes a compounded total enormously. So the holding figure beside each bar is holding Bitcoin over that rule's own days. Compare a rule with the holding figure on its own row, never across rows. Cheap by MVRV: MVRV (market value against realised value, here as a standardised score) compares Bitcoin’s price with the price coins last moved at. Low means holders could not sell for much more than they paid, which people read as cheap. Cheap by NUPL: The share of all Bitcoin value that is unrealised profit. Low means few holders are in profit, which people also read as cheap. Coins leaving exchanges: Whether more Bitcoin is being moved off exchanges than onto them over the last 30 days. Coins leaving is read as holders putting them away rather than selling. Crowd not long: How many futures traders are betting on a rise versus a fall. Fewer bets on a rise than usual is read as room for the price to climb.

What this means“Coins leaving exchanges” has the lowest number of the four at 23 of every 100, but the bar is 10 in 100, so it fails by the same wide margin the others do. Its chart is shown below only because it is the least bad, not because it worked. It beat holding in 3 of 9 calendar years. None of the four gets under 10 in 100, the line this page treats as worth taking seriously, and all four finished behind simply holding Bitcoin over their own history. Long histories make famous signals look ordinary.

What this does not mean. Beating luck in the past is not a forecast. Some of these readings are widely watched now, which can change how they behave.

What did $100 do under “Coins leaving exchanges”?

The rule’s path against simply holding Bitcoin from 2018-01-01 to 2026-10-05. The rule was in the market 48% of the days and switched 169 times.

Drag the chart sideways to see the rest of it

$0$200$400$600$800Jan 18Feb 19Mar 20Apr 21May 22Jun 23Jul 24Sep 25Oct 26Rule: Coins leaving exchangesJust holding Bitcoin

Both lines start at $100. Where the rule line is flat, the rule was in cash. Both lines cover the same 3,200 days, the days this reading exists for, so they are a fair comparison with each other.

What this meansThe rule finished 209 points behind simply holding, so holding won. It sat in dollars instead of Bitcoin on 52% of the days, and Bitcoin rose during too many of those. It switched 169 times, and every switch cost a fee. This was the hardest of the four for random guessing to match, which is not the same as working: all four lost to simply holding.

What this does not mean. A calm-looking line can hide years of falling behind. Check the year-by-year table below before drawing conclusions.

Did each signal work every year, or only in one?

For each calendar year, the rule’s return (how much money grew or shrank) minus the return from just holding Bitcoin, in percentage points. Where a cell says the rule made no move all year, it never switched position from January to December, so there was no decision to judge that year. Where it says there is not enough of the year, we did not have enough trading days to score it. Positive years are years the rule was ahead.

Drag the chart sideways to see the rest of it

Signal201820192020202120222023202420252026Years ahead
Cheap by MVRV-2 pts-57 pts-246 pts-42 ptsmade no move all year-129 pts-93 pts-7 pts+6 pts1 of 9
Cheap by NUPL-2 pts-57 pts-258 pts-61 ptsmade no move all year-129 pts-94 pts-13 pts-6 pts0 of 9
Coins leaving exchanges+80 pts-8 pts-287 pts-60 pts+45 pts-121 pts-77 pts-1 pts+28 pts3 of 9
Crowd not longnot enough of the year to saynot enough of the year to saynot enough of the year to say-55 pts+31 pts-40 pts-97 pts+17 pts+11 pts3 of 6
What this meansSignals that beat holding in most years are doing steady work. Signals whose whole advantage sits in one crash year are really a single lucky call.

What this does not mean. A year the rule lost to holding is not a failure of the signal; a signal that keeps you out of Bitcoin in a boom year will always lose that year.

What should you do with this?

Two kinds of reader use this page. One runs money for other people and has rules to follow. The other is deciding about their own savings. The same evidence leads to different actions.

If you run money for others

Funds, trading teams, the people who manage a company’s cash, research teams.

  • The shuffle test puts the rule below 10 in 100Treat the rule as a candidate for a small, closely watched share of the portfolio. Ask for the same test to be re-run every quarter.
  • The shuffle test sits above 10 in 100Do not put money behind it yet. Keep it on the list of ideas to watch and ask for a longer record on fresh data before deciding.
  • A reading’s range crosses zeroDo not let that reading drive a risk decision on its own. Use it only alongside readings whose range is settled.

If it is your own money

Anyone deciding what to do with their own savings.

  • You were about to copy a published signalFirst ask how many separate decisions sit behind it. If the answer is under 20, treat it as a story, not a plan.
  • Someone quotes a hit rateAsk on how many different days the calls were made. Twenty calls on two days is two bets, not twenty.
  • You still want to follow the ruleUse money you could lose without changing your life, and write down today what would make you stop.

The conclusion

What this page is

A luck test for Charlie’s own published signals: the six-reading rule and the Alpha Tracker call record.

Why it matters

Almost every trading record on the internet is shown without asking how a random guesser would have done. Without that comparison a good-looking number proves nothing.

How it is useful

It gives you three questions to ask of any signal, anywhere: how many separate decisions, how many random versions did as well, and does the edge survive resampling.

The six-reading rule cannot yet be separated from luck: 32 in 100 random versions did as well. The call record is honest but young: 35 days is not yet a track record.

Words used on this page

Every technical word above is explained again here, in plain English.

  • MVRVCompares Bitcoin’s market price with the average price at which coins last moved. High means holders could sell for far more than they paid.
  • In cashHolding dollars instead of Bitcoin, so the price of Bitcoin no longer matters until the rule goes back in.
  • ExchangeA marketplace where people buy and sell coins. Coins are usually moved there to be sold.
  • NUPLNet unrealised profit or loss: the share of all Bitcoin value that is profit nobody has taken yet.
  • Net flow to exchangesCoins moved onto exchanges minus coins moved off them. Coins usually go to exchanges to be sold.
  • Which way the borrowers are leaningSome people bet on coin prices with borrowed money. Count how many of them are betting the price rises, and divide by how many are betting it falls. Above 1 means more of them expect a rise.
  • Trailing one-year middleThe median of the last 365 days of a reading, recomputed every day, so the rule never uses the future.
  • SignalA market reading that people use to decide when to buy or sell.
  • ReturnHow much money grew or shrank over a period, as a percentage of what was put in.
  • Test periodThe later part of the history that was hidden while the rule was being built, then used to check it.
  • Holding BitcoinBuying once at the start and doing nothing. The simplest thing the rule must beat.
  • ShuffleKeeping the same pieces but changing their order, to see what random timing would have done.
  • BlockA run of 30 days kept together when shuffling, so pretend rules still behave like real ones.
  • ResamplingRebuilding the history many times from its own chunks to see how much the answer wobbles.
  • EdgeThe difference between what happened after a positive reading and after a negative one.
  • Hit rateThe share of calls that ended in the direction that was predicted.
  • Points or ptsShort for percentage points, and it is always a subtraction. If the rule made +10% and holding made +5%, the rule is 5 points ahead. Note that 10% is twice 5%, not 5% more than it, which is exactly why we subtract instead of comparing.
  • Alpha TrackerCharlie’s public list of short-term trading calls on small coins, each logged before its outcome is known.
  • CallOne published prediction that a coin will rise or fall over the next hours or days.
  • ReadingOne of the six market measurements the rule looks at, squeezed onto a fixed scale from -1 to +1.
  • TrainingThe earlier 60% of the history, used to build and study the rule before it was tested on the later 40%.
  • Held-back testAnother name for the test period: the later part of the history that was kept aside and not used while the rule was built.
  • StablecoinA coin built to stay worth one dollar; a digital dollar.
  • FuturesContracts that let traders bet on Bitcoin’s price without owning Bitcoin. Holding them has a cost that rises when many traders crowd in.
  • PortfolioEverything an investor holds, taken together.
  • Thin tradingWhen few people are buying and selling a coin, so a single trade can move its price a lot.
  • Sample sizeHow many separate pieces of evidence a result really rests on. Bigger is better; overlap makes it smaller than it looks.

Where this page could be wrong

  • The test period is short. A longer history could change every number on this page.
  • The fee for switching is a simple 0.10%. Real trading in size costs more.
  • Resampling in 30-day blocks keeps short-run behaviour but not longer cycles.
  • The Alpha Tracker calls cover small coins with thin trading; their prices can be pushed by a single trade.
  • Every result here is about the past. None of it is a forecast.

Research by for Charlie Quant Lab · Updated