财码Python管理会计小实验—投融资管理之货币时间价值

2020-07-30 18:54 财码Python


今天我们继续学习财码Python管理会计小实验之投融资管理篇,本章重点聊聊货币时间价值,望开卷有益。



知识点回顾


>>>货币的时间价值的含义


货币时间价值:指在不考虑风险和通货膨胀的情况下,货币经过一定时间的投资和再投资所产生的增值

 

>>>货币时间价值的重要概念


终值:指现在的货币折合成未来某一时点的本金和利息的合计数,反映一定数量的货币在将来某个时点的价值。


现值:指未来某一时点的一定数额的货币折算为当今的价值。

 

>>>货币时间价值的计算


复利:指每经过一个计息期,要将该期的利息加入本金再计算利息,逐期滚动计算,俗称“利滚利”。


  • 复利终值:

    称为“复利终值系数”,用符号(F/P,i,n)表示。

  • 复利现值:

    称为“复利现值系数”,用符号(P/F,i,n)表示。

 

年金:指间隔期相等的系列等额收付款项。


  • 年金终值:

    称为“年金终值系数”,用符号(F/A,i,n)


  • 年金现值:

    称为“年金现值系数”,用符号(P/A,i,n)

 


案 例 模 拟





案例1:某项投资在2010年1月1日的现值是1000,年利率是5.6%,在复利模式下的2020年12月31日终值是多少?




1000*(1+5.6/100)**10

1724.4046368313645





案例2:上述案例改为每年年底支付年金100,共支付10年,终值是多少?




result=0for i in range(10):    result+=100*(1+5.6/100)**iprint(result)

1293.5797086274356





案例3:构建一个计算货币时间价值的函数,输入参数为投资额、投资时间、利率、目标时间,输出为投资在目标时间的价值(可能是终值,可能是现值)。





 原理:



1.引入Pandas
import pandas as pdimport datetime as dt


2.投资额与投资时间


投资额与投资时间应该是一一对应的,因为有可能有多次投资,所以将其存储为由list组成的tuple,list里的第一个元素是投资额,第二个元素是投资时间。

invest = ([100,'2018-5-1'],        [200,'2018-12-1'],        [300,'2019-4-1'])rate_year = 0.12target_time = '2019-12-31'df = pd.DataFrame(invest,columns=['投资额','投资时间'])df


3.时间文本转化


时间文本转化为datetime格式,以实现下一步时间计算

df['投资时间'] = pd.to_datetime(df['投资时间'])target = dt.datetime.strptime(target_time,'%Y-%m-%d') df.dtypes


4.计算时间间隔,转化为天。

df['间隔时间'] = (target-df['投资时间']).dt.daysdf


5.年利率转化为日利率


根据日利率和间隔天计算系数

rate = (1+rate_year)**(1/365)-1 df['系数'] = (1+rate)**df['间隔时间']df


6.计算投资额的时间价值

df['投资额_时间价值'] = df['投资额']*df['系数']df


7.创建函数


现在,把他们组合成一个可以复用的函数吧~~注意invest参数前面加了*号,代表可变参数,也就是说我们能传输任意多次投资进函数。

def TVM(rate_year,target_time,*invest):    rate = (1+rate_year)**(1/365)-1 #转化为日利率    target = dt.datetime.strptime(target_time,'%Y-%m-%d') #转化为datetime格式    df = pd.DataFrame(invest,columns=['投资额','投资时间'])    df['投资时间'] = pd.to_datetime(df['投资时间'])    df['间隔时间'] = (target-df['投资时间']).dt.days    df['系数'] = (1+rate)**df['间隔时间']    df['投资额_时间价值'] = df['投资额']*df['系数']    return df,df['投资额_时间价值'].sum() #给两个返回值,我们可以一起看看结果


8.使用函数1

df1,result1 = TVM(0.12,'2019-12-31',[100,'2018-5-1'],[200,'2018-12-1'],[300,'2019-4-1'])


当目标时间大于投资时间时,计算终值

 

9.使用函数2

df2,result2 = TVM(0.12,'2017-12-31',[100,'2018-5-1'],[200,'2018-12-1'],[300,'2019-4-1'])


当目标时间小于投资时间时,计算现值。



友情提示:财码Python官网(www.fincode.com.cn)的相关课程从8月1号起开始收费,现将课程“加入学习”即可享受永久免费,快快行动哦~



往期课程推荐:
《财码Python管理会计小实验—弹性预算vs固定预算
《财码Python管理会计小实验-标准成本法
《财码Python管理会计小实验-本量利分析》

《财码Python管理会计小实验-成本性态分析So Easy》





本文章转载自公众号:gh_0154a4d2265e

首页 - Python 相关的更多文章: