Python金融大数据分析——第15章 估值框架 笔记 痛定思痛。 2022-05-20 08:17 619阅读 0赞 * 第15章 估值框架 * 15.1 资产定价基本定理 * 15.1.1 简单示例 * 15.1.2 一般结果 * 15.2 风险中立折现 * 15.2.1 日期建模和处理 * 15.2.2 固定短期利率 * 15.3 市场环境 # 第15章 估值框架 # ## 15.1 资产定价基本定理 ## ### 15.1.1 简单示例 ### ### 15.1.2 一般结果 ### ## 15.2 风险中立折现 ## ### 15.2.1 日期建模和处理 ### import datetime as dt dates = [dt.datetime(2018, 1, 1), dt.datetime(2018, 7, 1), dt.datetime(2019, 1, 1)] (dates[1] - dates[0]).days / 365 # 0.4958904109589041 (dates[2] - dates[1]).days / 365 # 0.5041095890410959 fractions = [0.0, 0.5, 1.0] # dates 和 fraction 定义(大致)等价 import numpy as np # 获取年分数 def get_year_deltas(date_list, day_count=365.): """ Return vector of floats with day deltas in years. Initial value normalized to zero. :param date_list: list or array collection of datetime objects :param day_count: float number of days for a year :return: delta_list:array year fractions """ start = date_list[0] delta_list = [(date - start).days / day_count for date in date_list] return np.array(delta_list) import datetime as dt dates = [dt.datetime(2018, 1, 1), dt.datetime(2018, 7, 1), dt.datetime(2019, 1, 1)] get_year_deltas(dates) # array([0. , 0.49589041, 1. ]) ### 15.2.2 固定短期利率 ### 我们将焦点放在短期利率折现的最简单情况——也就是短期利率一直保持不变的情况。 许多期权定价模型, 如Black-Scholes-Merton 、 Merton 和 Cox-Ross-Rubinstein 都做出这个假设。我们假定连续折现,因为这是期权定价应用中常见的假设。在这种情况下,在给定未来日期 t 和固定短期利率 r 下,今天的一般折现因子可以由 D0(t)=e−rt D 0 ( t ) = e − r t 得出。 当然,在结束日有一个特例D0(T)=e−rt D 0 ( T ) = e − r t 。注意,t 和 T 都是年分数。 折现因子也可以解释为分别在 t 和 T 到期的单位零息债券(ZCB)的当日价值。给定两个日期 t≥s≥0 t ≥ s ≥ 0 ,从 t 到 s 的折现因子可以由公式 Ds(t)=D0(t)/D0(s)=e−rt/e−rs=e−r(t−s) D s ( t ) = D 0 ( t ) / D 0 ( s ) = e − r t / e − r s = e − r ( t − s ) 给出。 固定短期利率下的风险中立折现类 class constant_short_rate(object): """ Class for constant short rate discounting """ def __init__(self, name, short_rate): """ :param name:string name of the object :param short_rate:float(positive) constant rate for discounting """ self.name = name self.short_rate = short_rate if short_rate < 0: raise ValueError('Short rate negative.') def get_discount_factors(self, date_list, dtobjects=True): """ get discount factors given a list/array of datetime objects or year fractions """ if dtobjects is True: dlist = get_year_deltas(date_list) else: dlist = np.array(date_list) dflist = np.exp(self.short_rate * np.sort(-dlist)) return np.array((date_list, dflist)).T import datetime as dt dates = [dt.datetime(2018, 1, 1), dt.datetime(2018, 7, 1), dt.datetime(2019, 1, 1)] csr = constant_short_rate('csr', 0.05) csr.get_discount_factors(dates) # array([[datetime.datetime(2018, 1, 1, 0, 0), 0.951229424500714], # [datetime.datetime(2018, 7, 1, 0, 0), 0.9755103387657228], # [datetime.datetime(2019, 1, 1, 0, 0), 1.0]], dtype=object) deltas = get_year_deltas(dates) csr.get_discount_factors(deltas, dtobjects=False) # array([[0. , 0.95122942], # [0.49589041, 0.97551034], # [1. , 1. ]]) ## 15.3 市场环境 ## 建立由常量、 列表和曲线组成的市场环境模型的类 # 建立由常量、 列表和曲线组成的市场环境模型的类 class market_environment(object): def __init__(self, name, pricing_date): self.name = name self.pricing_date = pricing_date self.constants = {} self.lists = {} self.curves = {} def add_constant(self, key, constant): self.constants[key] = constant def get_constant(self, key): return self.constants[key] def add_list(self, key, list_object): self.lists[key] = list_object def get_list(self, key): return self.lists[key] def add_curve(self, key, curve): self.curves[key] = curve def get_curve(self, key): return self.curves[key] def add_environment(self, env): for key in env.constants: self.constants[key] = env.constants[key] for key in env.lists: self.lists[key] = env.lists[key] for key in env.curves: self.curves[key] = env.curves[key] import datetime as dt dates = [dt.datetime(2018, 1, 1), dt.datetime(2018, 7, 1), dt.datetime(2019, 1, 1)] csr = constant_short_rate('csr', 0.05) me_1 = market_environment('me_1', dt.datetime(2018, 1, 1)) me_1.add_list('symbols', ['AAPL', 'MSFT', 'FB']) me_1.get_list('symbols') # ['AAPL', 'MSFT', 'FB'] me_2 = market_environment('me_2', dt.datetime(2018, 1, 1)) me_2.add_constant('volatility', 0.2) me_2.add_curve('short_rate', csr) me_2.get_curve('short_rate') # <__main__.constant_short_rate at 0x1a226781cc0> me_1.add_environment(me_2) me_1.get_curve('short_rate') # <__main__.constant_short_rate at 0x1a226781cc0> me_1.constants # {'volatility': 0.2} me_1.lists # {'symbols': ['AAPL', 'MSFT', 'FB']} me_1.curves # {'short_rate': <__main__.constant_short_rate at 0x1a226781cc0>} me_1.get_curve('short_rate').short_rate # 0.05 这一章节的内容比较少,这里只记录了一下Python代码 ^\_^
相关 Python金融大数据分析——第10章 推断统计学 笔记3 第10章 推断统计学 10.4 风险测度 10.4.1 风险价值 10.4.2 信用 向右看齐/ 2022年05月21日 12:24/ 0 赞/ 265 阅读
相关 Python金融大数据分析——第10章 推断统计学 笔记1 第10章 推断统计学 10.1 随机数 10.2 模拟 10.2.1 随机变量 心已赠人/ 2022年05月21日 08:30/ 0 赞/ 246 阅读
相关 Python金融大数据分析——第9章 数学工具 笔记 第9章 数学工具 9.1 逼近法 9.1.1 回归 9.1.2 插值 ╰半橙微兮°/ 2022年05月21日 06:45/ 0 赞/ 474 阅读
相关 Python金融大数据分析——第8章 高性能的Pyhon 笔记 第8章 高性能的Python 8.1 Python范型与性能 8.2 内存布局与性能 8.3 并行计算 - 日理万妓/ 2022年05月21日 05:54/ 0 赞/ 397 阅读
相关 Python金融大数据分析——第6章 金融时间序列 笔记 第6章 金融时间序列 6.1 pandas基础 6.1.1 使用DataFrame类的第一步 我会带着你远行/ 2022年05月21日 01:14/ 0 赞/ 469 阅读
相关 Python金融大数据分析——第10章 推断统计学 笔记2 第10章 推断统计学 10.3 估值 10.3.1 欧式期权 10.3.2 美式期权 系统管理员/ 2022年05月20日 20:09/ 0 赞/ 394 阅读
相关 Python金融大数据分析——第16章 金融模型的模拟 笔记 第16章 金融模型的模拟 16.1 随机数生成 16.2 泛型模拟类 16.3 几何布朗运动 野性酷女/ 2022年05月20日 08:18/ 0 赞/ 358 阅读
相关 Python金融大数据分析——第15章 估值框架 笔记 第15章 估值框架 15.1 资产定价基本定理 15.1.1 简单示例 15.1.2 痛定思痛。/ 2022年05月20日 08:17/ 0 赞/ 620 阅读
相关 Python金融大数据分析——第13章 面向对象 笔记 第13章 面向对象和图形用户界面 13.1 面向对象 13.1.1 Python类基础知识 不念不忘少年蓝@/ 2022年05月20日 03:15/ 0 赞/ 338 阅读
相关 Python金融大数据分析——第12章 Excel集成 笔记 第12章 Excel集成 12.1 基本电子表格交互 12.1.1 生成工作簿(.xls) 淡淡的烟草味﹌/ 2022年05月20日 00:46/ 0 赞/ 249 阅读
还没有评论,来说两句吧...