Awesome
FinancialMaths
more functions will be added soon
New in version 0.0.5
- New functions for loan amortizations
- New payments calculations
- New unit tests
Pending
- include more functions
- add some unit tests
Installation
Add this line to your application's Gemfile:
gem 'financial_maths'
And then execute:
$ bundle
Or install it yourself as:
$ gem install financial_maths
Usage
require "financial_maths"
include FinancialMaths
The lists of the methods and their params
Variable amortization payment due
due_variable_payment_amortization (periods, amount, rate, payment)
$ due_variable_payment_amortization(5,10000,1.8,2000)
$ [{:period=>0, :monthly_payment=>nil, :interest=>nil, :payment=>nil, :balance=>10000},
{:period=>1, :payment=>20000.0, :interest=>18000.0, :monthly_payment=>2000, :balance=>8000},
{:period=>2, :payment=>16400.0, :interest=>14400.0, :monthly_payment=>2000, :balance=>6000},
{:period=>3, :payment=>12800.0, :interest=>10800.0, :monthly_payment=>2000, :balance=>4000},
{:period=>4, :payment=>9200.0, :interest=>7200.0, :monthly_payment=>2000, :balance=>2000},
{:period=>5, :payment=>5600.0, :interest=>3600.0, :monthly_payment=>2000, :balance=>0}]
Variable payment amortization anticipated
anticipated_variable_payment_amortization (periods, amount, rate, payment)
$ anticipated_variable_payment_amortization(5,10000,1.8,2000)
$ [{:period=>0, :payment=>20000.0, :interest=>18000.0, :monthly_payment=>2000, :balance=>8000},
{:period=>1, :payment=>16400.0, :interest=>14400.0, :monthly_payment=>2000, :balance=>6000},
{:period=>2, :payment=>12800.0, :interest=>10800.0, :monthly_payment=>2000, :balance=>4000},
{:period=>3, :payment=>9200.0, :interest=>7200.0, :monthly_payment=>2000, :balance=>2000},
{:period=>4, :payment=>5600.0, :interest=>3600.0, :monthly_payment=>2000, :balance=>0}]
Amortization with fixed payment due
due_fixed_payment_amortization (periods, amount, rate, payment)
$ due_fixed_payment_amortization(5,10000,1.8,2109)
$ [{:period=>0, :monthly_payment=>nil, :interest=>nil, :payment=>nil, :balance=>10000},
{:period=>1, :payment=>2109, :interest=>18000.0, :monthly_payment=>-15891.0, :balance=>25891.0},
{:period=>2, :payment=>2109, :interest=>46603.8, :monthly_payment=>-44494.8, :balance=>70385.8},
{:period=>3, :payment=>2109, :interest=>126694.44, :monthly_payment=>-124585.44, :balance=>194971.24},
{:period=>4, :payment=>2109, :interest=>350948.232, :monthly_payment=>-348839.232, :balance=>543810.4720000001},
{:period=>5, :payment=>2109, :interest=>978858.8496000002, :monthly_payment=>-976749.8496000002, :balance=>1520560.3216000004}]
Variable payment amortization anticipated
anticipated_fixed_payment_amortization (periods, amount, rate, payment)
Find future given the present value
future_given_present (present_value, interest, term)
$ future_given_present(10000,1.8,5)
$ 1721036.8
Find present given the future
present_given_future (future_value, interest, term)
$ present_given_future(10000,1.8,5)
$ 58.1045
Find annuity present value given
annuity_given_present (present_value, interest, term)
$ annuity_given_present(10000,1.8,5)
$ 18105.1994
Find the future value annuity given
annuity_given_future (future_value, interest, term)
Find present given the annuity
present_given_annuity (annuity, interest, term)
Find future given the annuity
future_given_annuity (annuity, interest, term)
Find effective rate given the nominal rate due
efective_given_nominal_due (nominal_rate, term)
Find effective rate given the nominal rate anticipated
efective_given_nominal_antipipated (nominal_rate, term)
Find effective nominal rate given anticipated
nominal_antipiated_given_efective (nominal_rate, term)
Find effective nominal rate given anticipated
nominal_due_given_efective (nominal_rate, term)
Find the fixed anticipated
anticipated_fixed_payment (present_value, rate, term)
Finding variable amount
variable_payment (amount, periods)
$ variable_payment(10000,5)
$ 2000.0
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request