| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 基于Python,从零开始,裸写一套期权定价程序 -> 正文阅读 |
|
[Python知识库]基于Python,从零开始,裸写一套期权定价程序 |
引言之前我讲到,在实务中,一直用脚本式的“草稿”,会越来越困难。 Review:《对期权价格计算的实现方式的思考》 经反复验证,采用面向对象、策略模式来开发,是不错的选择。 这样,可以通过设置不同的实现类,用不同的定价算法实现期权价格计算。 开始裸写吧!我说的裸写,是指不借助任何第三方包,纯粹自己写。 (有点夸张,毕竟正态分布的累计概率函数,还是需要调包的…) 主要思想1. 应该有一个期权基类。其中,成员变量有到期时间等公共属性,成员函数有计算价格、计算greeks等函数。 2. 针对不同类型的期权,应该有特有的参数,如欧式期权有行权价,欧式价差期权应该有高、低行权价,障碍期权应该有行权价、障碍价等。 3. 针对市场环境(定价参数,如标的波动率v、无风险利率r、分红率d),可以用一个对象来封装数据,但我为了简单,把v、r、d写到期权基类里了。 4. 为了实现针对不同类别的期权价格计算用不同的算法,可以让期权拥有一个成员变量,叫定价引擎。这个类实现真正的计算功能,而期权的计算价格函数,则是调用其定价引擎的计算价格实现函数。 设计节选最基本的两个对象更像是架构师声明的接口。 基础期权类:basic_option.py基础定价引擎类:basic_price_engine.py具体的定价引擎类考虑到需要用不同的算法(如解析解、有限差分、蒙特卡洛)实现期权定价,我针对三种类别算法,分别定义了各自的基本定价引擎类。 解析法定价引擎,anlytic_price_engnine.py有限差分法定价引擎,fde_price_engine.py 蒙特卡洛法定价引擎,mc_price_engine.py 内容实在有点多,有限差分法和蒙特卡洛算法实现的定价引擎代码,这次就不放上来了。 具体的期权对象欧式看涨期权,vanilla_call_option.py欧式看跌期权:vanilla_put_option.py具体的定价引擎类欧式看涨期权解析定价引擎,vanilla_call_analytic_price_engine.py欧式看跌期权解析定价引擎,vanilla_call_analytic_price_engine.py终于,可以调用了
总结一个好的架构师,是可以把任务分出去的。 各种类型的期权,基于以上的结构,是可以持续开发的。 想要解析解,就写解析引擎,把公式打上去。 想要有限差分,就写有限差分引擎,把数值算法敲上去。 想要蒙特卡罗,就把生成随机过程的代码搞上去。 一个项目、部门、企业,乃至国家,想要做大做强,都需要良好的架构。 接手草稿,变废为宝。一个人做,非常艰难,但理解深刻。 后记后来,我发现,开源项目quantlib的做法,大概也是这样。 所以,一条忠告,没事多学点开源项目。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 18:25:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |