← Home

finance

Deterministic financial math with arbitrary-precision decimal arithmetic.

An LLM asked to calculate a 30-year mortgage payment will predict a number that looks right — and might be off by dollars after 360 periods of floating-point drift. IRR, amortization schedules, NPV, CAGR, margin vs markup — all require exact formulas, not token prediction. Euclid's finance tool uses decimal.js for every calculation, eliminating IEEE 754 rounding errors entirely.


Live

euclid / finance
finance({ operation: "loan_payment", principal: 350000, rate: 6.5, periods: 360 }){ "payment": 2212.24, "total_paid": 796406.40, "total_interest": 446406.40 }
finance({ operation: "amortization", principal: 250000, rate: 5.5, periods: 360, limit: 3 }){ "schedule": [{ "period": 1, "principal": 273.64, "interest": 1145.83, "balance": 249726.36 }, ...] }
finance({ operation: "irr", cashflows: [-100000, 30000, 35000, 40000, 45000] }){ "irr_percent": 17.094, "converged": true, "iterations": 5 }
finance({ operation: "npv", rate: 10, cashflows: [-100000, 30000, 40000, 50000, 60000] }){ "npv": 38877.13 }

Operations

loan payment (PMT)amortization schedulepresent valuefuture valuesolve for periodssolve for ratenet present value (NPV)internal rate of return (IRR)return on investment (ROI)markupmargindiscountpercentage changecompound growth (CAGR)simple interestcompound interest

Examples

What it looks like in practice

Monthly mortgage payment

finance({ operation: "loan_payment", principal: 350000, rate: 6.5, periods: 360 })

{ "payment": 2212.24, "total_paid": 796406.40, "total_interest": 446406.40 }

Amortization schedule (first 3 periods)

finance({ operation: "amortization", principal: 250000, rate: 5.5, periods: 360, limit: 3 })

{ "schedule": [{ "period": 1, "principal": 273.64, "interest": 1145.83, "balance": 249726.36 }, ...] }

Internal rate of return on a venture investment

finance({ operation: "irr", cashflows: [-100000, 30000, 35000, 40000, 45000] })

{ "irr_percent": 17.094, "converged": true, "iterations": 5 }

Net present value of projected cash flows

finance({ operation: "npv", rate: 10, cashflows: [-100000, 30000, 40000, 50000, 60000] })

{ "npv": 38877.13 }

CAGR for revenue growth

finance({ operation: "compound_growth", start_value: 2100000, end_value: 4800000, periods: 4 })

{ "cagr_percent": 22.958 }

Margin vs markup — the distinction that trips up every LLM

finance({ operation: "margin", cost: 45, price: 79 })

{ "margin_percent": 43.038, "profit": 34 }

Compound interest with monthly compounding

finance({ operation: "compound_interest", principal: 10000, rate: 6, time: 5, compounding: "monthly" })

{ "total": 13488.50, "interest": 3488.50 }

Solve for interest rate given PV, FV, and periods

finance({ operation: "interest_rate", present_value: 10000, future_value: 20000, periods: 120 })

{ "rate_percent": 6.952, "converged": true }


Who uses this

Built for agents across every domain

fn()

Financial analyst

Building DCF models where NPV and IRR must be exact — a rounding error in the discount rate compounds across 20 years of projected cash flows.

fn()

Mortgage broker

Generating amortization schedules for clients where every row must balance to the penny. The final payment must zero out the balance exactly.

fn()

SaaS founder

Calculating CAGR, MRR growth rates, and unit economics (margin, markup, CAC payback) for board decks where investor trust depends on precise numbers.

fn()

Real estate agent

Comparing monthly payments across different loan terms, rates, and down payments — where a $50/month difference changes which properties a buyer qualifies for.

fn()

Accounting team

Computing simple and compound interest for loan portfolios, verifying amortization schedules against bank statements, and reconciling to the cent.

fn()

VC analyst

Running IRR on investment scenarios with irregular cash flows and multiple sign changes, where Newton-Raphson convergence matters more than a guess.


Try finance on Euclid Cloud

One MCP connection. Every computation your agents need.

Get started