Skip to content
The Liberation Engine

Follow the money: before the collapse / Lesson 2 of 2 · Decide

Can a trading firm survive its worst morning?

A trading firm says its software sent erroneous orders and reports a severe loss. You have its last public capital snapshot and its first incident disclosure: make a financing call before opening what investigators learned later.

What the agent made

Ran it for real with OMP 18.10.4 on 2026-10-14. The first session started with no saved memory; each later session was a new one that kept only the files in the folder. Your result will differ.

Then a brand-new session used what it saved on new input: see the proof.

Make your own

  1. Get the files

    Download the practice folder (ZIP)

    Unzip it: you get a folder called cli-practice with 3 practice files. Knight Capital's July 18, 2012 earnings exhibit and August 2, 2012 incident exhibit with an EDGAR source ledger. The August 6 financing and October 2013 regulator findings are held back for a fresh session. It also has a for-later folder with the new files for the fresh sessions.

  2. Open your agent in that folder

    Open a terminal in cli-practice and type claude or omp --approval-mode always-ask. First time? Set up in about five minutes, with steps for Mac, Windows, and Linux.

  3. Paste this prompt

    Work inside this practice folder. Read only quarter.txt, disruption.txt and SOURCES.csv. Do not modify those inputs, use the network, install packages, read outside the folder, or ask for further replies. Python 3 standard library only. Use American English spelling in all page copy, such as "collateralized," never British variants. Do not use em dashes or en dashes. It is August 3, 2012: you cannot know any later document.
    
    You are advising a counterparty deciding whether to rely on Knight Capital continuing normal operations without new capital. From the source text, calculate the reported incident loss as a fraction of the last publicly reported total equity and cash. The balance sheet's numeric columns are scaled by 1,000, while the loss estimate is stated in millions. Show a clearly labeled mechanical pre-tax equity subtraction, not a new pro forma financial statement. Explain why a realized pre-tax trading loss is not automatically the same as a dollar-for-dollar change in unrestricted cash, and why June balance-sheet cash cannot tell you the current regulatory capital, funding requirements, customer withdrawal risk, tax effect, or next trading day's liquidity. Give a clear conditional financing call and name the records that would change it. Distinguish what the issuer explicitly said about software installation, erroneous orders, broker-dealer net-capital compliance, and continued trading from what it did not identify about the exact defect or root cause. Do not guess the mechanism or assert failure, insolvency, or mandatory capital raising as a known legal fact.
    
    Write only model.py, analysis.json, check.py and analysis.html. model.py parses the given originals and source ledger to produce analysis.json with monetary values in dollars, ratios, source identifiers, as-of date, findings, uncertainties and conditional call. Do not hardcode remembered answers into output. check.py independently re-reads source files without importing or executing model.py, computes the figures by a different method, checks decision-critical JSON and tagged amounts in HTML, validates source URLs, rejects any post-August-3 fact, fabricated exact root cause, or cash figure described as available regulatory capital. With --self-test it must make at least three separate in-memory corruptions of numerical or provenance outputs and demonstrate each is rejected without modifying originals. Run python3 model.py, python3 check.py, and python3 check.py --self-test and report their exit codes.
    
    Make analysis.html a complete self-contained offline editorial incident room, not a generic dashboard. Lead with the consequential financing call, then the dated equity-to-loss bridge and what cannot be inferred. Include one source-linked inline SVG zero-baseline bar chart comparing the last reported equity and approximate loss, in dollars with both labels and source IDs; every decision-critical amount and ratio must also appear in semantic HTML without JavaScript. For all original explanatory page copy, chart labels, tagged values, and interactive control results, express monetary amounts as complete dollar figures with comma separators, such as $440,000,000, never as a thousand-scaled figure, $440M, or $440 million. Explain the source unit scale only as "the source columns are scaled by a factor of 1,000"; the published HTML must not contain the consecutive words `in` and `thousands` anywhere, including provenance notes. Check this in check.py, but leave the original quarter.txt header untouched. Preserve faithful historical source wording, including source monetary units, in clearly attributed quotation elements and raw source fields; do not silently rewrite a quotation to meet the presentation rule. One meaningful touch- and keyboard-friendly control lets a reader apply a clearly labeled hypothetical additional pre-tax loss and recompute remaining equity and share lost beside the unchanged sourced baseline. Its baseline is the issuer's reported loss; a hypothetical is never a new known exposure or a forecast. A tap and keyboard action must visibly change the text, with a static equivalent and a reset. Embed ordinary external source links but load no external styles, scripts, fonts or data. Make the result look designed for this incident: a restrained trading tape or capital bridge, distinct findings and unknowns, visible citations, readable hierarchy. At 390 pixels wide, the page fits the screen; no word or amount ever breaks mid-word; narrow tables become stacked cards. The complete baseline and links remain visible without JavaScript. Respect reduced-motion settings.

    The prompt asks the agent to stay in this folder; it cannot enforce that. Read each file change and command before you approve it.

  4. Check it yourself

    Open cli-practice/analysis.html in your web browser (double-click it), then:

    Human check: As of August 3, use KC1 July 18 exhibit (June 30 balance-sheet figures scaled by 1,000): equity $1,496,966,000 and cash $364,798,000. KC2 August 2 issuer exhibit gives approximately $440,000,000 realized PRE-TAX loss. $440,000,000 / $1,496,966,000 = 29.39% equity; / $364,798,000 = 120.61% of June cash. The mechanical pre-tax equity remainder is $1,056,966,000, not an audited pro forma balance sheet or cash position. KC2 explicitly says broker-dealer subsidiaries are in net-capital compliance and normal trading is resuming, but also that financing alternatives are being pursued; do not infer guaranteed standalone continuity or a diagnosed root cause. Run check.py and self-test, inspect every labeled figure and cutoff.

    When we checked the recording above: Clean authenticated OpenAI OMP run exited 0 with unchanged inputs; model, independent checker and four corruption self-tests reported exit 0. Reviewed historical source-scale conversion, $1,496,966,000 equity, $364,798,000 cash, approximately $440,000,000 pre-tax loss, 29.39% equity, 120.61% cash and $1,056,966,000 mechanical remainder; source quote preserved; full-dollar explanatory HTML has no thousand-unit phrase. Responsive CSS and control wiring reviewed, browser not exercised here.

Then prove it: fresh sessions

Each run below is a brand-new session, recorded for real in OMP. It remembers nothing from the run before except the files saved in the folder, so the short prompt is the whole instruction.

2 · Follow the orders and the capital

Before this run, copy the files from for-later/reveal in the ZIP into cli-practice: OUTCOME_SOURCES.csv, order.txt, outcomes.txt.

Quit the agent, start it again in cli-practice, and paste only this:

Work only inside this practice folder. Read the original frozen packet and saved analysis first; then read outcomes.txt, order.txt and OUTCOME_SOURCES.csv. Never modify any source or original output. No network, installs, reads outside the folder, or questions. Use Python 3 standard library only. Use American English spelling in all page copy, such as "collateralized," never British variants. Do not use em dashes or en dashes. This is a fresh session: the new records were not available on August 3, 2012.

Write only reveal.json, reveal.html and reveal-check.py. Build a dated, source-linked order-flow timeline directly from the regulator's numbered findings: the deployment, old code and flag, incomplete deployment, premarket messages, opening orders, routing/executions, incident response, positions and ultimate loss. Be precise about what the order actually establishes, its later publication date, its without-admitting-or-denying settlement language, and how its loss estimate relates to the initial company estimate. Distinguish parent orders, child orders, executions, shares and long/short positions; do not subtract gross position values to derive trading loss. Read the issuer's later financing filing to distinguish a completed infusion from a speculative need, and do not imply it was knowable in the initial call. Preserve the original conditional financing call, including the original compliant-regulatory-capital statement, without pretending a hindsight verdict was certain. Do not make unsourced allegations about individuals or their motives.

reveal.json records dated events, sourced quantities, the original as-of capital bridge, financing and remaining unknowns. reveal-check.py independently parses both sets of originals, not importing or running model.py, computes and validates decision-critical values against JSON and tagged HTML, checks source URLs, and rejects the later mechanism being labeled known on August 3. Its --self-test demonstrates three distinct in-memory corrupted outputs are rejected without touching inputs. Run python3 reveal-check.py and python3 reveal-check.py --self-test and report exit codes.

Make reveal.html a complete self-contained offline page with two visibly dated columns or stacked phone cards: knowable August 3 versus established by the August 6 filing and October 16, 2013 SEC order. Include one source-linked inline SVG timeline or zero-baseline comparison where quantities have comparable units; keep all decision-critical dates, dollar amounts, order and execution quantities in ordinary semantic HTML with JavaScript off. Render all explanatory monetary amounts in full dollars with comma separators, including chart labels, comparison prose, interactive evidence panels, and original bridge; do not abbreviate as $M, $B, or "$440 million". The published HTML must not contain the consecutive words `in` and `thousands` anywhere; describe the source columns as scaled by a factor of 1,000 and ensure reveal-check.py rejects this prohibited phrase outside source packets. Historical source wording must remain intact inside clearly attributed quotation elements and raw source fields, even when it says "$440 million" or "$460 million". Neither copy raw scaled balance-sheet amounts into explanations nor rewrite authentic quotes to satisfy the display rule. Let a real reader activate a clear control to inspect one order-flow transition or later source excerpt and visibly change a substantive evidence panel, with a static equivalent and reset; pointer and keyboard both work. The timeline should make the parent-to-child routing mechanism inspectable without implying every child order executed. No external assets or network dependencies. At 390 pixels wide, the page fits the screen; no word or amount ever breaks mid-word; narrow tables become stacked cards. Respect reduced motion, preserve complete source links and distinguish approximate from exact quantities.

Human check: KC4 is August 6, 2012, after the blind cutoff: the filing records $400,000,000 completed preferred financing, 400,000 preferred shares, roughly 73% as-converted ownership, and its finance committee's stated financial-viability exception. KC5 is SEC order October 16, 2013, Release 70694: 212 parent orders, 4,000,000 executions in 154 stocks, MORE THAN 397,000,000 shares over approximately 45 minutes, and approximately $460,000,000 eventual loss, versus KC2's August 2 approximately $440,000,000 initial estimate. The order describes one of eight servers missed in deployment, repurposed flag invoking Power Peg, 97 premarket messages, and removal of new code from seven servers worsening the event. The order says settlement without admission or denial of findings except jurisdiction. Do not convert later findings into August 3 knowledge. Run reveal-check.py and its self-test and inspect interaction, dates and source links.

When we checked the recording: Clean fresh OpenAI OMP reveal exited 0 with unchanged inputs; independent reveal checker and three corruption self-tests reported exit 0. Reviewed dated knowledge boundary, 212 parent orders, >4,000,000 executions, >397,000,000 shares, $400,000,000 completed financing, SEC order $460,000,000 finding, complete-dollar explanatory HTML, preserved cited source quotation and source links. Responsive CSS and interaction wiring reviewed, browser not exercised here.

Do it for real

For a live counterparty exposure, request current audited and regulatory capital, liquidity schedules, committed financing, clearing obligations and operational incident evidence. Independent legal and financial professionals must review obligations and capital rules. This historical exercise is not investment advice.

Why an agent, not a chat window

An agent joins two dated disclosures, parses the balance-sheet unit, reconciles an approximate loss against equity and cash, and independently tests its arithmetic. A fresh session gets the financing record and regulator's technical order to build a sourced order-flow timeline, not retrofit its earlier diagnosis.

Go deeper

Why the prompt is written this way

The recorded runs

ToolModelFirst run tookFiles madeSessions
OMP 18.10.4openai-codex/gpt-6-sol4 min 45 s4first session + 1 later

The published OMP OpenAI run keeps the hypothetical-loss slider and an interactive cited order-flow reveal. The earlier Claude Code run passed its original checks but is not published because its explanatory page showed a raw balance-sheet amount instead of full dollars.

Push it further