MiningMath

Math Optimization models that integrate multiple business’ areas

NPV Calculation

Estimated reading: 5 minutes 678 views

MiningMath's internal math for NPV Calculation

The following video explains more about the NPV calculation made by MiningMath’s algorithm. The understand of these steps might be useful for users working on projects with variable mining costs, which are not yet smoothly implemented on the UI.

Video 1: NPV calculation.

Discount rate per period

The discount rate (%/year) is provided by the user in MiningMath’s interface, as depicted in the figure below.

Undiscounted cash flow for annual time frames

In a usual scenario period ranges are defined by annual time frames, as depicted in Fig-2.

In this case, the annual discount rate multiplier (annual_multiplier) to return the discounted cash flow is performed as follows:

$$\text{annual_multiplier}(t) =$$ $$\frac{1}{(1 + \text{input discount rate})^t}$$

The table below exemplifies one case for 10 periods.

Period Process 1 Dump 1 NPV M$Annual multiplier Undiscounted NPV M$
1
P1
Waste
1.2
0.909
1.320
2
P1 +5%
Waste
137.9
0.826
166.859
3
P1 +5%
Waste
132.5
0.751
176.358
4
P1 +5%
Waste
105.4
0.683
154.316
5
P1 -5%
Waste
89
0.621
143.335
6
P1 -5%
Waste
92
0.564
162.984
7
P1 -5%
Waste
91.3
0.513
177.918
8
P1 -10%
Waste
52.3
0.467
112.110
9
P1 -10%
Waste
54.3
0.424
128.037
10
P1 -10%
Waste
12.1
0.386
31.384

Table 1: Example of annual multiplying factors and undiscounted cash-flows for a 10% discount rate per year. Process 1 exemplifies the use of different economic values per period.

In details, Table 1 lists:
• the NPV (discounted) resulting from a 10 yearly period with a 10% discount rate per year.

• the annual discount rate (annual_multiplier) for each period; and

• the undiscounted NPV as the result of the discounted NPV divided by the annual_multiplier.

Undiscounted cash flow for custom time frames

MiningMath allows the creation of scenarios in which period ranges are defined with custom time frames (months, trienniums, decades, etc.), as depicted in Figure 3.

In this case, the discount rate is still provided in years on the interface. However, the discount rate per period follows a different set of calculations.
In the example on Figure 3, the first range is composed of 12 periods of one month each. To calculate their discount rate, a timeframe factor for each period t is defined first. This is basically the value associated with each timeframe, as depicted in Figure 3, or a custom value given by the user. Another required information is the year in which t occurs. For instance, the 2nd month occurs in year 1, while the 13th month occurs in year 2.

$$TF(t)= \begin{cases} 1,& \text{if}\, t\, \text{is in years}\\ \frac{1}{12},& \text{if}\, t\, \text{is in months}\\ 3,& \text{if}\, t\, \text{is in trienniums}\\ etc.& \end{cases}$$

$$\text{year_of}(t) = \text{year in which}\, t\, \text{occurs}$$

The discount rate of periods in which timeframes correspond to less than one year (low_multiplier) is, then, given by the formula:

$$\text{low_multiplier}(t) = \text{annual_multiplier}(\text{year_of}(t)^x)$$

$$\text{where}\, x = \sum_{i=1}^{t}TF(i)$$

Table 2 shows an example of 12 periods of one month each, with:

• timeframe factor;

• cumulative timeframe factors;

• corresponding annual_multiplier for each period;

• the low_multiplier of each period; and finally,

• the undiscounted cash flow (discounted cashflow divided by the low_multiplier)

Period Type Process 1 Dump 1 NPV M$Time frame Years rounded Cumulative factor annual multiplier low multiplier Undiscounted NPV M$
1
Month
P1
Waste
10.8
0.0833
1
0
0.90909
0.99209
10.88612
2
Month
P1
Waste
13.6
0.0833
1
0.08333
0.90909
0.98424
13.81776
3
Month
P1
Waste
11.4
0.0833
1
0.16666
0.90909
0.97645
11.67490
4
Month
P1 +5%
Waste
12.9
0.833
1
0.25
0.90909
0.96873
13.31641
5
Month
P1 +5%
Waste
11.2
0.0833
1
0.33333
0.90909
0.96107
11.65373
6
Month
P1 +5%
Waste
13
0.0833
1
0.41666
0.90909
0.95346
13.63452
7
Month
P1 -5%
Waste
11.2
0.0833
1
0.5
0.90909
0.94592
11.84033
8
Month
P1 -5%
Waste
14.4
0.0833
1
0.58333
0.90909
0.93844
15.34467
9
Month
P1 -5%
Waste
11.8
0.0833
1
0.66666
0.90909
0.93101
12.67437
10
Month
P1 -10%
Waste
14.7
0.0833
1
0.75
0.90909
0.92365
15.91517
11
Month
P1 -10%
Waste
13.6
0.0833
1
0.83333
0.90909
0.91634
14.84165
12
Month
P1 -10%
Waste
12
0.0833
1
0.91666
0.90909
0.90909
13.20000

Table 2: Example of discount rates calculated per month and undiscounted cash flows with a 10% discount rate per year. Process 1 exemplifies the use of different economic values per period.

Timeframes greater than a year​

In the example on Figure 3, the last period ranges are composed of 3 trienniums. To calculate the discount rate of a triennium, the annual_multiplier of each year contained in it is computed and then averaged. Hence, the discount rate of periods in which timeframes are greater than one year (great_mutiplier) is given by the formula:

$$\text{great_multiplier}(t) =$$ $$\frac{\sum_{y=\underline{t}}^{\overline{t}}\text{annual_multiplier}(y)}{\overline{t} – \underline{t} + 1}$$

$$\text{where}\, \underline{t}\, \text{is the first year in period}\, t\, \text{and}\, \overline{t}\, \text{is the last year in period}\, t$$

Table 3 shows the example of 3 trienniums occuring after 14 periods (12 months and 2 years). The annual_multiplierof each year contained in each triennium is listed. The average of these factors return the great_multiplier of each triennium, which, in turn, divides the discounted cash flow to calculate the undiscounted one.

Period Type Process 1 Dump 1 NPV M$Time frame great multiplier Undiscounted NPV M$ Year rounded annual multiplier
15
Triennium
P1
Waste
378.4
3
0.62280
607.57584
4
0.68301
5
0.62092
6
0.56447
16
Triennium
P1 -5%
Waste
120.8
3
0.46792
258.16321
7
0.51318
8
0.46650
9
0.42409
17
Triennium
P1 -10%
Waste
4.2
3
0.35155
11.94688
10
0.38554
11
0.35049
12
0.31863

Table 3: Example of undiscounted cash flows and discount rates calculated per triennium with annual discount rate of 10%. Process 1 exemplifies the use of different economic values per period.

Imperial System

For importing databases, MiningMath uses the metric system exclusively. In case ...

In-depth MiningMath

This tutorial provides a detailed guidance to the pages in the knowledge base fo...

Theory Validation

MiningMath’s results are only possible due to its proprietary Math Program...

Guaranteed Solutions

Multiple, complex constraints increase the likelihood of not finding or not exis...

MiningMath Uniqueness

MiningMath allows mining managers to improve their strategic analysis through ri...

Time Limit

It is possible to indicate a time limit in hours before running a scenario in th...

In order to take the maximum of MiningMath’s Optimization we recommend this fl...

Formatting the Block Model

The main focus here is on the requirements. Try to pay attention to the header...