XIRR vs. IRR Function

C

CMLDALLAS

I have been asked several times "What is the difference between the IR
and XIRR function in Excel?"

Simply - the IRR function returns the PERIOD INTEREST RATE ("i/n") for
stream of cash flows of equal time length (i.e. days, months, quarters
years, etc.). "i" is the "nominal" per annum interest rate and "n" i
the number of compounding periods per year. For example, if the IR
function in Excel on a stream of monthly cash flows returns a result o
4.5% - then the "nominal" per annum internal rate of return is 54.0% (o
.045 x 12 - "i" compounded monthly) and the effective per annum rate o
return is 69.59% (compounded annually). To convert a nominal (pe
annum) IRR to an effective (per annum) IRR, you can use the "EFFECT
function in Excel or use the equation (1 + i/n)^n - 1.

Essentially - any cash flow stream (with only one change of sign) ha
two valid IRRs (the nominal IRR and the effective IRR).

The XIRR function return assumes DAILY COMPOUNDING.....period. The use
has to input/designate a specific date each non-zero cash flow occur
and the cash flows can be irregular. All other cash flows are assume
to be zero. The XIRR function calculates an EFFECTIVE per annum rate o
return (not a nominal period interest rate). You can convert the XIR
rate of return result by using the "NOMINAL" function in Excel an
assuming n=365
 
M

Michael Marshall

I have been asked several times "What is the difference between the IRR

and XIRR function in Excel?"



Simply - the IRR function returns the PERIOD INTEREST RATE ("i/n") for a

stream of cash flows of equal time length (i.e. days, months, quarters,

years, etc.). "i" is the "nominal" per annum interest rate and "n" is

the number of compounding periods per year. For example, if the IRR

function in Excel on a stream of monthly cash flows returns a result of

4.5% - then the "nominal" per annum internal rate of return is 54.0% (or

045 x 12 - "i" compounded monthly) and the effective per annum rate of

return is 69.59% (compounded annually). To convert a nominal (per

annum) IRR to an effective (per annum) IRR, you can use the "EFFECT"

function in Excel or use the equation (1 + i/n)^n - 1.



Essentially - any cash flow stream (with only one change of sign) has

two valid IRRs (the nominal IRR and the effective IRR).



The XIRR function return assumes DAILY COMPOUNDING.....period. The user

has to input/designate a specific date each non-zero cash flow occurs

and the cash flows can be irregular. All other cash flows are assumed

to be zero. The XIRR function calculates an EFFECTIVE per annum rate of

return (not a nominal period interest rate). You can convert the XIRR

rate of return result by using the "NOMINAL" function in Excel and

assuming n=365.

There are various sorts of internal rate of return calculation

XIRR is an Excel function name that finds IRR for non-periodic cash flows, as such there is no term called XIRR

When calculating IRR you may come across a number of different cases such as

1) Cash flows are all of equal lengths. (thus the Excel IRR function)
2) Actual dates are available for cash flow transactions (thus the Excel XIRR function)

3) Cash flows are periodic but period is not generic, here you would want to define the period such as year, quarter, month, week, day, even biennial, triennial, and so on

4) Cash flows are have a rate schedule at which they are discounted (such as for coupon-bearing bond) for you seek the single discount rate that will set the market value of the bond to its current value

IRR is an IRR, there others are variants of it depending on what sort of data is known about it

See these two links that offer some of these features

Excel IRR function
http://tadxl.thinkanddone.com/excel_irr_function.html

Excel XIRR function
http://tadxl.thinkanddone.com/excel_xirr_function_for_irregular_cash_flows.html
 
A

abethefinancialengineer

I have been asked several times "What is the difference between the IRR

and XIRR function in Excel?"



Simply - the IRR function returns the PERIOD INTEREST RATE ("i/n") for a

stream of cash flows of equal time length (i.e. days, months, quarters,

years, etc.). "i" is the "nominal" per annum interest rate and "n" is

the number of compounding periods per year. For example, if the IRR

function in Excel on a stream of monthly cash flows returns a result of

4.5% - then the "nominal" per annum internal rate of return is 54.0% (or

045 x 12 - "i" compounded monthly) and the effective per annum rate of

return is 69.59% (compounded annually). To convert a nominal (per

annum) IRR to an effective (per annum) IRR, you can use the "EFFECT"

function in Excel or use the equation (1 + i/n)^n - 1.



Essentially - any cash flow stream (with only one change of sign) has

two valid IRRs (the nominal IRR and the effective IRR).



The XIRR function return assumes DAILY COMPOUNDING.....period. The user

has to input/designate a specific date each non-zero cash flow occurs

and the cash flows can be irregular. All other cash flows are assumed

to be zero. The XIRR function calculates an EFFECTIVE per annum rate of

return (not a nominal period interest rate). You can convert the XIRR

rate of return result by using the "NOMINAL" function in Excel and

assuming n=365.

An IRR calculation can be viewed from various perspectives rather than the trivial one as calculated by Excel IRR function.

Have a look at the following schedule of data that looks like a 8 x 8 matrix. To find IRR with information that is as varied and complex as the one shown here the traditional IRR functions in Excel and other software programsand TI BA II+ calculator will not do the job

Rates 3% 2% 5% 1% 2% 3% 6% 5%
Cash flows -100 35 60 90 -110 190 400 2000000
Frequencies 4 26 12 365 365 4 INF 100
Types 0 0 1 1 0 1 0 0
Compoundings 1/12 1/12 1/12 1/12 1/12 1/12 1/12 1/12
Periods 1 1/26 1/12 1/365 1/365 1/4 1/365 1
Concentrations 1 0.5 1 0.5 1 1 0.5 1
Hair cuts 0% 20% 20% 20% 0% 20% 20% 20%

In comes tadXL v3.0 at http://tadxl.com that offers an Excel IRR function here at http://tadxl.com/excel_irr_function.html

=tadIRR( rates, cashflows, frequencies, types, guess, compoundings, periods, concentrations, hair_cuts, iterations, precision )

The tadIRR function integrates functionality of various internal rate of return calculations in one place. These calculations are explained briefly inthe text that follows

Please note that only a handful of scenarios are discussed here and tadIRR may be used in a large number of other situations that are common practice in financial analysis


If we only had a series of cash flows then tadIRR would serve the same purpose as Excel IRR function shown in the example that follows

The first argument is omitted as there are rates to deal with, and the remaining missing arguments assume default values such as 10% as guess, 1 for frequency of all cash flows, 1 for annual compounding of interest, 1 for year as the length of the period assuming annual cash flows, 1 for concenration assuming full-year discounting of cash flows.

You can pass the data as range of cells as follows
=tadIRR( , B2:I2 )

or you may pass the values as array of numbers
=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 } )

If the cash flows are monthly and compounding is annual we pass it a value of 1/12 for period as follows
=tadIRR( , B2:I2, , , , , 1/12)
=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, , , , , 1/12)

If the cash flows and compounding of interest are both monthly we pass it avalue of 1/12 for period and compounding
=tadIRR( , B2:I2, , , , 1/12, 1/12)
=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, , , , 1/12, 1/12)

If the cash flows are discounted using mid-year discounting convention, we enter a value of 1/2 or 0.5 for concentration as follows
=tadIRR( , B2:I2, , , , 1/12, 1/12, 1/2)
=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, , , , 1/12, 1/12, 1/2)

If we find that only 90% of the 80% of the cash receipts and payments are realized, we enter a value of 20% or 0.2 for hair cut.
A prime example of hair cuts on investment from recent financial news wouldbe from bailout of Greek and Cyprus economies where the Government of these countries were unable to make the full interest payments and principal onTreasury bonds to its investors. The investors had to take a 30% hair cut leading to net present value of 70% of the actual amount.

=tadIRR( , B2:I2, , , , 1/12, 1/12, 1/2, 20%)
=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, , , , 1/12, 1/12, 1/2, 20%)

If the cash flows have a schdule of rates associated with them then we enter the series of discount rates as follows
This IRR calculation is applies for finding yields to maturity - YTM on coupon bearing bonds where the term structure of interest varies for each year.. The investor would be keen to find a single interest rate that sets equalthe current value (present value) of the bond to market price of such a bond.
=tadIRR( { 0.03, 0.02, 0.05, 0.01, 0.02, 0.03, 0.06, 0.05 }, { -100, 35, 60, 90, -110, 190, 400, 2000000 } )
=tadIRR( B1:I1, B2:I2 )

To find IRR on perpetuity where you have paid a price of $100 that earns a perpetual income of $25, you would use the following IRR method
=tadIRR( , { -100, 25 }, { 1, "INF"} )
or pass it the range of cells
=tadIRR( , B2:C2, B3:C3 )

If you were tasked with business valuation or company valuation were the terminal value is a perpetual income or loss then you would use the followingIRR function call. Here each payment or receipt has an associated frequency of occurance such as the first payment of $100 occurs at time periods 0,1,2, and 3. And the same is true for remaining cash payments
or cell ranges may be passed as follows
=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, { 4, 26, 12, 365, 365, 4, "INF", 100 } )
=tadIRR( , B2:I2, B3:I3 )

If all of the cash flows have different rates, frequencies, type, compounding frequency of interest, periods of varying lengths, different discountingconventions, various hair cuts then you may enter a m x n array of values to the IRR function as follows
=tadIRR( B1:I1, B2:I2, B3:I3, B4:I4, B5:I5, B6:I6, B7:I7, B8:I8 )

Now that is some Excel IRR function that finds internal rate of return for unlimited scenarios that one comes across in financial analysis.
 
M

Michael Marshall

An IRR calculation can be viewed from various perspectives rather than the trivial one as calculated by Excel IRR function.



Have a look at the following schedule of data that looks like a 8 x 8 matrix. To find IRR with information that is as varied and complex as the one shown here the traditional IRR functions in Excel and other software programs and TI BA II+ calculator will not do the job



Rates 3% 2% 5% 1% 2% 3% 6% 5%

Cash flows -100 35 60 90 -110 190 400 2000000

Frequencies 4 26 12 365 365 4 INF 100

Types 0 0 1 1 0 1 0 0

Compoundings 1/12 1/12 1/12 1/12 1/12 1/12 1/12 1/12

Periods 1 1/26 1/12 1/365 1/365 1/4 1/365 1

Concentrations 1 0.5 1 0.5 1 1 0.5 1

Hair cuts 0% 20% 20% 20% 0% 20% 20% 20%



In comes tadXL v3.0 at http://tadxl.com that offers an Excel IRR functionhere at http://tadxl.com/excel_irr_function.html



=tadIRR( rates, cashflows, frequencies, types, guess, compoundings, periods, concentrations, hair_cuts, iterations, precision )



The tadIRR function integrates functionality of various internal rate of return calculations in one place. These calculations are explained briefly in the text that follows



Please note that only a handful of scenarios are discussed here and tadIRR may be used in a large number of other situations that are common practice in financial analysis





If we only had a series of cash flows then tadIRR would serve the same purpose as Excel IRR function shown in the example that follows



The first argument is omitted as there are rates to deal with, and the remaining missing arguments assume default values such as 10% as guess, 1 forfrequency of all cash flows, 1 for annual compounding of interest, 1 for year as the length of the period assuming annual cash flows, 1 for concenration assuming full-year discounting of cash flows.



You can pass the data as range of cells as follows

=tadIRR( , B2:I2 )



or you may pass the values as array of numbers

=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 } )



If the cash flows are monthly and compounding is annual we pass it a value of 1/12 for period as follows

=tadIRR( , B2:I2, , , , , 1/12)

=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, , , , , 1/12)



If the cash flows and compounding of interest are both monthly we pass ita value of 1/12 for period and compounding

=tadIRR( , B2:I2, , , , 1/12, 1/12)

=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, , , , 1/12, 1/12)



If the cash flows are discounted using mid-year discounting convention, we enter a value of 1/2 or 0.5 for concentration as follows

=tadIRR( , B2:I2, , , , 1/12, 1/12, 1/2)

=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, , , , 1/12, 1/12, 1/2)



If we find that only 90% of the 80% of the cash receipts and payments arerealized, we enter a value of 20% or 0.2 for hair cut.

A prime example of hair cuts on investment from recent financial news would be from bailout of Greek and Cyprus economies where the Government of these countries were unable to make the full interest payments and principal on Treasury bonds to its investors. The investors had to take a 30% hair cut leading to net present value of 70% of the actual amount.



=tadIRR( , B2:I2, , , , 1/12, 1/12, 1/2, 20%)

=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, , , , 1/12, 1/12, 1/2, 20%)



If the cash flows have a schdule of rates associated with them then we enter the series of discount rates as follows

This IRR calculation is applies for finding yields to maturity - YTM on coupon bearing bonds where the term structure of interest varies for each year. The investor would be keen to find a single interest rate that sets equal the current value (present value) of the bond to market price of such a bond.

=tadIRR( { 0.03, 0.02, 0.05, 0.01, 0.02, 0.03, 0.06, 0.05 }, { -100, 35, 60, 90, -110, 190, 400, 2000000 } )

=tadIRR( B1:I1, B2:I2 )



To find IRR on perpetuity where you have paid a price of $100 that earns a perpetual income of $25, you would use the following IRR method

=tadIRR( , { -100, 25 }, { 1, "INF"} )

or pass it the range of cells

=tadIRR( , B2:C2, B3:C3 )



If you were tasked with business valuation or company valuation were the terminal value is a perpetual income or loss then you would use the following IRR function call. Here each payment or receipt has an associated frequency of occurance such as the first payment of $100 occurs at time periods 0,1,2, and 3. And the same is true for remaining cash payments

or cell ranges may be passed as follows

=tadIRR( , { -100, 35, 60, 90, -110, 190, 400, 2000000 }, { 4, 26, 12, 365, 365, 4, "INF", 100 } )

=tadIRR( , B2:I2, B3:I3 )



If all of the cash flows have different rates, frequencies, type, compounding frequency of interest, periods of varying lengths, different discounting conventions, various hair cuts then you may enter a m x n array of values to the IRR function as follows

=tadIRR( B1:I1, B2:I2, B3:I3, B4:I4, B5:I5, B6:I6, B7:I7, B8:I8 )



Now that is some Excel IRR function that finds internal rate of return for unlimited scenarios that one comes across in financial analysis.


@Abraham A.

I think you missed out on one crucial aspect of IRR calculation in your Excel IRR function.

You remember the popular phrase.

Two things are for certain. Death and After-Tax cost of debt.

An IRR may be viewed as cost of debt from the perspective of fixed income securities and taxes apply on capital gains. Thus an after-tax IRR is a better measure of an investor's return on investment - ROI.

It would seem that you have now made a provision for tax rates in your IRR calculations as the last time I checked the help pages of your Excel IRR function http://tadxl.com/excel_irr_function.html it showed input option for a schedule of tax rates for internal rate of return calculations.

Now I played around with your tadXL v3.0 add-in with example data that you use to demonstrate the usage of such financial functions and noted down thefollowing 8 x 9 matrix of data for IRR and NPV calculations.

Rates 4% 2% 5% 3% 2% 4% 3% 6%
Tax Rates 35% 36% 37% 38% 39% 40% 45% 50%
Cash Flows -100 75 150 -100 1000 50000 2000 90000
Frequencies 4 365 24 365 INF 260 INF 5200
Types 1 0 1 0 0 1 0 0
Compoundings 1/4 1/365 1/12 1/365 1 1/26 1 1/52
Periods 1/4 1/365 1/12 1/365 1 1/26 1 1/52
Concentrations 1 1/2 2 10 1 1/2 1 3/4
Hair Cuts 0% 20% 20% 20% 0% 20% 20% 20%

Looking closely at the series of cash flows it would seem you have a seriesof annuities along with the frequency of payments of such annuities and other related data.

I tried to make sense out of the sequence of such payments and it made sense till the first never-ending payment in amounts of -100.

But how come you have annuity payments that follow the never-ending stream of payments such as the $1,000 annuity, the $50,000 annuity, the $2,000 perpetuity and the $90,000 annuity.

How in this world is it possible to make payments or receive incomes after a never-ending stream of payments (or receipts)?

Putting that aside, I put your cash flows in a narrative shown below

4 quarterly payments in (negative) amount of $100
followed by 365 daily receipts in amount of $75 each
followed by 24 monthly receipts in amount of $150 each
followed by 365 daily payments in (negative) amount of $100 each
followed by infinite annual receipts in amount of $1,000 each
followed by 260 fortnightly receipts in amount of $50,000 each
followed by infinite annual receipts in amount of $2,000 each
followed by 5200 weekly receipts in amount of $90,000 each

I then used your Excel NPV function http://tadxl.com/excel_npv_function.html that is part of tadXL v3.0 http://tadxl.com using the following net present value formula in an Excel worksheet cell.

=tadNPV( B1:I1, B2:I2, B3:I3, B4:I4, B5:I5, B6:I6, B7:I7, B8:I8, B9:I9 )

It reported a pre-tax NPV in amount of $43,095.08 and an after-tax NPV in amount of $73,949.02

Wow! thats an amazing piece of Excel NPV function that is able to find the net present value of such complex set of data which includes options for receipts and payments after the never-ending stream of payments (or receipts)..

This reminds me of those Mullahs in foreign lands that promise you return on investment - ROI in after life for the deeds you have done on Earth.

From this perspective, it would seem to me that the receipts of money afterthe never-ending payments are the returns that are promised to you in after life. Obviously to receive such money you would have to wait indefinitely..

And if I looked closely at the formulas that you have used for such NPV calculations, all such large sums of money that are promised after a perpetualincome are worth a big resounding ZERO not unless the discount rates dropped to 0% at which point the NPV of such an investment will become infinite.And if the discount rate of -200% were to be applicable then the net present value of such an investment would be nothing but the sum of un-discounted cash flows.

@Abraham A.

Have you ever wondered where you are getting all such ideas from to come upwith these fancy financial calculations.

Nope! it's not a divine revelation. It's the program that you are coded with that unfolds as time value of money passes by. Your god is a project manager and you are a subject of an experiment albeit the experiment is carriedforward without your consent.

And how much money did you make from tadXL v2.0 that now you are risking your efforts with tadXL v3.0 code named Matrix

And would you still risk the gamble to program tadXL v4.0 code named Cube :)

I been told that PJ Hooker has passed away and his replacement Robert Miller has taken over the vacant position. So should we expect Bob to come alongand point out something that I have overlooked in your Excel IRR function http://tadxl.com/excel_irr_function.html
 
R

Robert Miller

//tadxl.com/excel_irr_function.html[/url]

Thanks Mike for passing on the baton.

Having read through the series of replies thus far and going through the tadXL v3.0 download for a hands-on demonstration, I have a couple of commentsto make

Those who have done business with Abraham A. https://plus.google.com/109666872827367554171/posts call him Honest Abe

This title is so fitting of Abe whose ethics are well known to American society at large dating back to the days when he lived in New York circa. 1992

But in finance, being honest isn't the trademark of traders who make their living by siphoning money from their clients pockets

Finding internal rate of return with Excel IRR function http://tadxl.com/excel_irr_function.html can be made reflective of the greedy mindset of bankers and traders if it were to offer an option to rig the rate

Rate rigging is common practice amongst traders, just look at the news headlines from financial press in recent past and you will find reputable banksand bankers from RBS, UBS, JP Morgan, and others that have admitted to rigging major interest rates such as LIBOR, and EUROBER to make a quick buck

I would suggest that Abe to add a new row for the tadIRR and tadNPV functions to accept values for "Rate Rigged By" as shown below

Rates 4% 2% 5% 3% 2% 4% 3% 6%
Tax Rates 35% 36% 37% 38% 39% 40% 45% 50%
Cash Flows -100 75 150 -100 1000 50000 2000 90000
Frequencies 4 365 24 365 INF 260 INF 5200
Types 1 0 1 0 0 1 0 0
Compoundings 1/4 1/365 1/12 1/365 1 1/26 1 1/52
Periods 1/4 1/365 1/12 1/365 1 1/26 1 1/52
Concentrations 1 1/2 2 10 1 1/2 1 3/4
Hair Cuts 0% 20% 20% 20% 0% 20% 20% 20%
Rate Rigged by 0% 15% 15% 15% 0% 15% 15% 15%

Doing so will exaggerate the actual internal rate of return and bring down the net present value

I know it will be a hard decision to make for Honest Abe to indulge in sucha shady practice, but then those who make a buck don't have any ethics :(
 
A

Abraham A

I would suggest that Abe to add a new row for the tadIRR and tadNPV functions to accept values for "Rate Rigged By" as shown below



Rates 4% 2% 5% 3% 2% 4% 3% 6%

Tax Rates 35% 36% 37% 38% 39% 40% 45% 50%

Cash Flows -100 75 150 -100 1000 50000 2000 90000

Frequencies 4 365 24 365 INF 260 INF 5200

Types 1 0 1 0 0 1 0 0

Compoundings 1/4 1/365 1/12 1/365 1 1/26 1 1/52

Periods 1/4 1/365 1/12 1/365 1 1/26 1 1/52

Concentrations 1 1/2 2 10 1 1/2 1 3/4

Hair Cuts 0% 20% 20% 20% 0% 20% 20% 20%

Rate Rigged by 0% 15% 15% 15% 0% 15% 15% 15%



Doing so will exaggerate the actual internal rate of return and bring down the net present value



I know it will be a hard decision to make for Honest Abe to indulge in such a shady practice, but then those who make a buck don't have any ethics :(

Thanks Bob but you know we don't Rob people in broad day light, it may be different if its late at night and someone is standing alone in a dark alley!

Bob what you stated about rigging rates reminds me of what Mike was once quoted as saying that is

"There are lies, damn lies and then there are interest rates" - Michael Marshall

The above quote is abstracted from a fairy tale called "Once upon a time inNew York" starring Michael Marshall at a much younger age.

Your idea does ring bells and I had to fight my inner self when I decided to include options for rigging rates in Excel IRR function http://tadxl.com/excel_irr_function.html and Excel NPV function http://tadxl.com/excel_npv_function.html

However I will keep my fingers crossed that the Feds don't find out or elsethe domain http://tadxl.com will be seized by Federal agents and I will beout of business once more :(

Now that I wanted to check the results of NPV using non-riggged and rigged rates, I noted that your assertion of expecting a lower net present value with rigged rates did not come through

See the same schedule of data for our NPV calculations

Rates 4% 2% 5% 3% 2% 4% 3% 6%
Tax Rates 35% 36% 37% 38% 39% 40% 45% 50%
Cash Flows -100 75 150 -100 1000 50000 2000 90000
Frequencies 4 365 24 365 INF 260 INF 5200
Types 1 0 1 0 0 1 0 0
Compoundings 1/4 1/365 1/12 1/365 1 1/26 1 1/52
Periods 1/4 1/365 1/12 1/365 1 1/26 1 1/52
Concentrations 1 1/2 2 10 1 1/2 1 3/4
Hair Cuts 0% 20% 20% 20% 0% 20% 20% 20%
Rate Rigged By 0% 15% 15% 15% 0% 15% 15% 15%

And using the Excel NPV function as follows passing it all 10 rows of data resulted in a pre-tax non-rigged NPV of $43,095.08 and a pre-tax rigged NPVof $43,466.15.

=tadNPV( B1:I1, B2:I2, B3:I3, B4:I4, B5:I5, B6:I6, B7:I7, B8:I8, B9:I9, B10:I10 )

Pre-tax non-rigged NPV = $43,095.08
Pre-tax rigged NPV = $43,466.15
After-tax non-rigged NPV = $73,949.02
After-tax rigged NPV = $74,192.46

Pre-tax NPV
Rigged NPV > Non-rigged NPV
$43,466.15 > $43,095.08

After-tax NPV
Rigged NPV > Non-rigged NPV
$74,192.46 > $73,949.02

I wouldn't doubt your authority on subject of finance, so I investigated the unexpected higher NPV for the rigged rate.

It dawned on me that since expense in payment number 4 in amount of -100 has a hair cut and a rigged rate yet the payment number 5 which is a perpetuity has no hair cut and rigged rate. This led to a lower negative present value of -100 for 365 period yet a higher positive present value of 1000 for infinite payments. Thus the resulting sum that is the net present value of all payments turned out higher in case of the rigged rate.

To confirm your claim, I changed the sign of 4th annuity payment to positive such as 100 and now that I used Excel NPV function http://tadxl.com/excel_npv_function.html it showed a net present value for the rigged rate that is lower than the NPV for the non-rigged rate.

Rates 4% 2% 5% 3% 2% 4% 3% 6%
Tax Rates 35% 36% 37% 38% 39% 40% 45% 50%
Cash Flows -100 75 150 100 1000 50000 2000 90000
Frequencies 4 365 24 365 INF 260 INF 5200
Types 1 0 1 0 0 1 0 0
Compoundings 1/4 1/365 1/12 1/365 1 1/26 1 1/52
Periods 1/4 1/365 1/12 1/365 1 1/26 1 1/52
Concentrations 1 1/2 2 10 1 1/2 1 3/4
Hair Cuts 0% 20% 20% 20% 0% 20% 20% 20%
Rate Rigged By 0% 15% 15% 15% 0% 15% 15% 15%

=tadNPV( B1:I1, B2:I2, B3:I3, B4:I4, B5:I5, B6:I6, B7:I7, B8:I8, B9:I9, B10:I10 )

Pre-tax non-rigged NPV = $93,957.24
Pre-tax rigged NPV = $93,285.19
After-tax non-rigged NPV = $127,553.03
After-tax rigged NPV = $127,112.02

Pre-tax NPV
Rigged NPV < Non-rigged NPV
$93,285.19 < $93,957.24

After-tax NPV
Rigged NPV < Non-rigged NPV
$127,112.02 < $127,553.03

Bob, good and evil resides in all of us. It is our choice to select one of them. Remember that company called Google that calls itself "epitome of allgood" but you know and I know that such a claim is nothing more than the cover for Vanity Fair magazine.
 
R

Robert Miller

Bob, good and evil resides in all of us. It is our choice to select one of them. Remember that company called Google that calls itself "epitome of all good" but you know and I know that such a claim is nothing more than thecover for Vanity Fair magazine.

Abraham, that's what you call The Devil's own.

Abe, Season's Greetings to you and the other financial engineers at the tadPortal http://thinkanddone.com

New Year is just 8 days ahead before those down under at the Sydney Opera House ring in the year 2014 with fireworks and bottles of champaign in hot weather.

But I would rather enjoy a White Christmas at a farm house in New England that reminds me of the following parody of Robert Frost's famous poem keeping in view that we are analyzing investments using the tadXL add-in v3.0 forExcel 2007, 2010 and 2013.

Whose banks these are, I think I know
His house is in the village though
He will not see me stopping here
To watch his bank vaults fill up with dough

- Bobby Frost

Abe! Wishing you a Merry Christmas and a Happy New Year that will bring in profits that will offset your previous losses that were incurred in the summer of 2013.

Abe, I noticed that in the last few days you have extended the functionality of your Excel NPV function http://tadxl.com/excel_npv_function.html and Excel IRR function http://tadxl.com/excel_irr_function.html to include the effect of inflation on forward looking cash flow amounts. Not only your tadNPV function allows for a growth rate but it also permits you to use annuitypayments that are worth their face value or those that are adjusted for inflation.

There are a lot more variables in your tadNPV function now as compared to what you had just a week ago. The following shows the syntax for this Excel NPV function that now accepts up to 12 different set of values. These values may be entered as single numbers or an array of numbers thus making the input array a 12 x N matrix (recall that Matrix is the code name for tadXL v3.0)

=tadNPV( rate, growth, tax_rate, cash flows, adjust_for_inflation, frequency, type, compounding, period, concentration, hair_cut, rate_rigged_by )

And one may either enter the values for this Excel NPV function as a range of cells such as

=tadNPV( B1:D1, B2:D2, B3:D3, B4:D4, B5:D5, B6:D6, B7:D7, B8:D8, B9:D9, B10:D10, B11:D11, B12:D12 )

or one may enter the values for this Excel net present value function as anarray of numbers such as

=tadNPV( {0.15, 0.15, 0.15}, {0.1, 0.1, 0.1}, {0.4, 0.4, 0.4}, {1, 1, 1},{0, 0, 0}, {50, 50, 50}, {0, 0, 0}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {0.25, 0.25, 0.25}, {0.2, 0.2, 0.2} )

All of these options are documented here at http://tadxl.com the home page of tadXL add-in v3.0

I took three annuities in amount of $1 each that all made 50 different payments one after the other thus there were 150 payments in total each in amount of $1

Then I tested your Excel NPV function http://tadxl.com/excel_npv_function.html with a combination of input values to find net present value of such annuities using the face value of $1 or the inflation adjusted $1. The discount rate of 15% was used for discounting the cash flows. A 10% growth rate was applied to these calculations. A tax rate of 40% was due on the annuity payments. A hair cut of 25% was used in some of these calculations. And I rigged the discount rate by 40% to see the difference in net present value.

Oh Boy! I was amazed at the options that you have now built into the tadNPVfunction that makes the foundation for tadIRR function that finds the internal rate of return.

The first set of data shown below using annuity amounts that have a face value of $1 throughout the different time periods. The first example uses no tax rate, no haircut nor any rigged rate. The NPV is found in amount of $17..849904

rate 15% 15% 15%
growth 10% 10% 10%
tax_rate 0 0 0
cash_flow $1 $1 $1
adjust_for_inflation 0 0 0
frequency 50 50 50
type 0 0 0
compounding 1 1 1
period 1 1 1
concentration 1 1 1
haircut 0 0 0
rate_rigged_by 0 0 0

NPV = $17.849904

If the same set of values were used but we adjusted the $1 annuity paymentsfor inflation, then the net present value of same payments in amount of $1for 150 periods is $19.974575 which is higher than the sum of $17.849904 that we calculated earlier

This is the same value you would find by using present value interest factor of a growing annuity in amount of $1 using the tadPVIFGA function

Notice that this NPV is higher than the last NPV due to the use of inflation adjusted dollar amounts

rate 15% 15% 15%
growth 10% 10% 10%
tax_rate 0 0 0
cash_flow $1 $1 $1
adjust_for_inflation 0 1 1
frequency 50 50 50
type 0 0 0
compounding 1 1 1
period 1 1 1
concentration 1 1 1
haircut 0 0 0
rate_rigged_by 0 0 0

NPV = $19.974575

If we go back to using the face value for $1 annuity and introduce a tax rate of 40% then the net present value is much higher than $17.849904 and it turns out to be $58.662327

rate 15% 15% 15%
growth 10% 10% 10%
tax_rate 40% 40% 40%
cash_flow $1 $1 $1
adjust_for_inflation 0 0 0
frequency 50 50 50
type 0 0 0
compounding 1 1 1
period 1 1 1
concentration 1 1 1
haircut 0 0 0
rate_rigged_by 0 0 0

NPV = $58.662327

But if we now switch to using inflation adjusted $1 along with a tax rate of 40% then the NPV results in an amount of $293.484911 which is much higherthan the NPV of $19.974575 for the adjusted $1 amounts without the tax rate

rate 15% 15% 15%
growth 10% 10% 10%
tax_rate 40% 40% 40%
cash_flow $1 $1 $1
adjust_for_inflation 0 1 1
frequency 50 50 50
type 0 0 0
compounding 1 1 1
period 1 1 1
concentration 1 1 1
haircut 0 0 0
rate_rigged_by 0 0 0

NPV = $293.484911

Now if we use the unadjusted $1 amounts but take a 25% hair cut with 40% tax charge then the net present value turns out to be $43.996745 as compared to $58.662327 value without the hair cut.

rate 15% 15% 15%
growth 10% 10% 10%
tax_rate 40% 40% 40%
cash_flow $1 $1 $1
adjust_for_inflation 0 0 0
frequency 50 50 50
type 0 0 0
compounding 1 1 1
period 1 1 1
concentration 1 1 1
haircut 25% 25% 25%
rate_rigged_by 0 0 0

NPV = $43.996745

Taking a 25% hair cut on inflation adjusted $1 payments with a 40% tax ratereturns an NPV of $220.113683 which is considerably lower for the same options without the haircut that amounted to $293.484911

rate 15% 15% 15%
growth 10% 10% 10%
tax_rate 40% 40% 40%
cash_flow $1 $1 $1
adjust_for_inflation 0 1 1
frequency 50 50 50
type 0 0 0
compounding 1 1 1
period 1 1 1
concentration 1 1 1
haircut 25% 25% 25%
rate_rigged_by 0 0 0

NPV = $220.113683

Now if we do not adjust for inflation and take a tax burden of 40%, along with a hair cut of 25% further rigging the rate by 40% the resulting net present value is $19.928734 that is much lower than the non-rigged NPV of $43.996745

rate 15% 15% 15%
growth 10% 10% 10%
tax_rate 40% 40% 40%
cash_flow $1 $1 $1
adjust_for_inflation 0 0 0
frequency 50 50 50
type 0 0 0
compounding 1 1 1
period 1 1 1
concentration 1 1 1
haircut 25% 25% 25%
rate_rigged_by 40% 40% 40%

NPV = $19.928734

Finally if we rig the rate by 40% and take a hair cut of 25% and pay a tax obligation of 40% on inflation adjusted $1 payments the NPV turns out to be$27.978728 compare this to the net present value of $220.113683 without the rigged rate.

rate 15% 15% 15%
growth 10% 10% 10%
tax_rate 40% 40% 40%
cash_flow $1 $1 $1
adjust_for_inflation 0 1 1
frequency 50 50 50
type 0 0 0
compounding 1 1 1
period 1 1 1
concentration 1 1 1
haircut 25% 25% 25%
rate_rigged_by 40% 40% 40%

NPV = $27.978728

Now you see how those bankers and traders at large lending banks make a quick buck when they rig the rate by a certain percentage that brings down thenet present worth of payments that has to be paid to the clients who gave them their hard earned money all in hopes for return on investment - ROI :(
 
A

Abraham A

Abe, I noticed that in the last few days you have extended the functionality of your Excel NPV function http://tadxl.com/excel_npv_function.html andExcel IRR function http://tadxl.com/excel_irr_function.html to include theeffect of inflation on forward looking cash flow amounts. Not only your tadNPV function allows for a growth rate but it also permits you to use annuity payments that are worth their face value or those that are adjusted for inflation.



There are a lot more variables in your tadNPV function now as compared towhat you had just a week ago. The following shows the syntax for this Excel NPV function that now accepts up to 12 different set of values. These values may be entered as single numbers or an array of numbers thus making theinput array a 12 x N matrix (recall that Matrix is the code name for tadXLv3.0)



=tadNPV( rate, growth, tax_rate, cash flows, adjust_for_inflation, frequency, type, compounding, period, concentration, hair_cut, rate_rigged_by )

The tadNPV function in it's current form will become part of tadXL add-in v3.0 that will be released in January 2014

I have uploaded a video demonstration of this Excel NPV function here at https://plus.google.com/109666872827367554171/posts/ES5HMAGNnf6

Let me know if you have any comments on the way it is being demonstrated inthis video
 
A

Abraham A

I have been asked several times "What is the difference between the IRR

and XIRR function in Excel?"



Simply - the IRR function returns the PERIOD INTEREST RATE ("i/n") for a

stream of cash flows of equal time length (i.e. days, months, quarters,

years, etc.). "i" is the "nominal" per annum interest rate and "n" is

the number of compounding periods per year. For example, if the IRR

function in Excel on a stream of monthly cash flows returns a result of

4.5% - then the "nominal" per annum internal rate of return is 54.0% (or

045 x 12 - "i" compounded monthly) and the effective per annum rate of

return is 69.59% (compounded annually). To convert a nominal (per

annum) IRR to an effective (per annum) IRR, you can use the "EFFECT"

function in Excel or use the equation (1 + i/n)^n - 1.



Essentially - any cash flow stream (with only one change of sign) has

two valid IRRs (the nominal IRR and the effective IRR).



The XIRR function return assumes DAILY COMPOUNDING.....period. The user

has to input/designate a specific date each non-zero cash flow occurs

and the cash flows can be irregular. All other cash flows are assumed

to be zero. The XIRR function calculates an EFFECTIVE per annum rate of

return (not a nominal period interest rate). You can convert the XIRR

rate of return result by using the "NOMINAL" function in Excel and

assuming n=365.

IRR is something of an enigma since there are so many different variants ofthis particular rate of return. An IRR may be defined and calculated for almost any investment ranging for a lump-sum investment, and those that makeperiodic returns for a number of periods and also for those that pay dividends forever. The native IRR function is barely able to find the internal rate of return for series of cash flows for fixed number of periods.

In comparison, the tadIRR function which is an Excel IRR function http://tadxl.com/excel_irr_function.html offers unlimited capabilities to find the IRR - internal rate of return.

tadIRR is one of the many financial functions found in tadXL v3.0 add-in for Excel 2007, 2010 and 2013 found here at http://tadxl.com/

In this lengthy tutorial, I will illustrate finding internal rate of returnfor various investments that range from single sum investment to those that make payments forever and those than make periodic payments for a limitednumber of periods.

If you purchased a perpetuity by paying $10, that makes never-ending payments in amount of $1. Find the internal rate of return on such an investment.

We will use the Excel IRR function called tadIRR to find the internal rate of return on a perpetuity.

If no other information is at hand about the investment then we will simplyenter an array of values of the cash flows {-10, 1} where the first amount-10 is an outgoing cash flow followed by an incoming cash flow of 1. To tell the IRR function that we have a perpetual income, we have to enter the frequency of cash flows. Since the $10 is paid once we will use a value of 1for its frequency but since the $1 incomes comes in forever we will use a value called INF short for infinity as the frequency of this receipt. Thesevalues will be entered as an array of {1,"INF"}

Now we enter the tadIRR function in a worksheet cell as follows where we omit a number of values that are not needed. The five leading commas ,,,,, mean that we have left out the values for the guess rate, the use_rates flag,the rate schedule, the inflation, and the tax rate. The two commas between{-10,1},,{1,"INF"} mean that we have left out the value for adjust_for_inflation flag.

=tadIRR(,,,,,{-10,1},,{1,"INF"})
IRR = 10%

The function returns an IRR of 10% for this perpetual investment that was paid with $10 and earned us $1 forever.

Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an itermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now findthe internal rate of return as follows.

=tadIRR(,,,,,{-10,0,1},,{1,9,"INF"})
IRR = 5.95%

The function returns an IRR of 5.95% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate payment of $10.

The previous example assumed that interest rate is compounded annually, however if the compounding frequency of interest is different than annual suchas a monthly compounding of interest then the IRR would be different than 10%. To find such a rate, we need to tell the IRR function that interest compounding is monthly by entering a value of 1/12 for the option called "compounding".

=tadIRR(,,,,,{-10,1},,{1,"INF"},,1/12)
IRR = 9.57%

The function returns an IRR of 9.57% when interest is compounded per month on a perpetual income of $1 that was purchased with $10.

Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an itermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now findthe internal rate of return as follows.

=tadIRR(,,,,,{-10,0,1},,{1,9,"INF"},,1/12)
IRR = 5.79%

The function returns an IRR of 5.79% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate payment of $10.

Now if we had to pay 10% tax on our perpetual income, the IRR would have tobe adjusted for the tax burden. To tell the IRR function that 10% tax is due on this investment we will enter a value of 10% or 0.1 for option called"tax_rate" as follows.

=tadIRR(,,,,10%,{-10,1},,{1,"INF"})
IRR = 11.11%

The function returns an IRR of 11.11% that reflects the tax-burden

Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an itermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now findthe internal rate of return as follows.

=tadIRR(,,,,10%,{-10,0,1},,{1,9,"INF"})
IRR = 6.61%

The function returns an IRR of 6.61% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate payment of $10.

Since the expected income comes at future dates, then it is probable that the full value of $1 is not realized and only 90% of the income is expected.We will have to use the hair_cuts options and enter two values for it, thefirst being 0 to specify that full costs in amount of $10 are paid and thesecond value of 0.1 to denote that a 10% hair cut on income is expected onincome of $1.

=tadIRR(,,,,,{-10,1},,{1,"INF"},,,,,{0,0.1})
IRR = 9%

The function now returns an IRR of 9% when only 90 cents are expected on anincome of $1.

Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an itermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now findthe internal rate of return as follows.

=tadIRR(,,,,,{-10,0,1},,{1,9,"INF"},,,,,{0,0,0.1})
IRR = 5.54%

The function returns an IRR of 5.54% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate payment of $10.

But now if we revert back to the actual values for expenses and incomes in amount of $10 and $1 respectively, but a rogue trader wants to rig the interest rate by a margin of 10%. How would this effect the IRR on this investment, to find the answer we enter a value of 10% for the option called "rate_rigged_by"

=tadIRR(,,,,,{-10,1},,{1,"INF"},,,,,,10%)
IRR = 9.09%

The function now returns an IRR of 9.09% which is lower than the actual IRRof 10%.

Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an itermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now findthe internal rate of return as follows.

=tadIRR(,,,,,{-10,0,1},,{1,9,"INF"},,,,,,10%)
IRR = 5.41%

The function returns an IRR of 5.41% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate payment of $10.

What if the investment earns us an amount of income that grows per period by a certain percentage. In this case the $1 perpetuity grows by 5% per period, to find the IRR with the growing income we will enter a value of 5% forthe option called "inflation" as follows.

=tadIRR(,,,5%,,{-10,1},,{1,"INF"})
IRR = 15%

The function returns an IRR of 15% on a perpetual income of $1 that grows by 5% for which we paid an amount of $10.

Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an itermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now findthe internal rate of return as follows.

=tadIRR(,,,5%,,{-10,0,1},,{1,9,"INF"})
IRR = 9.44%

The function returns an IRR of 9.44% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate payment of $10.

What if the interest rate was compounded per month on this income that grewby 5% per period, how would this change the IRR. To find out, we will enter a value of 1/12 for the option called "compounding" to get the new IRR asfollows.

=tadIRR(,,,5%,,{-10,1},,{1,"INF"},,1/12)
IRR = 14.16%

The function now returns an IRR of 14.16% where we paid $10 to receive a perpetual income of $1 that grows by 5% and interest is compounded per month.

Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an itermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now findthe internal rate of return as follows.

=tadIRR(,,,5%,,{-10,0,1},,{1,9,"INF"},,1/12)
IRR = 9.13%

The function returns an IRR of 9.13% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate payment of $10.

An investment of $100 makes 50 periodic returns in amount of $3. The payments begin a year from the initial investment, the task is to find the investor's rate of return - ROI on this investment. Here we will use the tadIRR function to find this interest rate.

=tadIRR(,,,,,{-100,3},,{1,50})
IRR = 1.723%

The function returns a periodic interest rate of 1.723% for this investment..

For this trivial invesment with periodic returns, the Excel RATE function does the job as well to find the IRR as follows.

=RATE(50,3,-100)
IRR = 1.723%

The Excel function returns the same IRR of 1.723% for this investment that makes 50 periodic payments in amount of $3 that was paid with $100.

=tadIRR(,,,,,{-100,0,3},,{1,12,50})
IRR = 1.122%

What if the compounding frequency of interest is not annual but it is set to monthly compounding. How then would we find the interest rate for this investment. To do so we will pass in a value of 1/12 for the option called "compounding" in the tadIRR function as follows.

=tadIRR(,,,,,{-100,3},,{1,50},,1/12)
IRR = 1.710%

The function now returns a monthly compounded rate of 1.710% for the same investment of $100 that returned 50 periodic annual payments of $3.

The IRR calculations thus far assumed that periodic payments are made at the end of each year. But what if the payments are monthly, how then to find the internal rate of return for such an investment with monthly cash flows.The short answer is to provide a value of 1/12 for the option called "period" in the tadIRR function as follows:

=tadIRR(,,,,,{-100,3},,{1,50},,,1/12)
IRR = 22.756%

Now we see that the monthly IRR of 22.756 is considerably higher than the annual IRR of 1.723%. If you were confined to using native Excel functions, you could have wrapped the RATE function within EFFECT function to get the same rate as illustrated below.

=EFFECT(RATE(50,3,-100)*12,12)
IRR = 22.756%

But now what if the payments are made each month couple that with monthly compounding of interest. Now to find the IRR, the tadIRR would need a value of 1/12 for both of the options for "compounding" and "period"

=tadIRR(,,,,,{-100,3},,{1,50},,1/12,1/12)
IRR = 20.679%

As you have just seen the monthly compounded rate of return for monthly cash flow amounts is 20.679% that happens to be lower than the previously monthly compounded rate for annual cash flows.

But taxes are certain on capital gains, thus a rather realistic measure of an investor's return that makes provision for taxes. To find one we would pass two values of 0% and 30% for tax rates where the income of $3 is taxed at 30%.

=tadIRR(,,,,{0,0.3},{-100,3},,{1,50})
IRR = 2.46%

The function returns an IRR of 2.46% when taxes are considered in finding the internal rate of return.

But future incomes are not certain and we have to consider for cases when the full value of investment does not materialize. For example, if only 90% of the payments were to mature then we would pass a value of 10% or 0.1 forthe option called "haircut" in the tadIRR function as follows.

=tadIRR(,,,,,{-100,3},,{1,50},,,,,{0,0.1})
IRR = 1.25%

The function now returns an IRR value of 1.25% that is considerably lower than the rate of 1.723% when full payments were collected

Yet if you keep an eye of financial news then you would know that most traders working at large financial institutions of repute such as RBS, UBS, JP Morgran have admitted wrongdoing when fixing the key interest rates such asthe LIBOR and EURIBOR. Thus a rogue trader who have rigged the rate by 10%would like to know the rigged IRR rate. This too is possible to find usingtadIRR function when you pass a value of 10% to the option called "rate rigged by".

=tadIRR(,,,,,{-100,3},,{1,50},,,,,,10%)
IRR = 1.57%

The function returns a rigged rate of 1.57% that is altered by a 10% rig ofthe actual IRR of 1.723%

Now let us look at an investment from a business valuation or company valuation perspective albeit this is trivial of an example but we will later expand on this when I discuss IRR for uneven cash flows. Suppose a business generates 3 million dollars in annual revenue throughout the next ten years. Finally, it is determined that business generates an annual revenue in amount of 5 million dollars forever starting in year 11. The task for an analyst is to find the buyers IRR who is willing to pay $100 million dollars for this business at present. We will use the tadIRR function and pass it the three amounts of -100, 3 and 1 followed by the frequnecies of such amounts as 1, 10 and INF for the terminal cash flow.

=tadIRR(,,,,,{-100,3,5},,{1,10,"INF"})
IRR = 4.311%

The function returns an IRR of 4.311% that is the return on investment for the buyer and is the rate of return at which the buyer breaks even on this investment. Obviously the investor will only make money if her cost of capital is lower than the internal rate of return of 4.311%

Now let us assume that the investor has a term schedule of rates at her disposal at which the future cash flows are discounted. This structure may well be the WACC - weighted average cost of capital of the firm. The task now is to find the IRR at which the net present value of these cash flows is the same as the one found using the schedule of discount rates. We will enterthree rates 0 for the cash outflow, 3% for the payments from year 1 to 10 and finally a 5% rate for the terminal cash flow

=tadIRR(,1,{0,0.03,0.05},,,{-100,3,5},,{1,10,"INF"})
IRR = 4.877%

This time the function returns and IRR of 4.877% for the same investment whose cash flows were discounted using a schedule of rates.

Now let us suppose that in addition to having a rate schedule the investor has found that annual revenue of the firm grows annually at a growth rate of 1%. How would this change the IRR calculation, to find the rate of returnwe will now pass in the growth rates to the function as 0 for cash outlay,1% for years 1 to 10 and 1% for terminal value

=tadIRR(,1,{0,0.03,0.05},{0,0.01,0.01},,{-100,3,5},,{1,10,"INF"})
IRR = 1.50%

The function now returns the IRR of 1.50% for this investment where the annual income grows by a constant rate of 1%.

Let us have a look at examples of finding IRR for annuities that have cash flows in uneven amounts along with cash flows that are themselves annuities.. The first example has an initial cash outlay followed by series of incoming money amounts. No other information is available about the investment. For example, it is not known whether the cash flows are annual, quarterly, monthly, fortnightly, weekly, or daily. No information about compouding frequency of interest is given thus annual compounding of interest is assumed. As the data about frequency of cash flows is not provided thus it is assumed that each cash flow payment occurs once. Rate schedule is missing thus nodiscount rates are available, same is true for inflation rates and tax rates thus we will use 0% as values for all such rates. The length of the period is not given so we will take the cash flows as annual. The full year discounting convention will be used as there is no input for the concentrationof cash flows. The hair cut values are not provided thus we will assume that all future amounts are realized at 100% of their face value. Finally rate is clean as there is no information about rigging the rate.

=tadIRR( ,,,,, {-100,75,150,100,1000,50000,2000,90000} )
IRR = 287.67%

The function returns an IRR of 287.67% for this investment, but in later examples we will see the rate drop as more information about the cash flows becomes available to us to find the internal rate of return.

Since we were only dealing with a series of cash flows, we would have foundthe same internal rate of return had we used the native IRR function as follows

=IRR( {-100,75,150,100,1000,50000,2000,90000} )
IRR = 287.67%

But that is the limit of the Excel IRR function that does not permit use ofother information about the investment that was discussed earlier. Now we will move on to use tadIRR function to find the investor's rate of return on investments using tadIRR function as more and more information gets addedto the arsenal.

What if an analyst was the given the cash flows of the investment along with a schedule of discount rates and the task is to find a single interest rate at which net present value of the investment is the same as one that is found when the investment is discounted using a schedule of discount rates.This is akin to finding an IRR Schedule, and here we will use tadIRR function where we enter the rate schedule as an array along with the cash flows.To tell the function that we are making use of the schedule of rates we will enter a value of 1 for option called "use_rates".

=tadIRR( ,1, { 0.04,0.02,0.05,0.03,0.02,0.04,0.03,0.06 } ,,, {-100,75,150,100,1000,50000,2000,90000} )
IRR = 5.31%

The function returns an IRR of 5.31%, and you can confirm the results by using tadNPV function as follows to note that net present value of the investment is the same when using a single IRR and when using the schedule of discount rates.

=tadNPV( {0.04,0.02,0.05,0.03,0.02,0.04,0.03,0.06} ,,, {-100,75,150,100,1000,50000,2000,90000} )
NPV = $103751.41

=tadNPV(5.3064068%,,, {-100,75,150,100,1000,50000,2000,90000})
NPV = $103751.41

Now this confirms to us that the NPV of the investment is the same in amount of 103751.41 when we use the single IRR and when a schedule of discount rates is applied in discounted cash flow analysis.

Let us revert back to the original cash flows for this investment and now the analyst was handed a row of number for frequencies of each of the cash flows. The cash flows now turn into annuities of their own where each annuity makes periodic payments for a number of periods. The first outgoing amount is paid four times, the second amount makes 365 payments, the next one makes 24 payments and one after than makes another 365 payments. The fifth payment is a perpetuity that makes never-ending payments and we use a value of INF for the frequency to tell the tadIRR function that this particular payment is a perpetuity. The last payment that goes on forever would usually taken as the terminal value but the tadIRR function allows you to enter payments along with their number of occurances even after the terminal value. Thus there are 260 more payments after the terminal payment, and following these 260 payments we have another perpetuity followed a series of 5200 payments. This sounds bizarre that one can make payments or receive income after the terminal value but then tadIRR is a unique financial function that allows complex financial analysis. Now Excel IRR function is not going to handle this data so we will put this data into tadIRR function to find the internal rate of return on this odd investment.

=tadIRR( ,,,,, {-100,75,150,100,1000,50000,2000,90000} ,, {4,365,24,365,"INF",260,"INF",5200} )
IRR = 15.02%

The function returns an IRR of 15.02% for this investment where periodic cash flows were itself annuities that made periodic payments for a number of periods coupled with payments that go on forever. Wow, amazing stuff isn't it. Wait till more of the options in tadIRR function are explored in the following discussion to illustrate finding investor's rate of return on investments.

But taxes on capital gains are for certain thus if the analyst was providedwith a schedule of tax rates for this investment, an IRR that includes provision for taxes would be more representative of the return on investment.

=tadIRR(,,,,{0.35,0.36,0.37,0.38,0.39,0.4,0.45,0.5}, {-100,75,150,100,1000,50000,2000,90000},, {4,365,24,365,"INF",260,"INF",5200} )
IRR = 23.52%

The function returns an IRR of 23.52% when taxes apply on capital gains that are made from an investment.

Let us revert back to the investment without the tax burden, in the previous examples it was assumed that the compounding of interest is annual however one may be inclined to use more meaningful compounding frequencies of interest such as monthly, quarterly, weekly, daily and so on. Let us now entera schedule of compounding frequencies in the tadIRR function as follows.

=tadIRR(,,,,, {-100,75,150,100,1000,50000,2000,90000} ,, {4,365,24,365,"INF",260,"INF",5200},, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769})
IRR = 13.96%

The function now returns an IRR of 13.96% in contrast to the rate of returnof 15.02% when interest was compounded annually.

The examples discussed thus far assume periods are of a year's length whereas we would want to define more realistic periods. We will now use the the lengths of our annuities as a quarter, day, month, day, year, a fortnight, a year, and a fortnight. We will pass the schedule of lengths for the periods to our tadIRR function as follows.

=tadIRR(,,,,, {-100,75,150,100,1000,50000,2000,90000},, {4,365,24,365,"INF",260,"INF",5200} ,, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769}, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769})
IRR = 366.33%

The function now returns a whopping IRR of 366.33% as compared to an IRR of13.96% when all periods were considered to be of a years length.

But incomes expected in the future are not for certain thus if only 80% of the incomes were realized, we would enter values such as 20% or 0.2 for hair_cuts in the tadIRR function to find the internal rate of return

=tadIRR(,,,,, {-100,75,150,100,1000,50000,2000,90000},, {4,365,24,365,"INF",260,"INF",5200},,{0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769}, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769} ,, {0,0.2,0.2,0.2,0,0.2,0.2,0.2})
IRR = 346.78%

The function now returns an lower IRR of 346.78% as compared to an IRR of 366.33% when all incomes materialized.

But if you were a rogue trader then fixing the rate is one of your duties and tadIRR will find the rigged IRR when you enter the percentages by which rate is rigged. Let us now find the internal rate of return when the rate is rigged by 20% as follows.

=tadIRR(,,,,, {-100,75,150,100,1000,50000,2000,90000} ,, {4,365,24,365,"INF",260,"INF",5200} ,, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769}, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769} ,, {0,0.2,0.2,0.2,0,0.2,0.2,0.2}, {0,0.15,0.15,0.15,0,0.15,0.15,0.15})
IRR = 297.84%

The function returns a rigged rate of 297.84% which is comparatively lower than the non-rigged rate of 346.78%.

A last word in closing

An investment of 5 prayers a day for lifetime to await the 40 virgins in after life. Find the IRR for this investment.

=tadIRR(,,,,, {-5,0,40} ,, {1,"INF",1})
IRR = #NUM! error

The function returns a #NUM! error as no such IRR exists for an investment that required 5 times daily prayers to await 40 virgins in after life

An investment of 50 cents at present ensures a single slut at time period 1.. Find the IRR of this investment.

=tadIRR(,,,,, {-0.5,1} ,, {1,1})
IRR = 100%

The function returns 100% as IRR for this investment where it is for certain that an investment at present in amount of $0.50 will hire you a slut

The conclusion

A single slut in better to have at present then to await 40 virgins in afterlife. :)
 
M

Michael Marshall

IRR is something of an enigma since there are so many different variants of this particular rate of return. An IRR may be defined and calculated foralmost any investment ranging for a lump-sum investment, and those that make periodic returns for a number of periods and also for those that pay dividends forever. The native IRR function is barely able to find the internalrate of return for series of cash flows for fixed number of periods.



In comparison, the tadIRR function which is an Excel IRR function http://tadxl.com/excel_irr_function.html offers unlimited capabilities to find theIRR - internal rate of return.



tadIRR is one of the many financial functions found in tadXL v3.0 add-in for Excel 2007, 2010 and 2013 found here at http://tadxl.com/



In this lengthy tutorial, I will illustrate finding internal rate of return for various investments that range from single sum investment to those that make payments forever and those than make periodic payments for a limited number of periods.



If you purchased a perpetuity by paying $10, that makes never-ending payments in amount of $1. Find the internal rate of return on such an investment.



We will use the Excel IRR function called tadIRR to find the internal rate of return on a perpetuity.



If no other information is at hand about the investment then we will simply enter an array of values of the cash flows {-10, 1} where the first amount -10 is an outgoing cash flow followed by an incoming cash flow of 1. To tell the IRR function that we have a perpetual income, we have to enter thefrequency of cash flows. Since the $10 is paid once we will use a value of1 for its frequency but since the $1 incomes comes in forever we will use a value called INF short for infinity as the frequency of this receipt. These values will be entered as an array of {1,"INF"}



Now we enter the tadIRR function in a worksheet cell as follows where we omit a number of values that are not needed. The five leading commas ,,,,, mean that we have left out the values for the guess rate, the use_rates flag, the rate schedule, the inflation, and the tax rate. The two commas between {-10,1},,{1,"INF"} mean that we have left out the value for adjust_for_inflation flag.



=tadIRR(,,,,,{-10,1},,{1,"INF"})

IRR = 10%



The function returns an IRR of 10% for this perpetual investment that waspaid with $10 and earned us $1 forever.



Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an intermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now find the internal rate of return as follows.



=tadIRR(,,,,,{-10,0,1},,{1,9,"INF"})

IRR = 5.95%



The function returns an IRR of 5.95% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate paymentof $10.



The previous example assumed that interest rate is compounded annually, however if the compounding frequency of interest is different than annual such as a monthly compounding of interest then the IRR would be different than 10%. To find such a rate, we need to tell the IRR function that interest compounding is monthly by entering a value of 1/12 for the option called "compounding".



=tadIRR(,,,,,{-10,1},,{1,"INF"},,1/12)

IRR = 9.57%



The function returns an IRR of 9.57% when interest is compounded per month on a perpetual income of $1 that was purchased with $10.



Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an intermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now find the internal rate of return as follows.



=tadIRR(,,,,,{-10,0,1},,{1,9,"INF"},,1/12)

IRR = 5.79%



The function returns an IRR of 5.79% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate paymentof $10.



Now if we had to pay 10% tax on our perpetual income, the IRR would have to be adjusted for the tax burden. To tell the IRR function that 10% tax isdue on this investment we will enter a value of 10% or 0.1 for option called "tax_rate" as follows.



=tadIRR(,,,,10%,{-10,1},,{1,"INF"})

IRR = 11.11%



The function returns an IRR of 11.11% that reflects the tax-burden



Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an intermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now find the internal rate of return as follows.



=tadIRR(,,,,10%,{-10,0,1},,{1,9,"INF"})

IRR = 6.61%



The function returns an IRR of 6.61% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate paymentof $10.



Since the expected income comes at future dates, then it is probable thatthe full value of $1 is not realized and only 90% of the income is expected. We will have to use the hair_cuts options and enter two values for it, the first being 0 to specify that full costs in amount of $10 are paid and the second value of 0.1 to denote that a 10% hair cut on income is expected on income of $1.



=tadIRR(,,,,,{-10,1},,{1,"INF"},,,,,{0,0.1})

IRR = 9%



The function now returns an IRR of 9% when only 90 cents are expected on an income of $1.



Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an intermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now find the internal rate of return as follows.



=tadIRR(,,,,,{-10,0,1},,{1,9,"INF"},,,,,{0,0,0.1})

IRR = 5.54%



The function returns an IRR of 5.54% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate paymentof $10.



But now if we revert back to the actual values for expenses and incomes in amount of $10 and $1 respectively, but a rogue trader wants to rig the interest rate by a margin of 10%. How would this effect the IRR on this investment, to find the answer we enter a value of 10% for the option called "rate_rigged_by"



=tadIRR(,,,,,{-10,1},,{1,"INF"},,,,,,10%)

IRR = 9.09%



The function now returns an IRR of 9.09% which is lower than the actual IRR of 10%.



Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an intermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now find the internal rate of return as follows.



=tadIRR(,,,,,{-10,0,1},,{1,9,"INF"},,,,,,10%)

IRR = 5.41%



The function returns an IRR of 5.41% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate paymentof $10.



What if the investment earns us an amount of income that grows per periodby a certain percentage. In this case the $1 perpetuity grows by 5% per period, to find the IRR with the growing income we will enter a value of 5% for the option called "inflation" as follows.



=tadIRR(,,,5%,,{-10,1},,{1,"INF"})

IRR = 15%



The function returns an IRR of 15% on a perpetual income of $1 that growsby 5% for which we paid an amount of $10.



Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an intermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now find the internal rate of return as follows.



=tadIRR(,,,5%,,{-10,0,1},,{1,9,"INF"})

IRR = 9.44%



The function returns an IRR of 9.44% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate paymentof $10.



What if the interest rate was compounded per month on this income that grew by 5% per period, how would this change the IRR. To find out, we will enter a value of 1/12 for the option called "compounding" to get the new IRR as follows.



=tadIRR(,,,5%,,{-10,1},,{1,"INF"},,1/12)

IRR = 14.16%



The function now returns an IRR of 14.16% where we paid $10 to receive a perpetual income of $1 that grows by 5% and interest is compounded per month.



Now suppose that the first receipt of income in amount of $1 is not due till the 10th year, in other terms we have a deferred perpetuity. How would this change the investor's rate of return for this specific investment. To find the answer, we will add an intermediate cash flow in amount of $0 for nine years thus delaying the first payment till the 10th year. Let us now find the internal rate of return as follows.



=tadIRR(,,,5%,,{-10,0,1},,{1,9,"INF"},,1/12)

IRR = 9.13%



The function returns an IRR of 9.13% on a perpetual income of $1 that is not expected till the 10th year for which we have made an immediate paymentof $10.



An investment of $100 makes 50 periodic returns in amount of $3. The payments begin a year from the initial investment, the task is to find the investor's rate of return - ROI on this investment. Here we will use the tadIRRfunction to find this interest rate.



=tadIRR(,,,,,{-100,3},,{1,50})

IRR = 1.723%



The function returns a periodic interest rate of 1.723% for this investment.



For this trivial invesment with periodic returns, the Excel RATE functiondoes the job as well to find the IRR as follows.



=RATE(50,3,-100)

IRR = 1.723%



The Excel function returns the same IRR of 1.723% for this investment that makes 50 periodic payments in amount of $3 that was paid with $100.



=tadIRR(,,,,,{-100,0,3},,{1,12,50})

IRR = 1.122%



What if the compounding frequency of interest is not annual but it is setto monthly compounding. How then would we find the interest rate for this investment. To do so we will pass in a value of 1/12 for the option called "compounding" in the tadIRR function as follows.



=tadIRR(,,,,,{-100,3},,{1,50},,1/12)

IRR = 1.710%



The function now returns a monthly compounded rate of 1.710% for the sameinvestment of $100 that returned 50 periodic annual payments of $3.



The IRR calculations thus far assumed that periodic payments are made at the end of each year. But what if the payments are monthly, how then to find the internal rate of return for such an investment with monthly cash flows. The short answer is to provide a value of 1/12 for the option called "period" in the tadIRR function as follows:



=tadIRR(,,,,,{-100,3},,{1,50},,,1/12)

IRR = 22.756%



Now we see that the monthly IRR of 22.756 is considerably higher than theannual IRR of 1.723%. If you were confined to using native Excel functions, you could have wrapped the RATE function within EFFECT function to get the same rate as illustrated below.



=EFFECT(RATE(50,3,-100)*12,12)

IRR = 22.756%



But now what if the payments are made each month couple that with monthlycompounding of interest. Now to find the IRR, the tadIRR would need a value of 1/12 for both of the options for "compounding" and "period"



=tadIRR(,,,,,{-100,3},,{1,50},,1/12,1/12)

IRR = 20.679%



As you have just seen the monthly compounded rate of return for monthly cash flow amounts is 20.679% that happens to be lower than the previously monthly compounded rate for annual cash flows.



But taxes are certain on capital gains, thus a rather realistic measure of an investor's return that makes provision for taxes. To find one we wouldpass two values of 0% and 30% for tax rates where the income of $3 is taxed at 30%.



=tadIRR(,,,,{0,0.3},{-100,3},,{1,50})

IRR = 2.46%



The function returns an IRR of 2.46% when taxes are considered in findingthe internal rate of return.



But future incomes are not certain and we have to consider for cases whenthe full value of investment does not materialize. For example, if only 90% of the payments were to mature then we would pass a value of 10% or 0.1 for the option called "haircut" in the tadIRR function as follows.



=tadIRR(,,,,,{-100,3},,{1,50},,,,,{0,0.1})

IRR = 1.25%



The function now returns an IRR value of 1.25% that is considerably lowerthan the rate of 1.723% when full payments were collected



Yet if you keep an eye of financial news then you would know that most traders working at large financial institutions of repute such as RBS, UBS, JP Morgran have admitted wrongdoing when fixing the key interest rates such as the LIBOR and EURIBOR. Thus a rogue trader who have rigged the rate by 10% would like to know the rigged IRR rate. This too is possible to find using tadIRR function when you pass a value of 10% to the option called "rate rigged by".



=tadIRR(,,,,,{-100,3},,{1,50},,,,,,10%)

IRR = 1.57%



The function returns a rigged rate of 1.57% that is altered by a 10% rig of the actual IRR of 1.723%



Now let us look at an investment from a business valuation or company valuation perspective albeit this is trivial of an example but we will later expand on this when I discuss IRR for uneven cash flows. Suppose a business generates 3 million dollars in annual revenue throughout the next ten years.. Finally, it is determined that business generates an annual revenue in amount of 5 million dollars forever starting in year 11. The task for an analyst is to find the buyers IRR who is willing to pay $100 million dollars for this business at present. We will use the tadIRR function and pass it thethree amounts of -100, 3 and 1 followed by the frequnecies of such amountsas 1, 10 and INF for the terminal cash flow.



=tadIRR(,,,,,{-100,3,5},,{1,10,"INF"})

IRR = 4.311%



The function returns an IRR of 4.311% that is the return on investment for the buyer and is the rate of return at which the buyer breaks even on this investment. Obviously the investor will only make money if her cost of capital is lower than the internal rate of return of 4.311%



Now let us assume that the investor has a term schedule of rates at her disposal at which the future cash flows are discounted. This structure may well be the WACC - weighted average cost of capital of the firm. The task now is to find the IRR at which the net present value of these cash flows is the same as the one found using the schedule of discount rates. We will enter three rates 0 for the cash outflow, 3% for the payments from year 1 to 10 and finally a 5% rate for the terminal cash flow



=tadIRR(,1,{0,0.03,0.05},,,{-100,3,5},,{1,10,"INF"})

IRR = 4.877%



This time the function returns and IRR of 4.877% for the same investment whose cash flows were discounted using a schedule of rates.



Now let us suppose that in addition to having a rate schedule the investor has found that annual revenue of the firm grows annually at a growth rateof 1%. How would this change the IRR calculation, to find the rate of return we will now pass in the growth rates to the function as 0 for cash outlay, 1% for years 1 to 10 and 1% for terminal value



=tadIRR(,1,{0,0.03,0.05},{0,0.01,0.01},,{-100,3,5},,{1,10,"INF"})

IRR = 1.50%



The function now returns the IRR of 1.50% for this investment where the annual income grows by a constant rate of 1%.



Let us have a look at examples of finding IRR for annuities that have cash flows in uneven amounts along with cash flows that are themselves annuities. The first example has an initial cash outlay followed by series of incoming money amounts. No other information is available about the investment.For example, it is not known whether the cash flows are annual, quarterly,monthly, fortnightly, weekly, or daily. No information about compouding frequency of interest is given thus annual compounding of interest is assumed.. As the data about frequency of cash flows is not provided thus it is assumed that each cash flow payment occurs once. Rate schedule is missing thus no discount rates are available, same is true for inflation rates and tax rates thus we will use 0% as values for all such rates. The length of the period is not given so we will take the cash flows as annual. The full year discounting convention will be used as there is no input for the concentration of cash flows. The hair cut values are not provided thus we will assume that all future amounts are realized at 100% of their face value. Finally rate is clean as there is no information about rigging the rate.



=tadIRR( ,,,,, {-100,75,150,100,1000,50000,2000,90000} )

IRR = 287.67%



The function returns an IRR of 287.67% for this investment, but in later examples we will see the rate drop as more information about the cash flowsbecomes available to us to find the internal rate of return.



Since we were only dealing with a series of cash flows, we would have found the same internal rate of return had we used the native IRR function as follows



=IRR( {-100,75,150,100,1000,50000,2000,90000} )

IRR = 287.67%



But that is the limit of the Excel IRR function that does not permit use of other information about the investment that was discussed earlier. Now we will move on to use tadIRR function to find the investor's rate of returnon investments using tadIRR function as more and more information gets added to the arsenal.



What if an analyst was the given the cash flows of the investment along with a schedule of discount rates and the task is to find a single interest rate at which net present value of the investment is the same as one that is found when the investment is discounted using a schedule of discount rates. This is akin to finding an IRR Schedule, and here we will use tadIRR function where we enter the rate schedule as an array along with the cash flows. To tell the function that we are making use of the schedule of rates we will enter a value of 1 for option called "use_rates".



=tadIRR( ,1, { 0.04,0.02,0.05,0.03,0.02,0.04,0.03,0.06 } ,,, {-100,75,150,100,1000,50000,2000,90000} )

IRR = 5.31%



The function returns an IRR of 5.31%, and you can confirm the results by using tadNPV function as follows to note that net present value of the investment is the same when using a single IRR and when using the schedule of discount rates.



=tadNPV( {0.04,0.02,0.05,0.03,0.02,0.04,0.03,0.06} ,,, {-100,75,150,100,1000,50000,2000,90000} )

NPV = $103751.41



=tadNPV(5.3064068%,,, {-100,75,150,100,1000,50000,2000,90000})

NPV = $103751.41



Now this confirms to us that the NPV of the investment is the same in amount of 103751.41 when we use the single IRR and when a schedule of discountrates is applied in discounted cash flow analysis.



Let us revert back to the original cash flows for this investment and nowthe analyst was handed a row of number for frequencies of each of the cashflows. The cash flows now turn into annuities of their own where each annuity makes periodic payments for a number of periods. The first outgoing amount is paid four times, the second amount makes 365 payments, the next one makes 24 payments and one after than makes another 365 payments. The fifth payment is a perpetuity that makes never-ending payments and we use a valueof INF for the frequency to tell the tadIRR function that this particular payment is a perpetuity. The last payment that goes on forever would usually taken as the terminal value but the tadIRR function allows you to enter payments along with their number of occurances even after the terminal value.. Thus there are 260 more payments after the terminal payment, and following these 260 payments we have another perpetuity followed a series of 5200 payments. This sounds bizarre that one can make payments or receive income after the terminal value but then tadIRR is a unique financial function thatallows complex financial analysis. Now Excel IRR function is not going to handle this data so we will put this data into tadIRR function to find the internal rate of return on this odd investment.



=tadIRR( ,,,,, {-100,75,150,100,1000,50000,2000,90000} ,, {4,365,24,365,"INF",260,"INF",5200} )

IRR = 15.02%



The function returns an IRR of 15.02% for this investment where periodic cash flows were itself annuities that made periodic payments for a number of periods coupled with payments that go on forever. Wow, amazing stuff isn't it. Wait till more of the options in tadIRR function are explored in the following discussion to illustrate finding investor's rate of return on investments.



But taxes on capital gains are for certain thus if the analyst was provided with a schedule of tax rates for this investment, an IRR that includes provision for taxes would be more representative of the return on investment..



=tadIRR(,,,,{0.35,0.36,0.37,0.38,0.39,0.4,0.45,0.5}, {-100,75,150,100,1000,50000,2000,90000},, {4,365,24,365,"INF",260,"INF",5200} )

IRR = 23.52%



The function returns an IRR of 23.52% when taxes apply on capital gains that are made from an investment.



Let us revert back to the investment without the tax burden, in the previous examples it was assumed that the compounding of interest is annual however one may be inclined to use more meaningful compounding frequencies of interest such as monthly, quarterly, weekly, daily and so on. Let us now enter a schedule of compounding frequencies in the tadIRR function as follows.



=tadIRR(,,,,, {-100,75,150,100,1000,50000,2000,90000} ,, {4,365,24,365,"INF",260,"INF",5200},, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769})

IRR = 13.96%



The function now returns an IRR of 13.96% in contrast to the rate of return of 15.02% when interest was compounded annually.



The examples discussed thus far assume periods are of a year's length whereas we would want to define more realistic periods. We will now use the the lengths of our annuities as a quarter, day, month, day, year, a fortnight, a year, and a fortnight. We will pass the schedule of lengths for the periods to our tadIRR function as follows.



=tadIRR(,,,,, {-100,75,150,100,1000,50000,2000,90000},, {4,365,24,365,"INF",260,"INF",5200} ,, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769}, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769})

IRR = 366.33%



The function now returns a whopping IRR of 366.33% as compared to an IRR of 13.96% when all periods were considered to be of a years length.



But incomes expected in the future are not for certain thus if only 80% of the incomes were realized, we would enter values such as 20% or 0.2 for hair_cuts in the tadIRR function to find the internal rate of return



=tadIRR(,,,,, {-100,75,150,100,1000,50000,2000,90000},, {4,365,24,365,"INF",260,"INF",5200},,{0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769}, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769} ,, {0,0.2,0.2,0.2,0,0.2,0.2,0.2})

IRR = 346.78%



The function now returns an lower IRR of 346.78% as compared to an IRR of366.33% when all incomes materialized.



But if you were a rogue trader then fixing the rate is one of your dutiesand tadIRR will find the rigged IRR when you enter the percentages by which rate is rigged. Let us now find the internal rate of return when the rateis rigged by 20% as follows.



=tadIRR(,,,,, {-100,75,150,100,1000,50000,2000,90000} ,, {4,365,24,365,"INF",260,"INF",5200} ,, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769}, {0.25,0.002739726,0.083333333,0.002739726,1,0.038461538,1,0.019230769} ,, {0,0.2,0.2,0.2,0,0.2,0.2,0.2}, {0,0.15,0.15,0.15,0,0.15,0.15,0.15})

IRR = 297.84%



The function returns a rigged rate of 297.84% which is comparatively lower than the non-rigged rate of 346.78%.

@Abraham A.

I had a look at your NPV equation based upon which you have programmed thisExcel IRR function http://tadxl.com/excel_irr_function.html , and it all sounds crazy :D

This is what I found on the notes you showed me yesterday at the tad Finance http://thinkanddone.com offices in mid Manhattan

NPV = Sigma [i = 0 to K or Grand Infinity] { PMT_i x PVIFGA ( r%, g%, N or Baby Infinity ) x PVIF( r%, i) }

PVIFGA ( r%, g%, N or Baby Infinity ) = Sigma [j = 0 to N or Baby Infinity] { (1+g%)^j / (1+r%)^(j+1) }

Looking at the NPV formula it sounds as if you have sum of sums of present value of growing annuities where the outer sum goes from zero payments to Npayments or upto Grand Infinity payments.

And the inner sum goes from zero periods upto N periods or upto Baby infinity periods.
 
R

Robert Miller

@Abraham A.



I had a look at your NPV equation based upon which you have programmed this Excel IRR function http://tadxl.com/excel_irr_function.html , and it allsounds crazy :D



This is what I found on the notes you showed me yesterday at the tad Finance http://thinkanddone.com offices in mid Manhattan



NPV = Sigma [i = 0 to K or Grand Infinity] { PMT_i x PVIFGA ( r%, g%, N or Baby Infinity ) x PVIF( r%, i) }



PVIFGA ( r%, g%, N or Baby Infinity ) = Sigma [j = 0 to N or Baby Infinity] { (1+g%)^j / (1+r%)^(j+1) }



Looking at the NPV formula it sounds as if you have sum of sums of present value of growing annuities where the outer sum goes from zero payments toN payments or upto Grand Infinity payments.



And the inner sum goes from zero periods upto N periods or upto Baby infinity periods.

@Mike

When I took over the job left vacant by late PJ Hooker I found some notes on his desk. The first one on top showed the same NPV formula as you had given yet since it is complicated to write such formula in a text only editor thus a rewrite of Abraham's NPV equation is shown below.

NPV = Sigma [i = 0 to K or Grand Infinity] { PMT_i x PVIFGA ( r%, g%, N or Baby Infinity ) x PVIF( r%, Sigma N-1 ) }

PVIFGA ( r%, g%, N or Baby Infinity ) = Sigma [j = 0 to N or Baby Infinity] { (1+g%)^j / (1+r%)^(j+1) }

The frequencies of payments in PVIFGA formula goes from 0 to N and the sum of all such N-1 terms is then used as a time period to discount the annuity..

Now PJ Hooker did leave us with one of his own Excel add-ins called njsXL add-in for Excel 2007, 2010 and 2013. http://njsxl.njinstruments.com/

njsXL is a collection of 22 statistical functions for Excel yet as PJ wrotein his note that the baton will be passed to Abraham A. to increase the number of these functions to surpass 100 statistical functions hiterto unavailable in native Excel.

The last note from PJ Hooker had a quote from an infamous recent US President who held the High Office from 1993 till 2000. The quote was directed at Abraham A. who thinks he has a chance of making a buck of his online enterprises that sell Excel add-ins such as tadXL, njsXL and others.

"Insanity is doing the same thing over and over again and expecting a different outcome" - Billy Clinton

To honor such a "great" American leader, PJ Hooker programmed an Excel expected value function http://njsxl.njinstruments.com/excel-expected-value-standard-deviation-function.html

Now Abraham! you take this Excel EV function to confirm the outcome of yourhard work.
 
R

Robert Miller

IRR is something of an enigma since there are so many different variants of this particular rate of return.

Abe call it quits. This isn't going to work out as expected.

They deleted your posts from Bytes Magazine. The guy said Microsoft has its own set of financial functions in works. I suppose it took them 24 years to realize there were functions from which money can be made.

Abe, remember when Google dropped your site from SERPS as you refused them to pay for AdWords.

Same story here Abe, no matter how much money these skunks got, they want to double it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Top