Guide · 11

Finance

A real time-value-of-money calculator. Annual rate, payments per year, compounding-per-year, and continuous compounding — first-class, deparse-round-trippable, and a tap-to-edit card that solves for any variable.

Two ways in

The TVM tile. Swipe left on the page-dots strip (or on the REPL area above the keypad) to reach Page 3, then tap the TVM tile under Finance. A blank TVM card opens with the HP-12C defaults — P/Y = 12, end-of-period payments, no values filled in. Fill the rows, pick a variable in the segmented Solve for control at the bottom, and the answer lands in the solved-row badge. When you dismiss the sheet the solved TVM sits on the stack as a single card.

See the Card calcs page for the general anatomy of a card — field editing and the solve-for picker work the same way on TVM as they do on RunPace or Pizza Dough. TVM’s rows are plain numbers, so unlike RunPace or Pizza Dough there are no unit chips.

From the REPL. TVM on its own pushes a fresh time-value-of-money object onto the stack:

TVM
1: TVM[n:0 i:0 pv:0 pmt:0 fv:0 end P/Y:12]

Tap the card to open the same detail sheet you’d have gotten from the tile.

The eight knobs

A TVM holds eight independent settings. The five solvers tell the engine which of the numeric five to compute from the others:

VariableMeaning
NNumber of payment periods
I%YRAnnual interest rate, percent
PVPresent value (money in your hand at the start; negative if borrowed)
PMTPayment per period (negative for outflows)
FVFuture value
BEG / ENDWhether payments fall at the start or end of each period
P/YPayments per year
C/YCompounding periods per year (or Same as P/Y / Continuous)

The I%YR naming mirrors the HP-28S / HP-48 labeling — the rate is annual, not per-period. The engine derives the period rate from I%YR, P/Y, and C/Y whenever it needs to.

Solving for a variable

The classic mortgage problem. $300,000 loan, 30 years, 5% annual, monthly payments.

Card path. Open the TVM tile. Type 360 in the N row, 5 in the I%YR row, -300000 in the PV row, leave FV at 0, and pick Solve PMT in the segmented control. The output banner shows the monthly payment, and PMT gets a small ● solved badge on its row.

REPL path. Same problem, faster once you know the words:

TVM
360 TVM-N
5 TVM-I%YR
-300000 TVM-PV
0 TVM-FV
SOLVE-PMT
1: TVM[n:360 i:5 pv:-300000 pmt:1610.46 fv:0 end P/Y:12]

The result deparses back to itself losslessly:

360. 5. -300000. 0. 0. FALSE 12. 0. ->TVM SOLVE-PMT

You can copy that fragment, paste it into another session (or share it with a collaborator), and reconstruct the exact same TVM state.

Annual rate, period math

The engine stores I%YR as annual percent. The math derives the per-period rate from I%YR, P/Y, and C/Y. When C/Y tracks P/Y — the default — the formula collapses to the textbook HP-12C identity:

rperiod=I%YR/100P/Yr_{\text{period}} = \frac{I\%YR / 100}{P/Y}

When C/Y ≠ P/Y — daily compounding on a monthly-pay loan, say — the engine uses the standard nominal-compounding conversion:

rperiod=(1+I%YR/100C/Y)C/Y/P/Y−1r_{\text{period}} = \left(1 + \frac{I\%YR / 100}{C/Y}\right)^{C/Y / P/Y} - 1

And under continuous compounding the limit:

rperiod=e(I%YR/100)/P/Y−1r_{\text{period}} = e^{(I\%YR / 100) / P/Y} - 1

All three branches share the same rate(t) helper inside the engine, so every solver (SOLVE-N, SOLVE-FV, …) and AMORT pick up the compounding mode automatically. The continuous-rate derivation cross-checks against the engine’s separate CONT->EFF word to identical bits — two independent paths, the same answer to the last digit.

Daily-compounded mortgage

Same $300,000 / 30-yr / 5% APR loan, but daily compounding:

TVM
360 TVM-N
5 TVM-I%YR
-300000 TVM-PV
0 TVM-FV
365 TVM-C/Y
SOLVE-PMT

The payment is slightly higher than the monthly-compounded case — daily compounding bites a little. HP-12C doesn’t support this; HP-17B’s Other Periods mode does. Here it’s two taps in the detail card.

Cashflows: NPV and IRR

Discount a cash-flow stream at a known rate:

[ -1000 200 300 400 500 ] 8 NPV

…or recover the rate that makes the NPV zero:

[ -1000 200 300 400 500 ] IRR

Both work on a vector of cashflows where the first entry is the period-0 outflow (typically negative). NPV takes the rate as a percent per period; IRR returns one in the same units.

Amortization

AMORT walks a solved TVM through its schedule and pushes a structured object with per-period interest, principal, balance, plus the totals:

TVM
360 TVM-N  5 TVM-I%YR  -300000 TVM-PV  0 TVM-FV  SOLVE-PMT
AMORT

The amortization object lives on the stack alongside the TVM; tap it to see the full table.

Amortization detail sheet for the 30-year mortgage
Every period's interest, principal, and remaining balance — plus totals — as one stack value.

Rate conversions

The standard nominal ↔ effective conversions, useful for translating quoted rates between conventions:

WordDirection
NOM->EFFnominal annual % + periods → effective annual %
EFF->NOMeffective annual % + periods → nominal annual %
CONT->EFFcontinuous nominal % → effective annual %
EFF->CONTeffective annual % → continuous nominal %
REAL->NOMreal annual % + inflation % → nominal annual %
NOM->REALnominal annual % + inflation % → real annual %

When the TVM C/Y matches the rate’s compounding convention, you don’t need the nominal/effective pair — the engine handles the math internally. The real/nominal pair is for stripping or adding an inflation adjustment. They’re all here for cases where the quoted rate doesn’t match how you want to model the cashflow.

Depreciation, inflation, percent change

A handful of one-shot utilities:

  • DEP-SL / DEP-DB / DEP-SOYD — straight-line, declining-balance, sum-of-years-digits depreciation schedules
  • CPI — US CPI-U annual index lookup
  • INFL-ADJUST — adjust a dollar amount between two years by CPI
  • %, %CHG, %T — percentage of base, percent change, percent of total
  • MU-COST, MU-PRICE — markup on cost vs markup on price

The 19 top-level financial words are in the reference. The TVM-* and SOLVE-* words that back the card live in a hidden .finance category — you can type them at the REPL, but they don’t show up in the tabs.

What’s different from HP-12C

FeatureHP-12CRP42
TVM solversYes (5)Yes (5), same names + SOLVE-I%YR
Default P/YR1212
BEG / ENDYesYes (TVM-BEGIN / TVM-END)
Continuous compoundingNoYes (TVM-C/Y-CONTINUOUS)
C/Y ≠ P/YNoYes (TVM-C/Y)
Deparse round-trip—Lossless
Tap-to-edit detail card—Yes
Cashflows + NPV + IRRYes (CFj)Yes (vectors + NPV / IRR)
AMORTYes (per-batch)Yes (full schedule object)

If you live in the HP-12C, you’ll be at home immediately and you’ll have a few new doors to walk through.

Contact

Send us a message — we'll reply by email.