Net: after the fees actually paid.
Requires: the fees actually paid.
Cumulative fee cost#
Core
Requires: the fees, their currency, and their scope. For the cost of conversions: a price series at the minute of each swap.
Three lines, and their total. A platform sometimes charges its fee separately, sometimes takes it out of the rate it gives you, and if you borrowed, it charged you interest. These three costs are not of the same nature, and the report does not mix them.
Charged fees are the ones your export names: an amount, a currency, an operation. They add up.
The cost of conversions is the one no row declares. When you swap one asset for another with no fee charged separately, you receive slightly less than what the market was worth at that instant — and that difference is the price of the service. We measure it: the market value of what leaves, minus the market value of what enters, at the minute of the operation, then we add it up across your whole history.
This cost is already inside your net performance; it is not subtracted a second time. An unfavourable rate gave you less of the asset, so your cost basis is higher and your result on resale lower: the effect is already counted. This figure does not change your performance — it says what your performance cost you without ever showing it.
What this measure contains, and cannot separate: the platform's margin, the gap between the buying and selling price at that moment, and the market's movement inside the minute. We measure their sum, and we do not claim to split it — a breakdown would require that second's order book, which we do not have.
The report publishes its own margin of error. The same method is applied to operations whose fees are charged separately: there, the gap should be nil, and what it finds bounds what the measure is worth on the others. On the first history we measured — our own — it finds −€6.42 across 42 charged operations, against €1,855.02 across 261 conversions. Every report carries that witness, computed on your own operations.
Borrowing interest is what borrowing cost you, not what trading cost you: two different decisions, two different bills. No export we have read names it — it sits in the gap between what was borrowed and what was repaid, and that is where we take it from. This line is a deduction, the report says so, and it stays empty when your export does not allow one.
Negative gaps are counted as they are. A conversion sometimes returns slightly more than the market value of its minute: that is the limit of the measure, not a gain. Removing them would inflate the total by whatever the noise happened to give back.
If the data is missing, the report says
“The fees are expressed in the currency where they were charged. Your export does not let us tell whether they are already deducted from the amounts or added on top: we kept the most cautious assumption, the one that understates your performance. The euro total, however, is calculated: the scope decides whether fees are added to the amounts or already inside them, it does not change their sum. The report states on how many operations that assumption had to be made.”
If you borrowed, the report says
“You borrowed N times over the period. Your export names no interest: the €X.XX above is deduced from the gap between what was borrowed and what was repaid, not declared by you.”
If a position was liquidated, the report says
“A position was liquidated on DD/MM/YYYY at HH:MM UTC. Your export does not tell the sales that liquidation forced from the ones you decided: the operations of that period are counted as decisions, and the concentration and win-rate measures may be distorted by it.”
If a price is missing at a conversion's minute, the report says
“The cost of N conversions out of M could not be measured, for lack of a reference price at their minute. The cost of conversions above therefore covers only the others, and is understated by that much.”
Buy & hold comparison#
Core
Buy & hold: buy, then do nothing.
The main reference is your own basket: the assets you bought with new money, on your purchase dates, purchase fees included — but without any of your sales. It answers the only question that concerns you (did my trading in and out earn more than if I had done nothing?) and it introduces no basket chosen by us.
A purchase funded by a sale does not enter this basket: without that sale you would not have had the means to make it, and including it would lend you money you never had. It is the same rule as for the capital compared — every euro counts once — applied this time to quantities: when a purchase is only partly new, only that part enters the basket. An asset received for nothing in return during the period belongs in that basket, and belongs in it in full: had you done nothing, you would still have held your assets and received the same reward. Excluding it would understate the do-nothing scenario, and therefore overstate your decisions — the very bias this report exists not to produce.
A second figure, given for information, compares your capital to a single reference asset: it is a market comparison point, not what you would have done. That asset is bitcoin — the reference of the asset class, with no composition to defend and no licence to obtain.
The capital compared is the one you actually tied up, purchase fees included: the highest level your open positions ever reached. It enters in slices — each time your engaged capital exceeds its previous high, the difference enters the comparison, on the exact date it does. Selling to buy again creates no new money: it is the same euro coming back. The calendar stays yours, we choose none of it, and every euro is counted once.
Money you borrowed counts in that capital, at the moment you commit it and as though it were your own: it really was at work, and setting it aside would make a gain obtained with leverage look like a gain obtained alone. The high it causes stays after repayment — exactly like a euro of yours committed for two minutes and withdrawn. Margin is not a special case: it is the same rule, applied to money that really was at work.
Three consequences worth knowing, because they cut both ways: a full withdrawal followed by a new deposit counts only for what exceeds the earlier high; an export starting after your first purchases understates that high, and therefore flatters the comparison; and the figure depends on the period you ask for.
This figure is not a recommendation. It says what a reference asset would have done over the same period, not what you should have done. We do not sell advice and this page gives none.
The hypothetical reference pays no fees, which favours it slightly against your basket, which does pay them. We do not simulate a fee schedule for a transaction that never took place: that would be exactly the estimated figure this page refuses to produce.
Requires: reference prices across the full period.
If the data is missing, the report says
“The comparison covers the period from DD/MM/YYYY to DD/MM/YYYY, the only period where your data and our reference prices overlap. Outside that window, we do not compare.”
If an asset in the basket no longer has a price at the measurement date, the report says
“The basket is valued excluding N asset(s): LIST. These assets stopped being quoted before the measurement date, or have no price on that day. Their value is not estimated, and the comparison covers the rest of the basket.”
The share of your three best operations in your result.
Requires: matched closed positions — a buy reconciled with the sell that closes it.
If the data is missing, the report says
“N positions out of M could be matched. The remaining M−N correspond to assets acquired before the period covered by your export: they are excluded from this calculation, and that exclusion can make it look better than it is.”
Expectancy: the average gain per position, losses included.
Requires: the same matched positions.
If the data is missing, the report says
“Calculated on the N matched positions.”
Maximum drawdown and recovery time#
Maximum drawdown: the deepest peak-to-trough drop.
Requires: a reconstructed equity curve — your portfolio's value traced day by day — therefore historical prices for all your assets.
The curve is the value of everything you held, at the end of each day. The price taken for a day is the close of the last UTC minute of that day — the same rule as for the final basket, applied to every day instead of the last one only. When no trade took place during that minute, we take the last known close within the preceding sixty minutes, never after.
Maximum drawdown is the deepest drop from a peak to the trough that follows it, and recovery time is the number of days it took to regain that peak. If you had not regained it by the measurement date, the report says so and invents no date.
A day on which one of your assets has no price is valued without it — the same rule as for the basket — and the report publishes the largest share your unpriced holdings ever reached across the whole curve, with the assets concerned. This is the delicate point of this measure, and it deserves saying in full: a maximum drawdown is read on the troughs of a path, and an asset appearing on the day it was first quoted creates a step — hence a drop that never happened, or a real one erased. We first wanted to set those days aside entirely; measured on our own history, that meant throwing away thirteen months of real path for one euro of a token unquoted for two days. So we value, and we publish how much the path can lie. A figure you can read: as long as that share stays below one per cent, the shape of the curve is the shape of your portfolio.
Maximum drawdown, however, looks only at fully valued days. The curve keeps incomplete days — it is your history, and throwing it away over one missing asset costs more than it gains — but a peak and a trough are only comparable if they cover the same holdings. Without that rule, a day with a missing price would look like a collapse, and the report would announce a crash that never happened. The report states over how many days the maximum drawdown was sought, and it is that number, not the length of the curve, that says what the measure is worth.
If the data is missing, the report says
“The equity curve of your portfolio could not be reconstructed: N assets in your history do not have a price series available for the period. Maximum drawdown and recovery time are therefore not measured — we prefer to say nothing rather than estimate.”
If part of your holdings has no price on some days, the report says
“On N day(s) of the curve, part of your holdings had no price: LIST. Those days are valued without those assets. The largest share left unvalued this way was X.XX% of your portfolio, on DD/MM/YYYY — estimated at that asset's nearest known price, which serves only for this bound and never for the curve. That is the order by which the shape of the curve may depart from reality.”
If the peak was never regained, the report says
“Your portfolio had not regained its peak of DD/MM/YYYY by the measurement date. Recovery time is therefore not measured: it has not yet elapsed.”
Abstention counterfactual#
When the gap with doing nothing opened up — and when it closed.
Requires: the equity curve above, and the basket of measure 03.
Measure 03 compares two points; this one compares two curves. We value day by day, on one side what you actually held, on the other the basket of measure 03 — your purchases made with new money, without any of your sales. No second basket is introduced: it is the same one, seen over time instead of at the end.
What it tells you that measure 03 cannot: at what moment your decisions pulled ahead or fell behind, and whether the final gap comes from one specific period or from a continuous drift. A gap of a hundred euros at the finish does not read the same way depending on whether it played out in a week or over two years.
The gap is read only on days where both curves are fully valued, for the same reason as maximum drawdown: a day with a price missing on one side and not the other would produce a gap that does not exist. The report states over how many days the gap was read.
⚠️ This measure does not say what you should have done. It dates a gap, it does not judge a decision — we do not sell advice and this page gives none.
If the data is missing, the report says
“This measure depends on the equity curve, which could not be reconstructed.”
If the basket of measure 03 could not be valued, the report says
“This measure compares your curve to that of the measure 03 basket, which could not be valued across the whole period. It is not produced.”
Reactions within 48 hours after a drop#
Requires: the exact hour of each entry, and a bitcoin price series over the period.
“A drop” means a drop in bitcoin, not in your portfolio. It is already the market reference of measure 03: no new basket to defend, no licence to obtain, and a drop reads the same way from one report to the next. The price of that comparability is owned: a drop in bitcoin is not always a drop in your own assets.
⚠️ The threshold and window that define a drop are not yet published. We will not choose them before having measured them on real histories: a threshold settled in the abstract would detect too many drops, or too few, and no one could say which. They will be written here, dated, before the first report carrying this measure — and until they are, it is not produced.
If the data is missing, the report says
“Your export timestamps are given by day, or in a timezone we could not establish. This diagnostic requires the exact hour of each entry: it is not produced.”