[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,就会出现如下界面。
    fa899639-6a47-44d4-be65-3b8f192444b9-image.png

    安装Pluto需要用下面的代码

    # install these dependencies
    import Pkg; Pkg.add(["Pluto"]) 
    
    # use and start Pluto
    using Pluto; Pluto.run()
    

    安装成功后会自动出现如下界面
    fbac59de-de82-418e-818c-d06c2b0e0a8f-image.png
    在Open from file里面输入https://raw.githubusercontent.com/JuliaActuary/Learn/master/CashflowAnalysis.jl
    这个路径就可以打开一个使用ActuartUtilities的一个样本笔记本
    b26163c7-46e7-463a-bb10-8d4eea8004d3-image.png

    JuliaActuary这个包包含了几个Package
    0c2c8cda-0442-4a0f-8374-4c8aa94840cb-image.png
    我们首先看这个JuliaActuary项目里面的现金流分析。
    https://juliaactuary.org/tutorials/cashflowanalysis/

    使用的是ActuaryUtilities这个包,这个包本身包含了很多方法和函数,列表如下:
    3641840b-9650-4404-8767-daa75c5ef53b-image.png

    在下面的例子里我们会慢慢探索这些功能。

    按照指示安装好Pluto并运行Notebook之后,可以看到如下的页面
    3867990a-30e1-4aac-941a-8b16525814bc-image.png

    我们可以用控件的形式控制Input
    d5699173-e766-4af9-919e-60a0d5620331-image.png
    这里的控件是用Markdown语法编写的,点击控件左边的眼睛就可以看到Markdown代码
    89b687b2-a77d-4af3-8dcf-b6d4618a28d2-image.png
    ef9cc798-83a4-407c-9377-9c47365ee003-image.png

    接下来我们定义现金流的时间点,这里的语法类似python,生成0.5到maturity时间间隔为0.5的所有时间点
    f74bf95e-00c0-4310-837b-82945e767977-image.png

    然后可以根据这些时间点生成对应的现金流,这里Do类似于R的apply或者Python的List Comprehension;也就是对每一个时间点变量进行运算得到一个新的数组。
    ebb3d45d-6c11-40ab-a2a5-7111fb898006-image.png

    然后根据ActuaryUtilities的函数,可以计算出现金价值久期等变量
    ccc5e297-fe32-4460-aea6-88d09db9995c-image.png

    同时还可以实现画图功能
    cd524e9e-7c28-41f2-8ece-a3c52b2f6472-image.png
    代码类似R,首先用scatter()画出时间和现金流的散点图(灰色),然后用vline加一些线作为久期。实际上,久期就是现金流出现时间的加权平均,所以在现金流非常平滑的情况下可以看到久期大概在时间的中点。
    484f721c-4172-4cd3-90db-1b4c2e915bf8-image.png



  • Example 2: Investment Cashflows

    第二个例子是分析投资现金流,先假设有两个投资Project A和Project B.
    cd24cf2b-8ab6-442f-a9bb-d8615a805514-image.png
    a62b5589-95b9-49b3-9e40-764bf555c544-image.png
    我们可以用函数irr计算内含收益率
    2b6af2b7-2cc6-48c4-9e38-b1faceb0f754-image.png
    如果借款利率是5%,那么我们可以用break_even和present_value两个函数计算

    • 收支平衡的时间点
    • 项目A和项目B现金流的现值
      ffee8bb2-a336-4731-a68d-a56d5be7bee3-image.png
      最后我们可以用bar函数进行现金流的可视化
      4f87ab18-e431-4ab8-8ba4-786b81ee4a67-image.png


  • 在之前的例子里,我们用的都是固定利率,如果是Yield Curve的情况该怎么办呢?
    我们可以通过不同Materity的Zero-Coupon Bond的Spot Rate构建一个收益率曲线,命名为curve
    50d140fc-8b84-4917-b9ca-b444ea5e1cd9-image.png
    然后用这个Curve来算现值和久期
    f6039b10-f6d3-4d3c-9c35-15500d822581-image.png
    ab65471c-6d31-40a4-8647-8ca3c44587c5-image.png


登录后回复