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.