用途
该技能用于处理货币时间价值(Time Value of Money)相关的金融计算,帮助评估项目、贷款与投资在考虑利率与时间因素后的真实价值。它把常见的金融数学公式整理为可复用的方法,并提供 Python 脚本实现。
主要能力
技能覆盖以下核心概念与计算:
- 终值(FV)与现值(PV):单笔资金按利率 r 复利 n 期后的价值,或未来资金折现到当前的价值。
- 复利惯例:支持离散复利(每年 m 次)与连续复利,并提供有效年利率(EAR)计算。常见频率包括年度、半年、季度、月度、每日与连续。
- 年金:普通年金(期末支付)与期初年金(Annuity Due)的现值与终值。
- 增长年金:每期按固定增长率 g 增长的有限期支付流的现值。
- 永续年金与增长永续年金:无限期等额支付或按固定增长率增长的支付流的现值,后者即戈登增长模型(Gordon Growth Model)。
- 净现值(NPV):对一系列现金流按折现率折现并求和,用于判断项目是否创造价值。
- 内部收益率(IRR):使 NPV 为零的折现率,通常通过数值方法(牛顿-拉夫森或二分法)求解。
- 摊销:将每期还款拆分为利息与本金部分,并跟踪剩余余额,生成摊销计划。
使用方式
技能提供脚本 scripts/time_value_of_money.py,其中 TimeValueOfMoney 类以静态方法实现上述公式,包括 present_value、future_value、npv、irr、annuity_pv、annuity_fv、growing_annuity_pv、perpetuity_pv、fisher_rate、continuous_compounding,另有 AmortizationSchedule 类用于摊销计划。
运行方式:
uv run scripts/time_value_of_money.py(使用 PEP 723 内联元数据,仅依赖标准库,无第三方依赖)- 或
python3 scripts/time_value_of_money.py
直接运行(或使用 --verify)会打印所有方法的演示,并断言示例中的数值(示例 1 月供 = $1,896.20;示例 2 NPV = $17,378.78,IRR = 21.18%),若不一致则以非零状态退出。--help 列出可用方法及导入用法。
若用于程序化调用,建议导入而非运行:from time_value_of_money import TimeValueOfMoney, AmortizationSchedule,然后调用如 TimeValueOfMoney.npv(...)。
适用场景
- 项目投资评估:计算 NPV 与 IRR,判断是否达到要求回报率。
- 贷款测算:计算月供、总利息与摊销计划。
- 年金估值:租赁、租金、保险等期初或期末支付流的估值。
- 权益估值:多阶段股利折现模型、增长年金与永续年金。
- 薪酬与养老金预测:增长年金用于工资流或养老金流。
限制与注意事项
- 利率与支付周期必须匹配:若按月支付,折现率应为月利率,不能直接使用年利率。
- 现金流符号约定需一致:投资为负、回报为正(或相反),否则 IRR 结果无意义。
- 名义利率与有效利率需区分:例如 12% 名义利率按月复利,其 EAR 为 12.68%。
- 期初年金与普通年金存在一期差异,期初年金需乘以 (1 + r) 调整。
- 非传统现金流(符号变化多次)可能产生多个 IRR,此时建议使用 NPV 剖面或修正内部收益率(MIRR)。
- 脚本仅依赖标准库,未提供第三方依赖或图形界面;具体平台兼容性暂未提供。
交叉引用
- return-calculations(核心插件):CAGR 是复合增长的特例;投资组合 MWR 使用相同的 NPV=0 框架。
- statistics-fundamentals(核心插件):折现率估计常依赖回归(CAPM beta)与分布假设。