AmortizationCalculation

Overview

This module details an amortization calculation system that defines constants for various periodic intervals and events, as well as methods for managing loans, payments, rate changes, and schedule calculations. ## Constants

The module includes constants representing various time periods, such as annual, bi-annual, monthly, and weekly intervals, as well as unique identifiers like NUMBER_UNLIMITED for unlimited occurrences and STARTDAY_NORMAL for consistent start-day tracking. These constants simplify configuring amortization schedules with precise periodicity and event behaviors.

Methods

Key methods facilitate:

  • Loan and Payment Management: Functions like addLoan and addPayment support different configurations, including start and end dates, periodic intervals, and repetitions.

  • Rate Changes and Period Adjustments: addRateChange and addCompoundPeriodChange enable dynamic updates to interest rates and compounding periods.

  • Amortization Schedule Handling: Methods like calculateAmortizationSchedule and getAmortizationSchedule compute and retrieve detailed schedules, while getRestBalance and solveForUnknown provide insights into financial balances and unknown variables.

Features

  • Utilities like isValidPeriod and roundMoney ensure input validity and precision.

  • Event management and sorting (sortEvents, getEvents) organize financial activities over time.

This module streamlines the creation and management of customized amortization schedules with precision and adaptability.

Constants Summarized

Type
Name
Summary

The numeric constant used to identify an unlimited number of repeated events.

The numeric constant used to identify an annual period.

The numeric constant used to identify a bi-annual period (twice every year).

The numeric constant used to identify a bi-monthly period (twice every month).

The numeric constant used to identify a daily period.

The numeric constant used to identify a four-monthly period (once every four months).

The numeric constant used to identify a four-weekly period (once every four weeks).

The numeric constant used to identify a monthly period.

The numeric constant used to identify that there is no period.

The numeric constant used to identify a quarterly period (once every three months).

The numeric constant used to identify a two-monthly period (once every two months).

The numeric constant used to identify a two-weekly period (once every two weeks).

The numeric constant used to identify a weekly period.

The numeric constant used to identify that the same start day should be used as the day of the month of the starting date of the event.

Methods Summarized

Type
Name
Summary

Sets a new interest rate.

Calculates the amortization schedule.

Gets the amortization schedule as a JSDataSet.

Returns the error that remains when solving for the unknown.

Returns all the amortization events - such as rate changes, loan events, payment events, compounding period changes.

Gets the rest balance after the amortization schedule.

Returns the solveForUnknown value.

Returns true if the period is valid, or false if the period is not valid.

Rounds a number up to the nearest cents.

Returns true if successful or false if the call failed.

void

Sorts the amortization events ascending by date.

Constants Detailed

NUMBER_UNLIMITED

The numeric constant used to identify an unlimited number of repeated events.

Type Number

Sample

PERIOD_ANNUALY

The numeric constant used to identify an annual period.

Type Number

Sample

PERIOD_BI_ANNUALLY

The numeric constant used to identify a bi-annual period (twice every year).

Type Number

Sample

PERIOD_BI_MONTHLY

The numeric constant used to identify a bi-monthly period (twice every month). TODO: this period is not supported yet.

Type Number

Sample

PERIOD_DAILY

The numeric constant used to identify a daily period.

Type Number

Sample

PERIOD_FOUR_MONTHLY

The numeric constant used to identify a four-monthly period (once every four months).

Type Number

Sample

PERIOD_FOUR_WEEKLY

The numeric constant used to identify a four-weekly period (once every four weeks).

Type Number

Sample

PERIOD_MONTHLY

The numeric constant used to identify a monthly period.

Type Number

Sample

PERIOD_NONE

The numeric constant used to identify that there is no period.

Type Number

Sample

PERIOD_QUARTERLY

The numeric constant used to identify a quarterly period (once every three months).

Type Number

Sample

PERIOD_TWO_MONTHLY

The numeric constant used to identify a two-monthly period (once every two months).

Type Number

Sample

PERIOD_TWO_WEEKLY

The numeric constant used to identify a two-weekly period (once every two weeks).

Type Number

Sample

PERIOD_WEEKLY

The numeric constant used to identify a weekly period.

Type Number

Sample

STARTDAY_NORMAL

The numeric constant used to identify that the same start day should be used as the day of the month of the starting date of the event.

Type Number

Sample

Methods Detailed

addCompoundPeriodChange(newPeriod, date)

Adds a compound period change.

Parameters

Returns: Boolean the total number of pages printed during the meta print job.

Sample

addLoan(amount, date)

Adds a loan.

Parameters

Returns: Boolean true if the loan event was added successfully, false otherwise.

Sample

addLoan(amount, firstDate, lastDate, period)

Adds a loan.

Parameters

Returns: Boolean true if the loan event was added successfully, false otherwise.

Sample

addLoan(amount, firstDate, lastDate, period, number)

Adds a loan.

Parameters

Returns: Boolean true if the loan event was added successfully, false otherwise.

Sample

addLoan(amount, firstDate, lastDate, period, number, startday)

Adds a loan.

Parameters

Returns: Boolean true if the loan event was added successfully, false otherwise.

Sample

addPayment(amount, date)

Adds a payment.

Parameters

Returns: Boolean true if the payment event was added successfully, false otherwise.

Sample

addPayment(amount, firstDate, lastDate, period)

Adds a payment.

Parameters

Returns: Boolean true if the payment event was added successfully, false otherwise.

Sample

addPayment(amount, firstDate, lastDate, period, number)

Adds a payment.

Parameters

Returns: Boolean true if the payment event was added successfully, false otherwise.

Sample

addPayment(amount, firstDate, lastDate, period, number, startday)

Adds a payment.

Parameters

Returns: Boolean true if the payment event was added successfully, false otherwise.

Sample

addRateChange(newRate, date)

Sets a new interest rate.

Parameters

Returns: Boolean true if the rate change was added successfully, false otherwise.

Sample

calculateAmortizationSchedule()

Calculates the amortization schedule.

Returns: Boolean true if the amortization schedule was calculated successfully, false otherwise.

Sample

getAmortizationSchedule()

Gets the amortization schedule as a JSDataSet.

Returns: JSDataSet the amortization schedule as a JSDataSet.

Sample

getError()

Returns the error that remains when solving for the unknown. Please note that the error should be less or equal to 1E-8 - otherwise, the solveForUnknown value is incorrect.

Returns: Number the error value resulting from solving for the unknown.

Sample

getEvents()

Returns all the amortization events - such as rate changes, loan events, payment events, compounding period changes.

Returns: JSDataSet all amortization events such as rate changes, loans, payments, and compounding period changes as a JSDataSet.

Sample

getRestBalance()

Gets the rest balance after the amortization schedule.

Returns: Number the remaining balance after the amortization schedule.

Sample

getUnknown()

Returns the solveForUnknown value.

Returns: Number the value of the unknown parameter solved during amortization.

Sample

isValidPeriod(period)

Returns true if the period is valid, or false if the period is not valid.

Parameters

Returns: Boolean true if the specified period is valid, false otherwise.

Sample

roundMoney(amount)

Rounds a number up to the nearest cents.

Parameters

Returns: Number the amount rounded to the nearest cent.

Sample

solveForUnknown()

Returns true if successful or false if the call failed.

Returns: Boolean true if the unknown value was successfully solved, false otherwise.

Sample

sortEvents()

Sorts the amortization events ascending by date.

Returns: void

Sample


Last updated

Was this helpful?