> 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)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.modelreef.io/use-cases/mining-energy-and-natural-resources/commodity-price-sensitivity.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
