布莱克—斯科尔斯—默顿(BSM)模型

article/2025/11/6 0:14:49
    BSM模型是最常用的期权定价模型之一,虽然其假设不合符市场事实,但是该模型的提出奠定了现代金融衍生品法则的基石。该模型在学界的发展:早期的期权定价大多采用Black-Scholes(B-S)期权定价模型,B-S模型假定标的资产收益率服从正态分布且波动率是常数,但是这一假定无法解释“波动率微笑”和“杠杆效应”。在随后的研究中,不断有学者对B-S模型进行改进,例如修正常数波动率、重新刻画资产波动率分布等。随机波动率模型对B-S模型做出了优化,较为著名的模型有Heston、3/2、4/2模型。除了假设波动率是标的资产和时间的随机过程的随机波动率模型以外,还有一种模型是假设波动率是标的资产和时间的确定性函数的局部波动率。大量研究表明,随机波动性和价格跳跃是资产价格运动的内在特征。当市场上发生突发情况时,随机波动率模型中需要引入跳过程来描述这种突发情况。此外,尽管仿射型Heston随机波动模型在期权解析定价上带来极大便利,但是其无法较好地描述金融时间序列的非线性特征。通过在Heston模型方差过程的扩散项中引入非仿射参数建立非仿射随机波动率模型,可以刻画更丰富的资产价格行为。B-S模型认为期权的标的资产价格服从扩散模型,学者们不断对扩散模型进行改进并得到相应的期权定价模型,如跳扩散期权价格模型、随机波动率模型、非仿射随机波动率期权定价模型等,这些模型统称为基于参数扩散过程的期权定价模型。后有学者把扩散方程设定为非参数形式,建立了基于非参数扩散过程的期权定价模型。近年来学者们在期权定价模型上取得了长足进步,但是这些改进模型仍然忽略了一些重要的影响股价走势的因素,如大盘指数与个股走势存在着长期的均衡关系。国外学者建立了股灾期间的期权定价模型。以上的介绍来自于笔者阅读十余篇相关文献整理的资料的一部分。接下来介绍两中BSM模型1.不带股利的BSM模型2.带股利的BSM模型以不带股利的BSM模型为例,其表达式为:

在这里插入图片描述
带股利的模型则是将股利D贴现后,用股票在t时刻的价值减去股利现值。

接下来介绍两种模型的求解方法,使用python求解,代码为:

不带股利的BSM模型

# Black-Scholes-Merton (1973) European Call & Put Valuationfrom pylab import plt
plt.style.use('seaborn')
%matplotlib inline
import math
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from scipy.integrate import quad
mpl.rcParams['font.family'] = 'serif'#
# Helper Functions
#def dN(x):''' Probability density function of standard normal random variable x. ''' #标准正态随机变量 x 的概率密度函数return math.exp(-0.5 * x ** 2) / math.sqrt(2 * math.pi)def N(d):''' Cumulative density function of standard normal random variable x. '''return quad(lambda x: dN(x), -20, d, limit=50)[0]def d1f(St, K, t, T, r, sigma):#设置函数d1''' Black-Scholes-Merton d1 function.Parameters see e.g. BSM_call_value function. '''d1 = (math.log(St / K) + (r + 0.5 * sigma ** 2)* (T - t)) / (sigma * math.sqrt(T - t))return d1#
# Valuation Functions
##欧式看涨期权函数
def BSM_call_value(St, K, t, T, r, sigma):''' Calculates Black-Scholes-Merton European call option value.Parameters==========St : floatstock/index level at time tK : floatstrike pricet : floatvaluation dateT : floatdate of maturity/time-to-maturity if t = 0; T > tr : floatconstant, risk-less short ratesigma : floatvolatilityReturns=======call_value : floatEuropean call present value at t'''d1 = d1f(St, K, t, T, r, sigma)d2 = d1 - sigma * math.sqrt(T - t)call_value = St * N(d1) - math.exp(-r * (T - t)) * K * N(d2)return call_value#欧式看跌期权函数
def BSM_put_value(St, K, t, T, r, sigma):''' Calculates Black-Scholes-Merton European put option value.Parameters==========St : floatstock/index level at time tK : floatstrike pricet : floatvaluation dateT : floatdate of maturity/time-to-maturity if t = 0; T > tr : floatconstant, risk-less short ratesigma : floatvolatilityReturns=======put_value : floatEuropean put present value at t'''put_value = BSM_call_value(St, K, t, T, r, sigma) \- St + math.exp(-r * (T - t)) * Kreturn put_value
# 赋值
St = 100.00  # initial index level
K = 100.00  # strike level
T = 1.  # call option maturity
r = 0.05  # constant short rate
sigma = 0.2  # constant volatility of diffusion
t=0
print('BSM模型求解的看涨期权价格为:',BSM_call_value(St, K, t, T, r, sigma))
print('BSM模型求解的看跌期权价格为:',BSM_put_value(St, K, t, T, r, sigma))

求解后的结果如下:
BSM模型求解的看涨期权价格为: 10.45058357218553
BSM模型求解的看跌期权价格为: 5.573526022256942

带股利的BSM模型
以上程序可以再次运行,修改参数即可
首先求出股票价格减去股利现值后的股票价格

Su=St-D*np.exp(-((t)*r))
Su

然后设置参数

# 赋值
St = 100.00  # initial index level
K = 100.00  # strike level
T = 1.  # call option maturity
r = 0.05  # constant short rate
sigma=0.2 # constant volatility of diffusion
t=20/360
D=2
print('BSM模型求解的看涨期权价格为:',BSM_call_value(St, K, t, T, r, sigma))
print('BSM模型求解的看跌期权价格为:',BSM_put_value(St, K, t, T, r, sigma))

结果如下:
BSM模型求解的看涨期权价格为: 10.090922223626734
BSM模型求解的看跌期权价格为: 5.478462396092041

最后,可以根据公式画出期权现值与行权价、到期日、短期利率、波动率的关系
以现值和执行价的代码为例

# C(K) plot现值与执行价的关系plt.subplot(221)klist = np.linspace(80, 120, points)vlist = [function(Su, K, t, T, r, sigma) for K in klist]plt.plot(klist, vlist)plt.grid(True)plt.xlabel('strike $K$')plt.ylabel('present value')

结果如下:
不带股利的BSM模型(看涨期权)
在这里插入图片描述
带股利的BSM模型(看跌期权)
在这里插入图片描述
这期分享就到这里,边学习变分享。


http://chatgpt.dhexx.cn/article/O6WmPB9S.shtml

相关文章

攻防世界 Misc miao~

得到一个jpg图片, 分离出jpg中隐含的内容,得到一个wav音频文件 在Audacity中打开,查看频谱图,得到密码CatCTF 在deepsound中打开wav文件,得到flag.txt 打开flag.txt发现是兽语 在线解码兽音译者在线编码解码 - 兽音翻…

[ CTF ]MISC flag

题目附件密码:7dm3 解压文件后仅有一个名为flag的文件: 首先,我们不知道这是个什么类型的文件。这题步骤不难思路难,看做题经验和积累了 1、直接把文件扔进十六进制 可以看到文件头是504B0304判断它可能是压缩包文件或者word文档&#xff0…

【ctf秀】【MISC】MISC入门misc10

一、解题环境 windows7 二、考点:binwalk的使用 考点发现及解题过程(所有的png图片misc题均可这么做): 1.解压zip文件,用winhex打开misc10.png 2.判断文件格式是否篡改,检查png的文件头和文件尾,文件格式…

BUUCTF_MISC题解

BUUCTF_MISC题解 第二题 将GIF图片用ps进行逐帧分解,可以得到三张特殊的照片 直接将三个照片里的内容拼接起来就好 第三题 二维码 下载好附件解压后发现是一个.png文件的二维码 用CQR扫描后得到二维码的结果 发现并没有得到想要的flag,并且提示我们f…

MISC总结

文章目录 1.CTF中的压缩包1.1.练习11.2.练习21.3.练习31.4.练习41.5.练习51.6.练习61.7.练习71.8.练习81.9.练习91.10.练习10 2.基于BinWalk实现文件提取2.1.预备知识2.2.镜像文件提取数据 3.结构化文件信息隐藏3.1.预备知识 4.隐写4.1.图片隐写4.1.1.matlab图像处理4.1.2.LSB算…

Misc新手合辑

流量分析2 流量包数很少的分析 题目也没给别的文件,应该不用解加密的数据内容 那就康康有没有什么明文信息 过滤器输入http.request.method "GET"出来几个包: 从第一个包顺序开始右键follow一下,看一下http stream数据: 有fl可能是flag,加上follow出来的过滤器…

ctfshow misc入门wp

目录 图片篇(基础操作) misc1 misc2 misc3 misc4 图片篇(信息附加) misc5 misc6 misc7 misc8 ​misc9 misc10 misc11 misc12 ​misc13 misc14 misc15 misc16 misc17 misc18 misc19 misc20 misc21 misc22 …

BUUCTF MISC入门

1.gif 用firework 帧分解得到其中三帧中隐藏的flag 可以下载一个截图软件把各帧订住方便查看 注意:he11o不是hello(血与泪的教训) 2.二维码 看到二维码先是拿软件识别了一下,发现内容是secret is here,啥也没有 然后winhex发现里面有个txt 就放到linux下…

MISC相关工具下载

写在前面:本文包含在windows和在kali下使用的工具,win下已做标 MISC相关工具下载 图片相关 jpg f5-steganography (F5隐写,需要passwd) 安装 kali中安装: git clone https://github.com/matthewgao/F5-steganography > git clo…

攻防世界1-misc

1-misc 题目描述:无 题目环境:https://download.csdn.net/download/m0_59188912/87094807 打开压缩包,提示密码是出题人生日。 使用archpr爆破压缩包。 得到密码:20001228 解压压缩包,得到两个文件,一个图片…

ctfshow_MISC入门

目录 图片篇(基础操作) misc1 misc2 misc3 misc4 图片篇(信息附加) misc5 misc6 misc7(flag在图片文件信息中) misc8(flag在图片文件中图片文件中) misc9(fla…

攻防世界_MISC之Misc文件类型

解压 Notepad打开文件,想到hex转ascii 转码后发现,这里BASE64字符反转了,应该提示这是base64编码,因为base64编码没有_下斜杠符号,所以删掉46ESAB_,然后再利用插件的base64解码 看见zip文件头PK&#xff0c…

攻防世界misc

目录 1. give_you_flag (二维码补全定位角) 2. 坚持60s (jar包反编译) 3. 如来十三掌 4. gif 5. stegano 6. 掀桌子 7. SimpleRAR 8. ext3 9. 功夫再高也怕菜刀 10. Wireshark 1. give_you_flag (二维码补全定位角) 附件得到一个gif动图,用stegsolve Fra…

Misc(buuoj)

一、[GWCTF2019]math 二、[BSidesSF2020]mpfrag [GWCTF2019]math 开启靶机连接环境。题目给出了一个算式,但是算不了几秒就退出了。 同时还给了我们源程序:"gwctf_2019_math"。 放到IDA64里看一下,找到它的主函数。 int __cdecl main(int…

CATCTF_Misc

1、Nepnep 祝你新年快乐啦! 在视频结尾处我们可以看到flag的,电脑会自动删减掉最后几帧,最好用手机看 使用Firefox,F12搜索catCTF也是可以找到flag的 继续回车即可得到flag CatCTF{H4ppy_n3w_y34r} 2、CatFlag 附件打开是一堆看…

Misc常见解法

Misc常见解法##一.图片隐写 先确定文件的类型,如果没有明确说明文件类型,可以通过HxD或者010或者wireshark查看文件头或者文件尾 常见的有 文件类型文件头文件尾JPEG(jpg)FFD8FFFFD9PNG89504E47000049454E44AE426082GIF4749463839613BTIFF(tif)49492A…

BUUCTF-Misc

签到 flag{buu_ctf} 第二题 下载下来zip解压发现个gif图片,用Stegsolve.jar打开aaa.gif图片,依次点击analyse——>frame Browser flag{he11ohongke} 二维码 下载解压发现一个二维码用CQR扫一下发现没有flag 用binwalk进行分析看看有没有隐藏文件 发现有个4number.txt文…

攻防世界-MISC-MISC文件类型

下载附件解压后发现是一个txt文件 txt文件打开后,可以发现是16进制,将它转化成ASCII码,如 (这段编码一开始没有get到它的点,就一直在想是个什么类型的文件,因为题目题目是文件类型,进了误区&…

攻防世界的MISC—— Misc文件类型题

1.解压文件得到: 2.查看其中的内容发现包含字母,数字;其中字母最大为F,怀疑可能是十六进制 使用工具CTF-tools将其内容转换为Str类型,可以得到: 3.查看解码过的内容,开头有46ESAB_&#xff0c…

CTF-MISC(入门|笔记|工具)

文章目录 音频隐写直接隐写频谱隐写 流量分析第一种流量包修复第二种是协议分析第三种数据提取 图片分析zstegBMPPNGforemost 工具binwalksteghidestegslovetweakpng JPGF5-steganographystegdetect 压缩包分析zip伪加密crc32zip包明文攻击 其它条形码扫描pyc反编译数据转换到A…