> For the complete documentation index, see [llms.txt](https://help.modelreef.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.modelreef.io/use-cases/mining-energy-and-natural-resources/commodity-price-sensitivity.md).

# Commodity Price Sensitivity

This use case explains how to model commodity price sensitivity for mining, energy and natural resources assets in Model Reef.

You will:

* Create benchmark and realised price drivers for key commodities.
* Apply price paths and scenarios to production volumes.
* Explore different contract, hedge and currency settings.
* See how price changes affect margin, cash and valuation.

Model Reef does not execute trades or hedges. It provides a planning layer on top of market assumptions and hedging policies.

***

## When to use this pattern

Use this pattern when:

* Revenue is materially dependent on commodity prices.
* You want to quantify upside and downside cases.
* You need to show lenders or investors sensitivity to price paths.
* You plan to compare different hedging or contracting strategies.

It is usually combined with:

* Mine or Well Production Forecasts
* Capex & Equipment Lifecycle Model
* Multi-Site Resource Consolidation
* Valuation Engine Overview

***

## Architecture overview

Commodity price sensitivity modelling uses:

1. Price drivers
   * Benchmark indices or contract references.
   * Basis, quality and location adjustments.
   * Currency assumptions and FX modifiers.
2. Volume inputs
   * Production forecasts from mine or well models.
   * Sales volumes by product, grade or contract.
3. Revenue construction
   * Realised price per product.
   * Revenue per product, site and group.
4. Sensitivity and scenarios
   * Systematic price shifts or curves.
   * Different hedging and contracting proportions.

***

## Steps

{% stepper %}
{% step %}

### Define benchmark price series

In the Data Library, create or import time-series for:

* Benchmark Price - Product A (for example copper, gold, LNG).
* Benchmark Price - Product B.
* Benchmark Price - By-Product C where relevant.

These may be:

* Historical series used to calibrate the model.
* Forward curves or consensus forecasts.
* Scenario-specific paths for base, high and low price environments.

Keep series in consistent units with your production models.
{% endstep %}

{% step %}

### Add basis, quality and location adjustments

Realised prices often differ from benchmarks. Create drivers for:

* Payable Percentage (for example 95 percent of contained metal).
* Treatment and Refining Charges in the case of concentrates.
* Shipping and handling costs per unit.
* Location basis adjustments reflecting local market conditions.
* Penalties or premiums for specific quality attributes.

Combine these into effective realised price drivers, for example:

* Realised Price = Benchmark Price × Payable Percentage - Treatment and Refining Charges - Shipping - Penalties + Premiums.

You can implement these in formulas within Revenue variables or as separate intermediate drivers.
{% endstep %}

{% step %}

### Link prices to production volumes

From your production models, bring through:

* Saleable production volumes per period per product and site.
* Sales splits by contract type if relevant.

Create Revenue variables such as:

* Revenue - Copper - Mine A.
* Revenue - Gold - Mine B.
* Revenue - LNG - Field C.

Set formulas like:

* Revenue - Copper - Mine A = Saleable Copper Volume - Mine A × Realised Copper Price - Mine A.

Because volumes are already computed in production models, price changes will flow directly into revenue without changing those volumes.
{% endstep %}

{% step %}

### Represent simple hedging and contract structures

To incorporate basic hedging and contract strategies, define drivers for:

* Hedged Volume Share per commodity.
* Fixed Contract Prices for hedged volumes.
* Spot Volume Share = 1 minus Hedged Volume Share.

Implement revenue as the sum of:

* Hedged Revenue = Hedged Volume × Fixed Contract Price.
* Spot Revenue = Spot Volume × Spot Price Series.

Where you use collars or more complex instruments, approximate the effect by adjusting effective fixed and floating prices in scenarios rather than modelling instruments directly.
{% endstep %}

{% step %}

### Build price sensitivity and scenario views

Clone the base model into scenario models that represent:

* Base case prices (for example consensus or current forward curves).
* Downside case with lower prices for a period or across life of asset.
* Upside case with higher prices.
* Shock scenarios where prices fall sharply for a period then recover.

In each scenario, adjust benchmark price series, basis and contract settings. Then compare:

* Revenue and margin per asset and for the group.
* Cashflow and funding metrics.
* Valuation outcomes via the Valuation Engine.
* Headroom relative to debt covenants or investment hurdles.

You can also produce one off sensitivity tables by changing price drivers by a fixed percentage and inspecting key outputs.
{% endstep %}

{% step %}

### Integrate FX where required

If your commodity is priced in a foreign currency but financial statements are in a local currency, you can:

* Import or create FX rate series as drivers.
* Express benchmark prices in foreign currency and convert in formulas, for example:\
  Local Price = Foreign Price × FX Rate Driver.

Use scenarios to test combined commodity and FX risk by adjusting both price and FX series in different combinations.
{% endstep %}
{% endstepper %}

***

## Check your work

* Benchmark prices and adjustments reflect market data or agreed planning bases.
* Realised prices reconcile to historical realised revenue when volumes are held constant.
* Hedging and contracting assumptions can be explained to non technical stakeholders.
* Scenario results are consistent with risk appetite and external disclosures where relevant.

***

## Troubleshooting

<details>

<summary><strong>Revenue does not reconcile with historical results</strong></summary>

Revisit payables, treatment and refining charges, penalties and FX rates to ensure they are aligned with actual contracts and invoices.

</details>

<details>

<summary><strong>Sensitivity results appear extreme or muted</strong></summary>

Check that you are not double counting hedging effects or failing to apply price changes across all relevant products and sites.

</details>

<details>

<summary><strong>Too many series to manage for small products</strong></summary>

Group minor products into aggregated baskets and apply a single representative price and basis series rather than modelling each individually.

</details>

***

## Related guides

* [Build a Sensitivity Analysis Pack](/how-tos/scenarios-and-planning/build-a-sensitivity-analysis-pack.md)
* [Build a Valuation Sensitivity Model](/how-tos/valuation/build-a-valuation-sensitivity-model.md)
* [IRR Calculation](/help/financial-outputs-and-valuation/irr-calculation.md)
* [Vectorised Calculations](/syntax/formula-syntax/vectorised-calculations.md)
