金融实战一#现金流合并(R)

分别对loan和bond的现金流进行分析:

n=120
i1=0.08/12
2000*i1
i2=0.09/12
10000*i2
bondcashflow=function(r,f,C,n){
  A=r*f
  bcf=1:n
  for (m in 1:n){
    bcf[m]=A
  }
  bcf[n]=bcf[n]+C
  return(bcf)
}
k1=c(2000,bondcashflow(i1,-2000,-2000,120))
k2=c(-10000,bondcashflow(i2,10000,10000,120))
M=data.frame("loan"=k1,"bond"=k2)

把二者现金流进行合并:

合并之后,可把整个现金流变动看作一个债券,对该债券进行收益率计算:

k=k1+k2
M["cashflow"]=k
v=function(i,n){
  v=(1+i)**(-n)
  return(v)
}
an=function(i,n){
  an=(1-v(i,n))/i
  return(an)
}
division=function(a,b,M,n){
  while(TRUE){
    t=(a+b)/2
    if(abs(f(t)-M)<=10**(-n)){
      m=t
      break
    }
    if((f(t)-M)/abs(f(t)-M)==
       (f(a)-M)/abs(f(a)-M)){
      a=t
    }else{
      b=t
    }
  }
  return(m)
}
f=function(i){
  r=-k[2]/k[1]
  f=-k[1]
  C=f
  A=r*f
  P=A*an(i,n)+C*v(i,n)
  return(P)
}
i12=division(0.0001,0.9999,-k[1],10)
i=v(i12,-12)-1

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值