Full Version: CRF Formula
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
This is a question about the CRF formula used in TIMES/MARKAL.  I had assumed that it was the same as the formula that I've always used but in reality, it is quite different and I'm hoping someone can shed some light on why that is.

The formula that I know is:
(1) CRF = (r*(1+r)^n) / ((1+r)^n -1)
where r is the interest rate and n is the period length (lifetime)
This formula (I'll call CRF1) is what is used in mortgage calculations and is used in the PMT function in MS excel for calculating loan payments.

The formula in the TIMES/MARKAL documentation is:
(2) CRF = (1/(1+r))*r/(1-(1+r)^-n)

I've never seen this formula (CRF2) before but I assume that the developers are much smarter than me and there's a good reason for this other formula. 

I've made a graph that shows the value of CRF using equations (1) and (2) for different values of the discount (i.e. interest) rate (and assuming a lifetime of 15 years).  CRF(1) asymptotes to the discount rate (dashed line) as the discount rate increases.  Whereas CRF(2) increases with discount rate but falls below the discount rate around 20% discount rate.  This seems very strange to me as I imagine that there would be a loan where the annual payment (as fraction of inital capital) would be below the interest rate.

In our model we introduce high technology specific discount rates for some technologies in order to account for risk and other non-economic reasons why adoption of this technology wouldn't just be on an economic cost basis (i.e. a hurdle rate).  Sometimes they are as high as 50%.  In this case we can see there is a significant difference in CRF calculated using equations 1 and 2.  In fact, I calculated the difference between the two formulas as 1/(1+r) so when r is small, there are very similar but when r is large (e.g. 0.5), we get a big difference (CRF2 is 2/3 the value of CRF1).

Any help on this matter woudl be greatly appreciated.  Thanks. . .


It always seem to be the case that as I write the question, I start to figure out the answer.  I have just realized that the difference between the formulas seems to be related to whether the discounting/interest is applied at the beginning or end of the period, when discounting back to present value (i.e whether you discount the first year's payment or not). 

If anyone has a more formal explanation, I'm still interested. 


Yes, you are right, but it is fully configurable.

See the documentation on the TIMES control switches (section 4.6, MID_YEAR):

Small additional remarks concerning the CRF issue:

Chris: In your post you refer to "TIMES/MARKAL".  Which one did you actually mean, or did you mean both TIMES and MARKAL?

Looking at the documentation of both MARKAL and TIMES, I can see the following formulas given for CRF:

  • MARKAL: The CRF is calculated as x=1/(1+DISCOUNT or DISCRATE), and then CRF={1-x}/{1-x^LIFE}  (pages 192 and 231 of the documentation for Standard MARKAL)
  • TIMES: CRFs={1-rs(t)}/{1-rs(t)^ELIFE}, where rs(t)=1/(1+ds(t)) (page 144 of the documentation, Part II)

The documentation of both MARKAL and TIMES thus appear to define CRF in the same way, which is equivalent to the CRF(2) you presented, and corresponds to beginning-of-year discounting.

The default formulation in the TIMES GAMS code is consistent with the documentation, and so in TIMES the CRF values are, indeed, by default based on beginning-of-year discounting.

However, looking at the MARKAL GAMS code, to my surprise it seems to me that the MARKAL code may actually have adopted the CRF formula corresponding to end-of-year discounting, which is thus inconsistent with the MARKAL documentation!  That is quite interesting and somewhat confusing ...

Anyway, I would like to note that the CRF formulas based on beginning-of-year discounting and end-of-year discounting are both biased; the first method underestimates the interest payments, and the second overestimates them.

The good news is that in TIMES you can freely choose between these two, or you can use mid-year-discounting, which I think can be considered theoretically the most unbiased alternative.