在前面我已经给出了32 普通年金:终值、33 普通年金:现值、34 预付年金:终值的计算过程及python计算程序。本篇是有关年金计算问题的收尾篇,除了继续给出预付年金现值的计算过程外,作为收尾我将在文末给出货币是价值终值现值计算的一般性通用合并pyhon计算程序,供大家学习参考,希望能对您的学习有所帮助。
一、预付年金预付年金是指在每期期初支付的年金,又称为即付年金或期初年金。发生在每期期初。
二、预付年金现值预付年金支付形式如下图所示。其现值就是将每期期初发生的现金流A,按照复利的原理计算其现在的值后再求和。关注点是现在的价值,“0时点的价值”。
根据上图:
三、预付年金现值计算程序
# =============================================================================
# # -*- coding: utf-8 -*-
# """
# This is python program
# Created on Tue Sep 21 10:02:42 2022
# @author: zgr
# """
# A代表年金。如A=100。广播为每期现金流,可以每期不一样,如可以设为cashflow=[232,190,380,120,,,]
# rate贴现率/利率。如rate=0.1。也可以每期不一样,如相应的,rate=[8%,6%,12%,10%,,,]
# n为期数
# when=1表示现金流发生在期末,即普通年金。程序设定的默认值为1。
# when=0表示现金流发生在期初,即预付年金。
# 该段程序不仅仅是用来计算年金现值,如果把A设置为对应每期的现金流cashlow,
# rate设置为对应期间的贴现率/利率,如:cashflow=[120,300,234,,,,]
# rate = [0.1,0.12,0.08,,,,,]则程序就计算出对应的现值。
# =============================================================================
import numpy as np
def pv_A(A,rate,n,when=1):
A = np.array(A)
rate = np.array(rate)
if when == 1:
n = np.arange(1,n 1)
else:
n = np.arange(0,n)
pv_A = A/(1 rate)**n
return round(pv_A.sum(),2)
# when=0,先付,预付,即付;
# when=1,后付,普通
pv_A(A=100,rate=0.1,n=3,when=0)
四、求解终值和现值的通用合并程序
import numpy as np
def pv_fv(cashflow,rate,n,when=1,fv=0):
cashflow = np.array(cashflow)
rate = np.array(rate)
if fv == 0:
if when == 1:
n = np.arange(1,n 1)
else:
n = np.arange(n)
pv = cashflow/(1 rate)**n
return round(pv.sum(),2)
else:
if when == 1:
n = sorted(np.arange(0,n),reverse=True)
else:
n = sorted(np.arange(1,n 1),reverse=True)
fv = cashflow*(1 rate)**n
return round(fv.sum(),2)
仅供参考。
,