TimeValue[s,i,t]
calculates the time value of a security s at time t for an interest specified by i.
TimeValue
TimeValue[s,i,t]
calculates the time value of a security s at time t for an interest specified by i.
Details and Options
- TimeValue[a, i, t] for a simple amount a and a positive time value t gives the future or accumulated value of a for an effective interest rate i at the time t. »
- TimeValue[a, i, t] for a simple amount a and a negative time value t gives the present or discounted value of a for an effective interest rate i. »
- TimeValue works with arbitrary numeric or symbolic expressions. Symbolic formulas returned by TimeValue can be solved for interest rates, payments or time periods using built-in functions such as Solve and FindRoot.
- The security s can have the following additional forms and interpretations:
-
Annuity series of payments at the end of periods » AnnuityDue series of payments at the beginning of periods Cashflow stream of cashflow » - TimeValue[Annuity[…],interest,t] computes the time value of an annuity as a single equivalent payment at time t. Possible annuity calculations include mortgage valuation, bond pricing and payment or yield computations.
- TimeValue[Cashflow[…],interest,t] computes the time value of a cash flow as a single equivalent payment at time t. Possible cash flow calculations include net present value, discounted cash flow and internal rate of return.
- TimeValue[s,i,{t,t1}] computes the time value accumulated or discounted from time t1 to t using interest i. Time t1 serves as a reference point for cash flow occurrences. »
- TimeValue[s,i] is equivalent to TimeValue[s,i,0].
- TimeValue[…,t] is equivalent to TimeValue[…,{t,0}].
- In TimeValue[s,i,t], the interest i can be specified in the following forms:
-
r effective interest rate {r1,r2,…} schedule of rates applied over unit time intervals » {{t1,r1},{t2,r2},…} schedule of rates changing at the specified time » {p1->r1,p2->r2,…} term structure of effective interest rates » function force of interest, given as a function of time » EffectiveInterest[…] an EffectiveInterest object » - TimeValue[s,EffectiveInterest[r,1/n],t] uses a nominal interest rate r, compounded n times per unit period. If times are specified as concrete dates, all interest rates are assumed to be annual rates.
- TimeValue[s,{r1,r2,…},…] gives the time value of an asset s for an interest rate schedule {r1,r2,…}, where the ri are interest rates for consecutive unit periods.
- {r0,{t1,r1},{t2,r2},…} specifies an interest rate in effect before time t1. This is equivalent to {{-Infinity,r0},{t1,r1},{t2,r2},…}.
- TimeValue[security,{r1,r2,…},t] is equivalent to TimeValue[security,{{0,r1},{1,r2},…},t].
- TimeValue[a,f,{t,t1}] gives the time value of the simple amount a based on the force of interest function f, which corresponds to the growth or decay process given by
. - A force of interest specification can be used with any security type.
- The following options can be given:
-
Assumptions $Assumptions assumptions made about parameters GenerateConditions False whether to generate conditions on parameters
Examples
open all close allBasic Examples (4)
Future value of $1000 at an effective interest rate of 5% after 3 compounding periods:
TimeValue[1000, 0.05, 3]Present value of $1000 at the same interest rate of 5% after 3 compounding periods:
TimeValue[1000, 0.05, -3]Present value at 6% of a 12-period annuity with payments of $100:
TimeValue[Annuity[100, 12], .06]Future value at 6% of a series of cash flows occurring at regular intervals:
TimeValue[Cashflow[{0, 100, 200, 450, 300, 580}], .06, 7]Present value of an amount paid at time 10 using a term structure of interest rates:
TimeValue[1000, {1 -> .02, 2 -> .025, 5 -> .04, 10 -> .055}, {0, 10}]Scope (20)
Future value of $1000 using a nominal rate of 5% with quarterly compounding:
TimeValue[1000, EffectiveInterest[.05, 1 / 4], 10]Symbolic time value computations:
TimeValue[amount, rate, periods]Time value computation using a rate schedule:
TimeValue[am, {r1, r2, r3, r4, r5}, 5]Present value using a schedule of rates effective at the specified times:
TimeValue[1000, {{-4, .04}, {-3, .05}, {-2, .06}, {-1, .07}}, -4]Future value using a schedule of rates over irregular time intervals:
TimeValue[1000, {{0, .05}, {3, .06}, {7, .07}}, 10]Time value based on a force of interest function:
TimeValue[am, (1/(a + b#)^2)&, n]TimeValue[Cashflow[{100, 200, 200, 350, 500}], .07, 10]A symbolic cash flow computation:
TimeValue[Cashflow[{c1, c2, c3, c4}], r, t]TimeValue[Annuity[100, 10], .05, 0]A symbolic annuity calculation:
TimeValue[Annuity[pmt, n, 1 / f], r, t]Number of periods required to grow $1000 to $3000 at a 6% interest rate:
Reduce[TimeValue[1000, 6 / 100, n] == 3000, n, Reals]N[%]Symbolic solution for the number of periods:
Solve[TimeValue[amount, rate, n] == presentvalue, n]FindRoot[ TimeValue[1000, r, 10] == 3000, {r, .05}]Solve an annuity calculation for the payment amount:
Solve[TimeValue[Annuity[payment, n, 1 / f], r, n] == val, payment]Compute the future value after three time periods using a force of interest
:
TimeValue[1000, (1/(1 + #)^2)&, 3]An annuity with a continuous payment flow can be coupled with a force of interest specification:
TimeValue[Annuity[Sqrt[#]&, n, 0], (1/1 + #)&, n]Future value in three years' time of $1000 invested on January 1, 2010, at 7.5%:
TimeValue[1000, .075, {{2013, 1, 1}, {2010, 1, 1}}]Hours, minutes, and seconds can be given in date specifications:
TimeValue[1000, .075, {{2013, 1, 1, 20, 33, 1}, {2010, 1, 1, 2, 1, 1}}]Future value after 5 periods using a schedule of rates over unit time intervals:
TimeValue[amount, {.04, .05, .06, .07, .08}, 5]Rates can be given as a TimeSeries:
ts = TimeSeries[{.04, .05, .06, .07, .08}]TimeValue[amount, ts, 5]Options (2)
Assumptions (1)
Applications (15)
Find the amount that must be invested at a rate of 9% per year in order to accumulate $1000 at the end of 3 years:
Solve[TimeValue[amount, .09, 3] == 1000, amount]Find the accumulated value of $5000 over 5 years at 8% compounded quarterly:
TimeValue[5000, EffectiveInterest[.08, 1 / 4], 5]Find how much time it will take $1000 to accumulate to $1500 if invested at 6%, compounded semiannually:
Reduce[TimeValue[1000, EffectiveInterest[6 / 100, 1 / 2], t] == 1500, t, Reals]N[%]Find the future value of 1 at the end of n years if the force of interest is
, where t is time:
TimeValue[1, (1/1 + #)&, n]Find an expression for the accumulated value of $1000 at the end of 15 years if the effective interest rate is r1 for the first 5 years, r2 for the second 5 years, and r3 for the third 5 years:
TimeValue[1000, {{0, r1}, {5, r2}, {10, r3}}, 15]If you invest $1000 at 8% per year compounded quarterly, find how much can be withdrawn at the end of every quarter to use up the fund exactly at the end of 10 years:
Solve[TimeValue[Annuity[{wd, {-1000}}, 10, 1 / 4], EffectiveInterest[.08, 1 / 4], 10] == 0, wd]Find the rate, compounded quarterly, at which $16000 is the present value of a $1000 payment paid at the end of every quarter for 5 years:
FindRoot[TimeValue[Annuity[1000, 5, 1 / 4], EffectiveInterest[r, 1 / 4], 0] == 16000 , {r, .05}]Find the accumulated value of a 10-year annuity of $100 per year if the effective rate of interest is 5% for the first 6 years and 4% for the last 4 years:
TimeValue[Annuity[100, 10], {{0, .05}, {6, .04}}, 10]Find the net present value of a $1000 initial investment producing future incoming cash flows:
TimeValue[Cashflow[{-1000, 100, 200, 300, 400, 500}], .07, 0]Find the internal rate of return of an investment with regular cash flows:
FindRoot[TimeValue[Cashflow[{-1000, 100, 200, 300, 400, 500}], r, 0] == 0, {r, .05}]In return for receiving $600 at the end of 8 years, a person pays $100 immediately, $200 at the end of 5 years, and a final payment at the end of 10 years. Find the final payment amount that will make the rate of return on the investment equal to 8% compounded semiannually:
Solve[TimeValue[Cashflow[{{0, -100}, {5, -200}, {8, 600}, {10, pmt}}], EffectiveInterest[.08, 1 / 2], 0] == 0, pmt]Payments of $100, $200, and $500 are due at the end of years 2, 3, and 8, respectively. Find the point in time where a payment of $800 would be equivalent at 5% interest:
Reduce[TimeValue[Cashflow[{{2, 100}, {3, 200}, {8, 500}}], 5 / 100, t] == 800, t, Reals]N[%]Another method to solve the problem above:
Reduce[TimeValue[Cashflow[{{2, 100}, {3, 200}, {8, 500}, {t, -800}}], 5 / 100, t] == 0, t, Reals]N[%]Find the effective rate of interest at which the present value of $2000 at the end of 2 years and $3000 at the end of 4 years will be equal to $4000:
FindRoot[TimeValue[Cashflow[{{2, 2000}, {4, 3000}}], r, 0] == 4000 , {r, .05}]Since a loan's balance at any time is equal to the present value of its remaining future payments, Annuity can be used to create an amortization table:
rate = .06;payment = 1200;years = 30;balance = TimeValue[Annuity[payment, years * 12], rate / 12, 0];
amort = Table[
interest = balance * rate / 12;
principal = payment - balance * rate / 12;
balance = balance - principal;
{month, payment, interest, principal, balance},
{month, 1, years * 12}
];Grid[Prepend[amort[[348 ;; 360]]//Round, {"month", "payment", "interest payment", "principal payoff", "ending value"}], Dividers -> All]Graph the principal payoff over time:
years = 30;payment = 1199.10;rate = .06;
loanValue[month_] := TimeValue[Annuity[payment, years * 12 - month], rate / 12, 0]//Evaluate;Plot[loanValue[t], {t, 0, 360}, AxesLabel -> {"month", "loan balance"}, ImageSize -> 400]Properties & Relations (2)
Present value using a schedule of rates over irregular time intervals:
TimeValue[1000, {{-4, .04}, {-3, .05}, {-2, .06}, {-1, .07}}, -4]TimeValue[1000, {.04, .05, .06, .07}, {0, 4}]Use Plot and Plot3D to show the dependencies of an annuity on a set of parameters:
g1 = TimeValue[Annuity[pmt(1 + g)^f# - 1&, n, 1 / f], EffectiveInterest[r, c], n]Plot[g1 /. {pmt -> 100, f -> 2, n -> 10, c -> 2, g -> .1}, {r, .01, .15}, AxesLabel -> {"interest", "value"}, ImageSize -> 250]Dependence on payment growth rate:
Plot[g1 /. {pmt -> 150, f -> 2, n -> 10, c -> 2, r -> .07}, {g, -.2, .2}, AxesLabel -> {"payment growth rate", "value"}, ImageSize -> 300]Use Plot3D to view the interest rate/growth rate landscape:
Plot3D[g1 /. {pmt -> 100, f -> 2, n -> 10, c -> 2}, {r, .01, .15}, {g, -.2, .2}, AxesLabel -> {"interest", "growth", "value"}, ImageSize -> 250]Possible Issues (3)
When finding interest rate solutions to long-term or high-frequency annuities or bonds, FindRoot may be needed instead of Solve:
FindRoot[TimeValue[Annuity[{(.07/2) * 1000, {0, 1000}}, 10, 1 / 2], yld, 0] == 900, {yld, .05}]In order for TimeValue to determine if there are enough rates in a schedule to reach the valuation period, the valuation period must be numeric:
TimeValue[am, {r1, r2, r3, r4, r5}, n]Input numeric valuation period:
TimeValue[am, {r1, r2, r3, r4, r5}, 4]Specifying rates by a TimeSeries requires the first time to be 0:
ts = TemporalData[TimeSeries, {{{0.04, 0.05, 0.06, 0.07, 0.08}}, {{4, 8, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.1];TimeValue[amount, ts, 10]rates = TimeSeriesShift[ts, {{0}}]TimeValue[amount, rates, 10]Interactive Examples (1)
Use Manipulate to explore the various dependencies a series of cash flows has on a set of variables:
Manipulate[
Plot[
Evaluate[
TimeValue[Cashflow[{pmt, 100 + pmt, 200 + pmt, 300 + pmt, 400 + pmt, 500 + pmt, 600 + pmt, 700 + pmt, 800 + pmt, 900 + pmt}], EffectiveInterest[r, 1 / c], n]
],
{n, 5, 30}, AxesLabel -> {"time", "value"}
],
{{pmt, 150, "payment"}, 100, 300}, {{r, .05, "interest"}, .01, .15}, {{c, 2, "compounding"}, 1, 10}, FrameLabel -> "future value of an annuity"
]Related Guides
Text
Wolfram Research (2010), TimeValue, Wolfram Language function, https://reference.wolfram.com/language/ref/TimeValue.html (updated 2024).
CMS
Wolfram Language. 2010. "TimeValue." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/TimeValue.html.
APA
Wolfram Language. (2010). TimeValue. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TimeValue.html
BibTeX
@misc{reference.wolfram_2026_timevalue, author="Wolfram Research", title="{TimeValue}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/TimeValue.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_timevalue, organization={Wolfram Research}, title={TimeValue}, year={2024}, url={https://reference.wolfram.com/language/ref/TimeValue.html}, note=[Accessed: 13-June-2026]}