MCP 서버

nestegg-calculators

io.github.VladimirWrites/nestegg-calculators
금융 및 투자 공개 · 연결 가능 MCP 2026-07-28

이 MCP로 할 수 있는 일

Provides stateless financial calculations for loans, amortization, investing, bonds, options, taxes, budgeting, returns, and retirement planning.

accrued-interest
Accrued Interest
Accrued interest since the last coupon: the annual coupon pro-rated by days elapsed over the day-count basis.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['faceValue', 'couponRatePct', 'daysSinceLastCoupon'], 'properties': {'faceValue': {'type': 'number', 'description': 'Face value.'}, 'couponRatePct': {'type': 'number', 'description': 'Annual coupon rate in percent.'}, 'dayCountBasis': {'type': 'number', 'description': 'Day-count basis (default 360).'}, 'daysSinceLastCoupon': {'type': 'number', 'description': 'Days since the last coupon.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'accrued': {'type': 'number', 'description': 'Accrued interest.'}}}
after-tax-yield
After-Tax Yield
After-tax yield: a yield reduced by the tax rate. Percents in and out.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['yieldPct', 'taxRatePct'], 'properties': {'yieldPct': {'type': 'number', 'description': 'Pre-tax yield in percent.'}, 'taxRatePct': {'type': 'number', 'description': 'Tax rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'afterTaxPct': {'type': 'number', 'description': 'After-tax yield, percent.'}}}
amortization
Amortization Schedule
Monthly loan amortization schedule and summary. Supports dated extra principal payments and a rate-fixed period. detail controls output size: 'summary' (default) returns totals plus a per-year breakdown; 'monthly' returns the full schedule (paginate with offset/limit). Returns numbers and schedules; no advice.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['amount', 'rate', 'mode', 'startDate'], 'properties': {'mode': {'enum': ['term', 'payment'], 'type': 'string', 'description': 'Fix the term (compute the payment) or fix the payment (compute the term).'}, 'rate': {'type': 'number', 'description': 'Annual interest rate in percent (6 = 6%).'}, 'extra': {'type': 'array', 'items': {'type': 'object', 'properties': {'date': {'type': 'string', 'description': 'ISO date.'}, 'amount': {'type': 'number', 'description': 'Extra principal.'}}}, 'description': 'Optional dated extra principal payments.'}, 'limit': {'type': 'number', 'description': 'Max monthly rows when detail=monthly (default and maximum 360; page with nextOffset).'}, 'amount': {'type': 'number', 'description': 'Loan principal.'}, 'detail': {'enum': ['summary', 'yearly', 'monthly'], 'type': 'string', 'description': 'Output size. summary (default): totals + yearly breakdown. monthly: full schedule (use offset/limit to paginate).'}, 'offset': {'type': 'number', 'description': 'Monthly schedule start index when detail=monthly (default 0).'}, 'payment': {'type': 'number', 'description': "Monthly payment, used when mode is 'payment'."}, 'rateSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'rate'], 'properties': {'date': {'type': 'string', 'description': 'ISO date the new rate starts.'}, 'rate': {'type': 'number', 'description': 'New annual rate in percent.'}}}, 'description': 'Optional rate changes (e.g. after a Zinsbindung). The installment is held; from each date the outstanding balance continues at the new annual rate.'}, 'startDate': {'type': 'string', 'description': 'First payment month as an ISO date (YYYY-MM-DD).'}, 'termYears': {'type': 'number', 'description': "Term in years, used when mode is 'term'."}, 'fixedUntil': {'type': 'string', 'description': 'Optional. Rate is certain until this ISO date; beyond it the schedule is an estimate.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'yearly': {'type': 'array', 'description': 'Per-year totals: { year, interest, principal, extra, payments, endBalance }.'}, 'payments': {'type': 'number', 'description': 'Number of payments made.'}, 'schedule': {'type': 'array', 'description': 'Monthly rows (only when detail=monthly).'}, 'totalPaid': {'type': 'number', 'description': 'Total paid (incl. extras).'}, 'nextOffset': {'type': 'number', 'description': 'Next pagination offset, or null.'}, 'payoffDate': {'type': 'string', 'description': 'Payoff date, ISO.'}, 'scheduleTotal': {'type': 'number', 'description': 'Total monthly rows (when detail=monthly).'}, 'totalInterest': {'type': 'number', 'description': 'Total interest paid.'}, 'monthlyPayment': {'type': 'number', 'description': 'Monthly payment.'}, 'scheduledMonths': {'type': 'number', 'description': 'Scheduled months (null if open-ended).'}}}
annuity-fv
Annuity Future Value
Future value of an ordinary annuity. rate is the per-period rate in percent.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['payment', 'ratePct', 'periods'], 'properties': {'payment': {'type': 'number', 'description': 'Payment per period.'}, 'periods': {'type': 'number', 'description': 'Number of periods.'}, 'ratePct': {'type': 'number', 'description': 'Rate per period in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'fv': {'type': 'number', 'description': 'Future value.'}}}
annuity-payment
Annuity Payment
The level payment that amortizes a present value over n periods (the loan-payment formula). rate is per period.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['presentValue', 'ratePct', 'periods'], 'properties': {'periods': {'type': 'number', 'description': 'Number of periods.'}, 'ratePct': {'type': 'number', 'description': 'Rate per period in percent.'}, 'presentValue': {'type': 'number', 'description': 'Present value / principal.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'payment': {'type': 'number', 'description': 'Level payment (null if periods<=0).'}}}
annuity-pv
Annuity Present Value
Present value of an ordinary annuity (level payment at each period end). rate is the per-period rate in percent.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['payment', 'ratePct', 'periods'], 'properties': {'payment': {'type': 'number', 'description': 'Payment per period.'}, 'periods': {'type': 'number', 'description': 'Number of periods.'}, 'ratePct': {'type': 'number', 'description': 'Rate per period in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'pv': {'type': 'number', 'description': 'Present value.'}}}
balloon-loan
Balloon Loan
Balloon loan: payment based on a long amortization, with the balloon being the balance still due after the shorter balloon term.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['amount', 'ratePct', 'balloonMonths', 'amortMonths'], 'properties': {'amount': {'type': 'number', 'description': 'Loan amount.'}, 'ratePct': {'type': 'number', 'description': 'Annual rate in percent.'}, 'amortMonths': {'type': 'number', 'description': 'Amortization basis in months.'}, 'balloonMonths': {'type': 'number', 'description': 'Months until the balloon is due.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'balloon': {'type': 'number', 'description': 'Balloon balance due.'}, 'payment': {'type': 'number', 'description': 'Monthly payment.'}}}
barista-fire
Barista FIRE
Barista FIRE: the nest egg needed when part-time income covers part of the spending, so the portfolio only funds the remainder at the safe withdrawal rate.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['annualSpend', 'partTimeIncome'], 'properties': {'annualSpend': {'type': 'number', 'description': 'Yearly spending.'}, 'partTimeIncome': {'type': 'number', 'description': 'Yearly part-time income.'}, 'withdrawalRatePct': {'type': 'number', 'description': 'Safe withdrawal rate in percent (default 4).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'target': {'type': 'number', 'description': 'Nest egg needed (null if withdrawal rate<=0).'}}}
biweekly-payoff
Biweekly Payoff
Biweekly mortgage acceleration: paying half the monthly payment every two weeks. Returns the biweekly payment and the months and interest saved.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['amount', 'ratePct', 'termMonths'], 'properties': {'amount': {'type': 'number', 'description': 'Loan amount.'}, 'ratePct': {'type': 'number', 'description': 'Annual rate in percent.'}, 'termMonths': {'type': 'number', 'description': 'Original term in months.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'monthsSaved': {'type': 'number', 'description': 'Months saved.'}, 'interestSaved': {'type': 'number', 'description': 'Interest saved.'}, 'biweeklyPayment': {'type': 'number', 'description': 'Biweekly payment.'}}}
black-scholes
Black-Scholes Option Price
Black-Scholes price of a European call or put option, plus d1/d2. Volatility and rates in percent; optional continuous dividend yield.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['spot', 'strike', 'years', 'volatilityPct', 'riskFreePct'], 'properties': {'spot': {'type': 'number', 'description': 'Current underlying price.'}, 'type': {'enum': ['call', 'put'], 'type': 'string', 'description': 'Option type (default call).'}, 'years': {'type': 'number', 'description': 'Time to expiry in years.'}, 'strike': {'type': 'number', 'description': 'Strike price.'}, 'riskFreePct': {'type': 'number', 'description': 'Risk-free rate in percent.'}, 'volatilityPct': {'type': 'number', 'description': 'Annualized volatility in percent.'}, 'dividendYieldPct': {'type': 'number', 'description': 'Continuous dividend yield in percent (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'d1': {'type': 'number', 'description': 'd1.'}, 'd2': {'type': 'number', 'description': 'd2.'}, 'price': {'type': 'number', 'description': 'Option price (null if degenerate).'}}}
bond-duration
Bond Duration
Macaulay duration (PV-weighted average time of cashflows, in years) and modified duration (price sensitivity to yield).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['faceValue', 'couponRatePct', 'years', 'yieldPct'], 'properties': {'years': {'type': 'number', 'description': 'Years to maturity.'}, 'yieldPct': {'type': 'number', 'description': 'Annual yield in percent.'}, 'faceValue': {'type': 'number', 'description': 'Face value.'}, 'couponRatePct': {'type': 'number', 'description': 'Annual coupon rate in percent.'}, 'periodsPerYear': {'type': 'number', 'description': 'Coupon periods per year (default 2).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'macaulay': {'type': 'number', 'description': 'Macaulay duration, years.'}, 'modified': {'type': 'number', 'description': 'Modified duration.'}}}
bond-price
Bond Price
Price of a coupon bond given a yield: present value of the coupons plus the face at maturity.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['faceValue', 'couponRatePct', 'years', 'yieldPct'], 'properties': {'years': {'type': 'number', 'description': 'Years to maturity.'}, 'yieldPct': {'type': 'number', 'description': 'Annual yield in percent.'}, 'faceValue': {'type': 'number', 'description': 'Face (par) value.'}, 'couponRatePct': {'type': 'number', 'description': 'Annual coupon rate in percent of face.'}, 'periodsPerYear': {'type': 'number', 'description': 'Coupon periods per year (default 2).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'price': {'type': 'number', 'description': 'Bond price (null if degenerate).'}}}
break-even-units
Break-Even Units
Break-even volume: fixed costs divided by the per-unit contribution (price - variable cost), plus the revenue at that volume.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['fixedCosts', 'pricePerUnit', 'variableCostPerUnit'], 'properties': {'fixedCosts': {'type': 'number', 'description': 'Total fixed costs.'}, 'pricePerUnit': {'type': 'number', 'description': 'Selling price per unit.'}, 'variableCostPerUnit': {'type': 'number', 'description': 'Variable cost per unit.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'units': {'type': 'number', 'description': 'Break-even units (null if no contribution).'}, 'revenue': {'type': 'number', 'description': 'Revenue at break-even (null if none).'}}}
budget-50-30-20
50/30/20 Budget Split
The 50/30/20 budget split of monthly income into needs, wants, and savings.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['monthlyIncome'], 'properties': {'monthlyIncome': {'type': 'number', 'description': 'Monthly take-home income.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'needs': {'type': 'number', 'description': '50% needs.'}, 'wants': {'type': 'number', 'description': '30% wants.'}, 'savings': {'type': 'number', 'description': '20% savings.'}}}
cagr
CAGR
Compound annual growth rate between two values over a number of years. Returns a decimal (0.07 means 7%).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['begin', 'end', 'years'], 'properties': {'end': {'type': 'number', 'description': 'Ending value.'}, 'begin': {'type': 'number', 'description': 'Starting value.'}, 'years': {'type': 'number', 'description': 'Number of years.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Result value.'}}}
cap-rate
Cap Rate
Capitalization rate: net operating income as a percent of property value.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['noi', 'propertyValue'], 'properties': {'noi': {'type': 'number', 'description': 'Net operating income.'}, 'propertyValue': {'type': 'number', 'description': 'Property value.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'capRatePct': {'type': 'number', 'description': 'Cap rate, percent (null if value<=0).'}}}
cash-on-cash
Cash-on-Cash Return
Cash-on-cash return: annual pre-tax cash flow as a percent of the cash invested.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['annualCashFlow', 'cashInvested'], 'properties': {'cashInvested': {'type': 'number', 'description': 'Cash invested.'}, 'annualCashFlow': {'type': 'number', 'description': 'Annual pre-tax cash flow.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'cashOnCashPct': {'type': 'number', 'description': 'Cash-on-cash return, percent (null if invested<=0).'}}}
coast-fire
Coast FIRE
Coast FIRE: whether the current nest egg, left to grow untouched to retirement, already reaches the FIRE target. Returns the target, the projected balance, whether it coasts, and any shortfall.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['currentNestEgg', 'annualRatePct', 'yearsToRetirement', 'annualSpend'], 'properties': {'annualSpend': {'type': 'number', 'description': 'Yearly spending in retirement.'}, 'annualRatePct': {'type': 'number', 'description': 'Expected annual growth in percent.'}, 'currentNestEgg': {'type': 'number', 'description': 'Amount invested today.'}, 'withdrawalRatePct': {'type': 'number', 'description': 'Safe withdrawal rate in percent (default 4).'}, 'yearsToRetirement': {'type': 'number', 'description': 'Years until retirement.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'gap': {'type': 'number', 'description': 'Shortfall in future-value terms.'}, 'projected': {'type': 'number', 'description': 'Projected balance at retirement.'}, 'fireTarget': {'type': 'number', 'description': 'FIRE target.'}, 'isCoasting': {'type': 'boolean', 'description': 'True if it already coasts.'}}}
compound-interest
Compound Interest
Compound growth at any frequency, with an optional contribution each period (paid at period end). Generalizes future-value (periodsPerYear 1) and contributions (periodsPerYear 12).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['principal', 'annualRatePct', 'years'], 'properties': {'years': {'type': 'number', 'description': 'Number of years.'}, 'principal': {'type': 'number', 'description': 'Starting amount.'}, 'annualRatePct': {'type': 'number', 'description': 'Annual growth rate in percent.'}, 'periodsPerYear': {'type': 'number', 'description': 'Compounding periods per year (default 1).'}, 'contributionPerPeriod': {'type': 'number', 'description': 'Optional. Amount added each period (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Result value.'}}}
contribution-margin
Contribution Margin
Contribution margin per unit and as a percent of price.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['pricePerUnit', 'variableCostPerUnit'], 'properties': {'pricePerUnit': {'type': 'number', 'description': 'Selling price per unit.'}, 'variableCostPerUnit': {'type': 'number', 'description': 'Variable cost per unit.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ratioPct': {'type': 'number', 'description': 'Contribution margin ratio, percent (null if price=0).'}, 'contributionMargin': {'type': 'number', 'description': 'Contribution per unit.'}}}
contributions
Future Value of Contributions
Future value of a fixed monthly contribution, optionally stepping up each year.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['monthly', 'annualRatePct', 'months'], 'properties': {'months': {'type': 'number', 'description': 'Number of months.'}, 'monthly': {'type': 'number', 'description': 'Monthly contribution.'}, 'annualRatePct': {'type': 'number', 'description': 'Annual growth rate in percent.'}, 'contribGrowthPct': {'type': 'number', 'description': 'Optional. Contribution step-up percent per year.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Result value.'}}}
convexity
Bond Convexity
Bond convexity (years^2): the curvature of price with respect to yield, used alongside duration.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['faceValue', 'couponRatePct', 'years', 'yieldPct'], 'properties': {'years': {'type': 'number', 'description': 'Years to maturity.'}, 'yieldPct': {'type': 'number', 'description': 'Annual yield in percent.'}, 'faceValue': {'type': 'number', 'description': 'Face value.'}, 'couponRatePct': {'type': 'number', 'description': 'Annual coupon rate in percent.'}, 'periodsPerYear': {'type': 'number', 'description': 'Coupon periods per year (default 2).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'convexity': {'type': 'number', 'description': 'Convexity, years^2.'}}}
credit-card-payoff
Credit Card Payoff
Months to clear a credit-card balance at a fixed monthly payment, plus interest paid. Null when the payment can't cover the first month's interest.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['balance', 'aprPct', 'monthlyPayment'], 'properties': {'aprPct': {'type': 'number', 'description': 'Annual percentage rate in percent.'}, 'balance': {'type': 'number', 'description': 'Current balance.'}, 'monthlyPayment': {'type': 'number', 'description': 'Fixed monthly payment.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'months': {'type': 'number', 'description': 'Months to clear (null if never).'}, 'totalPaid': {'type': 'number', 'description': 'Total paid (null if never).'}, 'totalInterest': {'type': 'number', 'description': 'Total interest (null if never).'}}}
current-ratio
Current Ratio
Current ratio: current assets over current liabilities.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['currentAssets', 'currentLiabilities'], 'properties': {'currentAssets': {'type': 'number', 'description': 'Current assets.'}, 'currentLiabilities': {'type': 'number', 'description': 'Current liabilities.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'currentRatio': {'type': 'number', 'description': 'Current ratio (null if liabilities<=0).'}}}
current-yield
Current Yield
Current yield: the annual coupon as a percent of the bond's current price.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['price', 'faceValue', 'couponRatePct'], 'properties': {'price': {'type': 'number', 'description': 'Current bond price.'}, 'faceValue': {'type': 'number', 'description': 'Face value.'}, 'couponRatePct': {'type': 'number', 'description': 'Annual coupon rate in percent of face.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'currentYieldPct': {'type': 'number', 'description': 'Current yield, percent (null if price<=0).'}}}
de-abgeltungsteuer
German Capital Gains Tax (Abgeltungsteuer)
German flat tax on capital income (Abgeltungsteuer, §32d EStG) for tax years 2023-2026 with the year's Sparerpauschbetrag built in. 25% above the allowance, Soli 5.5% on top (no Freigrenze for capital income), and with church tax the statutory reduced rate (e.g. 24.45% at 9%) plus the church tax itself.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['year', 'capitalIncome'], 'properties': {'year': {'type': 'number', 'description': 'Tax year: 2023, 2024, 2025 or 2026.'}, 'joint': {'type': 'boolean', 'description': 'true for jointly assessed couples (doubles the Sparerpauschbetrag).'}, 'churchTaxPct': {'type': 'number', 'description': 'Church tax rate: 8, 9, or 0 for none (default 0).'}, 'capitalIncome': {'type': 'number', 'description': 'Annual capital income (interest, dividends, realized gains) in EUR.'}, 'foreignTaxCredit': {'type': 'number', 'description': 'Optional. Creditable foreign withholding tax (q in the §32d formula).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'net': {'type': 'number', 'description': 'Income after taxes.'}, 'soli': {'type': 'number', 'description': 'Soli (5.5%).'}, 'year': {'type': 'number', 'description': 'Tax year.'}, 'taxable': {'type': 'number', 'description': 'Taxable after allowance.'}, 'totalTax': {'type': 'number', 'description': 'All taxes.'}, 'allowance': {'type': 'number', 'description': 'Sparerpauschbetrag applied.'}, 'churchTax': {'type': 'number', 'description': 'Church tax.'}, 'incomeTax': {'type': 'number', 'description': 'Flat tax (25% or church-reduced).'}, 'capitalIncome': {'type': 'number', 'description': 'Income.'}, 'effectiveRatePct': {'type': 'number', 'description': 'Total tax / income, percent.'}}}
debt-payoff
Debt Payoff
Multi-debt payoff plan under a fixed monthly budget. method 'avalanche' (highest rate first) minimizes interest; 'snowball' (smallest balance first) clears accounts soonest. Returns months, total interest, and payoff order; flags insolvent budgets.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['debts', 'monthlyBudget'], 'properties': {'debts': {'type': 'array', 'items': {'type': 'object', 'required': ['balance', 'rate', 'minPayment'], 'properties': {'name': {'type': 'string', 'description': 'Optional label.'}, 'rate': {'type': 'number', 'description': 'Annual interest rate in percent.'}, 'balance': {'type': 'number', 'description': 'Current balance.'}, 'minPayment': {'type': 'number', 'description': 'Minimum monthly payment.'}}}, 'description': 'The debts to pay off.'}, 'method': {'enum': ['avalanche', 'snowball'], 'type': 'string', 'description': 'Payoff strategy (default avalanche).'}, 'monthlyBudget': {'type': 'number', 'description': 'Total amount available across all debts each month.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'months': {'type': 'number', 'description': 'Months to debt-free (null if insolvent).'}, 'insolvent': {'type': 'boolean', 'description': "True if the budget can't keep up."}, 'payoffOrder': {'type': 'array', 'description': 'Debt names in payoff order.'}, 'totalInterest': {'type': 'number', 'description': 'Total interest (null if insolvent).'}}}
declining-balance-depreciation
Declining-Balance Depreciation
Declining-balance depreciation: a fixed percent of the reducing book value, for a given year. Returns that year's depreciation and the remaining book value.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['value', 'ratePct', 'year'], 'properties': {'year': {'type': 'number', 'description': 'Year (1-based).'}, 'value': {'type': 'number', 'description': 'Initial cost.'}, 'ratePct': {'type': 'number', 'description': 'Annual depreciation rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'bookValue': {'type': 'number', 'description': 'Book value at year end.'}, 'depreciation': {'type': 'number', 'description': 'Depreciation this year.'}}}
de-gross-to-net
German Gross-to-Net (manual figures)
German net (Netto) salary from gross (Brutto). No tax tables are baked in: look up the current year's statutory figures and pass them in. Income tax (Lohnsteuer) and Soli are amounts; church tax is a percent of the income tax; the four employee social rates and the two contribution ceilings are inputs. Use consistent units (e.g. all annual).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['gross'], 'properties': {'soli': {'type': 'number', 'description': 'Solidarity surcharge (Solidaritätszuschlag) amount (often 0 below the threshold).'}, 'gross': {'type': 'number', 'description': 'Gross salary (Brutto).'}, 'carePct': {'type': 'number', 'description': 'Employee long-term care (Pflegeversicherung) rate in percent.'}, 'healthPct': {'type': 'number', 'description': 'Employee health (Krankenversicherung incl. Zusatzbeitrag) rate in percent.'}, 'incomeTax': {'type': 'number', 'description': 'Income tax (Lohnsteuer) amount for the period — look up via the §32a / Steuerklasse tables.'}, 'pensionPct': {'type': 'number', 'description': 'Employee pension (Rentenversicherung) rate in percent (e.g. 9.3).'}, 'churchTaxPct': {'type': 'number', 'description': 'Church tax (Kirchensteuer) rate in percent of income tax (8 or 9, 0 if none).'}, 'healthCeiling': {'type': 'number', 'description': 'Contribution ceiling for health and care.'}, 'pensionCeiling': {'type': 'number', 'description': 'Contribution ceiling (Beitragsbemessungsgrenze) for pension and unemployment.'}, 'unemploymentPct': {'type': 'number', 'description': 'Employee unemployment (Arbeitslosenversicherung) rate in percent (e.g. 1.3).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'net': {'type': 'number', 'description': 'Net.'}, 'soli': {'type': 'number', 'description': 'Soli.'}, 'gross': {'type': 'number', 'description': 'Gross.'}, 'churchTax': {'type': 'number', 'description': 'Church tax.'}, 'incomeTax': {'type': 'number', 'description': 'Income tax.'}, 'contributions': {'type': 'object', 'description': '{ pension, unemployment, health, care, total }.'}, 'totalDeductions': {'type': 'number', 'description': 'Total deductions.'}}}
de-kindergeld
German Child Benefit (Kindergeld)
German child benefit (Kindergeld) for 2023-2026: the year's flat monthly amount per child (uniform since 2023), as monthly and annual totals.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['year'], 'properties': {'year': {'type': 'number', 'description': 'Year: 2023, 2024, 2025 or 2026.'}, 'children': {'type': 'number', 'description': 'Number of children (default 1).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'year': {'type': 'number', 'description': 'Year.'}, 'annual': {'type': 'number', 'description': 'Total annual.'}, 'monthly': {'type': 'number', 'description': 'Total monthly.'}, 'children': {'type': 'number', 'description': 'Children.'}, 'perChildMonthly': {'type': 'number', 'description': 'Monthly amount per child.'}}}
de-midijob
German Midijob Contributions
German Midijob / Uebergangsbereich (paragraph 20 Abs. 2a SGB IV) for 2023-2026: classifies a monthly pay as Minijob / Midijob / regular against the year's thresholds and, inside the Midijob band, computes the reduced contribution bases (Faktor F from the year's rates) and the employee vs employer social-insurance split.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['year', 'monthlyPay'], 'properties': {'age': {'type': 'number', 'description': 'Optional. Age - under 23 skips the childless care surcharge.'}, 'year': {'type': 'number', 'description': 'Year: 2023, 2024, 2025 or 2026.'}, 'children': {'type': 'number', 'description': 'Children, for the care-insurance rate (default 0).'}, 'bundesland': {'type': 'string', 'description': 'Optional. State code; SN applies the Saxony care split.'}, 'monthlyPay': {'type': 'number', 'description': 'Gross monthly pay in EUR.'}, 'kvZusatzPct': {'type': 'number', 'description': "Optional. Krankenkasse Zusatzbeitrag in percent; defaults to the year's average."}, 'childrenUnder25': {'type': 'number', 'description': 'Optional. Children under 25 for the care discounts, when different.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'year': {'type': 'number', 'description': 'Year.'}, 'zone': {'type': 'string', 'description': 'minijob | midijob | regular | none.'}, 'rates': {'type': 'object', 'description': '{ employee, total } percent rates.'}, 'faktorF': {'type': 'number', 'description': 'Faktor F (midijob only).'}, 'employee': {'type': 'object', 'description': '{ pension, unemployment, health, care, total }.'}, 'employer': {'type': 'object', 'description': '{ total }.'}, 'monthlyPay': {'type': 'number', 'description': 'Pay.'}, 'thresholds': {'type': 'object', 'description': '{ minijobMonthly, midijobUpper }.'}, 'savingsVsFull': {'type': 'number', 'description': 'Employee saving vs full contributions.'}, 'contributionBase': {'type': 'object', 'description': '{ total, employee } reduced bases.'}}}
de-net-salary
German Net Salary (exact, by tax year)
Exact German net (Netto) salary from annual gross (Brutto) for tax years 2023-2026. Income tax and Soli follow the official BMF Programmablaufplan for the year (to the euro; 2024 uses the retroactive December tariff), church tax comes from the PAP's Kirchensteuer base, and employee social insurance uses that year's ceilings and rates (KV Zusatzbeitrag defaults to the year's average). Earlier years are rejected - use de-gross-to-net with self-supplied figures instead.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['year', 'grossAnnual'], 'properties': {'age': {'type': 'number', 'description': 'Optional. Age in years - under 23 skips the childless care surcharge.'}, 'year': {'type': 'number', 'description': 'Tax year: 2023, 2024, 2025 or 2026.'}, 'faktor': {'type': 'number', 'description': 'Optional. Tax-class-4 Faktorverfahren factor, default 1.0 (no factor). Only the small minority of married IV/IV couples who applied for it have one; it is assigned by the Finanzamt and printed on the payslip / ELStAM (e.g. 0.921, always <= 1). Leave unset unless the payslip shows a Faktor.'}, 'children': {'type': 'number', 'description': 'Kinderfreibetrag counter (ZKF), halves allowed (default 0). Also drives the care-insurance child discounts.'}, 'taxClass': {'type': 'number', 'description': 'Steuerklasse 1-6 (default 1).'}, 'bundesland': {'type': 'string', 'description': 'Optional. State code (BW, BY, BE, ... SN, TH). Drives the Saxony care-insurance split and the pre-2025 East pension ceiling.'}, 'grossAnnual': {'type': 'number', 'description': 'Annual gross salary (Brutto) in EUR.'}, 'kvZusatzPct': {'type': 'number', 'description': "Optional. The Krankenkasse's own Zusatzbeitrag in percent — pass the actual rate for exact results (rates change yearly, e.g. TK 2025: 2.45, 2026: 2.69). Defaults to the year's official average, which is only right for generic estimates."}, 'churchTaxPct': {'type': 'number', 'description': 'Church tax rate: 8, 9, or 0 for none (default 0).'}, 'privateHealth': {'type': 'object', 'required': ['premiumAnnual'], 'properties': {'premiumAnnual': {'type': 'number', 'description': 'Annual private health+care premium in EUR.'}}, 'additionalProperties': False}, 'childrenUnder25': {'type': 'number', 'description': 'Optional. Children under 25 for the care-insurance discounts, when it differs from `children`.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'net': {'type': 'object', 'description': '{ annual, monthly }.'}, 'soli': {'type': 'number', 'description': 'Solidaritätszuschlag.'}, 'year': {'type': 'number', 'description': 'Tax year.'}, 'gross': {'type': 'object', 'description': '{ annual, monthly }.'}, 'totalTax': {'type': 'number', 'description': 'All taxes.'}, 'churchTax': {'type': 'number', 'description': 'Kirchensteuer.'}, 'incomeTax': {'type': 'number', 'description': 'Lohnsteuer (annual).'}, 'assumptions': {'type': 'object', 'description': 'Inputs as applied (tax class, Zusatzbeitrag, PAP basis, ...).'}, 'contributions': {'type': 'object', 'description': '{ pension, unemployment, health, care, total, rates, ceilingsApplied }.'}, 'totalDeductions': {'type': 'number', 'description': 'Taxes + contributions.'}}}
depreciate
Depreciation
Value after compounding down (or up) at a yearly percentage rate over a number of years. This is the method the app uses for long-term assets.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['value', 'annualRatePct', 'years'], 'properties': {'up': {'type': 'boolean', 'description': 'false depreciates, true appreciates.'}, 'value': {'type': 'number', 'description': 'Starting value.'}, 'years': {'type': 'number', 'description': 'Number of years.'}, 'annualRatePct': {'type': 'number', 'description': 'Annual rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Result value.'}}}
de-rentenpunkte
German Pension Points (Rentenpunkte)
German pension points (Entgeltpunkte, paragraph 63 SGB VI) for 2023-2026: points earned from an annual gross via the year's Durchschnittsentgelt (capped at the contribution ceiling), the aktueller Rentenwert for both halves of the year, and optionally the gross monthly state pension for a total point count.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['year', 'grossAnnual'], 'properties': {'year': {'type': 'number', 'description': 'Year: 2023, 2024, 2025 or 2026.'}, 'bundesland': {'type': 'string', 'description': 'Optional. State code - East states use the East ceiling before 2025.'}, 'grossAnnual': {'type': 'number', 'description': 'Annual insured gross salary in EUR.'}, 'totalPoints': {'type': 'number', 'description': "Optional. Accumulated points, to project the gross monthly pension at today's Rentenwert."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'year': {'type': 'number', 'description': 'Year.'}, 'points': {'type': 'number', 'description': 'Points earned this year.'}, 'projection': {'type': 'object', 'description': '{ totalPoints, monthlyPension, note } when totalPoints given.'}, 'rentenwert': {'type': 'object', 'description': '{ janToJun, fromJuly } EUR per point per month.'}, 'grossAnnual': {'type': 'number', 'description': 'Gross.'}, 'insuredGross': {'type': 'number', 'description': 'Gross after the ceiling.'}, 'ceilingApplied': {'type': 'boolean', 'description': 'True if capped.'}, 'maxPointsThisYear': {'type': 'number', 'description': 'Ceiling / average.'}, 'durchschnittsentgelt': {'type': 'number', 'description': 'Average earnings divisor.'}, 'monthlyPensionPerPoint': {'type': 'number', 'description': 'Current EUR per point.'}}}
discount
Discount
A single percentage discount: the amount off and the final price.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['price', 'discountPct'], 'properties': {'price': {'type': 'number', 'description': 'Original price.'}, 'discountPct': {'type': 'number', 'description': 'Discount in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'discount': {'type': 'number', 'description': 'Amount off.'}, 'finalPrice': {'type': 'number', 'description': 'Final price.'}}}
discounted-payback
Discounted Payback
Discounted payback period: like payback-period but each cashflow is discounted at the per-period rate.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['initialCost', 'cashflows', 'ratePct'], 'properties': {'ratePct': {'type': 'number', 'description': 'Discount rate per period in percent.'}, 'cashflows': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Inflow each period.'}, 'initialCost': {'type': 'number', 'description': 'Upfront cost.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'years': {'type': 'number', 'description': 'Discounted payback in periods (null if never).'}}}
dollar-cost-averaging
Dollar-Cost Averaging
Dollar-cost averaging: buying a fixed amount each period at the given prices. Returns units accumulated, total invested, average cost, and final value at the last price.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['prices', 'periodicInvestment'], 'properties': {'prices': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Price at each purchase period.'}, 'periodicInvestment': {'type': 'number', 'description': 'Fixed amount invested each period.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'units': {'type': 'number', 'description': 'Units accumulated.'}, 'avgCost': {'type': 'number', 'description': 'Average cost per unit (null if none).'}, 'invested': {'type': 'number', 'description': 'Total invested.'}, 'finalValue': {'type': 'number', 'description': 'Value at the last price.'}}}
double-declining-depreciation
Double-Declining Depreciation
Double-declining-balance depreciation: 2/usefulYears of the book value each year, not falling below salvage.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['value', 'usefulYears', 'year'], 'properties': {'year': {'type': 'number', 'description': 'Year (1-based).'}, 'value': {'type': 'number', 'description': 'Initial cost.'}, 'salvage': {'type': 'number', 'description': 'Salvage value (default 0).'}, 'usefulYears': {'type': 'number', 'description': 'Useful life in years.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'bookValue': {'type': 'number', 'description': 'Book value at year end.'}, 'depreciation': {'type': 'number', 'description': 'Depreciation this year.'}}}
dscr
Debt Service Coverage Ratio
Debt service coverage ratio: net operating income divided by annual debt service.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['noi', 'annualDebtService'], 'properties': {'noi': {'type': 'number', 'description': 'Net operating income.'}, 'annualDebtService': {'type': 'number', 'description': 'Annual debt service.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'dscr': {'type': 'number', 'description': 'Debt service coverage ratio (null if debt<=0).'}}}
dti
Debt-to-Income
Debt-to-income ratio, percent (monthly debt / gross monthly income).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['monthlyDebt', 'grossMonthlyIncome'], 'properties': {'monthlyDebt': {'type': 'number', 'description': 'Total monthly debt payments.'}, 'grossMonthlyIncome': {'type': 'number', 'description': 'Gross monthly income.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'dtiPct': {'type': 'number', 'description': 'Debt-to-income, percent (null if income<=0).'}}}
effective-rate
Effective Rate
Convert a nominal annual rate to the effective annual rate (APY) for a compounding frequency, or with toNominal recover the nominal rate from an APY.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['ratePct', 'periodsPerYear'], 'properties': {'ratePct': {'type': 'number', 'description': 'The rate in percent (nominal, or effective when toNominal is true).'}, 'toNominal': {'type': 'boolean', 'description': 'false (default) returns the effective rate; true returns the nominal rate.'}, 'periodsPerYear': {'type': 'number', 'description': 'Compounding periods per year (12 monthly, 365 daily).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'nominalRatePct': {'type': 'number', 'description': 'Nominal rate, percent (when toNominal).'}, 'effectiveRatePct': {'type': 'number', 'description': 'Effective annual rate (APY), percent.'}}}
emergency-fund
Emergency Fund
Months of runway: liquid savings divided by monthly expenses.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['liquidSavings', 'monthlyExpenses'], 'properties': {'liquidSavings': {'type': 'number', 'description': 'Cash and liquid savings on hand.'}, 'monthlyExpenses': {'type': 'number', 'description': 'Total monthly expenses.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'months': {'type': 'number', 'description': 'Months of runway (null if expenses<=0).'}}}
fee-drag
Fee Drag
Effect of an annual fee: the compounded balance at the gross rate vs net of the fee, and the amount lost to fees.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['principal', 'grossAnnualPct', 'feePct', 'years'], 'properties': {'years': {'type': 'number', 'description': 'Number of years.'}, 'feePct': {'type': 'number', 'description': 'Annual fee in percent.'}, 'principal': {'type': 'number', 'description': 'Starting amount.'}, 'grossAnnualPct': {'type': 'number', 'description': 'Gross annual return in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'net': {'type': 'number', 'description': 'Net of fees.'}, 'gross': {'type': 'number', 'description': 'Gross balance.'}, 'lostToFees': {'type': 'number', 'description': 'Amount lost to fees.'}}}
fire-number
FIRE Number
FIRE target nest egg from annual spend and a safe withdrawal rate (default 4%), plus the gap from today and the years to reach it given optional savings and growth. No advice.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['annualSpend'], 'properties': {'annualSpend': {'type': 'number', 'description': 'Yearly spending the nest egg must cover.'}, 'annualRatePct': {'type': 'number', 'description': 'Optional. Annual portfolio growth in percent (default 0).'}, 'currentNestEgg': {'type': 'number', 'description': 'Optional. Amount already saved (default 0).'}, 'withdrawalRatePct': {'type': 'number', 'description': 'Safe withdrawal rate in percent (default 4 = the 4% rule).'}, 'annualContribution': {'type': 'number', 'description': 'Optional. Amount saved per year (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'gap': {'type': 'number', 'description': 'Gap from today.'}, 'target': {'type': 'number', 'description': 'Target nest egg.'}, 'yearsToFI': {'type': 'number', 'description': 'Years to FI (null if unreachable).'}}}
future-value
Future Value
Future value of a single lump sum compounded annually.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['principal', 'annualRatePct', 'years'], 'properties': {'years': {'type': 'number', 'description': 'Number of years.'}, 'principal': {'type': 'number', 'description': 'Starting amount.'}, 'annualRatePct': {'type': 'number', 'description': 'Annual growth rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Result value.'}}}
fx-convert
FX Convert
Convert an amount using a rate supplied by the caller (units of target currency per unit of source). No rate is ever looked up.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['amount', 'rate'], 'properties': {'rate': {'type': 'number', 'description': 'Rate: target units per source unit.'}, 'amount': {'type': 'number', 'description': 'Amount to convert.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Result value.'}}}
gross-rent-multiplier
Gross Rent Multiplier
Gross rent multiplier: price divided by gross annual rent.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['price', 'grossAnnualRent'], 'properties': {'price': {'type': 'number', 'description': 'Purchase price.'}, 'grossAnnualRent': {'type': 'number', 'description': 'Gross annual rent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'grm': {'type': 'number', 'description': 'Gross rent multiplier (null if rent<=0).'}}}
holding-period-return
Holding Period Return
Holding-period return: (income + capital gain) / starting value, in percent.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['income', 'endValue', 'beginValue'], 'properties': {'income': {'type': 'number', 'description': 'Income received over the period.'}, 'endValue': {'type': 'number', 'description': 'Ending value.'}, 'beginValue': {'type': 'number', 'description': 'Starting value.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'hprPct': {'type': 'number', 'description': 'Holding-period return, percent (null if begin=0).'}}}
hourly-to-salary
Hourly to Salary
Annualize an hourly rate (and the monthly equivalent).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['hourlyRate'], 'properties': {'hourlyRate': {'type': 'number', 'description': 'Hourly rate.'}, 'hoursPerWeek': {'type': 'number', 'description': 'Hours per week (default 40).'}, 'weeksPerYear': {'type': 'number', 'description': 'Weeks per year (default 52).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'annual': {'type': 'number', 'description': 'Annual salary.'}, 'monthly': {'type': 'number', 'description': 'Monthly equivalent.'}}}
inflation-adjust
Inflation Adjust
Convert a nominal amount to today's purchasing power (real), or with toNominal inflate a real amount forward, at a given annual inflation rate.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['amount', 'inflationRatePct', 'years'], 'properties': {'years': {'type': 'number', 'description': 'Number of years.'}, 'amount': {'type': 'number', 'description': 'Amount to adjust.'}, 'toNominal': {'type': 'boolean', 'description': 'false (default) deflates nominal to real; true inflates real to nominal.'}, 'inflationRatePct': {'type': 'number', 'description': 'Annual inflation rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Result value.'}}}
interest-only-payment
Interest-Only Payment
Interest-only monthly payment on a balance.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['amount', 'ratePct'], 'properties': {'amount': {'type': 'number', 'description': 'Outstanding balance.'}, 'ratePct': {'type': 'number', 'description': 'Annual rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'payment': {'type': 'number', 'description': 'Monthly interest payment.'}}}
intrinsic-time-value
Intrinsic & Time Value
Split an option premium into intrinsic value (in-the-money amount) and time value.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['spot', 'strike', 'premium'], 'properties': {'spot': {'type': 'number', 'description': 'Underlying price.'}, 'type': {'enum': ['call', 'put'], 'type': 'string', 'description': 'Option type (default call).'}, 'strike': {'type': 'number', 'description': 'Strike price.'}, 'premium': {'type': 'number', 'description': 'Option premium.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'intrinsic': {'type': 'number', 'description': 'Intrinsic value.'}, 'timeValue': {'type': 'number', 'description': 'Time value.'}}}
irr
IRR
Internal rate of return: the per-period rate that zeroes the NPV of a cashflow series. Returns a percent, or null when the series never crosses zero.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['cashflows'], 'properties': {'cashflows': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Cashflows by period, starting at period 0. Outflows are negative.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'irrPct': {'type': 'number', 'description': 'Internal rate of return, percent (null if none).'}}}
loan-apr
Loan APR
Effective APR including upfront fees: the note-rate payment priced against the net proceeds (amount - fees). Annual percent.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['amount', 'ratePct', 'termMonths'], 'properties': {'fees': {'type': 'number', 'description': 'Optional. Upfront fees / points in currency (default 0).'}, 'amount': {'type': 'number', 'description': 'Loan amount.'}, 'ratePct': {'type': 'number', 'description': 'Note (nominal) annual rate in percent.'}, 'termMonths': {'type': 'number', 'description': 'Term in months.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'aprPct': {'type': 'number', 'description': 'Effective APR, percent (null if degenerate).'}}}
loan-payoff
Loan Payoff
Time and interest saved by paying a fixed extra amount every month on a loan, versus the baseline schedule.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['amount', 'rate', 'mode', 'startDate', 'extraMonthly'], 'properties': {'mode': {'enum': ['term', 'payment'], 'type': 'string', 'description': 'Fix the term (compute the payment) or fix the payment (compute the term).'}, 'rate': {'type': 'number', 'description': 'Annual interest rate in percent (6 = 6%).'}, 'extra': {'type': 'array', 'items': {'type': 'object', 'properties': {'date': {'type': 'string', 'description': 'ISO date.'}, 'amount': {'type': 'number', 'description': 'Extra principal.'}}}, 'description': 'Optional dated extra principal payments.'}, 'amount': {'type': 'number', 'description': 'Loan principal.'}, 'payment': {'type': 'number', 'description': "Monthly payment, used when mode is 'payment'."}, 'startDate': {'type': 'string', 'description': 'First payment month as an ISO date (YYYY-MM-DD).'}, 'termYears': {'type': 'number', 'description': "Term in years, used when mode is 'term'."}, 'fixedUntil': {'type': 'string', 'description': 'Optional. Rate is certain until this ISO date; beyond it the schedule is an estimate.'}, 'extraMonthly': {'type': 'number', 'description': 'Extra principal paid each month.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'baseline': {'type': 'object', 'description': 'Baseline { months, totalInterest, payoffDate }.'}, 'accelerated': {'type': 'object', 'description': 'Accelerated { months, totalInterest, payoffDate }.'}, 'monthsSaved': {'type': 'number', 'description': 'Months saved.'}, 'interestSaved': {'type': 'number', 'description': 'Interest saved.'}}}
ltv
Loan-to-Value
Loan-to-value ratio, percent (loan / property value).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['loanAmount', 'propertyValue'], 'properties': {'loanAmount': {'type': 'number', 'description': 'Loan amount.'}, 'propertyValue': {'type': 'number', 'description': 'Property value.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ltvPct': {'type': 'number', 'description': 'Loan-to-value, percent (null if value<=0).'}}}
margin-markup
Margin & Markup
Convert between margin and markup. Supply any one of cost/price plus one of marginPct/markupPct (or both cost and price); returns cost, price, profit, marginPct, and markupPct.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {'cost': {'type': 'number', 'description': 'Unit cost.'}, 'price': {'type': 'number', 'description': 'Selling price.'}, 'marginPct': {'type': 'number', 'description': 'Profit as a percent of price.'}, 'markupPct': {'type': 'number', 'description': 'Profit as a percent of cost.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'cost': {'type': 'number', 'description': 'Cost.'}, 'price': {'type': 'number', 'description': 'Price.'}, 'profit': {'type': 'number', 'description': 'Profit.'}, 'marginPct': {'type': 'number', 'description': 'Margin, percent.'}, 'markupPct': {'type': 'number', 'description': 'Markup, percent.'}}}
max-drawdown
Max Drawdown
Maximum drawdown of a value series: the largest peak-to-trough decline, as a positive percent.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['series'], 'properties': {'series': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Sequence of values (e.g. portfolio levels).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'maxDrawdownPct': {'type': 'number', 'description': 'Largest peak-to-trough decline, percent.'}}}
mirr
MIRR
Modified internal rate of return: negatives financed at financeRate, positives reinvested at reinvestRate. Percents in and out.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['cashflows', 'financeRatePct', 'reinvestRatePct'], 'properties': {'cashflows': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Cashflows by period (index 0 today; outflows negative).'}, 'financeRatePct': {'type': 'number', 'description': 'Finance rate in percent.'}, 'reinvestRatePct': {'type': 'number', 'description': 'Reinvestment rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'mirrPct': {'type': 'number', 'description': 'Modified IRR, percent (null if degenerate).'}}}
mortgage-affordability
Mortgage Affordability
Maximum loan and home price the income supports: the DTI cap on gross monthly income (less existing debts) sets the payment, whose present value at the rate and term is the loan.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['annualIncome', 'dtiPct', 'rate', 'termYears'], 'properties': {'rate': {'type': 'number', 'description': 'Annual interest rate in percent.'}, 'dtiPct': {'type': 'number', 'description': 'Max share of gross monthly income for the payment, in percent (e.g. 36).'}, 'termYears': {'type': 'number', 'description': 'Loan term in years.'}, 'downPayment': {'type': 'number', 'description': 'Optional. Cash down payment, added to the loan for the home price (default 0).'}, 'annualIncome': {'type': 'number', 'description': 'Gross annual income.'}, 'monthlyDebts': {'type': 'number', 'description': 'Optional. Existing monthly debt payments (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'maxLoan': {'type': 'number', 'description': 'Max loan.'}, 'maxHomePrice': {'type': 'number', 'description': 'Max home price.'}, 'maxMonthlyPayment': {'type': 'number', 'description': 'Max payment.'}}}
net-worth
Net Worth
Net worth: assets minus liabilities.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['assets', 'liabilities'], 'properties': {'assets': {'type': 'number', 'description': 'Total assets.'}, 'liabilities': {'type': 'number', 'description': 'Total liabilities.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'netWorth': {'type': 'number', 'description': 'Assets minus liabilities.'}}}
noi
Net Operating Income
Net operating income: gross rental income less vacancy and operating expenses.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['grossRentalIncome', 'vacancyPct', 'operatingExpenses'], 'properties': {'vacancyPct': {'type': 'number', 'description': 'Vacancy rate in percent.'}, 'grossRentalIncome': {'type': 'number', 'description': 'Gross annual rental income.'}, 'operatingExpenses': {'type': 'number', 'description': 'Annual operating expenses.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'noi': {'type': 'number', 'description': 'Net operating income.'}}}
npv
NPV
Net present value of a cashflow series (index 0 is today; outflows negative) discounted at a per-period rate.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['cashflows', 'discountRatePct'], 'properties': {'cashflows': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Cashflows by period, starting at period 0. Outflows are negative.'}, 'discountRatePct': {'type': 'number', 'description': 'Discount rate per period in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'npv': {'type': 'number', 'description': 'Net present value.'}}}
option-breakeven
Option Break-Even
Break-even underlying price at expiry: strike + premium for a call, strike - premium for a put.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['strike', 'premium'], 'properties': {'type': {'enum': ['call', 'put'], 'type': 'string', 'description': 'Option type (default call).'}, 'strike': {'type': 'number', 'description': 'Strike price.'}, 'premium': {'type': 'number', 'description': 'Option premium paid.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'breakeven': {'type': 'number', 'description': 'Break-even underlying price.'}}}
option-greeks
Option Greeks
Black-Scholes greeks for a European option: delta, gamma, vega (per 1% vol), theta (per day), rho (per 1% rate).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['spot', 'strike', 'years', 'volatilityPct', 'riskFreePct'], 'properties': {'spot': {'type': 'number', 'description': 'Current underlying price.'}, 'type': {'enum': ['call', 'put'], 'type': 'string', 'description': 'Option type (default call).'}, 'years': {'type': 'number', 'description': 'Time to expiry in years.'}, 'strike': {'type': 'number', 'description': 'Strike price.'}, 'riskFreePct': {'type': 'number', 'description': 'Risk-free rate in percent.'}, 'volatilityPct': {'type': 'number', 'description': 'Annualized volatility in percent.'}, 'dividendYieldPct': {'type': 'number', 'description': 'Continuous dividend yield in percent (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'rho': {'type': 'number', 'description': 'Rho per 1% rate.'}, 'vega': {'type': 'number', 'description': 'Vega per 1% vol.'}, 'delta': {'type': 'number', 'description': 'Delta.'}, 'gamma': {'type': 'number', 'description': 'Gamma.'}, 'theta': {'type': 'number', 'description': 'Theta per day.'}}}
payback-period
Payback Period
Simple payback period: periods until cumulative cashflows recover the initial cost, interpolated within the crossing period. Null if never.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['initialCost', 'cashflows'], 'properties': {'cashflows': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Inflow each period.'}, 'initialCost': {'type': 'number', 'description': 'Upfront cost.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'years': {'type': 'number', 'description': 'Payback in periods (null if never).'}}}
percentage-change
Percentage Change
Percentage change from one value to another. Null when the starting value is zero.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'number', 'description': 'Ending value.'}, 'from': {'type': 'number', 'description': 'Starting value.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'changePct': {'type': 'number', 'description': 'Percentage change (null if from=0).'}}}
perpetuity
Perpetuity
Present value of a level or growing perpetuity: payment / (rate - growth). Null when growth is not below the rate.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['payment', 'ratePct'], 'properties': {'payment': {'type': 'number', 'description': 'Periodic payment.'}, 'ratePct': {'type': 'number', 'description': 'Discount rate in percent.'}, 'growthPct': {'type': 'number', 'description': 'Optional. Payment growth rate in percent (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'pv': {'type': 'number', 'description': 'Present value (null if growth>=rate).'}}}
points-breakeven
Points Break-Even
Mortgage points break-even: the upfront cost to buy down the rate, the monthly payment saving, and the whole months to recoup it.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['loanAmount', 'ratePct', 'termMonths', 'pointsPct', 'reducedRatePct'], 'properties': {'ratePct': {'type': 'number', 'description': 'Base annual rate in percent.'}, 'pointsPct': {'type': 'number', 'description': 'Points paid, percent of the loan.'}, 'loanAmount': {'type': 'number', 'description': 'Loan amount.'}, 'termMonths': {'type': 'number', 'description': 'Term in months.'}, 'reducedRatePct': {'type': 'number', 'description': 'Reduced annual rate after buying points.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'cost': {'type': 'number', 'description': 'Upfront cost of points.'}, 'monthlySaving': {'type': 'number', 'description': 'Monthly payment saving.'}, 'breakevenMonths': {'type': 'number', 'description': 'Whole months to recoup (null if no saving).'}}}
portfolio-longevity
Portfolio Longevity
How many years a balance lasts while withdrawing from it: the balance grows each year, then the withdrawal (optionally stepping up) is taken. Returns the depletion year, or sustainable=true when it outlasts 200 years.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['balance', 'annualWithdrawal', 'annualRatePct'], 'properties': {'balance': {'type': 'number', 'description': 'Starting balance.'}, 'annualRatePct': {'type': 'number', 'description': 'Annual portfolio growth in percent.'}, 'annualWithdrawal': {'type': 'number', 'description': 'Amount withdrawn in the first year.'}, 'withdrawalGrowthPct': {'type': 'number', 'description': 'Optional. Yearly step-up of the withdrawal in percent (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'years': {'type': 'number', 'description': 'Depletion year (null if sustainable).'}, 'sustainable': {'type': 'boolean', 'description': 'True if it outlasts 200 years.'}}}
present-value
Present Value
Present value of a single future amount discounted annually. The inverse of future-value.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['futureAmount', 'annualRatePct', 'years'], 'properties': {'years': {'type': 'number', 'description': 'Number of years until the amount is received.'}, 'futureAmount': {'type': 'number', 'description': 'Amount received in the future.'}, 'annualRatePct': {'type': 'number', 'description': 'Annual discount rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'pv': {'type': 'number', 'description': 'Present value.'}}}
put-call-parity
Put-Call Parity
Put-call parity: given one option price, returns both. Provide call or put, plus spot, strike, years, and the rate.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['spot', 'strike', 'years', 'riskFreePct'], 'properties': {'put': {'type': 'number', 'description': 'Put price (provide call or put).'}, 'call': {'type': 'number', 'description': 'Call price (provide call or put).'}, 'spot': {'type': 'number', 'description': 'Underlying price.'}, 'years': {'type': 'number', 'description': 'Time to expiry in years.'}, 'strike': {'type': 'number', 'description': 'Strike price.'}, 'riskFreePct': {'type': 'number', 'description': 'Risk-free rate in percent.'}, 'dividendYieldPct': {'type': 'number', 'description': 'Continuous dividend yield in percent (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'put': {'type': 'number', 'description': 'Put price.'}, 'call': {'type': 'number', 'description': 'Call price.'}}}
quick-ratio
Quick Ratio
Quick (acid-test) ratio: (current assets - inventory) over current liabilities.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['currentAssets', 'inventory', 'currentLiabilities'], 'properties': {'inventory': {'type': 'number', 'description': 'Inventory.'}, 'currentAssets': {'type': 'number', 'description': 'Current assets.'}, 'currentLiabilities': {'type': 'number', 'description': 'Current liabilities.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'quickRatio': {'type': 'number', 'description': 'Quick ratio (null if liabilities<=0).'}}}
real-return
Real Return
Real (inflation-adjusted) return from a nominal rate via the Fisher relation: (1+nominal)/(1+inflation) - 1.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['nominalRatePct', 'inflationRatePct'], 'properties': {'nominalRatePct': {'type': 'number', 'description': 'Nominal annual rate in percent.'}, 'inflationRatePct': {'type': 'number', 'description': 'Annual inflation in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'realPct': {'type': 'number', 'description': 'Real return, percent.'}}}
refi-breakeven
Refinance Break-Even
Refinance break-even: monthly saving, whole months to recoup closing costs, and (if remainingMonths given) the net saving over the remaining term.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['closingCosts', 'currentPayment', 'newPayment'], 'properties': {'newPayment': {'type': 'number', 'description': 'New monthly payment after refinancing.'}, 'closingCosts': {'type': 'number', 'description': 'Upfront cost to refinance.'}, 'currentPayment': {'type': 'number', 'description': 'Current monthly payment.'}, 'remainingMonths': {'type': 'number', 'description': 'Optional. Months left on the loan, for the lifetime saving.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'monthlySaving': {'type': 'number', 'description': 'Monthly saving.'}, 'lifetimeSaving': {'type': 'number', 'description': 'Net lifetime saving (null if no term).'}, 'breakevenMonths': {'type': 'number', 'description': 'Whole months to recoup (null if no saving).'}}}
required-contribution
Required Contribution
Inverse of contributions: the fixed monthly amount needed to reach a target future value over a number of months, given an optional starting balance.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['targetValue', 'annualRatePct', 'months'], 'properties': {'months': {'type': 'number', 'description': 'Number of months.'}, 'targetValue': {'type': 'number', 'description': 'Future value goal.'}, 'presentValue': {'type': 'number', 'description': 'Optional. Starting balance (default 0).'}, 'annualRatePct': {'type': 'number', 'description': 'Annual growth rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'monthly': {'type': 'number', 'description': 'Monthly contribution needed (null if horizon<=0).'}}}
required-return
Required Return
Annual return needed to grow a starting value to a target over a number of years, optionally with a fixed annual contribution. With no contribution this equals CAGR. Returns a percent, or null when unreachable.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['begin', 'end', 'years'], 'properties': {'end': {'type': 'number', 'description': 'Target ending value.'}, 'begin': {'type': 'number', 'description': 'Starting value.'}, 'years': {'type': 'number', 'description': 'Number of years.'}, 'annualContribution': {'type': 'number', 'description': 'Optional. Amount added each year (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ratePct': {'type': 'number', 'description': 'Annual rate, percent (null if unreachable).'}}}
return-stats
Return Statistics
Mean, sample variance, and sample standard deviation (n-1) of a series of returns. Pass percents to get a percent stdev (volatility).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['returns'], 'properties': {'returns': {'type': 'array', 'items': {'type': 'number'}, 'description': 'The return series (e.g. yearly percents).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'mean': {'type': 'number', 'description': 'Mean return.'}, 'count': {'type': 'number', 'description': 'Number of returns.'}, 'stdev': {'type': 'number', 'description': 'Sample stdev / volatility (null if <2).'}, 'variance': {'type': 'number', 'description': 'Sample variance (null if <2).'}}}
roa
Return on Assets
Return on assets, percent: net income over total assets.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['netIncome', 'totalAssets'], 'properties': {'netIncome': {'type': 'number', 'description': 'Net income.'}, 'totalAssets': {'type': 'number', 'description': 'Total assets.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'roaPct': {'type': 'number', 'description': 'Return on assets, percent (null if assets<=0).'}}}
roe
Return on Equity
Return on equity, percent: net income over shareholders' equity.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['netIncome', 'equity'], 'properties': {'equity': {'type': 'number', 'description': "Shareholders' equity."}, 'netIncome': {'type': 'number', 'description': 'Net income.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'roePct': {'type': 'number', 'description': 'Return on equity, percent (null if equity<=0).'}}}
roi
ROI
Return on investment: total percent gain, plus the annualized rate when a holding period in years is given.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['initial', 'finalValue'], 'properties': {'years': {'type': 'number', 'description': 'Optional. Holding period in years, for the annualized rate.'}, 'initial': {'type': 'number', 'description': 'Amount invested.'}, 'finalValue': {'type': 'number', 'description': 'Ending value.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'roiPct': {'type': 'number', 'description': 'Total return, percent.'}, 'annualizedPct': {'type': 'number', 'description': 'Annualized return, percent (null if no years).'}}}
rule-of-72
Rule of 72
Years to double: the rule-of-72 estimate (72/rate) and the exact figure (ln2 / ln(1+rate)).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['ratePct'], 'properties': {'ratePct': {'type': 'number', 'description': 'Growth rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'years72': {'type': 'number', 'description': '72/rate estimate.'}, 'exactYears': {'type': 'number', 'description': 'Exact doubling time.'}}}
salary-to-hourly
Salary to Hourly
Hourly rate implied by an annual salary.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['annualSalary'], 'properties': {'annualSalary': {'type': 'number', 'description': 'Annual salary.'}, 'hoursPerWeek': {'type': 'number', 'description': 'Hours per week (default 40).'}, 'weeksPerYear': {'type': 'number', 'description': 'Weeks per year (default 52).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'hourly': {'type': 'number', 'description': 'Hourly rate (null if hours<=0).'}}}
savings-rate
Savings Rate
Fraction of income saved (savings divided by income). Returns a decimal.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['income', 'savings'], 'properties': {'income': {'type': 'number', 'description': 'Income.'}, 'savings': {'type': 'number', 'description': 'Amount saved.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Result value.'}}}
sharpe-ratio
Sharpe Ratio
Sharpe ratio: excess mean return per unit of volatility, (mean - riskFree) / stdev. Null when volatility is undefined or zero.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['returns'], 'properties': {'returns': {'type': 'array', 'items': {'type': 'number'}, 'description': 'The return series (percents).'}, 'riskFreePct': {'type': 'number', 'description': 'Risk-free rate in the same unit (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'sharpe': {'type': 'number', 'description': 'Sharpe ratio (null if no volatility).'}, 'meanPct': {'type': 'number', 'description': 'Mean return.'}, 'stdevPct': {'type': 'number', 'description': 'Volatility.'}}}
straight-line-depreciation
Straight-Line Depreciation
Straight-line depreciation: value falling evenly to a salvage value over a useful life.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['value', 'salvage', 'usefulYears', 'yearsElapsed'], 'properties': {'value': {'type': 'number', 'description': 'Starting value.'}, 'salvage': {'type': 'number', 'description': 'Salvage value.'}, 'usefulYears': {'type': 'number', 'description': 'Useful life in years.'}, 'yearsElapsed': {'type': 'number', 'description': 'Years elapsed.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Result value.'}}}
successive-discounts
Successive Discounts
Stacked discounts applied in order: the final price and the effective single discount rate.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['price', 'discountsPct'], 'properties': {'price': {'type': 'number', 'description': 'Original price.'}, 'discountsPct': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Discounts in percent, applied in order.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'finalPrice': {'type': 'number', 'description': 'Final price.'}, 'effectivePct': {'type': 'number', 'description': 'Effective single discount, percent (null if price=0).'}}}
sum-of-years-digits
Sum-of-Years' Digits Depreciation
Sum-of-the-years'-digits depreciation: the depreciable base weighted toward the early years.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['value', 'salvage', 'usefulYears', 'year'], 'properties': {'year': {'type': 'number', 'description': 'Year (1-based).'}, 'value': {'type': 'number', 'description': 'Initial cost.'}, 'salvage': {'type': 'number', 'description': 'Salvage value.'}, 'usefulYears': {'type': 'number', 'description': 'Useful life in years.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'bookValue': {'type': 'number', 'description': 'Book value at year end.'}, 'depreciation': {'type': 'number', 'description': 'Depreciation this year.'}}}
tax-equivalent-yield
Tax-Equivalent Yield
Tax-equivalent yield: the taxable yield that matches a tax-free (e.g. muni) yield. Percents in and out.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['taxFreeYieldPct', 'taxRatePct'], 'properties': {'taxRatePct': {'type': 'number', 'description': 'Marginal tax rate in percent.'}, 'taxFreeYieldPct': {'type': 'number', 'description': 'Tax-free yield in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'taxEquivalentPct': {'type': 'number', 'description': 'Tax-equivalent yield, percent (null if tax>=100%).'}}}
tax-from-brackets
Tax from Brackets
Progressive tax from caller-supplied brackets. No jurisdiction, year, or rates are baked in: pass the brackets yourself. Returns total tax, effective rate, and marginal rate.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['income', 'brackets'], 'properties': {'income': {'type': 'number', 'description': 'Taxable income.'}, 'brackets': {'type': 'array', 'items': {'type': 'object', 'required': ['ratePct'], 'properties': {'upTo': {'type': 'number', 'description': 'Upper bound of this band (omit on the top band).'}, 'ratePct': {'type': 'number', 'description': 'Marginal rate for this band in percent.'}}}, 'description': 'Ordered tax bands. The final band may omit upTo to run to infinity.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'tax': {'type': 'number', 'description': 'Total tax.'}, 'marginalRatePct': {'type': 'number', 'description': 'Marginal rate, percent.'}, 'effectiveRatePct': {'type': 'number', 'description': 'Effective rate, percent.'}}}
tip-split
Tip Split
Tip and split: the tip amount, the total, and the per-person share.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['billAmount', 'tipPct'], 'properties': {'people': {'type': 'number', 'description': 'Number of people (default 1).'}, 'tipPct': {'type': 'number', 'description': 'Tip in percent.'}, 'billAmount': {'type': 'number', 'description': 'Bill amount.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'tip': {'type': 'number', 'description': 'Tip amount.'}, 'total': {'type': 'number', 'description': 'Total with tip.'}, 'perPerson': {'type': 'number', 'description': 'Per-person share.'}}}
unit-price
Unit Price
Unit price: price divided by quantity (for comparing pack sizes). Null when quantity is zero.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['price', 'quantity'], 'properties': {'price': {'type': 'number', 'description': 'Price.'}, 'quantity': {'type': 'number', 'description': 'Quantity / size.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'unitPrice': {'type': 'number', 'description': 'Price per unit (null if quantity=0).'}}}
units-of-production-depreciation
Units-of-Production Depreciation
Units-of-production depreciation: the depreciable base spread over total expected units, charged by the units used this period.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['value', 'salvage', 'totalUnits', 'unitsThisPeriod'], 'properties': {'value': {'type': 'number', 'description': 'Initial cost.'}, 'salvage': {'type': 'number', 'description': 'Salvage value.'}, 'totalUnits': {'type': 'number', 'description': 'Total expected units over the life.'}, 'unitsThisPeriod': {'type': 'number', 'description': 'Units produced this period.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'depreciation': {'type': 'number', 'description': 'Depreciation this period (null if totalUnits<=0).'}}}
vat
VAT
Value-added tax (MwSt/USt, sales tax) on a price. By default adds the tax to a net price; with inclusive=true treats the amount as gross and extracts the tax. The rate is always an input (19 or 7 for Germany, etc.).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['amount', 'ratePct'], 'properties': {'amount': {'type': 'number', 'description': 'The price.'}, 'ratePct': {'type': 'number', 'description': 'VAT rate in percent (e.g. 19 or 7).'}, 'inclusive': {'type': 'boolean', 'description': 'false (default): amount is net, add the tax. true: amount is gross, extract the tax.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'net': {'type': 'number', 'description': 'Net price.'}, 'tax': {'type': 'number', 'description': 'Tax amount.'}, 'gross': {'type': 'number', 'description': 'Gross price.'}}}
wacc
WACC
Weighted average cost of capital: equity and after-tax debt weighted by the capital structure. Percents in and out.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['equity', 'debt', 'costEquityPct', 'costDebtPct', 'taxRatePct'], 'properties': {'debt': {'type': 'number', 'description': 'Market value of debt.'}, 'equity': {'type': 'number', 'description': 'Market value of equity.'}, 'taxRatePct': {'type': 'number', 'description': 'Tax rate in percent.'}, 'costDebtPct': {'type': 'number', 'description': 'Cost of debt in percent.'}, 'costEquityPct': {'type': 'number', 'description': 'Cost of equity in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'waccPct': {'type': 'number', 'description': 'WACC, percent (null if no capital).'}}}
xirr
XIRR
Date-aware internal rate of return: the annual rate that zeroes the XNPV of irregular dated cashflows. Null if no rate fits.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['cashflows'], 'properties': {'cashflows': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'amount'], 'properties': {'date': {'type': 'string', 'description': 'ISO date.'}, 'amount': {'type': 'number', 'description': 'Cashflow amount (outflows negative).'}}}, 'description': 'Dated cashflows; the first date is the valuation date.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'xirrPct': {'type': 'number', 'description': 'Date-aware IRR, percent (null if none).'}}}
xnpv
XNPV
Date-aware net present value: each amount discounted by its fractional years (act/365) from the first cashflow's date. Annual rate in percent.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['cashflows', 'annualRatePct'], 'properties': {'cashflows': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'amount'], 'properties': {'date': {'type': 'string', 'description': 'ISO date.'}, 'amount': {'type': 'number', 'description': 'Cashflow amount (outflows negative).'}}}, 'description': 'Dated cashflows; the first date is the valuation date.'}, 'annualRatePct': {'type': 'number', 'description': 'Annual discount rate in percent.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'npv': {'type': 'number', 'description': 'Date-aware net present value.'}}}
yield-to-maturity
Yield to Maturity
Bond yield to maturity: the nominal annual yield that prices a bond at the given price, with periodic coupons and face returned at maturity. Solved numerically. Returns a percent, or null.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['price', 'faceValue', 'couponRatePct', 'years'], 'properties': {'price': {'type': 'number', 'description': 'Current bond price.'}, 'years': {'type': 'number', 'description': 'Years to maturity.'}, 'faceValue': {'type': 'number', 'description': 'Face (par) value repaid at maturity.'}, 'couponRatePct': {'type': 'number', 'description': 'Annual coupon rate in percent of face.'}, 'periodsPerYear': {'type': 'number', 'description': 'Coupon periods per year (default 2 = semiannual).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'yieldPct': {'type': 'number', 'description': 'Nominal annual yield, percent (null if none).'}}}
zero-coupon-price
Zero-Coupon Price
Price of a zero-coupon bond: face value discounted to today at the yield.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['faceValue', 'years', 'yieldPct'], 'properties': {'years': {'type': 'number', 'description': 'Years to maturity.'}, 'yieldPct': {'type': 'number', 'description': 'Annual yield in percent.'}, 'faceValue': {'type': 'number', 'description': 'Face value.'}, 'compoundingPerYear': {'type': 'number', 'description': 'Compounding periods per year (default 1).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'price': {'type': 'number', 'description': 'Zero-coupon price.'}}}
추가됨
barista-fire
2026년 9월 17일 12:53 PM
추가됨
coast-fire
2026년 9월 17일 12:53 PM
추가됨
tax-equivalent-yield
2026년 9월 17일 12:53 PM
추가됨
after-tax-yield
2026년 9월 17일 12:53 PM
추가됨
salary-to-hourly
2026년 9월 17일 12:53 PM
추가됨
hourly-to-salary
2026년 9월 17일 12:53 PM
추가됨
unit-price
2026년 9월 17일 12:53 PM
추가됨
percentage-change
2026년 9월 17일 12:53 PM
추가됨
successive-discounts
2026년 9월 17일 12:53 PM
추가됨
discount
2026년 9월 17일 12:53 PM
추가됨
tip-split
2026년 9월 17일 12:53 PM
추가됨
budget-50-30-20
2026년 9월 17일 12:53 PM
추가됨
net-worth
2026년 9월 17일 12:53 PM
추가됨
units-of-production-depreciation
2026년 9월 17일 12:53 PM
추가됨
sum-of-years-digits
2026년 9월 17일 12:53 PM
추가됨
double-declining-depreciation
2026년 9월 17일 12:53 PM
추가됨
declining-balance-depreciation
2026년 9월 17일 12:53 PM
추가됨
roa
2026년 9월 17일 12:53 PM
추가됨
roe
2026년 9월 17일 12:53 PM
추가됨
quick-ratio
2026년 9월 17일 12:53 PM
추가됨
current-ratio
2026년 9월 17일 12:53 PM
추가됨
contribution-margin
2026년 9월 17일 12:53 PM
추가됨
break-even-units
2026년 9월 17일 12:53 PM
추가됨
wacc
2026년 9월 17일 12:53 PM
추가됨
dscr
2026년 9월 17일 12:53 PM
추가됨
gross-rent-multiplier
2026년 9월 17일 12:53 PM
추가됨
noi
2026년 9월 17일 12:53 PM
추가됨
cash-on-cash
2026년 9월 17일 12:53 PM
추가됨
cap-rate
2026년 9월 17일 12:53 PM
추가됨
biweekly-payoff
2026년 9월 17일 12:53 PM