用于金融的python——蒙特卡洛法估计欧式看涨期权

本篇及接下来的几篇主要学习关于金融的python的基础语言、语法。

1.1《python金融数据分析》这本书一上来就举了一个金融现象——通过蒙特卡洛模拟方法模拟估计欧式看涨期权的价值(一步步慢慢来介绍)

1.1.1蒙特卡洛模拟方法(MATLAB课最近涉及了一些):可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。

详情看维基百科https://en.wikipedia.org/wiki/Monte_Carlo_method

1.1.2欧式期权:期权是一种金融合约,这一合约赋予其持有人在约定的时间以约定的价格买入或卖出标的资产的权利。期权的行权方式主要有美式期权和欧式期权。欧式期权指期权买方只能选择合约到期日行使权利,在合约到期日之前不能行权。

这个链接讲的美式期权与欧式的一些区别与利弊https://jingyan.baidu.com/article/c843ea0bd297dc77931e4afc.html

1.1.3看涨期权:指期权买入方按照一定的价格,在规定的期限内享有向期权卖方购入某种商品或期货合约的权利,但不负担必须买进的义务。看涨期权又称“多头期权”、“延买权”、“买权”。

看跌期权:指期权买方按照一定的价格,在规定的期限内享有向期权卖方出售商品或期货的权利,但不负担必须卖出的义务。看跌期权又称“空头期权”、“卖权”和“延卖权”。在看跌期权买卖中,买入看跌的投资者是看好价格将会下降,所以买入看跌期权;而卖出看跌期权方则预计价格会上升或不会下跌。

1.1.4B-S模型(Black-Scholes Option Pricing Model):参考https://wiki.mbalib.com/wiki/Black-Scholes%E6%9C%9F%E6%9D%83%E5%AE%9A%E4%BB%B7%E6%A8%A1%E5%9E%8B

已知BSM中期权潜在风险遵循几何布朗运动,

初始股票指数水平S_{0}=100

欧式看涨期权的行权价格K=105

到期时间T=1

固定无风险短期利率r=5%%

固定波动率\delta =20%

在BSM中,到期指数水平是随机变量,到期指数水平S_{T}=S_{0}exp\left ( \left ( r- \frac{1}{2}\delta ^{^{2}}\right ) T+\delta \sqrt{T}z\right ),z是标准正态的分布的随机变量

1.1.5蒙特卡洛估值过程的算法描述:

(1)从N(0,1)中取I个随机数z(i),i=1,2····I

(2)计算所有到期指数水平S_{T}(i)

(3)计算到期时期权的所有内在价值h_{T}(i)=max(S_{T}(i)-K,0)

(4)通过蒙特卡洛估算函数C_{0}\approx e^{-eT}\frac{1}{I}\sum h_{T}(i)估计期权现值

代码

From *

当我们使用from * 的时候,会取得模块顶层左右赋值的变量名的拷贝。(就是方便不用一直写np.)

from numpy import *
S0=100
K=105
T=1.0
r=0.05
sigma=0.2
I=1000000
z=random.standard_normal(I)
ST=S0*exp((r-0.5*sigma**2)*T+sigma*sqrt(T)*z)
hT=maximum(ST-K,0)
c0=exp(-r*T)*sum(hT)/I
print(c0)

常规写法

import numpy as np
S0=100
K=105
T=1.0
r=0.05
sigma=0.2
I=1000000
z=np.random.standard_normal(I)
ST=S0*np.exp((r-0.5*sigma**2)*T+sigma*np.sqrt(T)*z)
hT=np.maximum(ST-K,0)
c0=np.exp(-r*T)*np.sum(hT)/I
print (c0)

 

你可能感兴趣的:(用于金融的python——蒙特卡洛法估计欧式看涨期权)