Simple claim: Black–Scholes is a contrast card about replication under a named mesh, not a trade ticket, and mesh choice can move the number more than the claimed edge. The trench is incompleteness and discrete honesty.
There is a specific slide I have seen too many times, and it is always convincing.
Model value 10.45. Market mark 9.90. Difference 0.55. The column is headed edge, sometimes dislocation, occasionally something more careful like model-implied richness. Whatever it is called, the next column is a suggested size, and the meeting is now about whether to act rather than about whether the 10.45 means what the column header says it means.
The formula is not the problem. Black-Scholes is one of the most tested objects in the field, and everything this series has built, replication, measure change, the price of risk, converges on it. The problem is what happens in the two inches between a closed form and a size.
What the formula is a statement about
Problem in one line: a closed form is a contrast card under a named mesh, not a trade ticket. Mesh choice can move the number more than the edge anyone claims.
| Black–Scholes call (S=K=100, r=5%, σ=20%, τ=1) | Value |
|---|---|
| d₁, d₂ | ~0.35, ~0.15 |
| Closed-form V | ≈10.45 |
| Market mark (example) | 9.90 |
| “Edge” column | 0.55, not yet alpha |
The derivation is worth holding in mind precisely because it is so clean. Under Q the stock is a geometric Brownian motion with drift equal to the short rate, so log S_T is normal with drift r − σ²/2 and variance σ²τ. The call is worth the discounted risk-neutral expectation of max(S_T − K, 0), a Gaussian integral that collapses to
V = S Φ(d₁) − K e^{−rτ} Φ(d₂).
Take S = K = 100, r = 5%, σ = 20%, τ = 1. Then d₁ = 0.35, d₂ = 0.15, and V ≈ 10.45.
Now read what had to be true. Trading is continuous. The self-financing portfolio rebalances at every instant, at no cost, in arbitrary fractional size, with no spread and no market impact. Volatility is constant. The market is complete, so the claim is exactly attainable and its price unique. Under those conditions 10.45 is not an estimate, it is the cost of a portfolio, in the same sense that 7.14 was the cost of half a share and a loan in the one-period tree.
Every one of those conditions is false on a real desk. Not approximately false, categorically false.
What the mesh alone does to the number
| Binomial mesh (same contract) | Price |
|---|---|
| 1 period | 12.16 |
| 2 periods | 9.54 |
| 4 periods | 9.97 |
| Span | ~2.62 on a ~10 claim |
| vs claimed edge 0.55 | Mesh noise > edge then refuse size until scheme locked |
Here is the experiment I wish appeared next to every model-value column. Price the same claim, in the same world, with the same σ, using a properly calibrated binomial tree, and vary only the number of rebalancing dates.
With one period: 12.16. With two: 9.54. With four: 9.97. Continuous ideal: 10.45.
Nothing changed except how often the hedge is allowed to trade. The numbers do converge toward 10.45 as the mesh refines. CRR is a consistent scheme and the oscillation around the strike is a known, well-behaved artifact. But look at the spread across meshes anyone might plausibly run: 2.62, on a claim worth about ten.
Set that against the 0.55 in the edge column. The mesh choice moves the price nearly five times as far as the dislocation being traded. Which means the honest reading of the slide is not "we found 0.55 of edge." It is "we found a number that is 0.55 away from the market, using one point from a family of defensible model values that spans 2.62." The edge is inside the model's own resolution.
And refining the mesh is not a free fix, because the two error sources point in opposite directions. Coarse hedging leaves discretization error: the position tracks badly between rebalances. Fine hedging leaves cost error: every rebalance crosses a spread. With a five-cent spread and a delta that moves meaningfully across four rebalances, trading cost on a ten-point premium is a visible fraction of the claimed edge. There is an optimum, it depends on liquidity, and it is emphatically not "as fine as possible." A path budget, how often you may rebalance, how much spread you may spend, is therefore part of the price, not part of the execution notes.
How this shows up in production
- Model-minus-market as expected profit. A difference between a model value and a mark gets treated as a directional forecast. It is not. It is a statement that the model and the market disagree, and on a thinly-traded structure the prior should be roughly symmetric about which of them is wrong.
- The unposted mesh. A pricing library defaults to some number of steps. Nobody chose it, it does not appear on the output, and it does not appear when two teams reconcile. Two "identical" prices differ, and the reconciliation goes looking in the inputs, where the discrepancy is not.
- Continuous ideal assumed downstream. The price is computed under frictionless continuous trading, then the same artifact drives exposure, limits, and P&L attribution for a book that trades a few times a week. The frictions were never subtracted because they were never represented.
- A point where the market is incomplete. The formula always returns a scalar, and nothing in it can tell you the claim is not attainable in your actual market. A single number arriving where a band belongs is
POINT_ON_INCOMPLETE: the same failure the tree posts warned about, now dressed in a closed form and therefore much more persuasive.
A CEH-001 edge that looks like alpha
| Failure | Gate |
|---|---|
| Model 10.45 vs mark 9.90 with free mesh | SCHEME_UNLOCKED refuse |
| Edge used to force dual CEH marks toward 1.80 | Deny midpoint; mesh not a reconciler |
| Closed form for structure with no closed form | Force representation / tree (S2-20) |
Same never-traded note. Spread frame near 1.50, curve frame near 2.10, and the desk denies 1.80 because the midpoint is a way of not answering.
The equity leg gets a closed-form value. It comes in above the spread-frame implied level and below the curve-frame one, which is exactly what you would expect from a formula with a single volatility input applied to a structure whose two frames disagree about the volatility surface in the first place. The memo reads well: independent model value sits between the two frames, suggesting both are somewhat mismarked and fair value is closer to the middle.
That sentence is how 1.80 gets built. Not by anyone advocating for the midpoint, but by a model whose single-point output lands near the center of a disagreement it was never equipped to adjudicate, and whose own mesh uncertainty is wider than the gap between the frames. The formula did not resolve 1.50 versus 2.10. It produced a third number with no error bar and let proximity do the arguing.
The refuse code is DENY_BS_AS_ALPHA, and it is not a claim that the formula is wrong. It is a claim about what the output is for. 10.45 is a contrast, a benchmark against which the tree's 9.54, the market's mark, and the incomplete-market band can be compared, and disagreements among them are informative. What it is not is a signal, because a signal has to survive its own model uncertainty, and here that uncertainty is 2.62 wide before anyone has argued about volatility.
What stacks quietly assume
That a closed form is more trustworthy than a numerical one because it has no visible parameters. That discretization is an implementation concern rather than a pricing input. That the difference between a model and a market forecasts which will move. That σ is a number rather than a surface. That a formula returning a scalar means a scalar exists. That the continuous ideal approximates a book which trades weekly, when it is an entirely different regime with different costs.
What a solution must do
Problem: closed forms get treated as tickets; rebalancing mesh silently moves value more than claimed edge. Solution: treat BS as contrast under a named scheme card; lock mesh / rebalancing frequency; size only after residual and scheme hashes match; incomplete markets then band (S2-20).
What to lock
- Every closed-form mark cites model card +
scheme_hash(mesh, rebalance rule, day count). - Edge = model − market is not a size signal until scheme is locked and residual is carded.
- Mesh sensitivity table is a unit test: if mesh span > claimed edge, refuse promotion.
- CEH dual marks: two scheme cards if two models; never average to 1.80.
- Agents may quote BS; harness spends only with scheme + hedge certificate (S2-20).
Clearance coupling: Black–Scholes is not a trade ticket. Next: replication certificate or refuse (S2-20). Part II close.