Natural Gas Storage

Storage Model

The AdaptiveRisk Natural Gas Storage Model uses sophisticated mathematical techniques and highly optimized C++ code to quickly and accurately calculate intrinsic and extrinsic values and risk parameters of storage contracts. The model is very flexible and can accommodate a wide range of storage contract features.

Please refer to the user guide for explanations of the model inputs and outputs. If you still need help, please contact us at [email protected]

Help

If you need help with model inputs or if you have other questions, please contact us at: [email protected]


Fix input errors below and run again:

{{calc.result.error}}

FAQ

The model is intended for use by:
  • traders and portfolio managers - for managing storage contract risks and extracting value
  • structurers and valuation consultants - for finding intrinsic and extrinsic value of storage contracts
  • risk managers - for use as an external check to risk numbers produced by in-house models
  • quants and model validation - for use as an external reference model

The model underwent extensive testing and is regularly being run through an exhaustive suite of unit and regression tests. The model results include intrinsic value and schedule, and extrinsic valuation and Greeks (if requested). Correctness of intrinsic optimization can usually be deduced by inspecting the results. The ultimate test for extrinsic calculation accuracy is to see if the hedge implied by the model performs well. For this, we performed extensive back-testing over multiple years with storage contracts of different parameters.

It is true that in some simple cases it is straightforward for a person with experience in numerical optimization and Monte Carlo simulations to put together a storage model in Matlab (or Python, Julia, etc.) However, from experience we found that there are plenty of edge cases where such models fail. Then, the originally straightforward self-coded model becomes a multi-year support headache. In more complex cases things get out of hand quite quickly, requiring significant resources to debug, test and maintain the code. We spent hundreds of hours to ensure that our model is robust, accurate and very fast.

Even if you are an experienced quant who can overcome these obstacles and you have a mandate from your company to develop an in-house model, we encourage you to use our model to help you debug and double check your code.

Yes, we do have a spreadsheet version of the model. Please contact us for details about how to obtain our storage model as an Excel add-in.

On the numerical side, the main contributors to speed are adaptive interpolation and per-path optimization. Adaptive interpolation allows us to build interpolants with a minimal number of points while still achieving the required precision. Per-path optimization (using only forward looking information) is based on recent research that shows that the method produces near-optimal solutions. Unlike other methods, per-path optimization methods are highly parallelizable, which allows us to use all cores of modern processors efficiently.

The model is coded in C++. From a programming perspective, the main contributors are precise memory management and ensuring that as many calculation as possible moved outside of the innermost loops. Precise memory management allows us to avoid unnecessary allocations and deallocations that have big performance impact. Additionally, it also ensures a compact memory footprint, which allows for the calculations to stay inside CPU cache.

The resulting calculation engine is very fast. For example, one year back-testing of Delta and Vega hedging (requiring the calculation of storage value, 12 Deltas and 12 Vegas every business day for a year) takes less than two minutes on our 16 core, 3.2 GHz PC. The web based model is somewhat slower as it is hosted in the cloud and each calculation is using up to 4 cores.


Inputs

The working capacity of the storage facility.
to First and last day you can inject/withdraw gas to/from the storage.

Level Constraints

Inventory level in storage at the start of operation period. The level is expressed as % of capacity.
The final required inventory level in storage after the last day of operation period as specified by the storage contract.
pro

Pro feature. Requires credits.

Rate Constraints

If 'on' ensure that optimal schedule is constant over each period.

Injection Rates

The maximal daily rate of injection into storage.

As the level of natural gas increases inside the storage facility, pressure rises and the maximum amount of natural gas that can feasibly be injected, decreases.

Use ratchets to specify different injection rates based on the level of natural gas inside the storage facility.

pro

Pro feature. Requires credits.

pro

Pro feature. Requires credits.

Rates errors: Level errors:
Period Rate (MMBtu/Day)
Levels: {{n == 1 ? "0%" : calc.data.ilvl[n-2] + "%"}} - % {{last(calc.data.ilvl)}}% - 100%
{{name}}
Rates:

Withdrawal Rates

The maximal daily rate of withdrawal from storage.

As the level of natural gas increases inside the storage facility, pressure rises and the maximum amount of natural gas that can be withdrawn, increases.

Use ratchets to specify different withdrawal rates based on the level of natural gas inside the storage facility.

pro

Pro feature. Requires credits.

pro

Pro feature. Requires credits.

Rates errors: Level errors:
Period Rate (MMBtu/Day)
Levels: {{n == 1 ? "0%" : calc.data.wlvl[n-2] + "%"}} - % {{last(calc.data.wlvl)}}% - 100%
{{name}}
Rates:

Volume Constraints

pro

Pro feature. Requires credits.

Injection/Withdrawal Costs Injection/Withdrawal Costs - fixed payment per unit of gas in/out of storage.

Injection/Withdrawal Fuel - part of injected/withdrawn gas that is used to power storage compressors. This cost is expressed as % of total injected/withdrawn gas.

pro

Pro feature. Requires credits.

Injection cost errors: Injection fuel errors: Injection cost errors: Injection fuel errors:
Period Injection cost ($/MMBtu) Injection fuel (%) Withdrawal cost ($/MMBtu) Withdrawal fuel (%)
{{name}}

Extrinsic

Calculate extrinsic value and greeks (in addition to intrinsic) pro

Pro feature. Requires credits.

The day on which the contract was first valued.
Keeping this date same for different Valuation Dates specified below, prevents model from producing artificial PnL swings due to rolling over random numbers.

Valuation Day Data

The day on which you are valuing the contract.
The valuation date can be after the start date if you are valuing the contract inside the storage operating period.
Inventory level in storage at the valuation date. The level is expressed as % of capacity.
Existing position in forward contracts hedging injections/withdrawals. All values are usually 0 for initial valuation. pro

Pro feature. Requires credits.

Toggle to 'on' if there are spot (day ahead) and/or balmo prices.
Cash period starts at valuation date.
Valuation day is before delivery period, so no spot or balmo price required.
pro

Pro feature. Requires credits.

Set to zero if there is balmo price, but no spot.
Over the weekends or holidays spot price can span more than one day.
It is possible that there is no balmo if spot spans more than one day in the end of month.
Cash bid price errors: Cash ask price errors: Cash initial position errors:
Period Bid ($/MMBtu) Ask ($/MMBtu) Existing Position (%)
Spot
Balmo


Bid price errors: Ask price errors: Discount factor errors: Initial position errors: Volatility errors:
Period Bid ($/MMBtu) Ask ($/MMBtu) Discount Factor Existing Position (%) Volatility (%)
{{name}}

The data should have {{3 + (isExtrinsic ? 1 : (hasV0 ? 1 : 0))}} columns:

  • bid - ($/MMBtu)
  • ask - ($/MMBtu)
  • df - discount factor from valuation day to middle of each period
  • v0 - existing hedge (% of storage capacity)
  • volatility (%)
Cancel Apply
Cancel Apply I accept Terms of Service
Calculate