理解BS期权定价

news2024/11/16 1:53:39

开局放图

1.完整图示

开局一张图!全篇编的尽可能通俗化,有些地方避免不了用公式解释,内容的完整流程图示绘制如下,建议全篇读完后再看流程图。

2.背景知识

期权介绍

首先简单介绍下期权背景知识,期权(Option)是一种赋予期权买方在约定日期以约定的价格买入或卖出约定数量标的资产的权利的合约,而期权卖方必须履行承诺。

按照期权买方执行期权的时限,又可以分成欧式期权和美式期权:1. 欧式期权,即期权买方只能在期权的到期日才能行权的期权;2. 美式期权,即期权买方可以在到期日之前的任一交易日或到期日行权的期权,文章后续内容都假定是欧式期权。按照期权的行权方是买方还是卖方划分:1. 认购期权买方行权,即看涨期权,当 "约定行权价格 + 权利金 < 市场价格" 时盈利,当 "约定行权价格 < 市场价格" 时,即为实值期权,通常买方会行权;2. 认沽期权卖方行权,即看跌期权,显然逻辑相反,文章后续示例假定是看涨期权。

例如:当前某股票期权 A 的价格是 100 元,约定行权的价格是 90 元,权利金是 5 元。假定一年后行权时 A 的市场价格涨到了 120 元,那么此时以 90 元价格行权显然净利润挣了 120-90-5=25 元!!!以上就是简单且非严谨的理解下挣钱利器期权(Option)的概念,示例图如下:

期权定价

文章讨论的是理论模型,即决定期权定多少价合理,定少了都像上面图那样卖出肯定亏死,因此引入文章的主要内容:BS 公式,但是模型的有效性依赖一系列的假设,例如:交易连续发生,资产价格符合几何布朗运动等等。文章比较简单,不展开讨论

原理解析

1.标准布朗运动

布朗运动是一个连续随机过程,什么是随机过程?画了一张图:

沿着竖线看,当t=t1时,显然X(t1)是一个随机变量,因为变量可能取到不同颜色曲线上的值,同理对于X(t2),这样沿着t的无限多个随机变量组成随机过程,因此随机过程是一个整体概念,是多维随机变量的延伸。如果只看一种颜色的曲线,则这条曲线x_i(t)对应随机过程的一次全程观测,是关于t的函数x_i(t),可理解成把组成随机过程的全部随机变量都采样一次。有没发现单个曲线好像和股票走势长得很像!想象成三条曲线分别对应连续 3 日 0-24 小时的股票走势!

那么布朗运动就是一种特殊的随机过程,又称为维纳过程,这里准确的说是零初值标准布朗运动,具有一系列的特性,比如轨迹会频繁穿越时间轴t,且任意时刻不偏离时间轴一个正负标准差\sqrt{t},还是一个马尔可夫过程,即从业务角度理解,布朗运动的当前值包含对其未来做预测所需的全部信息等等,反正更适合描述股票运动,我们记成B(t)

2.描述股票价格

描述股票收益率

有了标准的布朗运动B(t),继续构建一个带漂移的布朗运动,这样更贴近股票运动的业务特性,无穷小变化量形式如下:

dX(t)=\mu dt+\sigma dB(t)

上述是一个随机微分方程,满足均值为\mu t,方差为\sigma ^2t的正态分布,其中漂移项系数\mu是长期平均回报率,即股票期望年收益率,\sigma是股票年收益率的标准差。这个等式怎么理解?实际上,用上面的X(t)描述股票的收益率,可以简单看成收益率曲线在期望年收益率\mu上下波动,且不偏离年收益率的标准差\sigma,看着符合现实情况,即A股除外股票长期收益是稳定的

dS(t)/S(t) =\mu dt+\sigma dB(t)\Rightarrow dS(t)=\mu S(t)dt+\sigma S(t)dB(t)

为什么可以用布朗运动描述收益率?1. 股票的连续复利收益率近似地服从正态分布,和布朗运动一致;2. 布朗运动是一个马尔科夫过程,符合弱式有效市场假说;3. 股票收益率在时间上存在转折尖点,因此与布朗运动处处不可微的特性一致

描述股票价格

我们设股票价格是S(t),使其与收益率公式关联,考虑一个非常小的时间间隔内dS(t)为股票价格的变化量,则收益率显然是dS(t)/S(t),结合上面的收益率公式:

dS(t)/S(t) =\mu dt+\sigma dB(t)\Rightarrow dS(t)=\mu S(t)dt+\sigma S(t)dB(t)

上面得出无穷小变化量形式的股票价格S(t)

总结:我们得出了股票价格的表达式S(t),用布朗运动B(t)进行描述,其自身称为一个几何布朗运动

3.伊藤引理形式

因为布朗运动是一个随机过程,且处处不可微,古典微积分解不出来上面一堆公式,因此需要随机分析知识,伊藤积分则是随机分析的基础,如果不喜欢看推导就直接看章节最后的结论。假定我们有一个关于布朗运动B_t的函数f(B_t),按照泰勒展开得到:

f(B_t+\Delta B_t )-f(B_t )={f}' (B_t )(\Delta B_t )+{f}''(B_t )/2*(\Delta B_t )^{2}+...

同时布朗运动有个性质,二次变分非零,因此右式第二项不是第一项的高阶无穷小,即(dBt)2=dt,不能够省略掉,得到伊藤引理的基本形式:

df(B_t )={f}' (B_t )dB_t+1/2 {f}'' (B_t )dt

上面确实和古典微积分不同。继续推导伊藤引理的一般形式,令f(x,X(t))X(t)的二阶连续可导函数,且对t一阶可导。首先不限定\mu\sigma是常数,假定是时间的函数(其实可以是任意函数),重写dX(t)的表达式:


dX(t)=R_t dt+A_t dB(t)

​然后把f按照上面的伊藤引理的基本形式展开:

df(t,X(t))=\partial f/\partial t dt+df(X(t))=\partial f/\partial t dt+\partial f/\partial X(t) dX(t)+1/2 (\partial ^2 f)/(\partial ^2 X(t) ) (dX(t))^2

注意上面不能用二次变分直接把(dX(t))^2换成dt,因为X(t)不是B_t,实际上

(dX(t))^2=R_t^2 (dt)^2+A_t^2 (dB(t))^2+2R_t*A_t*dtdB(t)

右边第1项和第3项是高阶无穷小,直接扔掉,得到

(dX(t))^2=A_t^2 dt

再把dX(t)代入到f的展开式,得到一般形式:

df(t,X(t))=(\partial f/\partial t+\partial f/\partial X(t) R_t+1/2 (\partial ^2 f)/(\partial ^2 X(t) ) A_t^2 )dt+\partial f/\partial X A_t dB(t)

可以看到随机微分方程fX的随机性由同一个布朗运动确定,这点非常关键!!!

总结:上面求了一大堆就是让我们具备了展开分析df(t,X(t))这个随机微分方程的能力。应用随机积分还能得出上面股票价格关于时间的变化函数S(t),此处不再详细解释过程,假定已经计算出了S(t)

4.BS公式

上面内容都有了,现在假定C(t,S(t))是欧式看涨期权的价格,是时间t和股票价格S(t)的函数,观察发现是不是可以按照伊藤引理一般形式展开:

dC=(\partial C/\partial S \mu S+\partial C/\partial t+1/2 (\partial ^2 C)/(\partial S^2 ) \sigma ^2 S^2 )dt+\partial C/\partial S \partial SdB

之前提到伊藤过程X的函数fX的随机性来自同一个布朗运动,结合之前dS=\mu Sdt+\sigma SdB的定义,观察很小时间区间\Delta t内股价\Delta S和期权价格\Delta C的关系,两个公式都看最后一项,发现啊!!!做空1份期权,同时做多\partial C/\partial S份股票,组合两个公式后随机因子dB就没有了,即我们的投资组合结果是确定的,这种方式就是Delta对冲

如果采用上面的股票和期权投资组合,\Delta t时间内对冲后的结果是:

\Delta R=-\Delta C+\partial C/\partial S \Delta S=(-\partial C/\partial t-1/2 (\partial ^2 C)/(\partial S^2 ) \sigma ^2 S^2 )\Delta t

而投资组合的价值是当前做空期权价值加上做多股票价值:

R=-C+\partial C/\partial S S

结合理论:市场中不存在无风险套利机会时,投资组合在Δt时间内的收益率等于无风险收益率r,即表示成\Delta R=rR\Delta t,进一步组合全部公式,就得到了BS微分方程:

\partial C/\partial t+rS \partial C/\partial S+1/2 \sigma ^2 S^2 (\partial ^2 C)/(\partial S^2 )=rC

上面就是个普通微分方程,描述股票和期权的投资组合,随机因子被对冲掉了,因为已假定上面S(t)的价格已经用随机积分求解完了,这里可以求解出C,即期权定价多少钱比较好 #_#,大概原理就是上面这些

编写代码

直接写代码收尾,还有一大堆理论的东西解释起来太麻烦,不如直接跑代码拿结果。因为由上面的 BS 公式可以得到风险中性定价理论,即可以用无风险收益率r对衍生品收益期望进行贴现,从而简化求解过程,得到一组快速求解公式,这里不再列出公式,最终计算出期权理论价格只需要五个变量:当前股价S(0),行权价格K,行权日到当前的年单位时间T,无风险收益率r,标的股票的年收益率的标准差\sigma

代码中的函数 _volatility 结果就是对应的\sigma,即计算年收益率的标准差。完整如下:

from typing import (
    Union,
    Sequence
)
from datetime import datetime

import numpy as np
import pandas as pd
from scipy.stats import norm

TableData = Union[pd.DataFrame, np.ndarray, Sequence[Sequence]]


class BSM:

    def __init__(self, data: TableData, data_column: int = 0, data_cycle: int = 365):
        self.__data = data
        self.__data_column = data_column
        self.__data_cycle = data_cycle

    def pricing_merton(self, S: float, K: float, r: float, T0: datetime, T1: datetime, otype: str = 'call') -> float:
        """BSM 期权定价

        Args:
            S: 股票当前价格
            K: 期权行权价格
            r: 股票无风险收益率
            T0: 期权定价日期
            T1: 期权行权日期
            otype: 期权类型(call or put)

        Returns:
            价格
        """
        if otype != 'call' and otype != 'put':
            raise ValueError('The parameter value of `otype` is illegal')

        sigma = self._volatility()
        return self._price(S, K, sigma, r, T0, T1, otype)

    def _price(self, S: float, K: float, sigma: float, r: float, T0: datetime, T1: datetime, otype: str) \
            -> float:

        T = (T1 - T0).days / 365
        d1 = (np.log(S / K) + (r + pow(sigma, 2) / 2) * T) / (sigma * np.sqrt(T))
        d2 = d1 - sigma * np.sqrt(T)

        if otype == 'call':
            # Call option
            value_c = S * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2)
            return value_c
        else:
            # Put option
            value_p = K * np.exp(-r * T) * norm.cdf(-d2) - S * norm.cdf(-d1)
            return value_p

    def _volatility(self) -> float:
        rate = np.log(self.__data.iloc[:, self.__data_column] / self.__data.iloc[:, self.__data_column].shift(1))
        rate = rate.dropna()
        rate_volatility = np.sqrt(self.__data_cycle) * rate.std()

        return rate_volatility

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1499978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gitlab: PHP项目CI/CD实践

目录 1 说明 2 CI/CD 2.1 部署方式一&#xff1a;增量部署 2.1.1 目标服务器准备 2.2.2 Gitlab及Envoy脚本 2.2 部署方式二&#xff1a;镜像构建与部署 2.2.1 推送到私有化容器仓库 准备工作 脚本 要点 2.2.2 推送到hub.docker.com 准备工作 脚本 3 参考&#x…

Take-home questions——L3

Match the spatial domain image to the Fourier magnitude image 1—D 2—B 3—A 4—E 5—C

一分钟安装使用教程,无需服务器,一台电脑就可使用!全网最快速便捷使用Claude 3方法!

随着AI的应用变广&#xff0c;各类AI程序已逐渐普及&#xff0c;尤其是在一些日常办公、学习等与撰写/翻译文稿密切相关的场景&#xff0c;大家都希望找到一个适合自己的稳定可靠的ChatGPT软件来使用。 ChatGPT-Next-Web就是一个很好的选择。它是一个Github上超人气的免费开源…

如果用户被诱导添加了证书甚至根证书,那哪怕用了 HTTPS,使用中间人攻击就可以窃取用户所有信息了?

最近突然想到一个问题&#xff0c;HTTPS 真的足够安全吗&#xff1f;在一些对安全性要求比较高的项目里&#xff0c;能只依赖 HTTPS 来保证数据安全吗&#xff1f; 我们也用过fiddler 、whistle 等代理软件&#xff0c;也知道要能劫持流量后能看到请求和返回的内容需要添加证书…

ChatGPT 升级出现「我们未能验证您的支付方式/we are unable to authenticate」怎么办?

ChatGPT 升级出现「我们未能验证您的支付方式/we are unable to authenticate」怎么办&#xff1f; 在订阅 ChatGPT Plus 时&#xff0c;有时候会出现以下报错 &#xff1a; We are unable to authenticate your payment method. 我们未能验证您的支付方式。 出现 unable to a…

Apollo决策规划 - EM planner

旨在对b站老王所讲的百度Apollo - EM planner算法做浓缩版总结 0 决策规划背景 基于图搜索 优点&#xff1a; 可以得到全局层面最优解&#xff0c;适用于比较低维数的规划问题 缺点&#xff1a; 规划问题维数较高时&#xff0c;面临指数爆炸问题 基于采样 优点&#xff1a;…

各大厂商常用的弱口令集合

Oms呼叫中心 KXTsoft2010 Glodon控制台 admin TRENDnet趋势网络摄像头 admin/admin MOBOTIX-视频监控 admin/meinsm 思科Cisco 没有原始密码, 第一次登录时需要创建 DRS admin/1234 Honeywell admin/1234 安迅士Axis root/pass, 新安迅士摄像头在用户第一登录时要求创建…

Winform窗体随着屏幕的DPI缩放,会引起窗体变形及字体变形,superTabControl标签字体大小不匹配

一、前言 superTabControl做的浏览器标签(cefsharp)在缩放比例(125%,150%时字体不协调) 物联网浏览器,定制浏览器,多媒体浏览器(支持H264)参考栏目文章即可 二、配置参数 app.manifest参数 dpiAware =true <application xmlns="urn:schemas-microsoft-c…

保持自律,改变形象,认真对待自己

不知道一年365天里究竟有多少个节日&#xff0c;昨天网络上刚过了“女生节”&#xff0c;今天又来了“三八妇女节”。笔者从来都是女权支持者&#xff0c;但也主张切勿支持过了头而形成“女尊男卑”&#xff0c;认为应当遵循“顺其自然”这一规律为好。 有鉴于此&#xff0c;本…

LORA: LOW-RANK ADAPTATION OF LARGE LAN-GUAGE MODELS

TOC 1 前言2 方法2.1 LOW-RANK-PARAMETRIZED UPDATE MATRICES 1 前言 1) 提出背景 大模型时代&#xff0c;通常参数都是上亿级别的&#xff0c;若对于每个具体任务都要去对大模型进行全局微调&#xff0c;那么算力和资源的浪费是巨大的。 根据流形学习思想&#xff0c;对于数…

基于SSM的房客源信息管理系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 SSM框架 3 1.2 Vue框架 3 1.3 ECharts 3 1.4 JQuery技术 3 1.5 本章小结 4 2系统分析 5 2.1 需求分析 5 2.2 非功能需求 8 2.3 本章小节 8 3 系统设计 9 3.1 系统总体设计 9 3.1.1 系统体系结构 9 3.1.2 系统目录结构 9 3…

高效办公-浏览器基本操作

日常我们使用电脑&#xff0c;其实很大部分是用于网络功能&#xff0c;这里面除了客户端程序剩余的就是通过我们的浏览器获取信息或者使用业务系统了&#xff0c;这里就简单学习下浏览器基本常识与操作。 一、浏览器是什么&#xff1f; 白话讲浏览器就是一个软件&#xff0c;我…

Docker安装Redis (全网最详细教程!!!)

一、Redis简介 二、简易版本启动&#xff08;学习版&#xff09; 1、一条命令直接搞定 2、docker ps 命令&#xff0c;查看本机docker运行的容器 3、docker logs 查看日志 4、测试连接 5、优缺点 三、生产版本启动 四、Docker 停止、删除、重启、启动容器 一、Redis简介…

mysql的语法学习总结3(一些常见的问题)

执行后&#xff0c;MySQL 会重新加载授权表并更新权限。 FLUSH PRIVILEGES; 怎么检查自己的电脑端口3306有没有被占用&#xff1f; ESTABLISHED表示被占用&#xff0c;LISTENING表示端口正在被监听&#xff0c;22696是占用该端口的进程的PID&#xff08;进程标识符&#xff0…

手持气象站的优势

【TH-SQ5】手持气象站作为一种便携式的气象监测设备&#xff0c;具有许多显著的优势&#xff0c;主要体现在以下几个方面&#xff1a; 便携性&#xff1a;手持气象站设计精巧&#xff0c;重量轻&#xff0c;易于携带&#xff0c;这使得用户能够轻松地在不同地点进行气象观测&a…

常见数据类型

目录 数据类型 字符串 char nchar varchar varchar2 nvarchar 数字 number integer binary_float binary_double float 日期 date timestamp 大文本数据 大对象数据 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 数…

通俗深入的理解Sora的架构原理

作者公众号 大数据与AI杂谈 &#xff08;TalkCheap&#xff09;&#xff0c;转载请标明出处 开始之前&#xff0c;先解释一下为什么深入和通俗这两个看似自相矛盾的词可以并列在这里。因为后续的一些文章可能也是类似的思路&#xff0c;所以先简单做一下文章定位的说明。要看正…

it-tools工具箱

it-tools 是一个在线工具集合&#xff0c;包含各种实用的开发工具、网络工具、图片视频工具、数学工具等 github地址&#xff1a;https://github.com/CorentinTh/it-tools 部署 docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:lat…

ConGMC

employ I I I(A, B) to represent mutual information Z u v f u → v ( Z u ) Z_{uv}f_{u\to v}(Z_u) Zuv​fu→v​(Zu​) 辅助信息 作者未提供代码

STM32 学习10 PWM输出

STM32 学习10 PWM输出 一、PWM简介1. PWM的概念2. PWM的工作原理3. PWM 常用的应用场景 二、一些概念1. 频率2. 占空比 三、STM32F1 PWM介绍1. 定时器与寄存器&#xff08;1&#xff09;**自动重装载寄存器&#xff08;ARR&#xff09;**&#xff1a;&#xff08;2&#xff09;…