Report pages

Table of Contents

A report page describes one report in depth: what decision it feeds, who reads it, how often it runs, what it reads and produces, the measures it carries, the ORE XML that configures it, the parameters a definition of it states, and the test that exercises it. The page is written from the report's definition and its configuration, never from one run of it. A run is a report instance, and where a run stopped belongs on the task or the investigation that owns it.

This folder holds the pages for individual reports, as report_<slug>.org. It sits beside doc/knowledge/workflows/ for the same reason: a report page is a durable statement about a report, and it outlives the sprint that wrote it.

1. What belongs here, and what does not

  • A page here owns one report: its purpose, audience, frequency, inputs, outputs, measures, ORE configuration, parameters and test coverage.
  • The pipeline that runs a report is not this folder's subject. The phases, the run configuration, the compute handoff and the substitution mechanism live in Report Processing under doc/knowledge/architecture/. A report page links that cluster; it never restates it.
  • The business catalogue of report families, their classification axes and their measures lives on Risk reporting. A report page cites the axes and the measure definitions rather than copying them.
  • A fact about one run (where it stopped, what it produced, what failed) belongs on the task or the investigation that owns that run.

2. Reports

This page is the inventory of the reports the platform documents. Each row names one report, the code its definitions and seeds refer to, and the page that describes it; a new report is a new page and a new row.

The folder holds twenty-seven pages. Fourteen describe a report the platform runs: thirteen catalogued reports, of which three run on both cycles so each has a close twin beside it, and one smoke test. Thirteen describe the vega and greek ladder family: ten are seeded and fail at the engine for the reasons their pages state, and three are documented and not seeded.

Report Code Cut Frequency Audience What it produces
Headline Position headline_position LIVE every 10 minutes, around the clock trading-desk, market-risk The headline Greeks for a book or portfolio.
Headline Position (EOD) headline_position_eod EOD 18:00 on weekdays market-risk, trading-desk The same Greeks at the close, on the authorised cut.
Intraday Risk Monitor intraday_risk_monitor LIVE every 30 minutes, 08:00-17:30 weekdays trading-desk, market-risk PV, the delta ladder, the top movers and limit use, between the closes.
Bump and Reprice Spot Greeks spot_greeks LIVE every 15 minutes, 08:00-17:45 weekdays trading-desk, market-risk PV and Delta across a grid of spot shift levels.
Bump and Reprice Spot Greeks (EOD) spot_greeks_eod EOD 18:00 on weekdays market-risk, trading-desk The spot shift grid at the close.
Bump and Reprice Triple Vol Spot Ladder triple_vol_spot_ladder LIVE hourly, around the clock trading-desk, market-risk Vega, Rega and Sega against a moving spot.
Bump and Reprice Triple Vol Spot Ladder (EOD) triple_vol_spot_ladder_eod EOD 18:00 on weekdays market-risk, trading-desk The same ladder at the close, as the statement of record.
Bump and Reprice Spot Ladder spot_ladder LIVE every 30 minutes, 08:00-17:30 weekdays trading-desk The forward curve of a currency pair, tenor by tenor.
Spike Map spike_map LIVE on demand trading-desk, market-risk Option notional against expiry date and spot level.
Strike Map strike_map LIVE on demand trading-desk The same concentration view bucketed by strike.
Option Map option_map LIVE on demand trading-desk Notional across delta, beside the strike view.
Intraday Change intraday_change LIVE every 30 minutes, 08:00-17:30 weekdays trading-desk What the market data and the risk have moved since a stated time.
Trades Since Last In trades_since_last_in LIVE every 15 minutes, 08:00-17:45 weekdays trading-desk, middle-office Every trade booked since a stated date and time.
Sample bundle smoke test sample_bundle_smoke_test LIVE on demand engineer, release check A completed run and the engine's output archive; no measures.

The Cut column is the kind of cut the seeded definition selects, and it is the column that says what the report prices from. A report on both cycles is two definitions and not one: the plain name selects LIVE and runs during the day, and the same name with "(EOD)" selects EOD and runs at the close. Headline Position, Bump and Reprice Spot Greeks and Bump and Reprice Triple Vol Spot Ladder are seeded that way.

The Frequency column is the cadence the seeded definition of each report states, in the words its page uses. The times are the hours the cron expression names, and the expression is the one the seed states rather than a rounding of it. A report whose expression can never fire runs only when a person starts it, so the column reads on demand.

The pipeline that runs every row above is ordered by Report Processing, and the compute half of it by Report compute handoff.

3. The vega and greek ladder family

These thirteen pages describe one family: a report bound to a sensitivity configuration that bumps one risk factor and reprices the book. The number a reader sees is a value change, not a derivative, and the bump is a setting of the document rather than the identity of the report.

Ten of the family are seeded. The product owner overruled the design's decision to hold them back on 2026-11-04: a definition that produces no figure costs nothing to hold, and a catalogue that states the family says more about the platform than an empty page does. Each seeded report binds its party's sensitivity run settings, which name sensitivity.xml and simulation.xml, the Risk Sensitivities engines, the six configuration types and the cut its name states. The plain name selects LIVE and the "(EOD)" twin selects EOD, so a report on both cycles is two definitions. What still stops a figure is the same for all of them, and What is not built states it.

Three pages describe a ladder the design's list does not seed. The three-pillar is the surface shift under its other name, so it is a reading of a report that exists and not a second definition. The Volga and the Vanna wait on a stored shape for a second-order and a paired figure.

Report Code Cycle Definition Audience What it produces
Bump and Reprice ATM vega ladder bump_and_reprice_atm_vega_ladder eod and intraday LIVE and (EOD) trading-desk The value change at the at-the-money point of each expiry.
Bump and Reprice Risk-reversal vega ladder risk_reversal_vega_ladder_bump_and_reprice eod and intraday LIVE and (EOD) trading-desk The call minus put change at each expiry, derived from surface points.
Bump and Reprice Butterfly vega ladder bump_and_reprice_butterfly_vega_ladder eod and intraday LIVE and (EOD) trading-desk The wing curvature at each expiry, derived from the same run.
Bump and Reprice Three-pillar vega ladder three_pillar_vega_ladder_bump_and_reprice eod and intraday the surface definition, by its other name trading-desk The three components together, which is the surface shifted with its shape held.
Bump and Reprice Surface vega ladder bump_and_reprice_surface_vega_ladder eod and intraday LIVE and (EOD) trading-desk The value change at every strike of every expiry.
Bump and Reprice DV01 ladder bump_and_reprice_dv01_ladder eod EOD market-risk The money value of one basis point at each curve bucket, in par rates.
Bump and Reprice Rho ladder bump_and_reprice_rho_ladder eod and intraday LIVE and (EOD) market-risk The rate value change at each tenor, discount and projection apart.
Bump and Reprice Volga ladder bump_and_reprice_volga_ladder eod not seeded trading-desk Gamma on the vol factor, the curvature in volatility.
Bump and Reprice Vanna ladder bump_and_reprice_vanna_ladder eod not seeded trading-desk The paired rows, one factor a spot and the other a volatility.
Bump and Reprice Delta ladder bump_and_reprice_delta_ladder eod EOD trading-desk The first-order value change, one factor at a time.
Bump and Reprice Gamma ladder bump_and_reprice_gamma_ladder eod EOD trading-desk The curvature in one factor.
Bump and Reprice Cross-gamma ladder cross_bump_and_reprice_gamma_ladder eod EOD market-risk The curvature between two factors of one risk class.
Bump and Reprice Theta ladder bump_and_reprice_theta_ladder eod EOD market-risk The value change from moving the clock rather than a market.

The family as a whole, what each ladder needs from the market data and what the store lacks, is on Report families. A reader who wants the order to read the intraday pages and the ladders in starts there.

4. What is not built

The reports this folder does not yet describe, and the ones it describes that the platform does not yet run, are two different lists.

  • The ladder family is seeded and cannot price. Ten of the thirteen pages above describe reports a definition now states, on both cycles where the design says so. They are definitions like any other: they select a cut, bind their configuration and run the pipeline. They produce no figure, and the reasons are the ones that stop a sensitivity figure anywhere in the platform, not defects in a ladder:
    • No mapper reads or writes the document. A SensitivityAnalysis document is a name in a lookup and a row in the ORE file library, not a modelled entity, so a configuration can name it and nothing can read it. The round trip is backlogged as Round trip the sensitivity configuration.
    • No shift size is stated. The store names the document a ladder binds and states no size, so nothing says what a 0.1 bump, a basis point or a per cent is. The document holds the shift, and no table holds the document.
    • No volatility market data and no spot. The ACME seed's 420 curve quotes are all IR_SWAP/RATE/.... There is no FX_OPTION/RATE_LNVOL quote and no volatility surface configuration, so every volatility ladder shifts nothing. Support volatility surfaces is the work that closes it.
    • The report inputs are not complete. The run package carries the four Setup documents and no analytic document of its own, so a document that no owner exports never reaches the engine. That is the subject of Complete the ACME report inputs and prove they run, and a ladder waits on it with the rest.
  • No volatility market data. Outside the ladder family this stops the option maps and the triple vol ladder, which need a surface to bucket the book by. The seed holds curves alone, so a run over an option book records the engine's refusal against itself.
  • The matrix reports are not described here. Rho/Vol, Spot/Vol and Spot/Rho state two bumped inputs in one grid, which is a stress configuration rather than a sensitivity one. No ACME risk report configuration switches a stress analytic on.
  • The remaining catalogued reports have no page. The catalogue on Risk reporting names Bump and Reprice Spot Ladder, All Crosses, Spot Vol Ladder for the base and quote currency, Trade Level Ladder for the premium currency, Vol Manipulation and IPV Explain. Each states a scope or a measure the seed has no configuration for: a cross of every currency pair, a premium currency bump, or an IPV cut whose market data the platform does not hold.
  • The generic seed is behind the ACME one. projects/ores.sql/populate/reporting/reporting_report_definitions_populate.sql seeds the operational reports for the generic provisioning path with no cut selection. It is a second statement of the same catalogue, so a tenant provisioned through it holds no intraday report; the ACME and Northwind datasets carry them.

The intraday reports that are seeded price from the live cut. The dataset holds no volatility market data, so a body whose options need a surface has no volatility to shift. That is a fact about the data and not about the definition: the cut mints, the run records it, and the definition states a run whose phases execute.

5. Which entity runs which report

A report definition belongs to one party, and the parties of a group do not run the same reports. The rules that choose the reports for each Acme entity are in the Acme Corporation chapter of the user manual, under "The reports each entity runs". The reason for each choice is in the investigation Which reports each ACME party runs.

The ladder family is the one exception, and it is deliberate. The product owner asked for it on 2026-11-04, so the family is decided before those rules: every party holds the ten seeded ladders, the holding company included, and Northwind holds them through the London rows its catalogue reads. A party that runs no option book therefore states a volatility ladder it cannot price, which is the point of the exercise: the reports exist, the list shows them, and the run that stops says why.

6. Adding a report

compass add report \
  --slug <slug> \
  --title "<title>" \
  --description "<one line>" \
  --report-code <code> \
  --tags "report,<topic>"

--parent-dir defaults to doc/knowledge/reports, so it can be omitted. The file is report_<slug>.org, and --report-code defaults to the slug. Fill in every section the scaffold leaves, then add a row to the table above. The full contract is on Document type: report.

7. See also

  • Workflow pages, the same pattern for server-side processes rather than reports.
  • Cuts, the structure note for the cluster. An eod report in this folder runs against an authorised cut, and a cut is the fixed world each of them reads.
  • Report families, the structure note for the pages in this folder.

Emacs 29.3 (Org mode 9.6.15)