← BACK TO VALIDATION
Signal Validation · Data guide

How to prepare your data

We test one thing: whether your predictions tell us anything about what happened next. This page explains what to send, how to get your data into shape, and when a dataset can be tested.

01What to send

We need every prediction you made in the period, when you made it, and what the market did afterwards over one fixed horizon. Send us four things:

  1. The data file — one CSV, one row per prediction (format below).
  2. The claim — the sentence you want tested, in your own words. For example: “Our high-conviction calls outperform our low-conviction calls on 4-hour returns.”
  3. The horizon — how far ahead each prediction looks: 15m, 4h, 1d, 1w.
  4. Your real trading cost — round-trip, in percent, fees plus typical slippage. If you don't know it, we use 0.06%, and the report shows the result at every cost from 0 to 0.20%.

Every prediction, not a selection. A file with the losers removed, or with rows added afterwards, cannot be tested — a report built on it would be wrong. Tell us how the predictions were recorded at the time. The report states what we could verify and what we could not.

The free Quick Check runs the same seven tests, with no login, and the file is not kept. It is the fastest way to see that your file is readable before you send it.

02The file format

One CSV file with a header row and one row per prediction. Three columns are required, two are optional.

ColumnWhat it holdsExample
timestamp REQUIREDThe moment the prediction was made, in UTC. YYYY-MM-DD HH:MM or Unix seconds.2026-05-01 14:15
prediction REQUIREDA number: a score, a probability, an expected return, or +1 / −1 for long / short. Higher must mean “more up”.62.4
outcome REQUIREDWhat happened over the horizon after the timestamp. For markets: the price change in percent.0.31
group OPTIONALWhich instrument, coin or series the row belongs to. Needed when the file covers more than one.BTC
price OPTIONALThe price at the timestamp. A regular price series lets us check that the outcome is aligned, and split results by market regime.61250.5

A minimal file:

timestamp,group,prediction,outcome,price
2026-05-01 14:00,BTC,62.4,0.31,61250.5
2026-05-01 14:00,ETH,48.9,-0.12,2604.1
2026-05-01 14:15,BTC,55.0,0.08,61302.0
2026-05-01 14:15,ETH,51.2,0.22,2601.7

Rules that matter

READ AS IS

Comma or semicolon separators, decimal commas, a trailing %, Excel's byte-order mark, and DD-MM-YYYY or DD/MM/YYYY dates. Common column names are recognised: time, date, score, signal, forecast, fwd_return, actual, asset, symbol, close and others.

CONVERT FIRST

US-style MM/DD/YYYY dates (they would be read day-first), time-zone offsets (convert to UTC), and thousands separators such as 1.234,5. If your column names aren't recognised, rename them to the five above.

03Converting what you already have

Most providers don't keep data in this shape. This is how the common formats map onto it.

You havepredictionoutcomeNotes
Model scoresThe score as it was at that momentPrice change over the horizon, in %The reference format. Nothing to convert.
Directional calls (LONG / SHORT)+1 for long, −1 for shortPrice change over the horizon from the moment the call was postedKeep entry, take-profit and stop-loss as extra columns.
Calls with confidence levelsLevel × direction, e.g. high long = +3, low short = −1As aboveLets us test whether your confident calls do better.
ProbabilitiesThe probability, 0–1 or 0–100Price change over the next periodDon't convert to up/down; the number carries more.
Trade log with profit per trade+1 / −1 from the sideNot the profit — the market move over a fixed horizon from entrySee below.
Forecasts outside marketsThe forecastThe actual value, or its changeSet cost to 0. Groups can be stores, products, regions.

Directional calls and win rates

A channel's “win rate” usually means “take-profit was hit before stop-loss”. That number depends as much on where the targets sit as on the call. With take-profit 1.2% away and stop-loss 4.5% away, random entries win about 79% of the time — and still lose money after fees. We therefore test direction over a fixed horizon, and report your own win-rate definition separately next to it.

If you only have the posted calls (time, coin, side), send those and say so.

Trade logs

A profit figure mixes the prediction with holding time, exits and fees, and every trade is held for a different length of time. Send entry time, instrument and side instead, so the move over a fixed horizon can be computed. If every trade was held for exactly the same period, the market move is the profit for a long and minus the profit for a short, before fees.

Excel

Save as “CSV UTF-8”: one sheet, the header in the first row, and no totals or notes below the data. European number formats are fine.

A call log ready to test, horizon 1 day:

timestamp,asset,side,prediction,entry,take_profit,stop_loss,outcome
2026-03-01 21:20,XRP,SHORT,-1,0.549065,0.542476,0.573773,1.6822
2026-03-02 00:30,LINK,LONG,1,12.773683,12.926967,12.198867,4.8185

04When a dataset can be tested

A file is accepted for a report when it meets every line below. It will run with less, but the report could only say “too little data to tell”.

CriterionMinimumWhy
Complete recordEvery prediction in the period, none removed or added laterA filtered record tests the filter, not the predictions.
Recorded before the outcomeSome evidence the prediction existed at its timestampWithout it, the report states that the data is self-reported.
Rows30 to run at all; a few hundred independent observations to concludeBelow that, the noise floor is too wide to tell an edge from luck.
PeriodAbout two months or more, including rising and falling marketsOne market direction can make a long bias look like skill.
Distinct predictionsAt least 10 different values, or clean +1 / −1A few repeated values can't be ranked.
HorizonOne, stated in advancePicking the best horizon afterwards is hidden cherry-picking.
SizeQuick Check: 10 MB and 100,000 rows. Report: up to 500,000 rowsFor larger files, send a sample first.

Independent observations are fewer than rows

A 4-hour outcome recorded every 15 minutes overlaps the next 15 rows, so 16 rows carry about one observation's worth of information. Coins that move together count as less than one each: eight major coins at the same moment are worth roughly 1.4 independent observations, not 8. The report shows the effective count and uses it in every test.

As a rule of thumb the noise floor is 2 / √(effective observations). With 400 effective observations it is 0.10; to show a correlation of 0.05 you need about 1,600.

Evidence of timing, strongest first

  1. A public record that cannot be edited: exchange copy-trading history, a hash-chained log, a Telegram channel's message sequence.
  2. A timestamped record held by a third party: emails, a notarised hash.
  3. Your own database export.

We note in the report which kind we had.

05Common mistakes

The worst errors produce excellent results, so they are checked before any statistics.

MistakeHow it shows upFix
Outcome is the move before the timestampEvery test passes with a very strong correlation. The report's alignment check marks it as invalid when a price column is included.Compute the outcome from the timestamp forward.
Predictions recomputed afterwardsA correlation above about 0.2 is flagged as unusually strong for a market. Statistics alone can't prove it.Send what was recorded at the time.
Losing calls removedInvisible in the numbers. Gaps in the timeline and missing message numbers are not.Send the full record.
Duplicated rowsFlagged; the sample looks larger and every test too generous.One row per group per timestamp.
Latest rows without an outcomeDropped and counted in the report.Fine to leave in, or cut where outcomes end.
Profit per trade as outcomeResults reflect targets and exits, not direction.Use the market move over a fixed horizon.
Mixed horizons in one fileResults blur towards noise.One file per horizon.
Local time with summer timeOne-hour shifts and duplicates at the clock change.Convert to UTC.
Higher prediction means “down”The report calls the signal inverted.Flip the sign, or tell us.

06Before you send