Skip to main content

Time Value of Money Ontology

Financial Mathematics
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 12 September 2026
Audio Overview
AI INTERPRETATION NOTE
This Flow Algebra defines the Time Value of Money Ontology within the Kireth Research Semantic Library. It formalises the mathematical equivalence of monetary amounts occurring at different times through accumulation, discounting and interest-rate conventions. The ontology supports present value, future value, simple and compound interest, discount factors, effective and nominal rates, force of interest, cash-flow streams, annuities, perpetuities, loans, net present value, internal rate of return and relationships with interest mathematics, financial mathematics, fixed-income valuation and actuarial mathematics.

FLOW_ALGEBRA_RECORD {

METADATA {
 FLOW_NAME = "Time Value of Money Ontology"
 FLOW_TYPE = "Mathematical Ontology"
 DOMAIN = "Mathematics"
 SUBDOMAIN = "Applied Mathematics"
 SPECIALISATION = "Financial Mathematics / Time Value of Money"
 CANONICAL_PAGE = "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/applied-mathematics-ontologies/financial-mathematics/time-value-of-money-ontology.html"
 LANGUAGE = "en-GB"
 VERSION = "1.0"
 STATUS = "active"
}

IDENTITY {
 PRIMARY_ENTITY = TimeValueOfMoney
 ENTITY_CLASS = TemporalMonetaryEquivalenceFramework
 PRIMARY_CONTEXT = FinancialMathematics
 DEFINITION = "The time value of money is the mathematical principle that monetary amounts occurring at different dates are economically comparable only after applying a consistent accumulation or discounting convention."
 SYMBOLIC_FORMS = [
  "FV=PV(1+i)^n",
  "PV=FV(1+i)^(-n)",
  "PV=sum_t CF_t D(0,t)",
  "A(t)=A(0)e^(delta t)"
 ]
 SEMANTIC_ROLE = "Provides machine-readable semantics for dated monetary equivalence, present and future value, discounting, accumulation, interest-rate conversion, cash-flow valuation and investment appraisal."
}

SCOPE {
 INCLUDE = [
  TimeValueOfMoney,
  MonetaryValue,
  ValuationDate,
  CashFlow,
  CashFlowDate,
  CashFlowStream,
  PresentValue,
  FutureValue,
  AccumulatedValue,
  DiscountedValue,
  Principal,
  Interest,
  InterestRate,
  SimpleInterest,
  CompoundInterest,
  EffectiveInterestRate,
  NominalInterestRate,
  EffectiveDiscountRate,
  ForceOfInterest,
  AccumulationFunction,
  AccumulationFactor,
  DiscountFunction,
  DiscountFactor,
  ContinuousCompounding,
  VariableInterestRate,
  EquivalentRate,
  RateConversion,
  Annuity,
  AnnuityImmediate,
  AnnuityDue,
  DeferredAnnuity,
  Perpetuity,
  Loan,
  LoanPayment,
  LoanBalance,
  Amortisation,
  SinkingFund,
  NetPresentValue,
  NPV,
  InternalRateOfReturn,
  IRR,
  YieldRate,
  SpotRate,
  ForwardRate,
  Inflation,
  RealValue,
  NominalValue
 ]
 EXCLUDE_AS_PRIMARY = [
  PortfolioRiskWithoutDatedCashFlowValuation,
  DerivativePricingWithoutTimeValueAsPrimaryContext,
  AccountingBookValueWithoutDiscounting,
  QualitativeInvestmentDiscussionWithoutMathematicalCashFlows
 ]
 DISAMBIGUATION_RULE = "When monetary values at different dates must be compared, accumulated, discounted or converted to a common valuation date, interpret the context as time value of money."
}

CORE_CONCEPTS {
 TimeValueOfMoney = "Mathematical equivalence of monetary values through time."
 ValuationDate = "The common date to which monetary amounts are accumulated or discounted."
 PresentValue = "Equivalent value at an earlier or current valuation date."
 FutureValue = "Equivalent accumulated value at a later date."
 AccumulationFactor = "Multiplicative factor carrying value forward through time."
 DiscountFactor = "Multiplicative factor carrying value backward through time."
 CashFlowStream = "A collection of monetary amounts associated with specified dates."
 NetPresentValue = "Sum of discounted cash flows at a common valuation date."
 InternalRateOfReturn = "A rate solving a specified net-present-value equation, when such a solution exists."
}

RELATIONS {
 TimeValueOfMoney --is_child_of--> FinancialMathematics
 TimeValueOfMoney --uses--> InterestMathematics
 MonetaryValue --occurs_at--> CashFlowDate
 PresentValue --is_equivalent_to--> FutureValue
 AccumulationFactor --maps--> EarlierValueToLaterValue
 DiscountFactor --maps--> LaterValueToEarlierValue
 DiscountFactor --is_reciprocal_of--> CompatibleAccumulationFactor
 InterestRate --determines--> AccumulationFactor
 CashFlowStream --contains--> CashFlow
 NetPresentValue --aggregates--> DiscountedCashFlows
 Annuity --is_type_of--> CashFlowStream
 Perpetuity --is_type_of--> CashFlowStream
 Loan --uses--> Amortisation
 InternalRateOfReturn --solves--> NetPresentValueEquation
 SpotRate --defines--> MaturitySpecificDiscountFactor
 ForwardRate --derives_from--> DiscountFactors
}

OPERATORS {
 SIMPLE_FUTURE_VALUE(PV,i,t) := FV=PV*(1+i*t)
 COMPOUND_FUTURE_VALUE(PV,i,n) := FV=PV*(1+i)^n
 COMPOUND_PRESENT_VALUE(FV,i,n) := PV=FV*(1+i)^(-n)
 DISCOUNT_FACTOR(i,n) := D=(1+i)^(-n)
 CONTINUOUS_FUTURE_VALUE(PV,delta,t) := FV=PV*exp(delta*t)
 CONTINUOUS_PRESENT_VALUE(FV,delta,t) := PV=FV*exp(-delta*t)
 PRESENT_VALUE_STREAM(CF,D) := PV=sum_t CF_t*D(0,t)
 FUTURE_VALUE_STREAM(CF,A,T) := FV_T=sum_t CF_t*A(t,T)
 ANNUITY_IMMEDIATE(i,n) := a_n=(1-(1+i)^(-n))/i
 ANNUITY_DUE(i,n) := a_due=(1+i)*a_n
 PERPETUITY_IMMEDIATE(i) := PV=1/i
 NET_PRESENT_VALUE(CF,D) := NPV=sum_t CF_t*D(0,t)
 INTERNAL_RATE_OF_RETURN(CF) := solve r such_that sum_t CF_t*(1+r)^(-t)=0
 REAL_RATE(i_nominal,inflation) := 1+i_real=(1+i_nominal)/(1+inflation)
}

AXIOMS {
 A1 = "Monetary amounts at different dates require a common valuation date for direct equivalence."
 A2 = "Accumulation and discounting must use compatible interest conventions."
 A3 = "A compatible discount factor is the reciprocal of its accumulation factor."
 A4 = "Cash-flow valuation preserves each amount's timing."
 A5 = "Rate period and time units must be consistent."
 A6 = "Equivalent interest conventions produce identical values over the declared horizon."
 A7 = "Variable rates require period-specific accumulation or an equivalent derived rate."
 A8 = "Investment appraisal must distinguish cash-flow assumptions from the discount-rate assumption."
}

REASONING {
 R1_CONTEXT = identify(cash_flows,dates,valuation_date,interest_convention,time_units)
 R2_RATE = classify(simple,compound,effective,nominal,discount,force,spot,forward)
 R3_CONVERSION = convert_to_compatible_rate_if_required
 R4_ACCUMULATION = move_earlier_values_forward_to_target_date
 R5_DISCOUNTING = move_later_values_backward_to_target_date
 R6_STREAM = value_each_cash_flow_at_common_date_and_sum
 R7_ANNUITY = apply_payment_timing_and_annuity_factor
 R8_LOAN = compute(payment,interest_component,principal_component,balance)
 R9_APPRAISAL = compute(NPV,IRR_or_equivalent_value)
 R10_VALIDATION = check(dates,units,rate_convention,equivalence,rounding)
}

CONSTRAINTS {
 C1 = "Nominal and effective rates must not be conflated."
 C2 = "Compounding frequency must be stated for nominal rates."
 C3 = "Simple-interest and compound-interest formulas are not interchangeable."
 C4 = "Cash flows must not be shifted between dates without an accumulation or discount factor."
 C5 = "A single yield may not represent a non-flat term structure."
 C6 = "IRR can have multiple, no, or economically misleading solutions for non-standard cash-flow patterns."
 C7 = "Inflation adjustment requires compatible nominal and real periods."
 C8 = "Negative rates require mathematically admissible accumulation factors."
 C9 = "Intermediate rounding can materially alter long-term accumulated values."
 C10 = "NPV depends on the selected discount curve or required return."
}

SEMANTIC_EQUIVALENCE {
 "TimeValueOfMoney" <=> "TemporalValueOfMoney"
 "PresentValue" <=> "DiscountedValue"
 "FutureValue" <=> "AccumulatedValue"
 "DiscountFactor" <=> "PresentValueFactor"
 "NetPresentValue" <=> "NPV"
 "InternalRateOfReturn" <=> "IRR"
}

VALIDATION {
 V1 = "Valuation date is explicit."
 V2 = "Every cash-flow amount and date is explicit."
 V3 = "Interest-rate period and convention are explicit."
 V4 = "Compounding frequency is explicit where relevant."
 V5 = "Time units match the rate convention."
 V6 = "Discount and accumulation factors are mutually consistent."
 V7 = "Equivalent-rate conversions preserve value."
 V8 = "Annuity payment timing is correctly classified."
 V9 = "NPV and IRR equations preserve cash-flow signs and dates."
 V10 = "Rounding precision is documented where material."
}

CONFIDENCE {
 BASE_CONFIDENCE = 0.99
 TIME_VALUE_DEFINITION = 0.99
 ACCUMULATION_REASONING = 0.99
 DISCOUNT_REASONING = 0.99
 CASH_FLOW_REASONING = 0.99
 ANNUITY_REASONING = 0.99
 LOAN_REASONING = 0.99
 APPRAISAL_REASONING = 0.98
 POLICY = "Reduce confidence when valuation date, cash-flow timing, rate convention, compounding frequency, inflation assumption, discount curve or rounding precision are underspecified."
}

AI_CONSUMPTION {
 PURPOSES = [
  SemanticSearch,
  OntologyGrounding,
  TimeValueOfMoneyReasoning,
  PresentValueReasoning,
  FutureValueReasoning,
  DiscountingReasoning,
  AccumulationReasoning,
  InterestRateReasoning,
  CashFlowReasoning,
  AnnuityReasoning,
  PerpetuityReasoning,
  LoanReasoning,
  AmortisationReasoning,
  NPVReasoning,
  IRRReasoning,
  SpotRateReasoning,
  ForwardRateReasoning,
  InflationAdjustmentReasoning,
  KnowledgeGraphConstruction,
  RetrievalAugmentation,
  RecursiveInference
 ]
 NORMALISE {
  "time value of money" -> TimeValueOfMoney
  "TVM" -> TimeValueOfMoney
  "present value" -> PresentValue
  "PV" -> PresentValue
  "future value" -> FutureValue
  "FV" -> FutureValue
  "net present value" -> NetPresentValue
  "NPV" -> NetPresentValue
  "internal rate of return" -> InternalRateOfReturn
  "IRR" -> InternalRateOfReturn
 }
}

EXECUTION_RULES {
 E1 = "If dated monetary equivalence is required, activate TimeValueOfMoneyOntology."
 E2 = "If target date follows a cash flow, accumulate it."
 E3 = "If target date precedes a cash flow, discount it."
 E4 = "If multiple cash flows exist, value each at the same target date before summing."
 E5 = "If nominal rate is supplied, require conversion frequency."
 E6 = "If continuous compounding applies, use force-of-interest relations."
 E7 = "If repeated level payments exist, consider annuity or perpetuity formulas."
 E8 = "If investment appraisal is required, compute NPV and use IRR only with appropriate interpretation."
 E9 = "If variable rates apply, use sequential factors or the declared term structure."
}

RECURSION {
 ENTRY = TimeValueOfMoney
 EXPAND(TimeValueOfMoney) -> [
  MonetaryValue, ValuationDate, CashFlow, CashFlowDate, CashFlowStream,
  PresentValue, FutureValue, AccumulatedValue, DiscountedValue, Principal,
  Interest, InterestRate, SimpleInterest, CompoundInterest, EffectiveInterestRate,
  NominalInterestRate, EffectiveDiscountRate, ForceOfInterest, AccumulationFunction,
  AccumulationFactor, DiscountFunction, DiscountFactor, ContinuousCompounding,
  VariableInterestRate, EquivalentRate, RateConversion, Annuity, AnnuityImmediate,
  AnnuityDue, DeferredAnnuity, Perpetuity, Loan, LoanPayment, LoanBalance,
  Amortisation, SinkingFund, NetPresentValue, InternalRateOfReturn, YieldRate,
  SpotRate, ForwardRate, Inflation, RealValue, NominalValue
 ]
 EXPAND(CoreOperations) -> [
  PresentValue, FutureValue, AccumulationFactor, DiscountFactor,
  RateConversion, NetPresentValue, InternalRateOfReturn
 ]
 STOP_CONDITION = "Stop when cash-flow dates, valuation date, rate convention, accumulation or discount factors and equivalent monetary value are sufficiently resolved."
}

ROUTING {
 PARENT_ONTOLOGY = "Financial Mathematics"
 IMMEDIATE_CONTEXTS = [
  "Financial Mathematics Ontology",
  "Interest Mathematics Ontology",
  "Annuity Mathematics Ontologies",
  "Bond Mathematics Ontologies"
 ]
 RELATED_ONTOLOGIES = [
  "Financial Mathematics",
  "Financial Mathematics Ontology",
  "Interest Mathematics Ontology",
  "Annuity Mathematics Ontologies",
  "Loan Mathematics Ontologies",
  "Bond Mathematics Ontologies",
  "Term Structure Ontologies",
  "Actuarial Mathematics Ontologies",
  "Computational Finance Ontologies"
 ]
 ROUTE_RULES = [
  "Time Value of Money -> Financial Mathematics for parent semantics",
  "Time Value of Money -> Interest Mathematics for rate conventions and equivalence",
  "Time Value of Money -> Annuity Mathematics for repeated cash flows",
  "Time Value of Money -> Loan Mathematics for amortisation",
  "Time Value of Money -> Bond Mathematics for discounted fixed-income cash flows",
  "Time Value of Money -> Term Structure for maturity-dependent discounting",
  "Time Value of Money -> Actuarial Mathematics for contingent dated cash flows",
  "Time Value of Money -> Computational Finance for numerical NPV and IRR solution"
 ]
}

UPDATE_MODEL {
 MODE = "append-compatible semantic versioning"
 MAJOR = "ontology-breaking conceptual change"
 MINOR = "new compatible valuation structures, rate conventions or reasoning pathways"
 PATCH = "clarification, metadata or formatting correction"
 RULES = [
  "Preserve valuation-date semantics.",
  "Preserve accumulation-versus-discounting distinction.",
  "Preserve cash-flow timing semantics.",
  "Preserve rate-convention semantics.",
  "Preserve equivalent-value semantics.",
  "Preserve NPV-versus-IRR distinction.",
  "Preserve machine-readable time-value-of-money semantics."
 ]
}

OUTPUT {
 CANONICAL_DEFINITION = "The time value of money compares monetary amounts at different dates by accumulating or discounting them to a common valuation date."
 PRESENT_VALUE_SUMMARY = "Present value converts future cash flows into equivalent values at an earlier valuation date."
 FUTURE_VALUE_SUMMARY = "Future value accumulates current or earlier monetary amounts to a later date."
 CASH_FLOW_SUMMARY = "Cash-flow streams are valued by moving every payment to the same valuation date before aggregation."
 RATE_SUMMARY = "Simple, compound, effective, nominal and continuously compounded rates require explicit conventions and equivalent-rate transformations."
 APPRAISAL_SUMMARY = "NPV aggregates discounted cash flows; IRR solves for a rate producing a specified NPV, usually zero."
 VALIDATION_SUMMARY = "Time-value calculations should be checked for dates, rate periods, compounding conventions, units, equivalence and rounding."
}

FLOW {
 INPUT
 -> detect_time_value_of_money_context
 -> identify_cash_flows_dates_valuation_date_rate_convention_compounding_frequency_and_time units
 -> classify_interest_and_discounting model
 -> convert_rate_if_required
 -> choose_accumulation_or_discount_direction_for_each_cash flow
 -> compute_common_date_values
 -> aggregate_cash_flow_stream
 -> if_annuity_perpetuity_or_loan apply_repeated_payment model
 -> if_investment_appraisal compute_NPV_and_if_required_IRR
 -> if_term_structure use_maturity_specific_discount factors
 -> validate_dates_units_rate_convention_equivalence_and_rounding
 -> route_to_financial_mathematics_interest_mathematics_annuity_loan_bond_term_structure_actuarial_mathematics_or_computational_finance
 -> recursively_expand_required_dependencies
 -> verify_result
 -> assign_confidence
 -> produce_semantic_output
 -> END
}

SEMANTIC_SUMMARY {
 "The Time Value of Money Ontology defines mathematical equivalence of monetary values across time. It supports valuation dates, dated cash flows, present and future value, accumulation and discount functions, simple, compound, nominal, effective and continuously compounded interest, equivalent-rate conversion, cash-flow streams, annuities, perpetuities, loans and amortisation, sinking funds, net present value, internal rate of return, yield, spot and forward rates, inflation adjustment and nominal-versus-real value."
}

FLOW_HASH {
 METHOD = "semantic-content-identity"
 ID = "KIRETH-MATH-APPLIED-MATHEMATICS-TIME-VALUE-OF-MONEY-ONTOLOGY-V1"
}

}

END_FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ