Read the first chapter
The whole of chapter one, free. About 10 min. Turn the pages with the arrows, your keyboard, or a swipe.
Chapter 1
Execution Costs: Total Cost Decomposition
The first time you see a trade that “won” on your screen but “lost” in the account, you stop trusting the blotter. The gap usually hides in execution costs you did not model: explicit fees that hit your cash balance, implicit costs that come from how you move through the market, and the opportunity cost of what you gave up while you waited. If you can’t separate those pieces, you can’t tell whether your signal worked, whether your routing mattered, or whether your execution schedule needs a rewrite.
Nadia, 34, a systematic equity trader at a prop firm, ran into this in a routine momentum sleeve. The backtest assumed clean fills at mid, and the live portfolio manager (and the firm’s risk desk) wanted “realized P&L after costs” for every decision. Nadia’s first instinct - “slippage is just slippage” - did not survive contact with the data. Commission and exchange fees were a small line item, but the real pain came from how her orders interacted with spread, depth, and timing.
After this chapter, you will be able to take any completed trade (or any executed order slice) and decompose realized profit and loss into three explicit components using the TC3 Decomposition Model: Explicit Fees, Implicit Costs, and Opportunity Cost. You will also know where to measure each term, how to compute it with the fields you already have (fills, timestamps, quotes, and order details), and what patterns tell you the decomposition is wrong.
Execution Costs as a TC3 Decomposition Model (Explicit Fees, Implicit Costs, Opportunity Cost)
The TC3 Decomposition Model starts with a simple bookkeeping identity: once you know your intended reference price and the actual fill prices, you can attribute the difference to costs in three buckets. The “reference” matters because it defines what you consider the trade’s economic decision price. In practice, traders use one of: prior close, arrival mid, or decision VWAP. For execution quality work, you want a reference that aligns with the moment you decided to trade. Use arrival mid for single-event analysis (arrival timestamp + mid quote), and use decision VWAP for longer horizons.
Explicit Fees capture costs that the market venue or your broker charges and that show up in statements: commissions, exchange fees, clearing fees, regulatory fees, and sometimes market data fees if you allocate them. You can measure them directly from your broker ledger for the trade or from FIX execution reports that carry fee fields. These costs do not depend on how aggressively you cross the spread; they depend on where and how you traded and on your fee schedule.
Implicit Costs capture costs caused by trading itself: spread capture or spread loss, adverse price movement while you execute, and price impact from your own order flow. You don’t need a microstructure PhD to estimate it. You can build an executable approximation: compare each fill price to the reference price at that fill’s time (or at least at arrival time), then separate the part that comes from spread versus the part that comes from price moving through the book. The key is consistency: use the same quote source and the same timestamp alignment for every trade you compare.
Opportunity Cost captures the economic cost of not having your position at the moment you wanted it (or not having the alternative you could have held). For a completed trade, opportunity cost often shows up as the difference between “what you could have earned” from holding a reference instrument/position at the decision time and “what you actually earned” after execution delays and partial fills. This bucket matters most for strategies that trade around events, rebalance windows, or liquidity targets, because waiting can turn a good signal into a late one.
Use the TC3 Decomposition Model with the following measurement rules:
1. Lock the reference price (P_ref) at decision time. Pick one reference and stick to it. For example: arrival mid = (best bid + best ask) at the first order submission timestamp for that slice. This anchors “what your strategy thought it was trading.”
2. Sum explicit fees (Fees_exp) for the executed quantity. Pull broker line items tied to the same execution report(s) or order ID(s). Treat them as negative P&L. If your broker reports fees per share, multiply by executed shares for the slice.
3. Compute implicit costs (Costs_imp) from fill prices relative to the reference. For each fill i with executed price P_i and executed shares Q_i, compute the notional difference vs reference: (P_i − P_ref) × Q_i with the sign convention you use for P&L. Then convert that notional into P&L impact for buys vs sells consistently. If you want spread-specific decomposition, use mid at fill time (P_mid,i) and compute: spread component = (P_i − P_mid,i) × Q_i; movement component = (P_mid,i − P_ref) × Q_i.
4. Compute opportunity cost (Cost_opp) from timing and alternatives. Define what you waited for. Common choices: - If you aimed to complete by time T_end, use the reference price at T_end (or last mid before completion) to quantify what the market did during the execution window. - If you targeted a specific participation rate or VWAP, compare to that target window’s realized reference. In both cases, you measure opportunity cost as “difference between the reference you could have held” and “the realized economic outcome after execution timing,” net of implicit costs already counted.
A practical way to ensure TC3 adds up: compute realized P&L for the trade slice, then verify that P&L_realized ≈ P&L_reference − (Fees_exp + Costs_imp + Cost_opp) under your sign conventions. When the identity fails, the usual culprit is a mismatch in share quantities, reference timestamps, or quote sources.
Putting It Into Practice: Nadia’s Single-Slice Decomposition Walkthrough
Nadia’s prop firm required a daily “execution cost breakdown” for each rebalance order. She chose one slice per day for debugging: a buy of 50,000 shares of a liquid US equity, executed over 12 minutes in 5 fills routed to a primary venue with occasional child order adjustments.
She had three data streams available: (1) execution reports with fill prices, quantities, and fees; (2) a quote feed with bid/ask at millisecond timestamps; and (3) her own order timestamps (submission, first fill, completion). She used arrival mid as P_ref and computed TC3 at the slice level.
Here is the walkthrough with concrete numbers.
Assumptions and sign convention (make this explicit in your notebook): - Trade direction: Buy 50,000 shares. - P&L_realized for the slice is measured relative to P_ref and includes all realized effects. - We express costs as positive numbers that reduce P&L.
Data observed - Arrival mid at order submission (P_ref): $25.00 - Fills (price, shares): 1) $25.02 for 20,000 shares 2) $25.01 for 15,000 shares 3) $25.03 for 10,000 shares 4) $25.02 for 5,000 shares - Total executed: 50,000 shares - Explicit fees from broker statement for this slice (Fees_exp): $600 total - Mid at each fill time (P_mid,i): 1) $25.00 2) $25.00 3) $25.01 4) $25.01
Step-by-step TC3 decomposition
1. Compute explicit fees (Fees_exp). Fees_exp = $600 (already in cash terms for the slice).
2. Compute implicit costs (Costs_imp) using fill vs arrival mid. Notional cost vs reference for a buy slice: (P_i − P_ref) × Q_i summed over fills. - Fill 1: (25.02 − 25.00) × 20,000 = $0.02 × 20,000 = $400 - Fill 2: (25.01 − 25.00) × 15,000 = $0.01 × 15,000 = $150 - Fill 3: (25.03 − 25.00) × 10,000 = $0.03 × 10,000 = $300 - Fill 4: (25.02 − 25.00) × 5,000 = $0.02 × 5,000 = $100 Costs_imp_total = $950
3. Optionally split implicit into spread vs movement using mid at fill time. This helps you diagnose whether your orders paid the spread or chased a moving market. - Spread component per fill: (P_i − P_mid,i) × Q_i - Fill 1: (25.02 − 25.00) × 20,000 = $400 - Fill 2: (25.01 − 25.00) × 15,000 = $150 - Fill 3: (25.03 − 25.01) × 10,000 = $200 - Fill 4: (25.02 − 25.01) × 5,000 = $50 Spread component = $800 - Movement component per fill: (P_mid,i − P_ref) × Q_i - Fill 1: (25.00 − 25.00) × 20,000 = $0 - Fill 2: (25.00 − 25.00) × 15,000 = $0 - Fill 3: (25.01 − 25.00) × 10,000 = $100 - Fill 4: (25.01 − 25.00) × 5,000 = $50 Movement component = $150 Spread + movement = $800 + $150 = $950, matches Costs_imp_total.
4. Compute opportunity cost (Cost_opp) from execution timing. Nadia aimed to finish by T_end = 12 minutes after submission. At completion, the arrival-anchored mid moved up. She measured the mid at completion (P_mid,comp): $25.01. For a buy, the opportunity cost relates to the fact that she carried “not fully filled” inventory exposure during the window. A simple executable approximation at slice level: treat the unfilled portion as having missed the completion reference for the duration. With full fills by completion, you still pay an economic cost if the market moved while you executed. One practical approach: compute the economic difference between buying everything at completion mid and buying at arrival reference, then reconcile with implicit. For consistency with TC3 (and to avoid double counting), define Cost_opp as the portion of economic regret that comes from not having full exposure at the earliest time you could have had it. In this scenario, she used an arrival-to-completion mid move as opportunity cost on the shares that arrived “late” relative to a chosen completion schedule. She defined “early completion target” as having 80% filled by minute 6 (because her strategy’s signal window decays after that). Observed: at minute 6 she had filled 35,000 shares; late shares = 15,000. Mid move from arrival to completion: (25.01 − 25.00) = $0.01. Cost_opp ≈ late_shares × mid_move = 15,000 × 0.01 = $150.
5. Reconcile and sanity-check. Total costs = Fees_exp + Costs_imp + Cost_opp = 600 + 950 + 150 = $1,700. If her realized P&L relative to P_ref showed roughly this magnitude (within rounding and any other small pipeline costs), she trusted the decomposition. If not, she checked share totals and timestamp alignment first.
Quick checklist
• Confirm you use arrival mid (or your chosen P_ref) for every slice in the same analysis run. - Pull explicit fees from the broker ledger tied to the same order IDs. - Compute implicit costs from each fill price vs P_ref; if you split further, use mid at fill time from the same quote feed. - Define opportunity cost with a measurable timing rule (completion mid, early-fill threshold, VWAP window) so you can reproduce it nightly. - Reconcile TC3 totals against realized P&L within your known accounting gaps.
When you do this consistently, the breakdown stops being a reporting exercise and becomes a diagnostic tool. Nadia’s slice showed heavy spread-related implicit costs ($800 of $950), which pointed to aggressive order placement or queue dynamics rather than pure market drift.
What to Watch For: Common Mistakes and Edge Cases in TC3
The decomposition gets you decisions, not just numbers. The traps below show up repeatedly when traders try to automate TC3 across many symbols and venues.
Double counting movement as both implicit and opportunity cost Symptom: Costs_imp already includes mid movement from arrival to fill times, but you also compute opportunity cost using the same mid move over the same window. Your TC3 totals overshoot realized P&L. Do this: Define Cost_opp from a different economic question than the one used in Costs_imp. For example, compute Costs_imp from fill vs arrival mid; compute Cost_opp from “late fill fraction vs early fill threshold” using completion mid move, not from the same mid path used in Costs_imp. Not this: Compute Costs_imp using mid at fill time and then compute Cost_opp using completion mid move across the entire filled size.
Timestamp mismatches between fills and quotes Symptom: You see negative implicit costs on buys (or positive on sells) even when the market clearly moved against you. The spread component looks implausibly small or huge. Do this: Align quote timestamps to fill timestamps using a deterministic rule (e.g., use the most recent quote at or before the fill timestamp, or use the quote at the nearest millisecond bin). Apply the same rule across the dataset. Not this: Mix “quote at fill time” from one feed with “mid at order submission” from another feed that uses different clock drift or different sampling.
Fee allocation errors across partial fills and order modifications Symptom: Fees_exp does not reconcile with broker totals, especially when you cancel/replace orders or route to multiple destinations. Your TC3 residual becomes a persistent bias. Do this: Map fees at the execution report level by order ID and execution ID. Aggregate only those fees that correspond to the executed quantity you include in the TC3 calculation. Not this: Assign a day-level fee total to every slice proportionally without checking how the broker bundles fees across child orders.
A good TC3 output behaves like a stable instrument model: when you rerun the same slice tomorrow with the same data rules, you get the same decomposition; when you change routing, you see the spread component react first; when you change execution timing, you see the opportunity component react first. That separation becomes the lever you use to improve execution quality - measuring whether you lost money to fees, to market interaction, or to timing regret.
If you can break realized P&L into Explicit Fees, Implicit Costs, and Opportunity Cost with the TC3 Decomposition Model, you stop arguing about “slippage” and start diagnosing what actually happened in the market. Next, you will turn those components into a repeatable measurement workflow and connect them to the execution decisions that generate them.
End of chapter one. 7 more chapters in the full book.
Swipe or use the arrows to turn the page
What's inside: 8 chapters
- 1. Execution Costs: Total Cost Decomposition
- 2. Slippage Metrics: From Mid to VWAP
- 3. Arrival Price and Implementation Shortfall
- 4. Market Impact Models for Practitioners
- 5. Liquidity, Order Book, and Queue Dynamics
- 6. Optimization for Execution: Cost vs Risk
- 7. Benchmarking and Attribution of Execution Quality
- 8. Post-Trade Analytics and Slippage Control Loops
About this book
"Transaction Costs And Slippage" is a finance book by Michael Burney with 8 chapters and approximately 16,517 words. Measuring, modeling, and reducing trading transaction costs and slippage.
This book was created using Inkfluence AI, an AI-powered book generation platform that helps authors write, design, and publish complete books. It was made with the AI Ebook Generator.
Frequently Asked Questions
What is "Transaction Costs And Slippage" about?
Measuring, modeling, and reducing trading transaction costs and slippage
How many chapters are in "Transaction Costs And Slippage"?
The book contains 8 chapters and approximately 16,517 words. Topics covered include Execution Costs: Total Cost Decomposition, Slippage Metrics: From Mid to VWAP, Arrival Price and Implementation Shortfall, Market Impact Models for Practitioners, and more.
Who wrote "Transaction Costs And Slippage"?
This book was written by Michael Burney and created using Inkfluence AI, an AI book generation platform that helps authors write, design, and publish books.
How can I create a similar finance book?
You can create your own finance book using Inkfluence AI. Describe your idea, choose your style, and the AI writes the full book for you. It's free to start.
Write your own finance book with AI
Describe your idea and Inkfluence writes the whole thing. Free to start.
Start writingCreated with Inkfluence AI