在国际衍生金融市场的形成发展过程中,衍生品作为投资、投机以及套期保值的重要工具和手段,是全球金融生态圈中不可或缺的组成部分,但是衍生品,尤其是期权的合理定价是困扰投资者的一大难题。随着计算机、先进通讯技术的应用,复杂期权定价公式的运用成为可能。在过去的半个世纪中,投资者通过运用布莱克-斯克尔斯-莫顿(BSM)期权定价模型,将衍生品定价问题转换为数字公式,进而为全球衍生品市场的发展做出了巨大的贡献,同时还为资产管理市场创造了大量的财富。
这是量化金融与投资、金融科技、计算金融专业的硬核课程之一,这是本讲座的第八讲。
我们今天终于来到Python3,因为Python是我们非常熟悉的编程语言,所以我们就直接带着大家利用面向对象的思想写代码。

前期回顾
「我们回顾一下前面七讲的内容。」
第一讲 从Mathematica和Java说起
在第一讲中,我们带着各位复习了布莱克-斯克尔斯-莫顿(BSM)期权定价模型,在复习过程中,我们仅关注金融数学、金融工程学以及金融学方面的知识,然后我们带着各位利用Mathematica演示了布莱克-斯克尔斯-莫顿(BSM)期权定价模型的实现,然后再利用Java编写了第一份代码。
第二讲 从Java到C++
在第二讲中,我们复习了布莱克-斯克尔斯-莫顿(BSM)期权定价模型的希腊字母,介绍了相关希腊字母的金融学特性,然后重点介绍了对应的公式,其后带着各位利用Java(第二份)和C++(第三份)重写了一份代码。
第三讲 从Java到C#
在第三讲中,我们介绍了什么是C#语言,然后基于我们的第二份代码(基于Java)利用C#写了第四份代码。
第四讲 现代C++编程的基础思想
在第四讲中,我们重回C++,利用我们写的第三份代码(基于C++),在这份代码的基础上,引入基本的面向对象编程的思想,重写C++,构建我们的第五份代码。在撰写第五份代码的过程中,我们利用了以下现代C++知识:
C++基础知识
宏定义 #define
Const 限定符 (C++ Primer 5th 中文版 p.53-59)
「#pragma once」
和 头文件管理 、头文件保护符问题 ( C++ Primer 5th 中文版 p.67-68; C++ Primer Plus 6th 中文版 p.247-249)
** #ifdef … #ifndef……..#endif **
头文件中进行函数声明与分离式编译( C++ Primer 5th 中文版 p.186-187)
C++11 知识点
关键词:constexpr ( C++ Primer 5th 中文版 p.58)、auto( C++ Primer 5th 中文版 p.61)
OOP 知识点
访问限制符:public、private( C++ Primer 5th 中文版 p.240)
构造函数(constructor)与析构函数(deconstructor)
构造函数的初始值列表( C++ Primer 5th 中文版 p.258)
静态(static)成员函数 ( C++ Primer 5th 中文版 p.268)
this指针 ( C++ Primer 5th 中文版 p.246)
匿名对象( C++ Primer 5th 中文版 p.268)
列出了相关知识点可在「C++」 经典教材中的找到,我们列出了相关知识点在书中出现的页码位置。
第五讲 利用QT C++编写可视化界面
「Qt」 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许组件化编程。2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。
简而言之,QT开发框架可以弥补C++11在多线程、元对象编程等方面的不足,结合QT的相关组件资源,除了可以帮助我们迅速创建可视化程序外,还可以让我们借助强大的面向对象编程理念开发专业级、跨平台系统。
第五讲我们主要利用QT打造一个简单的Window界面程序,该界面程序可计算欧式期权公式的期权价格以及其对应的希腊字母。
第六讲 利用JavaScript编写BSM代码
第七讲 重回C#,利用C#介绍如何利用面向对象思想撰写代码
下一步工作
今后我们还会带着各位利用Matlab、R、GO语言来实现BSM公式。我们的目的:首先,我们希望这样的演示带给各位的不是各种计算机编程语言的“不同”而是相同。这样可以帮助经管类的学生克服学习编程的恐惧。此外,我们始终立足BSM(布莱克-斯科尔斯-莫顿欧式期权定价公式)公式也会有一个好处,这就让我们可以更为细致的了解BSM背后的那些被我们当下的高校教育中忽视的细节知识。
学习金融工程、量化金融、金融科技,最好的方法还是一边看公式,一边写代码。毕竟,空谈无果,实干兴邦。“Talk is cheap, show me the code!”