介绍如果安装和调用包
介绍如何计算NPV和IRR
简单展示画图——非完美版
1. R或python之所以强大是应为包多,包多干的事就多。安装和调用包非常简单,在Rstudio里直接使用右边的Packages对包进行管理,用鼠标就能完成。
使用代码安装install.packages(‘包的名字’),不过我还是建议在Rstudio里直接点击安装。
我们先安装一个现代R里最重要的一个套包,安装前请同学们调整好自己tools菜单,option选项里安装镜像站点的位置。
调用包也非常简单,直接使用library()加包的名字,每次运行脚本时都需要把重要的包调用,首当其冲的肯定是tidyverse包
#install.packages("tidyverse")
library(tidyverse)
## -- Attaching packages ---------------------------------------------------- tidyverse 1.3.0 --
## √ ggplot2 3.3.0 √ purrr 0.3.3
## √ tibble 2.1.3 √ dplyr 0.8.5
## √ tidyr 1.0.2 √ stringr 1.4.0
## √ readr 1.3.1 √ forcats 0.5.0
## -- Conflicts ------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
接下来我们可以安装一个和我们接下来课程相关的金融包,代码前我加了一个“#”代表这条被注释了,大家可以用快捷键ctrl+shift+c进行注释或取消注释
#install.packages("jrvFinance")
library(jrvFinance)
接下来先给大家展示一下jrvFinance包的简单用法,计算一系列现金流的PV,计算一个5年的现金流,贴现率为0.05,现金流分别为100,200,400,300,200
library(jrvFinance) #先调入包
# 我们现在只做最基本的演示,其他包可以不用调入
pv <- npv(cf = c(100,200,400,300,200),rate =0.05,immediate.start=T ) ## 注意最后这个参数,上课是讲一下
paste('我们要计算的现值是:',pv)
## [1] "我们要计算的现值是: 1076.97975637723"
如果要计算IRR,也可以使用jrvFinance这个包,同样假设一系列现金流,0期支付200,后续每年回报80,持续4年,问这一组现金流的IRR是多少?
library(jrvFinance) #如果你前面一个框框里调入了jrvFinance,也没有必要再次调入了
irr <- irr(cf=c(-200,80,80,80,80))
paste("我们要计算的IRR是:",irr)
## [1] "我们要计算的IRR是: 0.218622696098342"
#嗯,确实非常简单
如果不用包,如何计算npv?
下面直接写一下,按照公式很简单的也能得到,我们将使用tribble函数建立一个DataFrame(数据框)后面有机会和大家详细讲一下数据框和所谓的tidy data。这里的语法大家可能有点困惑,不过熟悉以后就会觉得非常直观。
library(tidyverse)
# 我们使用tribble函数
cf <- tribble(~Year,~cash_flow,
1,100,
2,300,
3,200,
4,1000)
cf
## # A tibble: 4 x 2
## Year cash_flow
## <dbl> <dbl>
## 1 1 100
## 2 2 300
## 3 3 200
## 4 4 1000
# 给定贴现率r=0.03
r <- 0.03
npv <- cf %>%
mutate(pv = cash_flow/(1+r)^Year) %>%
select(pv) %>% sum()
paste("我们要求的npv是:",npv)
## [1] "我们要求的npv是: 1451.38153116722"