股票期权二叉树定价 excel VBA程序
第10章二叉树法期权定价及其Python应用

第10章二叉树法期权定价及其Python应用本章精粹蒙特卡罗模拟法便于处理报酬函数复杂、标的变量多等问题,但是在处理提前行权问题时却表现出明显的不足。
本章将要介绍的二叉树法可以弥补蒙特卡罗模拟法的这种不足。
二叉树的基本原理是:假设变量运动只有向上和向下两个方向,且假设在整个考察期内,标的变量每次向上或向下的概率和幅度不变。
将考察期分为若干阶段,根据标的变量的历史波动率模拟标的变量在整个考察期内所有可能的发展路径,并由后向前以倒推的形式走过所有结点,同时用贴现法得到在0时刻的价格。
如果存在提前行权的问题,必须在二叉树的每个结点处检查在这一点行权是否比下一个结点上更有利,然后重复上述过程。
10.1 二叉树法的单期欧式看涨期权定价假设:(1) 市场为无摩擦的完美市场,即市场投资没有交易成本。
这意味着不支付税负,没有买卖价差(Bid-Ask Spread)、没有经纪商佣金(Brokerage Commission)、信息对称等。
(2) 投资者是价格的接受者,投资者的交易行为不能显著地影响价格。
(3) 允许以无风险利率借入和贷出资金。
(4) 允许完全使用卖空所得款项。
(5) 未来股票的价格将是两种可能值中的一种。
为了建立好二叉树期权定价模型,我们先假定存在一个时期,在此期间股票价格能够从现行价格上升或下降。
下面用实例来说明二叉树期权定价模型的定价方法。
1. 单一时期内的买权定价假设股票今天(t =0)的价格是100美元,一年后(t =1)将分别以120美元或90美元出售,就是1年后股价上升20%或下降10%。
期权的执行价格为110美元。
年无风险利率为8%,投资者可以这个利率放款(购买这些利率8%的债券)或借款(卖空这些债券)。
如图10-1所示。
今天 1年后t =0 t =1u S 0=120 上升20% 1000=Sd S 0=90 下降10%u 0max(u ,0)max(120110,0)10C S X =-=-=?0=Cd 0max(d ,0)max(90110,0)0C S X =-=-=图10-1 买权价格图10-1表示股票买权的二叉树期权定价模型。
运用EXCEL2007制作美式期权二叉树定价模型

全国中文核心期刊·财会月刊□期权是指一种合约,该合约赋予持有人在某一特定日期或该日期之前的任何时间以固定价格购进或售出一种资产的权利。
按期权执行时间,期权可分为欧式期权和美式期权。
欧式期权只能在期权到期日执行,而美式期权可以在到期日或到期日之前任何时间执行。
期权最先在金融领域出现,但它更广泛地被用于投资评价。
期权定价可基于复制原理或风险中性原理,两者比较,根据风险中性原理计算较为简易。
这里,笔者试图根据风险中性原理基于EXCEL2007平台,建立美式期权估价模型。
一、EXCEL2007的相关函数及工具介绍1.单元格绝对引用与相对引用。
例:在A4单元格内输入“=sum ($A1:A $3)”,复制A4单元格,并粘贴至B5单元格,B5格的公式为“=sum ($A2:B $3)”,前面加“$”的为绝对引用,不随移动复制位置的改变而改变。
2.if (Logical_test ,value_if_true ,value_if_false ),判断Logical_test 条件是否为真,为真则执行value_if_true ,为假则执行value_if_false 。
例如:A1单元格输入“50”,A2格内输入“=if (A1>60,”及格”,”不及格”)”,结果A2格内值为“不及格”。
3.sumproduct (array1,array2,array3,….),返回相应的数组或区域乘积的和。
例如:在A1:A3区域分别输入“1,2,3”,在B1:B3区域内输入“2,3,4”,在B4内输入“=sumproduct (A1:A3,B1:B3)”,B4格内的计算实质为“=A1*B1+A2*B2+A3*B3”,结果值为“20”。
4.OR (logical1,logical2,...),在其参数组中,任一参数值为TRUE ,即返回TRUE ;只有当所有参数值均为FALSE 时才返回FALSE 。
例如:在某单元格输入“=OR (D4=“”,D4=“入库”)”,如果D4单元格为空值或“入库”字样,结果为TRUE ;若为其他字符或公式,结果为FALSE 。
ExcelVBA金融工程Section2-美式期权定价

ExcelVBA金融工程Section2-美式期权定价梦特卡罗期权价格计算美式期权指在合约期限内任何时点(直至及包括到期日)均可执行的一种期权,不同于只能在到期日才能执行的欧式期权。
例如,美式看跌期权可以在到期前行使而其内在价值是根據其期权金計算?(S)=max{K-S, 0}。
標的资产价格S t在時间t時,以美式看跌期权計算其公平价值在风险中性時如下F(S t, t)=ê(e?r(τs?t)?(Sτs)|S t(9.39)當隨机资产价格変动從S t開始到首次行使時间ζs。
它的發生可以是在期权到期時或是在期限内任何时点而當它的内在价值大過它的合理价值時。
在期限内任何时点t時,它的最优條款(S t) ≧F(S t, t) (9.40)美式看跌期权的价格应包括以下特性f(S t,t)=max{F(S t, t), ?(S t)} (9.41)公式(9.40)可以用來定義其价格S c(t)在時点t時其行使权的條件需符合S t≦S c(t)。
在此方法下,制定的條款便可輕易地實施只需简單地测試资产價格在特定的價格下便可。
特別注意其公平價值F(S t, t)可以被估計出當所有特定價格,或範圍,在時间t時都被计算出。
即是其特定價格S c(t)都可由倒退法找出開始由期权到期S c(T)=K。
要找出美式看跌期权的現貨價格,需要首先做出整個主要的範圍然后才評估其中性风险的期望値为f0=max{ê(e-rζs?(Sζs)|S0), ?(S0)} (9.42)再者,可以将一個非常大的N分为相等的時间间距Δt=T/N ,那庅便可产生整個期权的生命里當i由0走到N-1为止時每一個時间步骤t i=iΔt。
在時间t i時,試考慮S ti=x同時假設主要遠期時间範圍为{S c(t i+1),… , S c(t N)=K}。
美式看跌期权的公平價格可以用梦特卡罗模拟法中計算出F(S ti=x,t i)= ê(e-r(tζ-ti)?(S tζ )|S ti=x) (9.43)公式(9.43) 可产生资产價格迴路而餘下生命週期的期权则可将公式(9.44) 中的j由i走到N-1为止開始時由S ti=xS tj+1=S tjexp((r-12?σ2)Δt+σ√?tεj(9.44)假如在期权到期前任何时间里其产生價格是S tj+1≤S c(t j+1)的时候,同时当公式(9.43)里的τs=t j+1时該期权便应行使。
第10章二叉树法期权定价及其Python应用

第10章二叉树法期权定价及其Python应用本章精粹蒙特卡罗模拟法便于处理报酬函数复杂、标的变量多等问题,但是在处理提前行权问题时却表现出明显的不足。
本章将要介绍的二叉树法可以弥补蒙特卡罗模拟法的这种不足。
二叉树的基本原理是:假设变量运动只有向上和向下两个方向,且假设在整个考察期内,标的变量每次向上或向下的概率和幅度不变。
将考察期分为若干阶段,根据标的变量的历史波动率模拟标的变量在整个考察期内所有可能的发展路径,并由后向前以倒推的形式走过所有结点,同时用贴现法得到在0时刻的价格。
如果存在提前行权的问题,必须在二叉树的每个结点处检查在这一点行权是否比下一个结点上更有利,然后重复上述过程。
10.1 二叉树法的单期欧式看涨期权定价假设:(1) 市场为无摩擦的完美市场,即市场投资没有交易成本。
这意味着不支付税负,没有买卖价差(Bid-Ask Spread)、没有经纪商佣金(Brokerage Commission)、信息对称等。
(2) 投资者是价格的接受者,投资者的交易行为不能显著地影响价格。
(3) 允许以无风险利率借入和贷出资金。
(4) 允许完全使用卖空所得款项。
(5) 未来股票的价格将是两种可能值中的一种。
为了建立好二叉树期权定价模型,我们先假定存在一个时期,在此期间股票价格能够从现行价格上升或下降。
下面用实例来说明二叉树期权定价模型的定价方法。
1. 单一时期内的买权定价假设股票今天(t =0)的价格是100美元,一年后(t =1)将分别以120美元或90美元出售,就是1年后股价上升20%或下降10%。
期权的执行价格为110美元。
年无风险利率为8%,投资者可以这个利率放款(购买这些利率8%的债券)或借款(卖空这些债券)。
如图10-1所示。
今天 1年后t =0 t =1u S 0=120 上升20% 1000=Sd S 0=90 下降10%u 0max(u ,0)max(120110,0)10C S X =-=-=?0=Cd 0max(d ,0)max(90110,0)0C S X =-=-=图10-1 买权价格图10-1表示股票买权的二叉树期权定价模型。
使用excel和vba股票操作日志

使用excel和vba股票操作日志使用Excel和VBA进行股票操作日志在进行股票交易时,及时记录并分析交易日志是非常重要的。
利用Excel和VBA编程可以帮助我们更加高效地管理和分析股票操作日志。
本文将介绍如何利用Excel和VBA编写股票操作日志,并提供一些实用的技巧和建议。
一、创建股票操作日志表格我们需要在Excel中创建一个表格,用于记录股票交易的相关信息。
在表格中,我们可以包括以下列:日期、股票代码、股票名称、买入/卖出、交易价格、交易数量、交易金额等信息。
根据实际需要,可以添加其他列来记录更多的交易信息。
在表格中,每一行代表一次交易记录,我们可以根据需要随时添加新的交易记录。
同时,我们可以使用Excel的筛选和排序功能,方便地对交易记录进行筛选和排序。
二、添加VBA宏代码除了手动输入交易记录外,我们还可以利用VBA编写宏代码来自动记录交易信息。
下面是一个示例的VBA代码,用于在表格中添加新的交易记录:```vbaSub AddNewTrade()Dim ws As WorksheetDim lastRow As LongSet ws = ThisWorkbook.Worksheets("交易记录") '将“交易记录”替换为实际的工作表名称lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1ws.Cells(lastRow, "A").Value = Date '记录当前日期ws.Cells(lastRow, "B").Value = InputBox("请输入股票代码") '输入股票代码ws.Cells(lastRow, "C").Value = InputBox("请输入股票名称") '输入股票名称ws.Cells(lastRow, "D").Value = InputBox("请输入买入/卖出") '输入买入/卖出ws.Cells(lastRow, "E").Value = InputBox("请输入交易价格") '输入交易价格ws.Cells(lastRow, "F").Value = InputBox("请输入交易数量") '输入交易数量ws.Cells(lastRow, "G").FormulaR1C1 = "=RC[-2]*RC[-1]" '计算交易金额MsgBox "交易记录已添加成功!"End Sub```以上代码将在“交易记录”工作表中的下一行添加新的交易记录。
EXCEL VBA 金融工程 Section 2 - BDT二义树及期限结构模型

Black-Derman-Toy 模型Black-Derman-Toy 二义树及期限结构模型与股票期权相似,利率衍生产品都是倚靠其目标物-利率。
而利率期限结构是某个时点不同期限的利率所组成的一条曲线。
它是资产定价、金融产品设计、保值和风险管理、套利以及投机等的基准,也是中央银行控制短期利率变化以影响中长期利率变化的传递机制。
而单因素利率期限结构模型,瞬时短期利率r t 是起着决定性作用的内生变量。
根据市场期望假设,中长期利率等于未来相应时期内瞬时短期利率总和的期望。
而其衍生产品的价格便可根据此短期利率在风险中性下定价f 0=E (e −∫r t dt T 0f T |r 0) (1)在公式(1),期权的未来收益f T 是会根据产生出来到期利率进行评估。
已近代的方法则会以Health, Jarrow, and Morton 的无套利定价方法进行。
在期权定价上,以上的用树式方法便足够将风险中性的短期利率同现实的利率曲线比较。
而Black-Derman-Toy 因此发展出一个简单的二义树模型校正现实零息债券的利率期限结构及波动率.BDT 模型发展出结合将风险中性的短期利率的二义树及特定时间Δt ,如图1(a) 。
图1:(a) BDT 二义树模型结合树交叉点。
(b) 使用风险中性作为期权定价的单一个BDT 分支树在时间t=i Δt ,由上到下会有t+1个交叉点及短期利率r ij 而j 则由0到i 为止。
而其则代表按年计一个周期利率以最短可以借到的期限Δt 由t 到t+Δt 。
BDT 树则跟从Jarrow and Rudd 到参数设定及概率为p=12。
普遍来说,向上及向下的因素会倚赖时间及其相关短期利率的值。
假设设定为一个non-stochastic 结构的短期利率的波动率,就可表示其关系为时间及每一步骤i 时整个列里的短期利率都可设置为两个因素r ij =αi (βi )j (2)公式(1),BDT 树提供一个工具用来评估利率期权在风险中性的定价。
使用Excel进行股票投资分析入门教程

使用Excel进行股票投资分析入门教程一、介绍Excel在股票投资分析中的应用股票投资分析是投资者在进行股票交易前对股票市场的研究和分析的过程。
Excel作为一款强大的电子表格软件,可以提供丰富的功能,帮助投资者进行股票投资分析。
本文将详细介绍如何使用Excel进行股票投资分析,以便投资者能够从容应对投资决策。
二、Excel中的股票数据导入与整理在使用Excel进行股票投资分析之前,第一步是将股票数据导入到Excel中并进行整理。
投资者可以通过各种途径获取股票数据,如财经网站、券商软件等。
将获取的数据保存为Excel文件,然后打开Excel进行导入。
在Excel中,投资者可以使用数据导入向导将数据文件导入到工作表中。
导入完成后,可以使用Excel的筛选和排序功能对数据进行整理和分类,以便更好地进行后续的分析。
三、使用Excel进行基本面分析基本面分析是股票投资中的重要一环,它通过分析公司的财务和经营状况来判断公司的价值和发展潜力。
在Excel中,投资者可以利用各种公式和函数进行基本面分析。
1. 利用Excel进行财务分析Excel提供了丰富的财务函数,如SUM、AVERAGE、MAX、MIN等,能够帮助投资者计算财务指标。
例如,可以使用SUM函数计算公司的总资产,使用AVERAGE函数计算公司的平均每股收益。
2. 利用Excel绘制财务图表除了计算财务指标,Excel还可以通过绘制图表来更直观地展示财务情况。
投资者可以借助Excel的图表工具,绘制柱状图、折线图等各种财务图表,以便更好地了解公司的财务状况。
四、使用Excel进行技术分析技术分析是通过研究股票的历史价格和成交量等指标来预测其未来走势的方法。
在Excel中,投资者可以使用各种函数和工具进行技术分析。
1. 利用Excel计算技术指标例如,投资者可以使用Excel的移动平均函数,如AVERAGE、SMA,来计算股票的移动平均线。
移动平均线是技术分析中常用的指标,可以帮助投资者确定股票的趋势。
利用Excel中的宏VBA让股票自动显示当前价格

#NAME? #NAME?
万年青 平安银行
#NAME? #NAME? #NAME? #NAME?
#NAME? #NAME?
#NAME? #NAME?
中信银行H股 #NAME? #NAME? #NAME?
#NAME?
开盘价 #NAME? #NAME? #NAME?
单日最高价 #NAME?
说明: 1.股票行情使用新浪行情接口完成。上面黄色的6列就是从网上抓取的。 2.举例:以B5格子长江电力为例,格子里面填的是=getStockPrice("sh600900");另外其他4个功能函数 价/成交总量),分别命名getOpenStockPrice( ),getMaxStockPrice( ),getMinStockPrice( ),getTra 3.自动刷新功能:可以选择运行宏mycalc,30秒定时刷新;如果不需要自动刷新功能,也可手工触发刷 格,按下键盘delete即可)。
股票名称 上证指数 深证综指 创业板指
当前价 #NAME? #NAME? #NAME?
昨收盘 #NAME? #NAME? #NAME?
涨跌 #NAME? #NAME?
涨跌幅度 #NAME? #NAME?
长江电力 光大银行
#NAME? #NAME? #NAME? #NAME?
#NAME? #NAME?
当日最低价 #NAME? #NAME? #NAME?
当日成交额(万元) #NAME? #NAME? #NAME?
#NAME?
#NAME?
);另外其他4个功能函数(开盘价/最高价/最低 nStockPrice( ),getTradeVolume( )。 新功能,也可手工触发刷新(在excel上找个空
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sub 期权定价()
Dim i As Long
'将输入的参数的值赋给相应的变量
s0 = Worksheets(1).Cells(1, 2)
x = Worksheets(1).Cells(2, 2)
r = Worksheets(1).Cells(3, 2)
s = Worksheets(1).Cells(4, 2)
t = Worksheets(1).Cells(5, 2)
n = Worksheets(1).Cells(6, 2)
'生成表格
Worksheets(1).Cells(1, 4) = "期数" Worksheets(1).Cells(2, 4) = "时间(年)" Worksheets(1).Cells(3, 4) = "上行乘数" Worksheets(1).Cells(4, 4) = "下行乘数" Worksheets(1).Cells(5, 4) = "股票价格" Worksheets(1).Cells(n + 6, 4) = "执行价格" Worksheets(1).Cells(n + 7, 4) = "上行概率" Worksheets(1).Cells(n + 8, 4) = "下行概率" Worksheets(1).Cells(n + 9, 4) = "买入期权价格"
'合并相应单元格
Set rr1 = Range("D5")
For i = 1 To n
Set rr1 = Union(Range("D" & (5 + i)), rr1) Next
rr1.Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
'设置格式居中
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
'合并相应单元格
Set rr2 = Range("D" & (n + 9))
For i = 1 To n
Set rr2 = Union(Range("D" & (n + 9 + i)), rr2) Next
rr2.Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
'设置格式居中
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
'计算表格相应内容
'期数
Worksheets(1).Cells(1, 5) = 0
For i = 1 To n
Worksheets(1).Cells(1, 5 + i) = i
Next
'时间(年)
Worksheets(1).Cells(2, 5) = 0
For i = 1 To n
Worksheets(1).Cells(2, 5 + i) = t / (12 * n) * i
Next
'上行乘数
u = Exp(s * (t / (12 * n)) ^ 0.5)
Worksheets(1).Cells(3, 5) = u
'下行乘数
d = 1 / u
Worksheets(1).Cells(4, 5) = d
'股票价格
For i = 1 To n + 1
Worksheets(1).Cells(4 + i, 4 + i) = 50 * d ^ (i - 1)
Next
For i = 1 To n
For j = i To n
Worksheets(1).Cells(4 + i, 5 + j) = Worksheets(1).Cells(4 + i, 4 + j) * u Next
Next
'执行价格
Worksheets(1).Cells(n + 6, 5 + n) = x
'上行概率、下行概率
p = ((r * t) / (12 * n) + 1 - d) / (u - d)
Worksheets(1).Cells(n + 7, 5 + n) = p
Worksheets(1).Cells(n + 8, 5 + n) = 1 - p
'买入期权价格
'最后一期的期权价值
For i = 1 To n + 1
q = Worksheets(1).Cells(4 + i, 5 + n) - x
If q > 0 Then
Worksheets(1).Cells(n + 8 + i, 5 + n) = q
Else
Worksheets(1).Cells(n + 8 + i, 5 + n) = 0
End If
Next
'由后往前推各期的价值
For ii = n To 1 Step -1 '列
For jj = 1 To ii '行
If Worksheets(1).Cells(n + 8 + jj, 4 + ii + 1) > 0 Or Worksheets(1).Cells(n + 8 + jj + 1, 4 + ii + 1) > 0 Then
Worksheets(1).Cells(n + 8 + jj, 4 + ii) = (p * Worksheets(1).Cells(n + 8 + jj, 4 + ii + 1) + (1 - p) * Worksheets(1).Cells(n + 8 + jj + 1, 4 + ii + 1)) / (1 + (r / 12) * (t / n))
Else
Worksheets(1).Cells(n + 8 + jj, 4 + ii) = 0
End If
Next
Next
End Sub
效果如下:。