Skip to content
All library documents

Solving for a Discount Rate from Dated Cash Flows

Article Quant Q&A · Author: Adolf Miszka

Summary

The document shows how to find the rate that discounts two future euro cash flows to a specified present value. Each cash flow is divided by one plus the annual rate raised to the number of years until payment, and the discounted amounts are added together. Setting that sum equal to the target value produces an equation in the unknown rate.

The example’s equation is nonlinear, so the rate can be found numerically; the answer reports a rate of about 7.3%. A root-finding routine is also shown as an implementation. This is a compact worked example rather than a general treatment: it assumes a common annual discount rate and specified payment dates, and does not discuss compounding conventions, alternative rates by maturity, or uncertainty in the cash flows.

Key ideas

  • Discount each future cash flow by the rate raised to its time to payment.
  • Add the discounted cash flows and equate their sum to the given present value.
  • A numerical root solver can find the rate that satisfies the equation.
  • The example assumes one common annual rate for both cash flows.

Tags

Full text
# Interest rate calculation


# Interest rate calculation












The task: With what interest rate given 2000 Euros after 2 years and 3000 Euros after 4 years, the actual value will be equal 4000 Euros. This task sounds confusing for me, I tried to calculate, but get nothing valid, so maybe I don't understand the task formulation. Here is given answer: 7.3%. Should I use discount interest or which method? I'm really new in this field.

## Answer by Gogo78 (score 2, accepted)

https://quant.stackexchange.com/a/50602

try this : 4000= 2000/(1+r)^2 + 3000/(1+r)^4 solving this equation for r you'll find equals 7.30274083178438%.

## Answer by David Duarte (score 2)

https://quant.stackexchange.com/a/50608

Already answered, but...

```
from scipy.optimize import root

def pv(r): return 2000 / (1+r)**2 + 3000 / (1+r)**4
rate = root(lambda x: pv(x) - 4000, 0.)['x'][0]

print(f"Rate is {rate*100:.5f}%")
print(f"Present Value is {pv(rate):,.2f}")
```

Rate is 7.30274%

Present Value is 4,000.00

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.