qfinbox.tvm.basic

Basic Time Value of Money calculations.

Functions

compound_interest(principal, rate, periods)

Calculate compound interest earned.

continuous_compounding_fv(present_value, ...)

Calculate future value with continuous compounding.

continuous_compounding_pv(future_value, ...)

Calculate present value with continuous compounding.

effective_rate(nominal_rate, ...)

Calculate effective annual rate from nominal rate.

future_value(present_value, rate, periods[, ...])

Calculate future value of a present amount.

interest_rate(present_value, future_value, ...)

Calculate interest rate given present value, future value, and periods.

nominal_rate(effective_rate, ...)

Calculate nominal rate from effective annual rate.

number_of_periods(present_value, ...[, ...])

Calculate number of periods required for present value to grow to future value.

present_value(future_value, rate, periods[, ...])

Calculate present value of a future amount.

validate_positive(value[, name])

Validate that a value is positive.

qfinbox.tvm.basic.future_value(present_value: float, rate: float, periods: int, compounding_frequency: int = 1) float[source]

Calculate future value of a present amount.

Parameters:
  • present_value (float) – Present value amount.

  • rate (float) – Annual interest rate (as decimal, e.g., 0.05 for 5%).

  • periods (int) – Number of periods.

  • compounding_frequency (int, default 1) – Number of times interest is compounded per period.

Returns:

Future value.

Return type:

float

Raises:

ValidationError – If any parameter is invalid.

Examples

>>> future_value(1000, 0.05, 10)
1628.89
qfinbox.tvm.basic.present_value(future_value: float, rate: float, periods: int, compounding_frequency: int = 1) float[source]

Calculate present value of a future amount.

Parameters:
  • future_value (float) – Future value amount.

  • rate (float) – Annual interest rate (as decimal).

  • periods (int) – Number of periods.

  • compounding_frequency (int, default 1) – Number of times interest is compounded per period.

Returns:

Present value.

Return type:

float

Examples

>>> present_value(1628.89, 0.05, 10)
1000.0
qfinbox.tvm.basic.interest_rate(present_value: float, future_value: float, periods: int, compounding_frequency: int = 1) float[source]

Calculate interest rate given present value, future value, and periods.

Parameters:
  • present_value (float) – Present value amount.

  • future_value (float) – Future value amount.

  • periods (int) – Number of periods.

  • compounding_frequency (int, default 1) – Number of times interest is compounded per period.

Returns:

Annual interest rate (as decimal).

Return type:

float

Raises:

ValidationError – If any parameter is invalid.

Examples

>>> interest_rate(1000, 1628.89, 10)
0.05
qfinbox.tvm.basic.number_of_periods(present_value: float, future_value: float, rate: float, compounding_frequency: int = 1) float[source]

Calculate number of periods required for present value to grow to future value.

Parameters:
  • present_value (float) – Present value amount.

  • future_value (float) – Future value amount.

  • rate (float) – Annual interest rate (as decimal).

  • compounding_frequency (int, default 1) – Number of times interest is compounded per period.

Returns:

Number of periods required.

Return type:

float

Raises:

ValidationError – If any parameter is invalid.

Examples

>>> number_of_periods(1000, 3000, 0.12)
9.69
qfinbox.tvm.basic.compound_interest(principal: float, rate: float, periods: int, compounding_frequency: int = 1) float[source]

Calculate compound interest earned.

Parameters:
  • principal (float) – Initial principal amount.

  • rate (float) – Annual interest rate (as decimal).

  • periods (int) – Number of periods.

  • compounding_frequency (int, default 1) – Number of times interest is compounded per period.

Returns:

Compound interest earned.

Return type:

float

Examples

>>> compound_interest(1000, 0.05, 10)
628.89
qfinbox.tvm.basic.effective_rate(nominal_rate: float, compounding_frequency: int) float[source]

Calculate effective annual rate from nominal rate.

Parameters:
  • nominal_rate (float) – Nominal annual interest rate (as decimal).

  • compounding_frequency (int) – Number of compounding periods per year.

Returns:

Effective annual rate.

Return type:

float

Examples

>>> effective_rate(0.12, 12)  # 12% compounded monthly
0.1268
qfinbox.tvm.basic.nominal_rate(effective_rate: float, compounding_frequency: int) float[source]

Calculate nominal rate from effective annual rate.

Parameters:
  • effective_rate (float) – Effective annual interest rate (as decimal).

  • compounding_frequency (int) – Number of compounding periods per year.

Returns:

Nominal annual rate.

Return type:

float

Examples

>>> nominal_rate(0.1268, 12)  # Effective 12.68% compounded monthly
0.12
qfinbox.tvm.basic.continuous_compounding_fv(present_value: float, rate: float, time: float) float[source]

Calculate future value with continuous compounding.

Parameters:
  • present_value (float) – Present value amount.

  • rate (float) – Annual interest rate (as decimal).

  • time (float) – Time period in years.

Returns:

Future value with continuous compounding.

Return type:

float

Examples

>>> continuous_compounding_fv(1000, 0.05, 10)
1648.72
qfinbox.tvm.basic.continuous_compounding_pv(future_value: float, rate: float, time: float) float[source]

Calculate present value with continuous compounding.

Parameters:
  • future_value (float) – Future value amount.

  • rate (float) – Annual interest rate (as decimal).

  • time (float) – Time period in years.

Returns:

Present value with continuous compounding.

Return type:

float

Examples

>>> continuous_compounding_pv(1648.72, 0.05, 10)
1000.0