Derivatives scenario analysis with LSEG data

Builds a base case and shocked values for swaps, options and rate-sensitive positions using LSEG curves and volatility surfaces, and states the shocks and assumptions behind each result. It asks before saving or sharing any output.

Read-onlyUses 11 LSEG toolsWorks in RevampKey, Claude Code, Codex and Cursor

Use in RevampKey

Get RevampKey to connect LSEG

RevampKey is a free desktop app for Mac, Windows and Linux. Install it, sign in, and LSEG is one click away with its skills already attached.

Download RevampKey

Not now? Use the skills in your current tool

curl -fsSL --create-dirs -o .claude/skills/london-stock-exchange-group-derivatives-scenario-analysis/SKILL.md https://revampkey.com/marketplace/london-stock-exchange-group/skills/derivatives-scenario-analysis/SKILL.md
Other agents
Other agents

When to use it

  • A desk wants to see how a swap moves if rates shift 100 bp.
  • A risk analyst needs vega and DV01 on an options book.
  • A PM asks how a steepening curve would affect a position.

What it looks like

You

Show me how my 5-year receiver swap on USD moves with a parallel 100 bp rate rise and a 25 bp steepening, using today's curve.

ir_swapoption_valueinterest_rate_curveinflation_curve+7 more
Agent

Base value on the 5-year USD receiver is 1.24 million. Parallel +100 bp gives a change of about -4.6% (roughly -57k). The 2s10s steepening of +25 bp gives about +0.8% (roughly +10k). Both figures use the curve dated to today; the 10-year point is older than the others and is flagged.

The SKILL.md file

View raw
name: london-stock-exchange-group-derivatives-scenario-analysis

Build a scenario and sensitivity view for swaps, options and rate-sensitive positions by pairing the relevant interest rate curve or volatility surface with scenario calculation, stating the base case, the shocks tested and the assumptions behind each result. Use when the user asks for a scenario, stress, what-if, DV01 or sensitivity, wants to know how a swap or option moves if rates or volatility shift, or asks how a position behaves under a rate or vol move.

A scenario view answers one question: how does this position's value change when the market moves in a specified way, and how much of that change is real rather than an artefact of the inputs? The output is a table of base and shocked values with the assumptions written next to them. A single shocked number with no base, no shock definition and no curve date is not a scenario; it is a guess with a decimal point.

1. Pin down the position and the base case before any shock

Confirm with the user, in one line each:

  • Instrument type and terms. Swap (fixed/floating, currency, tenor, notional, payment frequency), option (underlying, strike, expiry, call/put, exercise style), or a rate-sensitive bond or swap book.
  • Valuation date. Every curve, surface and price must refer to the same date. Mixed dates are the most common silent error in this kind of work.
  • Direction of the exposure. Long or short each leg. A receiver swap and a payer swap are opposite bets on the same curve.

Then establish the base value with ir_swap (for swaps) or option_value (for options). Record the base as the reference for every later comparison. If the base cannot be computed, stop and say so; a scenario without a base is not reportable.

2. Choose the market input that actually drives the instrument

Match the input to the risk factor, not to the tool you know best:

  • Linear rate exposure (swap, bond-like cashflows): interest_rate_curve is the primary input. Use inflation_curve if the cashflows are inflation-linked, and credit_curve only if the position carries credit spread risk.
  • Optionality (caps, swaptions, equity or FX options): the volatility surface is the primary input, not the spot. Use fx_vol_surface for currency options and equity_vol_surface for equity options. Note that a parallel spot shock with unchanged vol understates an option's risk materially, so shock vol separately.
  • FX forwards and cross-currency swaps: fx_forward_curve and fx_spot_price. Shock spot and the forward points separately if the question is about funding basis.

If the tool needed for a leg is absent from the connector, say which leg you could not model and what that does to the total. Do not substitute a rough proxy and present it as the scenario.

3. Define shocks explicitly, then run them

Use shocks that a risk reader would recognise, and write each one down before running it:

  • Parallel rate shift: +/-25, +/-100 bp across the curve. Report the shock size in basis points.
  • Steepening or flattening: short end and long end moved in opposite directions by the same size. This matters more than parallel moves for curve-slope positions.
  • Volatility shift: absolute vol points (for example +5 vol points) for a parallel vol move, not a relative percentage, unless the user asks otherwise.
  • Spot move for options and FX: percentage moves with the direction stated.
  • Historical or user-supplied scenarios: use the user's numbers exactly and label them as such.

Run each shock through yieldbook_scenario_calculation for bond-type cashflows where it applies, or re-price the swap or option with the shocked inputs. For sensitivities (DV01, vega, delta), use fixed_income_risk_analytics where the position is fixed-income, and compute the finite-difference sensitivity yourself from the base and shocked values, stating the bump size used.

4. Check the inputs before trusting the outputs

Before reporting, look for the conditions that make a scenario misleading:

  • Stale or flat curves. A curve that is identical across all tenors, or whose latest point is far older than the others, will produce a near-zero rate sensitivity that looks plausible. Flag it.
  • Non-monotonic or implausible vol. Vol that falls sharply across strikes or tenors with no market reason suggests a bad surface point. Flag the point, do not smooth it silently.
  • Inconsistent dates between the curve, the surface and the spot. Re-run on a matched date or report the mismatch.
  • Empty or partial results from any tool. An empty result is not a zero. Report it as missing and exclude that leg explicitly.

5. Separate the scenario from the interpretation

Report the numbers first, then your reading of them. Keep these distinct:

  • Sourced: values returned by the tools, with the date and the input they came from.
  • Calculated: differences, sensitivities and totals you computed, with the formula and bump size stated.
  • Interpreted: what the result suggests about the book, hedging or risk appetite. Mark this as opinion.

Common patterns and traps

  • Ignoring convexity. Linear DV01 misstates large moves on options and long-dated swaps. Run the full re-price for shocks above about 50 bp and say why.
  • Shocking the wrong side of an option. Vega is positive for long options and negative for short ones. A short-vol book loses on a vol rise even when delta is hedged.
  • Mixing absolute and relative shocks. "10% vol up" on a 20 vol surface is 2 points; "10 points" is far larger. State the convention.
  • Netting legs with different currencies or dates without converting. Convert at the stated spot and date, or report by currency.
  • Presenting one shock as the stress. A single parallel shock says little about a steepening curve position. Test at least a parallel and a slope scenario.
  • Forgetting the base is also a model output. Scenario changes are only as good as the base valuation. If the base disagrees with a known traded level, fix that first.

Output

Position: <instrument, notional, tenor, direction, valuation date>
Base value: <value> (source: <tool>, <date>)

Scenario table
| Shock (definition)              | Scenario value | Change vs base | Change % |
|---------------------------------|----------------|----------------|----------|
| Parallel +100 bp                | ...            | ...            | ...      |
| Parallel -100 bp                | ...            | ...            | ...      |
| Steepen 2s10s +25 bp            | ...            | ...            | ...      |
| Vol +5 points (absolute)        | ...            | ...            | ...      |

Sensitivities: <DV01 / vega, bump size, method>
Inputs checked: <curve/surface date, any stale or flat points, any empties>
Legs not modelled: <what was excluded and its likely effect>
Assumptions: <day count, compounding, vol convention, currency>
Sourced vs calculated vs interpreted: <one line each>
Not established: <what you could not verify>

Rules

  • Do not present a scenario value as a licensed market quote. Model output built on LSEG inputs is an analytical estimate; say so in the output.
  • Do not run any calculation that writes, saves or publishes a scenario, report or shared model. Running a scenario or saving its output to the user's workspace counts as a change: wait for the user's explicit yes before saving, sharing or scheduling anything.
  • Do not substitute a proxy curve or surface for a missing one without saying so and quantifying the difference.
  • Never report a shocked value without its shock definition, base date and input source.
  • Do not hide an empty or failed tool result as zero exposure.

Done when

  • Base value is established and dated, and every scenario is shown as a change against it.
  • Each shock is defined in the output, not just named.
  • Stale, flat or missing inputs are flagged, and any leg left out is named with its likely effect.
  • The "Not established" line is honest about what was not checked.

LSEG tools it uses

  • ir_swap
  • option_value
  • interest_rate_curve
  • inflation_curve
  • credit_curve
  • fx_vol_surface
  • equity_vol_surface
  • fx_forward_curve
  • fx_spot_price
  • yieldbook_scenario_calculation
  • fixed_income_risk_analytics

Tool list from LSEG MCP tool list (catalog).

FAQ

Are these scenario results official LSEG prices?

No. They are analytical estimates built on LSEG inputs. Treat them as model output, not licensed market quotes.

Can it cover every instrument I hold?

Only where the connector has a tool for the risk factor. Legs without a matching curve or surface are listed as not modelled, with the expected effect on the total.