The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Finance::Amortization(3U)ser Contributed Perl DocumentatiFoinnance::Amortization(3)



NNAAMMEE
       Finance::Amortization - Simple Amortization Schedules

SSYYNNOOPPSSIISS
       use Finance::Amortization

       # make a new schedule

       $amortization = new Finance::Amortization(principal => 100000, rate =
       0.06/12,      periods = 360);

       # get the balance after a the twelveth period

       $balance = $amortization->balance(12)

       # get the interest paid during the twelfth period

       $interest = $amortization->interest(12);

DDEESSCCRRIIPPTTIIOONN
       Finance::Amortization is a simple object oriented interface to an amor-
       tization table.  Pass in the principal to be amortized, the number of
       payments to be made, and the interest rate per payment.  It will calcu-
       late the rest on demand, and provides a few methods to ask for the
       state of the table after a given number of periods.

       Finance::Amortization is written in pure perl and does not depend on
       any other modules.  It exports no functions; all access is via methods
       called on an amortization object.  (Except for _n_e_w_(_), of course.)

       _n_e_w_(_)

       $am = Finance::Amortization->new(principal => 0, rate => 0, periods =>
       0,      compounding => 12, precision => 2);

       Creates a new amortization object.  Calling interface is hash style.
       The fields principal, rate, and periods are available, all defaulting
       to zero.

       Compounding is a parameter which sets how many periods the rate is com-
       pounded over.  Thus, if each amortization period is one month, setting
       compounding to 12 (the default), will make the rate an annual rate.
       That is, the interest rate per period is the rate specified, divided by
       the compounding.

       So, to get an amortization for 30 years on 200000, with a 6% annual
       rate, you would call new(principal => 200000, periods => 12*30, rate =>
       0.06), the compounding will default to 12, and so the rate will work
       out right for monthly payments.

       precision is used to specify the number of decimal places to round to
       when returning answers.  It defaults to 2, which is appropriate for US
       currency and many others.

       _r_a_t_e_(_)

       $rate_per_period = $am->_r_a_t_e_(_)

       returns the interest rate per period.  Ignores any arguments.

       _p_r_i_n_c_i_p_a_l_(_)

       $initial_value = $am->_p_r_i_n_c_i_p_a_l_(_)

       returns the initial principal being amortized.  Ignores any arguments.

       _p_e_r_i_o_d_s_(_)

       $number_of_periods = $am->_p_e_r_i_o_d_s_(_)

       returns the number of periods in which the principal is being amor-
       tized.  Ignores any arguments.

       _p_a_y_m_e_n_t_(_)

       $pmt = $am->_p_a_y_m_e_n_t_(_)

       returns the payment per period.  This method will cache the value the
       first time it is called.

       bbaallaannccee((nn))

       $balance = $am->balance(12);

       Returns the balance of the amortization after the period given in the
       argument

       iinntteerreesstt((nn))

       $interest = $am->interest(12);

       Returns the interest paid in the period given in the argument

BBUUGGSS
       This module uses perl's floating point for financial calculations.
       This may introduce inaccuracies and/or make this module unsuitable for
       serious financial applications.

TTOODDOO
       Use Math::BigRat for the calculations.

       Provide amortizers for present value, future value, annuities, etc.

       Allow for caching calculated values.

       Provide output methods and converters to various table modules.
       HTML::Table, Text::Table, and Data::Table come to mind.

       Write better test scripts.

       Better checking for errors and out of range input.  Return undef in
       these cases.

       Use a locale dependent value to set an appropriate default for preci-
       sion in the _n_e_w_(_) method.

LLIICCEENNSSEE
       None.  This entire module is in the public domain.

AAUUTTHHOORR
       Nathan Wagner <nw@hydaspes.if.org>

       This entire module is written by me and placed into the public domain.



perl v5.8.6                       2007-05-27          Finance::Amortization(3)