Skip to content

Modern Finance ModifiedInternalRateOfReturn

Paul Squires edited this page Oct 19, 2026 · 4 revisions

Home › Finance › Finance › ModifiedInternalRateOfReturn

ModifiedInternalRateOfReturn

Returns a rate of return with one answer, from separate finance and reinvestment rates.

Syntax

ModifiedInternalRateOfReturn( flows( ), financeRate, reinvestRate )

Examples

#import "std/money"
using money

'' The WELL-POSED alternative to IRR: it discounts the negative flows at
'' one rate and compounds the positive ones at another, so it has exactly
'' one solution by construction rather than one per sign change.
dim as Decimal f( 0 to 4 ) = { DecimalParse( "-1000" ).Value( ), _
                               DecimalParse( "300" ).Value( ), _
                               DecimalParse( "400" ).Value( ), _
                               DecimalParse( "500" ).Value( ), _
                               DecimalParse( "200" ).Value( ) }

print ModifiedInternalRateOfReturn( f( ), DecimalParse( "0.10" ).Value( ), _
                                    DecimalParse( "0.12" ).Value( ) ).Value( ).ToStringFixed( 12 )

'' A higher reinvestment rate gives a higher modified return -- the
'' monotonicity that makes the measure mean something.
dim as Decimal lo = ModifiedInternalRateOfReturn( f( ), DecimalParse( "0.10" ).Value( ), _
                                                  DecimalParse( "0.05" ).Value( ) ).Value( )
dim as Decimal hi = ModifiedInternalRateOfReturn( f( ), DecimalParse( "0.10" ).Value( ), _
                                                  DecimalParse( "0.20" ).Value( ) ).Value( )
print ( hi > lo )                        '' true

Library: Finance
Category: Finance
Documented under: Nothing Becomes A Keyword
Source: pkg/std/money/fincash.tiko in the tiko repository.

Clone this wiki locally