AmFn™ is an amortizing cashflow calculation suite. It is open source software with its engine developed in the Rust language and dual licensed under Apache 2.0 and MIT, your choice.

AmFn Features:

Cashflow events

Cashflow events can be set on any date, including interest rate changes, even if the change results in odd-periods or uneven cashflows. Any type of skipped or alternate principal scenarios are possible. Multiple overlapping streams on any date are fully supported.

What Ifs?

Original cashflow events are preserved so that "What-if?" questions can be easily asked anywhere in the cashflow. For example, how would an annual bump, on top of monthly payments, affect the term of a loan?

Day counts

Day counts supported are Actual/Days-in-year, Actual/Actual (ISMA), Actual/Actual (AFB), Actual/365L (ISDA), 30/Days-in-year, 30E/Days-in-year and 30E+/Days-in-year. Multiple day count methods can be used within the same cashflow.

Frequencies

Separate principal and interest compounding period lengths supported are 1-year, 6-months, 4-months, 3-months, 2-months, 1-month, Half-month, 4-weeks, 2-weeks, 1-week, 1-day and Continuous. Supports "effective" period-lengths (e.g., Canadian loans).

Compute methods

Multiple compute methods Actuarial (Normal Rule), Simple Interest (U.S. Rule) and Rule-Of-78 can be used within the same cashflow. In addition the options for end-of-month and days-in-year can also vary with cashflow events.

Current value

Supports both active and passive current value events. Passive current value events do not affect the cashflow balance in contrast to active current value events, which may result in odd periods. An active current balance event can additionally be marked as the present value.

Rounding

Precise rounding of final and/or intermediate values (None, Bankers, BiasUp, BiasDown, Up, and Truncate).

Amortizations

Produces full amortizations, compressed amortizations, and balance summaries with statistic events.

Statistics

Statistics and totals can be used to collect and report on totals within the cashflow such as annual, quarterly, trimester, 4-week, 2-year or any length of period desired by the user.

Custom events

Interest-only, Interest and fixed, Step amount, Graduated amount, Existing fixed, Points, Fees, Pre-paid interest, Taxes, Disclosure comments, GL codes, and virtually any type of custom event.

Combine and Merge

Combine split mortgage for overall payment schedule and APR. Merge cashflows for debt consolidation or refinancing.

Transform and Split

Transform cashflows to quickly calculate purchase price, pay price, and more. Split events to apply different interest rates to portions of a financial instrument.

Templates

Customizable with templates to meet your exact calculation and data requirements. A set of templates comes with AmFn that handle standard loans, investments, annuities, and bonds. Additional templates can be created that handle more specific requirements.

Expressions

Expressions can be used at user and cashflow levels, and within individual events to calculate dates, periods, and values. Expressions can use an extensive list of functions to calculate dates, inspect cashflows, examine amortization schedules and more.

Standards-based

Standards-based with Unicode text and ISO compliance for language, country, and currency. AmFn JSON schema conforms to the JSON Schema Specification (version 2019-09).

Internationalized

Utilizes locale definitions that handle the requirements of different languages and geographical regions having their date, currency and number formats.

High-performance

AmFn is a Rust language solution. Rust is a system programming language with static memory management. As such Rust solutions typically have performance characteristics comparable to C++ solutions.

Secure

Since AmFn is a Rust language solution, it's much more memory-safe and thread-safe. Memory and thread-safe solutions are far less prone to having security vulnerabilities.