The logbook, and how we check ourselves
A settled method is not a method that never changes: it is a method whose every change is written here, dated, before the code. Here is that logbook, and the nineteen cases computed by hand that check the engine.
This text is what stands: it is what the reports, the acknowledgement and the other pages quote, word for word. It changes only with a date.
What changed, and when
Format SEXTANT_LEDGER_V1, version 1.0.0-draft — published on 22/08/2026.
It will move to 1.0.0 once two sources have been qualified, meaning four real files have been run through. Until then, it may still change.
Completed on 24/08/2026: the source list grows from four to five entries and gains its channel column.
Completed on 31/08/2026: four missing conventions are published — cost basis at the weighted average price, matching a position closed across several sales, the buy & hold reference, and warned rows staying in the count. None of them was written; all were necessary for a measurement to be redone by you.
Clarified on 31/08/2026: the three validation reasons that had no trigger criterion now have one. “Unknown format version” becomes a file-level rejection based on its columns, not its provenance — it contradicted what part 02 promises to unlisted sources. “Unknown asset” and “row outside the period” are defined below. These three gaps were found while writing the engine, not while rereading the page.
Removed on 02/09/2026: the “unknown asset” warning is no longer produced. The asset table it required was never published — we are withdrawing the promise rather than improvising a list.
Completed on 03/09/2026: six conventions settled on 02/09/2026 while writing the measurement engine are published here. One is new — a day with no ECB rate takes the last rate published before the operation. Three correct a sentence that promised something other than what we compute: the euro total of fees is calculated even when their scope is not stated; the 70% threshold is measured in euros of cost basis engaged, not in a count of operations; a staking reward belongs in the buy & hold basket. One fills a gap: the indicative second figure finally names its reference asset, its entry dates and the fate of its fees. One clarifies without changing anything today: what your file itself declares as an internal transfer counts as confirmation, what we infer does not. The seventh concerns only our internal calibration set and has nothing to publish here.
Completed on 14/09/2026: five conventions settled on 13 and 14/09/2026 while preparing our first real file. One is new — buying on credit: engaged capital varies while a loan is outstanding, and borrowing interest is a line of its own, separate from fees. One fills a gap: the rounding mode, left unsaid while the moment and the precision of rounding were published. Two widen a definition that promised less than what we measure: valuation at the price on the day of receipt applies to any asset received for nothing in return, not to staking rewards alone; USDC joins USDT among the tokens treated like the dollar. The fifth fills only half its gap, and says so: the regime of our price series — deposited by hand, frozen, cited by their fingerprint — is published, but the source of our cryptocurrency prices is not yet named; it will be, here and dated, before the first report is delivered.
Completed on 21/09/2026: the source list gains a sixth entry — the Binance transaction history (binance.transactions), distinct from the Spot export. It is the export that carries crypto-to-crypto conversions, absent from any order history, and fees line by line; its header was read on a real file on 15/09/2026. Being qualified on our first file.
Corrected on 18/09/2026 (published in English on 21/09/2026): a swap between two cryptocurrencies is no longer systematically out of scope. When at least one of the two has a price series deposited with us, the swap is valued at that leg's price — the same gesture as for an asset received for nothing, from the same deposited and frozen source. When neither has one, nothing changes: the swap leaves the scope and is counted.
Corrected on 21/09/2026: the reference price is that of the operation's minute, not of the day — close of the one-minute candle, UTC, fallback to the last known close within the preceding sixty minutes, final basket at the last UTC minute of the measurement day. This page said “at the day's price”: on our first real file, the price obtained varied within a single day by 1.5% in median and up to 37% on one row. The source of cryptocurrency prices is named: the venue where the operation was executed — Binance, public market data, for a Binance file. The reservation opened on 24/08/2026 is lifted; this page now lets you redo our valuations.
Corrected on 21/09/2026, in the light of our first real file: the capital compared to bitcoin is no longer the sum of your commitments, but the capital you actually tied up. This page said “every euro enters on the date you actually committed it” — on an account that sells in order to buy again, that counted the same euro as many times as it was used. On our own history, the former rule assumed a capital of €308,961 where the highest amount actually tied up was €20,795: a ratio of one to fifteen, and a comparison figure nobody could have interpreted. The new rule counts every euro once, and changes nothing for someone who never sold.
Completed on 21/09/2026: an asset in the basket that stopped being quoted before the measurement date no longer brings down the whole comparison. The basket is valued without it, and the report names the asset and the reason. Previously a single row without a price — even a dust holding held for twenty minutes — was enough to remove a core measure.
Corrected on 21/09/2026 (second step): the main basket follows the same rule as the capital compared. It keeps only purchases made with new money; a purchase funded by a sale does not enter it, and a purchase that is half new enters it by half. This page said “the assets you actually bought” without saying with which money: on our own history, the basket accumulated €309,055 of purchases — over a billion tokens of three memecoins held together — against €20,795 of new money. The main figure of this measure was therefore as unreadable as its second one, which we had just corrected. Assets received for nothing in return still enter in full: reducing them would flatter your decisions.
Completed on 22/09/2026: the cumulative fee cost gains a second line — the cost of conversions. When a platform takes its margin from the rate instead of charging a fee, no row of your export says so, and this page measured nothing. On our own history, charged fees come to €40.43 and the cost of conversions to €1,855.02: the report was showing 2.1% of what the activity had cost. The measure is the gap between the market value of what leaves and what enters, at the minute of the operation; it is already inside net performance and is not subtracted from it; and every report now publishes its own margin of error, measured on your operations whose fees are charged separately.
Corrected on 22/09/2026: the capital compared does not fall back when a loan is repaid. Since 14/09/2026 this page said engaged capital “rises when you borrow and falls when you repay”, read day by day; the rule of exceedances over the previous high, published on 21/09, never falls back. Both sentences could not be true at once. We keep the second: borrowed money counts as money at work, and the high it caused stays — a loan repaid two hours later raises your compared capital thereafter. Taking it out would shrink the basket you are compared to, and make a gain obtained with leverage look like a gain obtained alone; a euro of yours committed for two minutes already counts the same way. Borrowing interest gains a line of its own: no export we have read names it, we deduce it from the gap between what was borrowed and what was repaid, and the report says it is a deduction. Finally, a liquidation is named when your export declares one — and the report says in the same breath what it cannot know: if nothing there tells the sales it forced from the ones you decided, the former are counted as decisions.
Corrected on 22/09/2026 (a read-through of the published sentences): three sentences on this page were written nowhere in the report, and a fourth was missing from the engine. The worst: on an export containing no fees, the report displayed “net performance” — which this page defines as “after deduction of the fees actually paid” — without ever saying it was gross. The sentence had always existed; nothing read it. The other three: the scope of fees and the number of operations concerned, the limits of perimeter (assets without a series, protocol liquidity, cross-chain moves), and the multi-account perimeter. ⚠️ Two contradictions found in the same pass: in part 01 this page still said the price of a crypto-to-crypto swap is taken “on the day of the operation” — the 21/09 correction had updated the conventions table and not the prose; and our verification set held 19 cases against a published cap of 18, crossed on 18/09 with nothing to say so. The cap is raised to 19, a guard now holds it, and its re-derivation is dated and announced. None of these four sentences changed a figure: they changed what the report says about its figures, which is the point of this page.
Completed on 22/09/2026: the three non-core measures leave the “not calibratable” state. Since 28/08/2026 our register of gaps held three open questions that made them incomputable, and this page said nothing of it — it blamed your file for an absence whose cause was ours. They are settled here. The equity curve (measure 06) is the value of what you held at the end of each day, at the price of the last UTC minute; a day on which one of your assets has no price is valued without it, and the report publishes the largest share your unpriced holdings ever reached across the curve. We had first settled on the opposite — setting those days aside entirely, because a maximum drawdown is read on a path and an asset appearing midway manufactures a drop. Measured on our own history before a single line of code was written, that meant throwing away thirteen months of real path for one euro of a token unquoted for two days. The rule was changed the same day, before publication: we value, and we publish how much the path can lie. The abstention counterfactual (measure 07) is redefined: this page gave a definition — “what would have happened had you done nothing” — that was word for word the question of measure 03. It now compares two curves where measure 03 compares two points, on the same basket, and answers what 03 cannot: when the gap opened up. A “drop” (measure 08) is a drop in bitcoin, the reference already published in measure 03; its threshold and window are not yet settled, and they will not be until they have been measured on real histories — until they are written here, the measure is not produced.
Corrected on 22/09/2026, the same evening: maximum drawdown and the abstention counterfactual are not produced until a convention removes deposits and withdrawals from the curve. We ran both measures for the first time on complete prices, and maximum drawdown announced 99.8% on our own history. It measured no loss at all: €13,492 had left the account against €8,891 paid in — the portfolio had not collapsed, it had been withdrawn. The curve published that day is exact — “the value of everything you held at the end of each day” — and that is precisely why it cannot serve as it stands: a withdrawal is indistinguishable from a drop. The curve stays published; the two measures derived from it await the convention, which will be written here, dated. We would rather say nothing than call the money you took back a “loss”.
Completed on 23/09/2026: the second axis of the admissibility threshold gets its definition and its figure — the covered period, at 80%, measured as the span between your first and your last operation over the period you declare. That axis had been published since 03/09 with neither definition nor threshold: invocable, but not applicable. Three formulations were measured on a real file before choosing, and two were set aside — one counted the months in which you traded and would have refused a portfolio held without touching it, the other decayed on its own over time on an unchanged file.
How we check ourselves
Nineteen cases, each with its answer worked out by hand before the code was written. The engine's calibration set was established on 28 August 2026. A case enters it only if its expected answer was derived on paper, independently of the code; the day an expected value is produced by running the engine, the case stops being a benchmark. A benchmark says “this is wrong”; a regression only says “this is no longer as before”. The two are never counted together.
The admission criterion is falsifiability: a case earns its place if there is a plausible, specific bug that it catches and no other case catches. Each case is tied to a point published on this page — a calculation convention, an out-of-scope case, a validation reason or a format rule — and it is this page that prevails when the two disagree.
While trying to work out the answers by hand, five of the eight published measures turned out not to be computable as they were written. The gaps were settled and published here, dated, before the code applied them. Every engine output carries in its header the commit that produced it and the fingerprint of the price series used, so that a figure can be redone.
The set of cases is kept with its answers and their working, and it can be read without the engine. If one of them looks wrong to you, write to us: the challenge and the answer will be published.
↑ Contents