FMFE包

FMFE包

这是为宋豪漳老师的金融工程和金融数学两门课程开发的R包,主要是关于期权定价、交易策略的一些函数和可视化的东西。目前正在开发中,开发期间也可以安装使用。

安装

  • 首先你需要安装devtools包,这个包的功能包括安装Github上的R包:
1
install.packages("devtools")
  • 然后安装FMFE包:
1
devtools::install_github("czxa/FMFE")
  • 另外也可以下载.tar.gz.tgz安装包进行本地安装。

更新

  • 更新
1
devtools::install_github("czxa/FMFE", force = TRUE)

目前已有函数:

bear:熊市价差策略的可视化

  • 用法:
1
bear(K1 = 40, opt1 = 6, K2 = 60, opt2 = 2, type = "call")

  • 描述
    bear函数会生成一幅图来展示使用看涨期权或看跌期权的熊市价差交易策略的盈亏。熊市价差策略构建的理由是对市场的看空。
  • 注意事项
    如果图像存在相互遮盖问题,可以先运行dev.new()命令。如果仍然存在遮盖问题,可以直接运行bear命令调出该函数的源代码,通过修改相应的图形参数消除遮盖问题。
  • 参数说明
    • K1 期权1的执行价格
    • opt1 期权1的价格
    • K2 期权2的执行价格
    • opt2 期权2的价格
    • type 指定是使用看涨期权还是看跌期权进行熊市价差套利。如果是看涨期权,使用type=”call”,表明该策略是买入一个高执行价格的看涨期权的同时卖出一个低执行价格的看涨期权;如果是看跌期权,使用type=”put”,表明该策略是买入一个高执行价格的看跌期权的同时卖出一个低执行价格的看跌期权。默认值为”call”。
  • 示例
1
2
bear(K1 = 40, opt1 = 6, K2 = 60, opt2 = 2)
bear(K1 = 50, opt1 = 2, K2 = 60, opt2 = 6, type = "put")

牛市价差策略的可视化

  • 用法:
1
bull(K1 = 40, opt1 = 5, K2 = 60, opt2 = 3, type = "call")

  • 描述
    bull函数会生成一幅图来展示使用看涨期权或看跌期权的牛市价差交易策略的盈亏。牛市价差策略构建的理由是对市场的看多。
  • 注意事项
    如果图像存在相互遮盖问题,可以先运行dev.new()命令。如果仍然存在遮盖问题,可以直接运行bull命令调出该函数的源代码,通过修改相应的图形参数消除遮盖问题。
  • 参数说明
    • K1 期权1的执行价格
    • opt1 期权1的价格
    • K2 期权2的执行价格
    • opt2 期权2的价格
    • type 指定是使用看涨期权还是看跌期权进行熊市价差套利。如果是看涨期权,使用type=”call”,表明该策略是买入一个低执行价格的看涨期权的同时卖出一个高执行价格的看涨期权;如果是看跌期权,使用type=”put”,表明该策略是买入一个低执行价格的看跌期权的同时卖出一个高执行价格的看跌期权。默认值为”call”。
  • 示例
1
2
bull(K1 = 40, opt1 = 5, K2 = 60, opt2 = 3)
bull(K1 = 40, opt1 = 3, K2 = 45, opt2 = 5, type = "put")

蝶式价差策略的可视化

  • 用法:
1
butterfly(K1 = 45, opt1 = 5, K2 = 50, opt2 = 3, K3 = 55, opt3 = 1, type = "call")

  • 描述
    butterfly函数会生成一幅图来展示使用看涨期权或看跌期权的蝶式价差交易策略的盈亏。蝶式价差策略构建的理由是预期未来股价仅有小幅变化。
  • 注意事项
    如果图像存在相互遮盖问题,可以先运行dev.new()命令。如果仍然存在遮盖问题,可以直接运行bull命令调出该函数的源代码,通过修改相应的图形参数消除遮盖问题。
  • 参数说明

    • K1 期权1的执行价格
    • opt1 期权1的价格
    • K2 期权2的执行价格
    • opt2 期权2的价格
    • type 指定是使用看涨期权还是看跌期权进行熊市价差套利。如果是看涨期权,使用type=”call”,表明该策略是买入一个低执行价格的看涨期权和一个高执行价格的看涨期权同时卖出两个中间执行价格的看涨期权;如果是看跌期权,使用type=”put”,表明该策略是买入一个低执行价格的看跌期权和一个高执行价格的看跌期权的同时卖出两个中间执行价格的看跌期权。默认值为”call”。
  • 示例

1
2
butterfly(K1 = 45, opt1 = 5, K2 = 50, opt2 = 3, K3 = 55, opt3 = 1)
butterfly(K1 = 45, opt1 = 1, K2 = 50, opt2 = 3, K3 = 55, opt3 = 5, type = "put")

Black-Scholes-Merton 期权定价模型及其希腊值的计算

  • 用法
1
BSM(S = 41, K = 40, sigma = 0.3, r = 0.08, T = 1, t = 0, dividend = 0, type = "call")
  • 描述
    BSM函数可以根据输入的期权相关参数计算出期权的理论价格和希腊值,包括Delta、Gamma、Theta、Vega和Rho。

  • 参数说明

    • S 期权标的股票的期初股价,默认值为41
    • K 期权的执行价格,默认值为40
    • sigma 期权标的股票价格的年波动率,默认值为0.3
    • r 无风险利率,默认值为0.08
    • T 到期时间,默认值为1
    • t 起始时间,默认值为0,也就是期权的默认持续期为1
    • dividend 复利股息率, 默认值为0,即不分红
    • type 指定期权的类型,默认为call
  • 示例

1
2
BSM(S = 41, K = 40, sigma = 0.3, r = 0.08, T = 1, t = 0, dividend = 0)
BSM(S = 41, K = 40, sigma = 0.3, r = 0.08, T = 1, t = 0, dividend = 0, type = "put")
  • 参考
    John C.Hull. Options, Futures, and other Derivatives 9ed

writing.call 出售备兑买权策略(出售备兑买权策略的反向操作)的可视化

  • 描述
    writing.call函数会生成一幅图来展示做空看涨期权和做多股票组合或者做多看涨期权和做空股票的组合的盈亏。出售备兑买权策略构建的理由是对市场的看多,但是又担心未来股价下跌,如果未来股价下跌,做空买权的收益可以用来弥补损失。其反向操作则是对市场的看空,但是又担心未来股价上涨,如果未来股价上涨,可以通过执行买权来弥补损失。
  • 注意事项
    如果图像存在相互遮盖问题,可以先运行dev.new()命令。如果仍然存在遮盖问题,可以直接运行writing.call命令调出该函数的源代码,通过修改相应的图形参数消除遮盖问题。
  • 参数说明
    K 看涨期权的执行价格
    opt 看涨期权的价格
    position 指定是使用正向的出售备兑买权策略(-C+S),还是反向的保护卖权策略(+C-S)。

  • 示例

1
2
writing.call(K = 40, opt = 5, S = 42)
writing.call(K = 40, opt = 5, S = 42, position = "short")

  • 参考
    John C.Hull. Options, Futures, and other Derivatives 9ed

protective.put 保护卖权策略(保护卖权策略的反向操作)的可视化

  • 用法
1
protective.put(K = 40, opt = 5, S = 42, position = "short")

  • 描述
    protective.put函数会生成一幅图来展示同时做多或同时做空看跌期权和股票组合的盈亏。保护卖权策略构建的理由是对市场的看多,但是又担心未来股价下跌,如果未来股价下跌,可以执行看跌期权来弥补损失。其反向操作则是对市场的看空,但是又担心未来股价上涨,如果未来股价上涨,做空看跌期权获得的期权费可以弥补损失。
  • 注意事项
    如果图像存在相互遮盖问题,可以先运行dev.new()命令。如果仍然存在遮盖问题,可以直接运行protective.put命令调出该函数的源代码,通过修改相应的图形参数消除遮盖问题。
  • 参数说明
    K 看跌期权的执行价格
    opt 看跌期权的价格
    position 指定是使用正向的保护卖权策略(同时做多卖权和标的股票),还是反向的保护卖权策略(同时做空卖权和标的股票)。

  • 示例

1
2
protective.put(K = 40, opt = 5, S = 42)
protective.put(K = 40, opt = 5, S = 42, position = "short")
  • 参考

    John C.Hull. Options, Futures, and other Derivatives 9ed

putbt 看跌期权二叉树定价(连续复利情况)

该函数使用二叉树对欧式期权进行定价,最后会绘制一幅二叉树和返回期权的价格

  • 用法:
1
putbt(S = 41, K = 40, sigma = 0.3, r = 0.2, T = 1, dividend = 0, l = 1/3)

  • 参数说明
    S 当前股票的价格,默认值为41
    K 执行价格,默认值为40
    sigma 股价的波动率,默认值为0.3
    r 无风险利率,默认值为0.2
    T 期权到期期限,默认值为1
    dividend 复利股息率,默认值为0,即不分红
    l 二叉树中每一期的长度,默认值为1/3,即二叉树的默认期限为3期

  • 参考

OTS package, WangXu [email protected]

看跌期权二叉树定价(离散复利情况)

该函数使用二叉树对欧式期权进行定价,最后会绘制一幅二叉树和返回期权的价格

  • 用法:
1
dputbt(S = 4, K = 5, r = 1/4, u = 2, d = 1/2, T = 3, l = 1)

  • 参数说明

S 当前股票的价格,默认值为4
K 执行价格,默认值为5
r 无风险利率,默认值为0.25
u 股价的上涨幅度,默认值为2
d 股价的下跌幅度,默认值为1/2
T 期权到期期限,默认值为3
l 二叉树中每一期的长度,默认值为1,即二叉树的默认期限为3期

  • 参考

OTS package, WangXu [email protected]

看涨期权二叉树定价(连续复利情况)

该函数使用二叉树对欧式期权进行定价,最后会绘制一幅二叉树和返回期权的价格

  • 用法
1
callbt(S = 41, K = 40, sigma = 0.3, r = 0.2, T = 1, dividend = 0, l = 1/3)

  • 参数说明

S 当前股票的价格,默认值为41
K 执行价格,默认值为40
sigma 股价的波动率,默认值为0.3
r 无风险利率,默认值为0.2
T 期权到期期限,默认值为1
dividend 复利股息率,默认值为0,即不分红
l 二叉树中每一期的长度,默认值为1/3,即二叉树的默认期限为3期

  • 参考

OTS package, WangXu [email protected]

看涨期权二叉树定价(离散复利情况)

该函数使用二叉树对欧式期权进行定价,最后会绘制一幅二叉树和返回期权的价格

  • 用法
1
dcallbt(S = 4, K = 5, r = 1/4, u = 2, d = 1/2, T = 3, l = 1)

  • 参数说明

S 当前股票的价格,默认值为4
K 执行价格,默认值为5
r 无风险利率,默认值为0.25
u 股价的上涨幅度,默认值为2
d 股价的下跌幅度,默认值为1/2
T 期权到期期限,默认值为3
l 二叉树中每一期的长度,默认值为1,即二叉树的默认期限为3期

  • 参看

OTS package, WangXu [email protected]

  • 示例
1
2
dcallbt(S = 4, K = 5, r = 1/4, u = 2, d = 1/2, T = 3, l = 1)
dcallbt(S = 41, K = 50, r = 1/4, u = 2, d = 1/2, T = 3, l = 1)
# R

评论

程振兴

程振兴 @czxa.top
截止今天,我已经在本博客上写了658.8k个字了!

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×