Open quantitative record

A Bitcoin Trading Model, published in the open — Trades, Method and Limitations

I run a machine learning model on bitcoin and publish everything it does: every trade as it happens, the methodology behind it, and the parts that did not work. Free, with nothing to sell — no subscriptions, no broker affiliates, no copy-trading.

Cumulative profit, read directly by FXBlue. Simulated account, live market conditions.

Live feed

Every trade, at the moment it is placed

The model trades bitcoin on spot and futures markets. It places a handful of positions per month and holds them for hours to days — this is not a high-frequency system, and there is usually nothing to do between signals.

Posts go out on Telegram the moment a position opens or closes. The same feed is mirrored below if you would rather not join the channel.

Record

The backtest, with the in-sample part clearly marked

Almost every published trading curve hides where the model was trained and where it was actually tested. Mine does not. The hatched region below is in-sample data — the model saw it during fitting, and those results are not a performance claim. The solid teal region is what happened afterwards, on data the model had never been trained on.

The gap between the two is the whole point. In-sample the curve compounds at roughly 47 % a year. Out-of-sample it settles near 7 %. That drop is the normal, expected cost of leaving the training set, and any strategy that does not show you both numbers is showing you the wrong one.

Backtest equity curve — in-sample vs out-of-sample Equity across 413 trades from 2018-01-16 to 2026-08-03. The shaded left region is in-sample training data. The right region is forward-tested out-of-sample. Log scale. 150k 200k 300k 500k 700k 1000k 2019 2020 2021 2022 2023 2024 2025 2026 IN-SAMPLE / TRAINING OUT-OF-SAMPLE / FORWARD TESTED IN-SAMPLE 205 trades · 4.5y · +47%/yr · win 60% OUT-OF-SAMPLE 208 trades · 4.0y · +6.7%/yr · win 50% LOG SCALE · BACKTEST, NOT A LIVE ACCOUNT · IN-SAMPLE RESULTS ARE NOT A PERFORMANCE CLAIM
Backtest equity across 413 modelled trades, January 2018 to August 2026. Logarithmic scale. Not a live account.

Out-of-sample figures — the only ones worth quoting

Forward-tested period only — 208 modelled trades, Jul 2022 to Aug 2026
MetricOut-of-sampleIn-sample
Annualised return+6.7%+47.1%
Total return+29%+473%
Win rate50.5%59.5%
Trades208205
Period covered4.0 years4.5 years
Average trades per month4.43.8
Average holding period6.5 bars4.6 bars
Maximum leverage2:12:1

Drawdown is measured on closed-trade equity and therefore understates intra-trade excursion. Past performance, simulated or real, is not a reliable indicator of future results.

Independently verified account

The backtest above is a model study. The account below is the live-tracked record, read directly by FXBlue — a third party with no reason to flatter it. Treat the two as separate things, because they are.

Method

What is actually under the hood

“AI-powered” means very little on its own, so here is the specific version. The model is XGBoost — gradient-boosted trees — classifying directional edge on daily bitcoin candles. Recurrent networks were tested at length and rejected: on this data they added nothing that survived validation, and that result is documented rather than hidden. Signals pass through a fixed risk layer that caps leverage at 2:1 regardless of model confidence.

Features

Seven inputs, all derived from price structure, realised volatility and candle microstructure. No sentiment scraping, no funding or on-chain data, and no calendar features — time-of-day encodings were removed after one was caught memorising the training set.

Validation

Anchored walk-forward analysis with strictly out-of-sample windows and purge gaps between partitions. Selection is always by validation score — never by test — and pass criteria are written down before anything runs.

Risk layer

Fixed position sizing, hard leverage ceiling, and a rule set that sits outside the model and cannot be overridden by it.

What is not claimed

No price prediction, no forecasting of tops or bottoms. The model estimates conditional edge over a horizon, nothing more.

The full write-up — feature construction, the walk-forward setup, and the graveyard of what did not survive it — is on the methodology page. The open record is on GitHub.

What to expect

The uncomfortable parts, stated in advance

Most systems are abandoned during the flat stretch, not the losing one. Setting expectations before that happens is more useful than any performance chart.

Long quiet periods

Weeks can pass with a handful of trades and no meaningful movement in the equity curve. This is normal behaviour, not a malfunction.

Drawdowns are structural

A model with positive expectancy still loses for extended stretches. The published maximum drawdown is a historical figure, not a ceiling.

Individual trades mean nothing

The results come from the full sequence. Selecting trades from it changes the risk profile into something the record does not describe.

The model changes

It gets retrained and occasionally rebuilt. Every material change is logged publicly with a date, so the record stays interpretable.

What you get here

Every trade, live and timestamped. Posted to the free Telegram channel at the moment of execution — before the outcome is known — and independently tracked by FXBlue.

The complete research record. The full methodology, out-of-sample results side by side with in-sample, and the graveyard of every rejected model — failures included.

Research you can build on. Regular articles on overfitting, walk-forward validation and machine learning trading models, written so you can develop and test your own.

If it is useful, it is yours.

Disclosure

Simulated account, real market conditions

Every result published here comes from a simulated account executing under live market conditions. No real capital is at risk, and I state that up front rather than burying it in a footnote.

The account applies the same swap and commission structure as a live one, so the two largest sources of drag are already reflected in the numbers. The model also places only a handful of trades per month, which keeps cumulative transaction costs low by design.

What a simulated environment cannot fully reproduce is execution. Fills always occur at the requested price, with no partial fills, requotes or spread widening during news events. For a low-frequency system holding positions over days, this is a second-order effect — but it is not zero, and I would rather name it than imply it away.

The methodology is open, every trade is timestamped, and the tracked account is read directly by FXBlue. Audit it yourself.

Latest research

All Research

Who writes this

Adrian Velai

Adrian Velai is a pen name. I keep my legal identity private, which is a deliberate choice and one I would rather declare than disguise — you should weigh it accordingly.

What I put in its place is the only thing that can actually be checked: a complete trade record independently tracked by FXBlue, the methodology written out in full, and record published openly. An anonymous author with an auditable record is a better bet than a named one without.

Find me on GitHub, X and Discord.

Questions

Common questions

Is this really free?

Yes. There is no paid tier, no private channel and no affiliate link to a broker. Running the site costs money, so there is a bitcoin address at the bottom of this page for anyone who wants to contribute. Nothing is gated behind it.

Why publish a working model instead of keeping it private?

A strategy trading a handful of positions per month in bitcoin markets is not degraded by being known. What I get in return is a public, timestamped record — which is worth more to me than secrecy.

Why is the account simulated?

It lets me publish a complete, unedited record without exposing an account I would then be tempted to present selectively. The trade-off is stated openly in the disclosure section above.

Can I follow the trades automatically?

There is no copier, no EA and no software to install, and I do not distribute any. Everything is published for reading. Any decision to act on it is yours alone.

What is the minimum account size?

That is a question about your circumstances, and I am not in a position to answer it. What I can tell you is the model’s design constraint: leverage never exceeds 2:1.

Which venues does the model trade?

Bitcoin spot and futures markets. The published signals reference the underlying instrument rather than any specific broker or exchange.

How often does it trade?

A handful of positions per month, held from hours to days. Some weeks are quieter than that. If you are looking for constant activity, this is not it.

Do you offer advice or manage accounts?

No. I do not manage money, hold client funds, give personal recommendations or accept subscriptions. This site publishes what one model does; that is the entire scope.

Where can I ask something technical?

Discord, linked below. Questions about feature construction, validation and model design are welcome. Questions about what you personally should do with your money will go unanswered — not to be unhelpful, but because answering them would be exactly the thing this site does not do.

Support

Keeping this online

Scan to get the bitcoin address

Hosting, data feeds and compute are the running costs. If the record or the write-ups have been useful, a small contribution helps keep them published. It buys nothing — there is no tier, no access and no acknowledgement attached.

bc1q2et03nku2kkkqaqz20g7ymvw3wl24njm3ez4lv