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
SensitivityAnalysisdocument 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 noFX_OPTION/RATE_LNVOLquote 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 mapper reads or writes the document. A
- 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.sqlseeds 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.