Skip to content

LNG SPA Real-Option Valuation ​

Independent energy-derivatives research · Python Monte Carlo + MIP · August 2026

A long-term LNG contract is a strip of real options, not an annuity. Valuing a 20-year US Gulf Coast FOB LNG SPA — terms taken from a publicly filed SEC exhibit (contract sales price = 1.15 × Henry Hub + fixed liquefaction fee; ~91.25M MMBtu per contract year; an economic right not to lift) — a static NPV misses $597m of extrinsic value, 43% of the contract's full mark. That value only appears when the model prices the right to choose destination and the right to cancel a cargo.

All figures come from my own runnable models. Contract terms are from the public filing; forward curves are illustrative, market-shaped levels — the engine is config-driven, so re-running on a live tape is the intended workflow. That split (public terms, illustrative curves) is standard practice for valuing a publicly filed contract.

Snapshot ​

$807m
Intrinsic NPV
vs today’s curve · 5-yr window
$1,404m
Full value (MC)
3,000 correlated paths
$597m
Extrinsic
full − intrinsic · 43% of value
91.1%
Avg lift rate
optimal exercise under MC

What the option is worth ​

Monte Carlo · 3,000 paths

Path NPV distribution

Correlated GBM shocks to HH / TTF / JKM / freight with pathwise optimal lift/cancel. The whole P5–P95 band ($1,051m–$1,789m) sits above the intrinsic mark — optionality is not a tail story.

August 2026 · Source: Own model output
Flex ablation

Same engine, destination flex toggled off

Destination choice adds $731m of full value ($236m intrinsic + $495m extrinsic); the average lift rate rises from 83.4% to 91.1%.

August 2026 · Source: Own model output

Where the extrinsic comes from ​

Decomposition

Extrinsic value by flex layer

On today's deep in-the-money curves the cancellation right alone is worth $102m; adding destination flex contributes another $495m.

August 2026 · Source: Own model output
Vol sensitivity

Extrinsic vs volatility, stylised contract

Stylised at-the-money 11-cargo FOB contract, 40,000 paths, fixed seed. Extrinsic is nearly linear in vol — the flex valuation is a framework, not a single number.

August 2026 · Source: Own model output

The ordering of the flex layers is moneyness-dependent, not universal. This contract is deep in-the-money on today's shaped curves, so the cancellation right is nearly worthless and destination flex dominates. In the stylised at-the-money case the ranking flips — cancellation becomes the biggest layer. Quoting either number without its cost level attached is how flex value gets mis-sold.

From valuation to scheduling ​

MIP · CBC

Greedy beats the optimum — until constraints bind

Per-cargo greedy netback maximisation looks $0.70/MMBtu better but breaches the EU regas-slot limits; the gap is the priced cost of the constraint set (≈$2.5m/yr on this stylised book).

August 2026 · Source: Own model output
LP duals

What one more unit of each constraint is worth

The cancellation quota is the binding constraint that matters — $1.46/MMBtu per extra right. Ship-days sat slack at 375 of 700, shadow price zero.

August 2026 · Source: Own model output

The optimiser's schedule is not the greedy schedule with the worst months lopped off: it flips two summer cargoes from Europe to North-East Asia and spends the three cancellation rights on the worst winter months — the quota goes to the worst months, not the first negative one. Duals give direction; integer-feasible finite differences give the attainable increments — the difference between the two is itself worth understanding before quoting either.

The freight leg — built, then backtested ​

Cost stack

US Gulf → NE Asia voyage cost, $/MMBtu

Bottom-up from open-source route distances and a published academic cost stack at an $80k/day charter rate; the daily charter rate is the only live input.

August 2026 · Source: Own model output
Backtest

Out-of-sample error by calibration method

Vs 383 days of published freight route assessments (Dec 2024 – Jul 2026), trained on the first 191 days. Pooled regression doubles the error out of sample; a quarterly median cuts it by 56–65%.

Dec 2024 – Jul 2026 · Source: Published freight assessments

The negative result is the finding: pooled regression worsens the uncalibrated model by 108–203% out of sample, because freight carries level drift that has nothing to do with charter rates — emissions allowances, canal fees, vessel-benchmark changes — and a pooled slope absorbs it. The published Pacific assessment also implies ~86 round-trip days against the model's theoretical 48.6 — near double the vessel occupation. Calibrating voyage days by quarterly median fixes both, and the calibration flips a live diversion signal from +$0.53 "go" to −$0.28 "no-go". Model error here is sign-level, not decimal-level.

Process ​

1
Map the contract
Public SEC exhibit → CSP = 1.15 × HH + fee; ACQ → 26 cargoes/yr; cancel = fee sunk
2
Build curves
Illustrative HH/TTF/JKM/freight forwards, seasonal shape, vols + correlation matrix
3
Intrinsic
Per-cargo optimal decision vs today’s curve; destination = max(EU, Asia) netback
4
MC extrinsic
3,000 correlated paths, pathwise optimal lift/cancel; extrinsic = full − intrinsic
5
MIP cross-check
ToP, regas slots, ship-days as constraints; LP duals = shadow prices
6
Validate freight
Out-of-sample vs 383 days of published assessments; quarterly-median calibration

Honest boundaries ​

  • Contract terms are from the publicly filed SEC exhibit; forward curves are illustrative, market-shaped levels, not a live tape. The engine is YAML-config-driven — swapping in live curves and re-running is the intended use.
  • The headline run values a 5-year window of the 20-year term (26 cargoes/yr); the engine extends to the full term.
  • Cancellation is modelled economically: the legal form is shortfall or suspension; the economic mark is a strip of options on (netback − 1.15 × HH) with the fixed fee as the sunk leg.
  • The vol-sensitivity grid and the MIP schedule use a stylised contract and stylised constraint parameters; their numbers are never mixed with the SPA-run numbers above.
  • The freight model needs quarterly-median calibration to be decision-grade; long-haul waiting and repositioning days are not modelled.

Stack ​

Python · NumPy / pandas Monte Carlo engine (correlated GBM, fixed seeds) · PuLP + CBC mixed-integer optimisation · searoute open-source route distances · YAML-configured, fully reproducible runs

Competencies ​

Real-option valuation (intrinsic / extrinsic) · correlated Monte Carlo & optimal exercise · LP/MIP optimisation and duality · LNG SPA contract mechanics · freight & netback economics · out-of-sample model validation


← All projects