Part of: Risk Management
Transaction Cost Analysis
Implicit costs run 10-50 bps per trade; at 2x annual turnover that erodes 40-200 bps of alpha. Slippage breakdowns show which venue or size is responsible.
Marcus Chen7 min readIn mid-2023 I ran my first honest TCA across my personal book, about $180k at the time, trading 2.3× per year across a mix of ETFs and individual names. The attribution said I was beating benchmark by 3.2% per year before costs. The TCA said my median arrival slippage was 18 bps per fill and my VWAP slippage was 7 bps, which at 2.3× turnover was costing me about 57 bps per year on the ETF side and closer to 90 bps on single names where impact was higher. I'd been tracking attribution for years; I'd never once computed the implementation cost. Subtracting it, my actual alpha was closer to 2.2%, still positive, but a quarter of what I'd been telling myself. More importantly, the per-venue breakdown showed that one of the brokers I'd been using was responsible for two-thirds of the adverse arrival slippage; switching venues and splitting larger orders into 15-minute child slices dropped my median arrival slippage to 6 bps over the next six months. That simple change recovered about 40 bps of annual return per year, purely on execution, before any change to the strategy itself. The alpha in a mature retail book is often hiding in the execution, it's just that "commission-free" marketing trained a generation of traders to think execution was free, when what actually happened is that the cost migrated from explicit commissions into implicit slippage.
This post is about the Portfolio TCA card, what implementation shortfall actually measures, and the three diagnostic patterns that separate "bad strategy" from "fine strategy executed badly."
TL;DR
- Every fill has implicit costs: spread crossed at the touch, adverse selection, and impact from trading into illiquidity.
- Arrival slippage = fill price vs. midquote at order release. Captures timing + impact.
- VWAP slippage = fill price vs. volume-weighted average price over the window. Captures impact relative to the market.
- Per-venue breakdown exposes router problems. Bad venues can account for most of the total cost.
- Slippage scales non-linearly with size. Below a clear knee, single orders are fine; above, split into child orders.
Why execution math matters
A reasonable retail book turning over 2× per year at $100k-500k AUM typically pays 10-50 bps per trade in implicit costs. At 2× turnover that's 40-200 bps per year, compounding negatively against your alpha. If your expected alpha is 500 bps before costs, you're giving back 20-40% of it to execution. If your alpha is 200 bps before costs, you may be flat-to-negative after costs without knowing it.
Commission-free trading obscured these costs, they didn't disappear, they got wrapped into payment-for-order-flow economics and wider effective spreads on certain venues. The per-venue slippage variance that TCA exposes is specifically the byproduct of different order-routing economics. Some venues are quite good; some are systematically worse. Without TCA you can't tell which is which on your own order flow.
The specific value of TCA for a retail portfolio is not just the aggregate cost number but the diagnostic breakdown that tells you *where* the cost comes from. Aggregate cost is a summary statistic you can't act on; the per-venue, per-symbol, per-size breakdown is actionable.
What the TCA card shows
The TCA card computes two implementation-shortfall metrics on every historical fill:
- Arrival slippage: fill price vs. midquote at the moment the order was released, in basis points, signed (positive = you paid more than reference)
- VWAP slippage: fill price vs. VWAP over the execution window, in basis points, signed
- Distribution histogram: median, 25th/75th percentile, and tail of your historical slippage
- Size-vs-slippage scatter: exposes the knee where impact becomes nonlinear
- Per-symbol breakdown: which names are costing you the most
- Per-venue breakdown: which brokers are routing your orders to bad destinations
- Time-of-day breakdown: open/close vs. mid-session slippage patterns

Three diagnostic patterns
Arrival slippage > 20 bps on liquid names = order-routing or timing problem. Liquid names (SPY, QQQ, large-cap tech) should fill within 2-5 bps of arrival midquote in any reasonable execution. If your median arrival slippage is 20+ bps on these, you're either routing to a poor destination or releasing orders into adverse moments (e.g., right into the open, when spreads are widest). Switching venues or splitting into child orders usually resolves it.
VWAP slippage near zero but arrival negative means you're patient relative to VWAP but adverse-selected on arrival. This is the signature of "your own signal is known", by the time your order hits the market, the price has already moved against you because the information you're trading on has leaked or was simultaneously published to other participants. The fix is to randomize execution timing relative to the signal, not to execute faster.
Slippage scaling with size above a clear knee tells you the max size you can trade in a single order. Below the knee, single market orders or IOC are fine; above, you need to split into child orders over 10-30 minutes. The knee is name-specific, the scatter plot makes it visible empirically rather than requiring you to guess.
Example: the mid-2023 diagnostic
The TCA breakdown when I ran it the first time:
| Metric | Value | Comment |
|---|---|---|
| Median arrival slippage (all fills) | 18 bps | Too high for an ETF-heavy book |
| Median VWAP slippage | 7 bps | Acceptable but not great |
| ETF slippage (arrival) | 12 bps | Routing problem |
| Single-name slippage (arrival) | 29 bps | Impact + timing |
| Venue A slippage (arrival) | 26 bps | Bad router |
| Venue B slippage (arrival) | 9 bps | Good router |
| Knee size (liquid names) | ~$30k | Above this, split orders |
The per-venue breakdown identified Venue A as responsible for roughly two-thirds of the total slippage. Migrating flow to Venue B plus implementing a simple 15-minute TWAP split for single-name orders above $30k dropped the median arrival slippage to 6 bps within three months. Annualized, that's 29 bps of return recovered per year at 2.3× turnover, more than my discretionary edge contributes.
What TCA won't tell you
- Whether the strategy is any good. TCA is implementation cost only; if the signals themselves are flawed, better execution doesn't save you.
- Whether to hold the position. TCA is trade-level; it doesn't address position-sizing or duration.
- Opportunity cost of unfilled orders. If your limits don't fill, there's no slippage, but also no alpha capture.
- Funding costs. Short interest, margin interest, and borrow costs are separate from trade-level TCA.
- Tax drag. Post-tax returns are a separate calculation; TCA is pre-tax.
Common mistakes
- Only looking at commissions. The explicit cost (commission) is trivial compared to the implicit cost (slippage) in most retail brokerages.
- Benchmarking against the wrong reference. Arrival is the right benchmark for opportunistic trades; VWAP is the right benchmark for scheduled executions.
- Ignoring the tail. Median slippage is OK; the 95th-percentile slippage on large orders is where the real damage happens. Check the tail, not just the median.
- Not rerunning TCA periodically. Venue economics change; broker routing changes. Re-run quarterly.
- Blaming every bad fill on execution. Sometimes the market moved for reasons unrelated to your order. The distribution (not any single fill) is what's diagnostic.
Where it fits
TCA pairs with Attribution, attribution tells you where return came from; TCA tells you how much of that return you gave back on the way in and out. Also useful alongside Rebalance for judging whether a rebalance trigger is worth the implementation cost, a ±2% drift threshold that triggers a 30-bps-slippage trade is leaving money on the table. For the strategic view of whether your aggregate transaction costs are eating your alpha, the Portfolio Attribution net-of-costs view is the summary number.
FAQ
How do I access fill-level data?
Brokers that support the FIX protocol or institutional-style trade confirmations provide fill-time, fill-price, and midquote-at-release data. For retail brokers without API access, the card supports CSV upload of trade confirmations; midquotes are reconstructed from historical NBBO.
How often should I review TCA?
Quarterly is a good cadence. Run ad-hoc after any broker or router change.
Is slippage symmetric for buys and sells?
Not always. On average, buys have slightly worse slippage than sells on liquid names (uptick selection). The card reports buy and sell slippage separately.
What about options TCA?
Supported on the card separately, options slippage is dominated by wide spreads on less-liquid strikes, which is a different problem from equity slippage. Options TCA typically shows much wider distributions.
How does PFOF affect my TCA?
Payment-for-order-flow is already baked into the prices you get, the card measures the end-state cost regardless of the routing economics. If your broker sells your flow to a venue with bad economics for you, it will show up as elevated arrival slippage on this card.
Related reading
- Portfolio Alt Sentiment Integration
- Portfolio Attribution
- Portfolio Audit Trail
- Portfolio Credibility Scoring
Open the TCA card → /app/portfolio
See it in the app
Live dashboard views that match this post. Each tile deep-links to the exact card.
Related reading
Alt-Data Sentiment at the Portfolio Level
Per-ticker alt-data breaks down past 10 positions. A roll-up of WSB, news, MSPR, and options lets a 90-second scan replace 100 minutes of manual checking.
Portfolio Attribution: Where Your Returns Actually Come From
Beating the benchmark by 400bps feels good until attribution tells you it was all allocation luck on one sector call. Selection vs. allocation vs.
Portfolio Audit Trail: Every Decision
Regulated managers need an audit trail. The Audit Trail card on alphactor.ai records every trade, rebalance, alert, and note into one timestamped log you…
Portfolio Credibility
Conviction is self-reported; credibility is externally anchored. The two diverge exactly where mistakes live, an 8% position in a name you love with a…
Portfolio Earnings: Calendar, Exposure
Earnings risk is about the whole book into the week, not each position. When 40% of NAV reports in one week, and 60% of that is in a single sector, you're…
Ready to try alphactor.ai?
Validate your trading strategies with statistical credibility testing. Start free.
Get Started Free


