Solved

xirr in coldfusion or php

Posted on 2010-08-16
4
485 Views
Last Modified: 2012-05-10
how do i calculate xirr in coldfusion or in php
0
Comment
Question by:mugsinc
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 6

Accepted Solution

by:
nitinsawhney earned 250 total points
ID: 33444939
There is a class in php that can handle excel functions  http://www.phpclasses.org/package/892-PHP-Financial-functions-with-the-Excel-function-names-.html

You will have to implement this in order to cater to your needs.
0
 
LVL 1

Author Comment

by:mugsinc
ID: 33445072
nitinsawhney: do you know how to use that class?
0
 
LVL 6

Expert Comment

by:nitinsawhney
ID: 33445320
I am assuming you know basic PHP scripting here.

Basically you need to download the code from the link i provided and then include in the script where you would like to do the calculation.

Here is a sample code picked from there.
<?php
/**
 * Case use of financial class.
 * 
 * @version   $Id: financial_example.php,v 1.0.5 2004-06-23 09:03:56-05 egarcia Exp $
 * @author    Enrique Garcia M. <egarcia@egm.as>
 * @copyright (c) 2002-2004 EGM :: Ingenieria sin fronteras
 * @since     Saturday, November 30, 2002
 **/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

include('financial_class.php');

/***********************************************************************************/

$f = new Financial;
echo 'FV: ' . $f->FV(1.1, 1/360, 0, -100) . "\n";
echo 'PV: ' . $f->PV(1.1, 1/360, 0, -100.206306226) . "\n";
echo 'PMT: ' . $f->PMT(1.1, 1/360, -100) . "\n";
echo 'PMT: ' . $f->PMT(1.1, 1/360, 0, -100.206306226) . "\n";
echo 'NPER: ' . $f->NPER(1.1, 53428.7980679, -100) . "\n";
echo 'NPER: ' . $f->NPER(1.1, 0, -100, -100.206306226) . "\n";
echo 'FV: ' . $f->FV(0.1, 1/360, 0, -100) . "\n";
echo 'PV: ' . $f->PV(0.1, 1/360, 0, -100.026478555) . "\n";
echo 'PMT: ' . $f->PMT(0.1, 1/360, -100) . "\n";
echo 'PMT: ' . $f->PMT(0.1, 1/360, 0, -100.026478555) . "\n";
echo 'NPER: ' . $f->NPER(1.1, 37776.4114948, -100) . "\n";
echo 'NPER: ' . $f->NPER(1.1, 0, -100, -100.026478555) . "\n";
echo 'EFFECT: ' . $f->EFFECT(0.0525, 4) . "\n";
echo 'NOMINAL: ' . $f->NOMINAL(0.053543, 4) . "\n";
echo 'NPV: ' . $f->NPV(0.1, array(-10000,3000,4200,6800)) . "\n";
echo 'XNPV: ' . $f->XNPV(0.09, array(-10000,2750,4250,3250,2750), array(
    mktime(0,0,0,1,1,2008),
    mktime(0,0,0,3,1,2008),
    mktime(0,0,0,10,30,2008),
    mktime(0,0,0,2,15,2009),
    mktime(0,0,0,4,1,2009),
    )) . "\n";
echo 'XIRR: ' . $f->XIRR(array(-10000,2750,4250,3250,2750), array(
    mktime(0,0,0,1,1,2008),
    mktime(0,0,0,3,1,2008),
    mktime(0,0,0,10,30,2008),
    mktime(0,0,0,2,15,2009),
    mktime(0,0,0,4,1,2009),
    ), 0.1) . "\n";
echo 'IRR: ' . $f->IRR(array(-70000,12000,15000,18000,21000)) . "\n";
echo 'DISC: ' . $f->DISC(
    mktime(0,0,0,1,25,2007),
    mktime(0,0,0,6,15,2007),
    97.975,
    100,
    0) . "\n";
echo 'DISC: ' . $f->DISC(
    mktime(0,0,0,1,25,2007),
    mktime(0,0,0,6,15,2009),
    97.975,
    100,
    1) . "\n";
echo 'DISC: ' . $f->DISC(
    mktime(0,0,0,1,25,2007),
    mktime(0,0,0,6,15,2007),
    97.975,
    100,
    2) . "\n";
echo 'DISC: ' . $f->DISC(
    mktime(0,0,0,1,25,2007),
    mktime(0,0,0,6,15,2007),
    97.975,
    100,
    3) . "\n";
echo 'DISC: ' . $f->DISC(
    mktime(0,0,0,1,25,2007),
    mktime(0,0,0,6,15,2007),
    97.975,
    100,
    4) . "\n";
echo 'INTRATE: ' . $f->INTRATE(
    mktime(0,0,0,2,15,2008),
    mktime(0,0,0,5,15,2008),
    1000000,
    1014420,
    2) . "\n";
echo 'IPMT: ' . $f->IPMT(0.1/12, 3, 3, 8000) . "\n";
echo 'IPMT: ' . $f->IPMT(0.1, 3, 3, 8000) . "\n";
echo 'RECEIVED: ' . $f->RECEIVED(
    mktime(0,0,0,2,15,2008),
    mktime(0,0,0,5,15,2008),
    1000000,
    0.0575,
    2) . "\n";
echo 'DOLLARDE: ' . $f->DOLLARDE(1.02, 16) . "\n";
echo 'DOLLARDE: ' . $f->DOLLARDE(1.1, 32) . "\n";
echo 'DOLLARFR: ' . $f->DOLLARFR(1.125, 16) . "\n";
echo 'DOLLARFR: ' . $f->DOLLARFR(1.125, 32) . "\n";
echo 'FVSCHEDULE: ' . $f->FVSCHEDULE(1, array(0.09,0.11,0.1)) . "\n";
echo 'PPMT: ' . $f->PPMT(0.1/12, 1, 2*12, 2000) . "\n";
echo 'PPMT: ' . $f->PPMT(0.08, 10, 10, 200000) . "\n";
echo 'RATE: ' . $f->RATE(4*12,-200, 8000) . "\n";
echo 'RATE: ' . $f->RATE(4*12,-200, 8000)*12 . "\n";
echo 'SYD: ' . $f->SYD(30000, 7500, 10, 10) . "\n";
echo 'SLN: ' . $f->SLN(30000, 7500, 10) . "\n";
echo 'DDB: ' . $f->DDB(1000000, 100000, 10, 4) . "\n";
echo 'DELTA: ' . $f->DELTA(5, 4) . "\n";
echo 'DELTA: ' . $f->DELTA(5, 5) . "\n";
echo 'PRICEDISC: ' . $f->PRICEDISC(mktime(0,0,0,2,16,2008), mktime(0,0,0,3,1,2008), 0.0525, 100, 2) . "\n";
echo 'YIELDDISC: ' . $f->YIELDDISC(mktime(0,0,0,2,16,2008), mktime(0,0,0,3,1,2008), 99.795, 100, 2) . "\n";
echo 'COUPNUM: ' . $f->COUPNUM(mktime(0,0,0,1,25,2007), mktime(0,0,0,11,15,2008), 2, 1) . "\n";
echo 'COUPDAYBS: ' . $f->COUPDAYBS(mktime(0,0,0,1,25,2007), mktime(0,0,0,11,17,2008), 1, 1) . "\n";
echo 'VDB: ' . $f->VDB(2400,300,10*365,0,1) . "\n";
echo 'VDB: ' . $f->VDB(2400,300,10*12,0,1) . "\n";
echo 'VDB: ' . $f->VDB(2400,300,10,0,1) . "\n";
echo 'VDB: ' . $f->VDB(2400,300,10*12,6,18) . "\n";
echo 'VDB: ' . $f->VDB(2400,300,10*12,6,18,1.5) . "\n";
echo 'VDB: ' . $f->VDB(2400,300,10,0,0.875,1.5) . "\n";
echo 'MIRR: ' . $f->MIRR(array(-120000,39000,30000,21000,37000,46000), 0.1, 0.12) . "\n";
echo 'MIRR: ' . $f->MIRR(array(-120000,39000,30000,21000), 0.1, 0.12) . "\n";
echo 'MIRR: ' . $f->MIRR(array(-120000,39000,30000,21000,37000,46000), 0.1, 0.14) . "\n";

?> 

Open in new window

0
 
LVL 1

Author Comment

by:mugsinc
ID: 33445365
i am better with coldfusion, which is why i asked for it first
0

Featured Post

Major Incident Management Communications

Major incidents and IT service outages cost companies millions. Often the solution to minimizing damage is automated communication. Find out more in our Major Incident Management Communications infographic.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Many old projects have bad code, but the budget doesn't exist to rewrite the codebase. You can update this code to be safer by introducing contemporary input validation, sanitation, and safer database queries.
In Part II of this series, I will discuss how to identify all open instances of Excel and enumerate the workbooks, spreadsheets, and named ranges within each of those instances.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

751 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question