Lesson 02 · 5 min
Rules on Paper
Hundreds of pages of legal text, translated into code privately at every firm.
Where the fields live
The swap owes a couple hundred reportable fields. Where is the list? In documents. The EU's version is a stack: the regulation itself, technical standards that tabulate the fields, a validation-rules spreadsheet revised on its own schedule, guidelines running to hundreds of pages, and a rolling Q&A that quietly adjusts what the other documents mean. The US version is leaner but the same in kind: a rule plus a technical specification. All of it prose and tables, written for lawyers, binding on engineers, executable by nobody.
So every firm runs the same translation chain. Legal reads the text and writes a memo. Compliance turns the memo into an interpretation. Analysts turn that into requirements documents. Developers turn those into code, mapping from the firm's own proprietary trade representation, and you already know the punchline: before the CDM, every firm's swap looked different. Each hop in the chain can bend meaning a little. Run the chain once per firm, across hundreds of firms, and the same sentence of law ends up encoded hundreds of slightly different ways.
Regulation ships as documents
Rule text, field tables, validation spreadsheets, guidelines, Q&As. None of it runs. Everything that runs is a private derivative of it, written downstream.
Every firm runs the same translation
Legal memo, requirements doc, engine code. The work is near-identical at every firm, done in parallel, at full cost, with no way to share the output.
Ambiguity is resolved in private
Where the text underdetermines the answer, each firm picks a defensible reading and buries it in code nobody else can see. The readings only meet when reports collide at the repository.
The text keeps moving
Q&A updates and validation revisions land between the big rewrites, and each one can re-trigger the whole chain. Interpretation is not a project; it is a permanent department.
One number with nowhere to go
A concrete one, from the rates desk. Pershing Square executes a curve trade with Goldman: two swaps, different maturities, negotiated and executed as one package at a single spread of 12.5 basis points between the legs. Each swap gets its own UTI and its own report. So where does the 12.5 go? It is not a leg's number, it belongs to the package, the relationship between the two swaps. And a swap leg has no "price" to fold it into; its economics are a rate. Early rules asked each report for fields that describe a leg and said nothing about a level that lives one floor up. So each firm decided for itself.
{ "trade": "two-leg curve package, executed at one spread", "theNumber": "12.5 bp, a property of the package", "legFields": "each leg reports its own rate, not a price", "readingA": "fold the spread into one leg's rate", "readingB": "split it across both legs' rates", "readingC": "report each leg raw, the spread captured nowhere"}
The pattern repeats everywhere you look. Is the notional of the October-cut swap 10,000,000 (as written) or 6,000,000 (as it stands)? Today's rules say current value plus schedule fields; early text was silent, and firms diverged. Which of the twelve timestamps on the event's EventTimestamp is "the execution time"? Every such question got hundreds of private answers before it got one public one.
01Before DRR, where did a reporting requirement live in executable form?