Blank execution log CSV
One row per fill, with a timed quote reference and explicit fee.
Download fileBuy and sell example CSV
Two independent fictional orders, each with two fills.
Download fileDirect downloads without signup. Keep your personal records in your own files.
Record the reference before interpreting the difference
The blank CSV is a header-only execution log. The filled version contains two fictional orders, each with two fills. It records a reference bid and ask, their timestamp, fill timestamps, quantities, prices and explicit fee amounts. It contains data, not formulas, and does not read a trading account.
Use one row per fill. Give fills belonging to the same order the same order_id, side, currency and chosen reference snapshot. Keep the original execution statement separately. For this simple worksheet, prices and quantities describe a linear instrument with a point value of one in the stated currency; contract multipliers and currency conversion need additional treatment.
| Columns | Purpose |
|---|---|
| order_id, side | Group one order and distinguish buy from sell. |
| reference_time, reference_bid, reference_ask | Define the snapshot used for the comparison. The midpoint is (bid + ask) ÷ 2. |
| fill_time, quantity, fill_price | Preserve each execution. Do not average prices without their quantities. |
| fee_amount, currency | Record explicit fees as money, separately from the price difference. Use one currency for a calculation. |
A buy and a sell with the same adverse midpoint cost
Both independent fictional orders use a reference bid of 99.90 and ask of 100.10, so the reference midpoint is 100. These are not live quotes or a connected round trip.
| Order | Fills | Weighted fill | Explicit fees |
|---|---|---|---|
| DEMO-BUY | 4 at 100.10; 6 at 100.20 | 100.16 | 0.40 + 0.60 = 1.00 |
| DEMO-SELL | 4 at 99.90; 6 at 99.80 | 99.84 | 0.40 + 0.60 = 1.00 |
Buy average: (4 × 100.10 + 6 × 100.20) ÷ 10 = 100.16. Buy cost per unit is fill minus midpoint, or 0.16. For the sell, midpoint minus fill is also 0.16. In either case, 0.16 ÷ 100 × 10,000 = 16 basis points. The price difference on ten units is 1.60; adding the hypothetical explicit fee of 1.00 gives a reference-based cost of 2.60.
A simple arithmetic mean of the two buy prices would be 100.15. It is wrong for this order because the quantities differ. A fill better than the reference would instead give a negative signed cost: price improvement, not proof that the trade itself was profitable.
Spread and slippage require a stated benchmark
The quoted spread in this example is ask minus bid, or 0.20. Midpoint-to-fill distance is a different measurement. It may include crossing the spread, changes after the snapshot, market impact or a stale quote. The recorded fields do not identify each cause separately.
For the buy, comparing 100.16 with the reference ask of 100.10 gives another difference, 0.06 per unit. That answers a different benchmark question from comparing with the midpoint. Label the benchmark and its time; do not call all midpoint cost “pure slippage.” Do not add another assumed half-spread on top of the observed fill-to-midpoint difference.
The conventional effective-spread expression doubles the signed midpoint distance. It is not a prediction of what a later exit or a complete round trip will cost.
Check the order with the existing tool
- Group only the fills of one order, in one currency and with the same chosen reference.
- Calculate the quantity-weighted fill: sum of quantity × price divided by total positive quantity.
- Open the midpoint execution cost calculator. Enter buy, midpoint 100, average fill 100.16, quantity 10 and fee 0 to check the 16 bps price result first.
- Add explicit fees separately. If using the calculator's percentage field, convert a money fee with 100 × fee amount ÷ (average fill × quantity). The buy example's 1.00 fee corresponds to approximately 0.0998403%, not a quoted exchange tariff.
For the sell example, select sell and enter average fill 99.84. Keep its fee conversion separate. Do not aggregate different references or both sides into one invented average order.
What this log cannot establish
A timestamp in a CSV is a record supplied by you, not a verified exchange clock. This worksheet does not measure latency, reconstruct the full order book, score a broker or import every platform's export. Rebates, taxes, derivatives multipliers and nonlinear payoffs require additional rules. The files make the underlying observations inspectable so you can see which questions remain unanswered.
Use the related tool
Midpoint execution cost and spread calculator
Use the related toolSources and scope
Created with AI assistance. Worked examples and downloadable files are checked for consistency. Provider documentation supports the explanations; it is not a test of a broker or a prediction of trading results.