[Github Actuary Science精选] ActuaryUtilities
-
之前看到了github上的一个Repository用Julia实现精算的一些功能。这个帖子开一个介绍它的小坑
https://github.com/JuliaActuary/ActuaryUtilities.jl
-
这里代码都是在代码笔记本Pluto上运行的。
我们最常了解的代码笔记本是Jupyter,也就是Julia Python和R的简写。Pluto和Jupyter使用方法类似,不过是完全为Julia设计的。推荐下面这篇Pluto的介绍。
https://lwn.net/Articles/835930/。首先我们安装好julia并把它加入到系统路径中后,在终端输入julia,就会出现如下界面。
安装Pluto需要用下面的代码
# install these dependencies import Pkg; Pkg.add(["Pluto"]) # use and start Pluto using Pluto; Pluto.run()
安装成功后会自动出现如下界面
在Open from file里面输入https://raw.githubusercontent.com/JuliaActuary/Learn/master/CashflowAnalysis.jl
这个路径就可以打开一个使用ActuartUtilities的一个样本笔记本
JuliaActuary这个包包含了几个Package
我们首先看这个JuliaActuary项目里面的现金流分析。
https://juliaactuary.org/tutorials/cashflowanalysis/使用的是ActuaryUtilities这个包,这个包本身包含了很多方法和函数,列表如下:
在下面的例子里我们会慢慢探索这些功能。
按照指示安装好Pluto并运行Notebook之后,可以看到如下的页面
我们可以用控件的形式控制Input
这里的控件是用Markdown语法编写的,点击控件左边的眼睛就可以看到Markdown代码
接下来我们定义现金流的时间点,这里的语法类似python,生成0.5到maturity时间间隔为0.5的所有时间点
然后可以根据这些时间点生成对应的现金流,这里Do类似于R的apply或者Python的List Comprehension;也就是对每一个时间点变量进行运算得到一个新的数组。
然后根据ActuaryUtilities的函数,可以计算出现金价值久期等变量
同时还可以实现画图功能
代码类似R,首先用scatter()画出时间和现金流的散点图(灰色),然后用vline加一些线作为久期。实际上,久期就是现金流出现时间的加权平均,所以在现金流非常平滑的情况下可以看到久期大概在时间的中点。
-
Example 2: Investment Cashflows
第二个例子是分析投资现金流,先假设有两个投资Project A和Project B.
我们可以用函数irr计算内含收益率
如果借款利率是5%,那么我们可以用break_even和present_value两个函数计算- 收支平衡的时间点
- 项目A和项目B现金流的现值
最后我们可以用bar函数进行现金流的可视化
-
在之前的例子里,我们用的都是固定利率,如果是Yield Curve的情况该怎么办呢?
我们可以通过不同Materity的Zero-Coupon Bond的Spot Rate构建一个收益率曲线,命名为curve
然后用这个Curve来算现值和久期