0%

拟合不要求方程通过所有的已知点,讲究神似,就是整体趋势一致。插值则是形似,每个已知点都必会穿过,但是高阶会出现龙格库塔现象,所以一般采用分段插值。

阅读全文 »

两个都可以达到要求,但是用起来PackageA其实更简单,因为PackageA是POD,整个结构体的数据是在一块内存中,可以用memset清零,可以用memcpy来拷贝,甚至可以将整个PackageA的内容通过socket发送到另一台机器上去(后台开发可以这样),省掉打包和解包的过程。而且对于多个PackageA,可以非常简单地使用mempool,因为内存连续。

阅读全文 »

两个都可以达到要求,但是用起来PackageA其实更简单,因为PackageA是POD,整个结构体的数据是在一块内存中,可以用memset清零,可以用memcpy来拷贝,甚至可以将整个PackageA的内容通过socket发送到另一台机器上去(后台开发可以这样),省掉打包和解包的过程。而且对于多个PackageA,可以非常简单地使用mempool,因为内存连续。

阅读全文 »

自相关又叫做序列相关,通常采用自相关系数来发现序列的重复规律,周期等信息

阅读全文 »

从现代操作系统理念设计上,将行情接口、策略引擎、交易接口放在同一个进程中是最方便快捷的方式。MyOTP没有采用这种方式,一是考虑到行情和交易通常不是一套柜台系统API进程隔离更安全,另一个是多功能耦合在一起不利于模块化分离。模块化设计功能分割方便,利于多人协同开发。由于MyOTP定位不是高频交易系统(虽然整体运行速度效率高于相当一部分所谓高频交易系统),在框架设计上不会特意为了针对优化某些功能而调整框架设计。

阅读全文 »

RPyC (pronounced like are-pie-see), or Remote Python Call, is a transparent library for symmetrical remote procedure calls, clustering, and distributed-computing.

阅读全文 »

关于波动率微笑曲线,一个是小概率事件比正态分布概率高,另外一个是大幅波动离散对冲成本会显著提高,由于流动性的问题。

阅读全文 »

这是我小时候读过的一本武侠小说,之后忙于学业工作再也没有空暇时光。前段时间想起来,找遍全网几乎却是没有了,后来找到老光盘幸而还有个光驱。特意查了作者没有后续作品,是因为职业是去做金融了。多少有点感到可惜,因为小说写的确实很好。二十年谈笑而过斗转星移世事变迁,大抵以后也见不到这种风格的文章了。

阅读全文 »

Shadow-Delta计算期权IV变化对Delta的影响。波动率曲线是由期权市场报价通过BSM模型公式转换而来,逻辑上使用静态的曲线拟合(即拟合某一个时刻的T型报价为静态曲线)是不能精确计算skew-delta的,但是delta本身就是瞬时变量,近似计算不同行权价格的delta之间的相对变化在逻辑和数据上面是行的通的。

阅读全文 »

The SVI is simply a function (empirically fit to the data) which given a maturity and a strike price \(K\), computes a BS implied volatility \(\sigma\). Once you have that implied volatility you can plug it into a Black Scholes routine which can compute the BS price and the Black Scholes Greeks. SVI/SVI-JW are used to describe one slice (single tenor) at the time; Surface SVI (SSVI) is used to fit the whole surface (multiple tenors).

阅读全文 »

最近在更新Anaconda版本的时候发现之前写的很多C++基础库需要重新编译,这些基础库涉及了很多项目代码,一个一个去更新很麻烦,就使用python的打包工具把一些自己开发的基础库打包做成package,便于代码管理维护。

阅读全文 »

升级Anaconda版本之后多进程的并行计算程序遇到一条新警告

1
Note: NumExpr detected 20 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing safe limit of 8.

因为程序里面没有直接使用这个库,不知道是导入哪个库的依赖库,所以直接在主程序全局设置NUMEXPR_MAX_THREADS来控制多进程的程序在不同核心数CPU上面的线程数量

1
2
import os
os.environ['NUMEXPR_MAX_THREADS'] = r'1'

由于多线程共用一个变量没有线程锁导致的问题,需要同步的修改python和c++接口部分的代码,添加线程同步锁,由于涉及到混编和接口这种修改较为复杂并且强化了不同模块代码的耦合。偶然间在网上发现一种另类的解决方法,Python字典在遍历时不能进行修改,但是转换成列表或集合可以。对轻度使用的函数可以将dict修改为list避免工作量

阅读全文 »

通常波动率被分为两种,一种是回望型波动率(backward looking),另外一种是前瞻波动率(forward looking)。前者是用历史数据算出来的波动率,后者是根据现在的期权市场报价用定价模型反推出来的波动率。前者是已经发生了的历史价格的波动,根据历史数据计算的一个波动率,后者是市场对未来标的价格的波动程度(波动率)的预测,通常不准确。相关性是一个统计指标,表示两个变量线性相关(即它们以固定的比率一起变化)的程度。它是一个用于描述简单关系而没有陈述因果关系的常用工具。相关性可以检验两个变量之间的关系。但是,两个变量一起变动并不一定意味着我们知道是不是一个变量引起了另一个变量的变动。因此我们常说,“相关性并不意味着因果关系”。

阅读全文 »

Docker使用备忘录,docker的安装、开发环境设置、数据库等

阅读全文 »

在向函数输入参数的时候, 值传递(pass by value)和指针传递(pass by pointer),需要给形参分配存储单元、当传递是对象时,要调用拷贝构造函数。而且指针最后析构时,要处理内存释放问题。而使用 引用传递(pass by reference),则调用函数在内存中不会产生形参。

阅读全文 »

升级Python环境到3.8导致了一堆麻烦和调整,不过调整完成之后发现微调的代码运行速度倒是加速了50%左右,总算在一堆鸡皮算毛的微调之后来点慰藉。

阅读全文 »

最近刷知乎的时候看到《fmtlog:比NanoLog更快的fmtlib风格C++日志库》评论区又在讨论fmtlib,之前没有直接使用过这库,今天终于有时间能抽出来来研究一下了。

阅读全文 »

左值通常是内存单元。在前面的示例中,变量daysInYear 实际上指向一个内存单元,属于左值。另一方面,右值可以是内存单元的内容。因此,所有的左值都可用作右值,但并非所有的右值都可用作左值。为更好地理解这一点,请看下面的示例,这行代码不合理,不能通过编译:

1
365 = daysInYear;
阅读全文 »

使用取值范围较大的变量来初始化取值范围较小的变量时,将面临出现缩窄转换错误的风险,因为编译器必须将大得多的值存储到容量没那么大的变量中,下面是一个这样的示例:

1
2
int largeNum = 5000000;
short smallNum = largeNum; // compiles OK, yet narrowing error
阅读全文 »

在测试Bjerksund and Stensland American Option Approximation模型的时候发现如下这段计算二维高斯分布的函数数值溢出了。开始发现是输入的数值过于极端导致的,但是后面仔细研究发现,C++内浮点数的影响要比预期的大。

阅读全文 »

最近在看美式期权,美式期权上不存在公认的经典闭式解,必须求助于数值计算方式。但是数值方法计算速度偏慢,不适合频繁调用。计算并行化最简单的方式是使用OpenMP,更进一步提升速度可以使用Intel的TBB和MKL,尤其是MKL内置了高性能的期权计算模型代码,不过对于普通程度使用使用OpenMP并行加速一下即可。研究了一下网上的资料发现,PyBind11封装调用OpenMP的文章基本没有,本文简单补充一下。

阅读全文 »

今天在写代码的时候发现使用pybind11返回矩阵比我想的要简单的多,原本都打算转换成eigen来返回数据了,囧。 使用pybind11返回矩阵仅需要将一维向量resize为二维矩阵即可,囧。 注意,如下代码里面进行resizee操作的时候,需要指定一个特定数据格式的shape。

阅读全文 »

最近看到商品市场高波动羡慕不已于是快马加鞭的开始研究美式期货期权的模型怎么写了。目前美式期权上不存在公认的经典闭式解,必须求助于数值计算方式。本文简单的对比一下常见的几种模型。

阅读全文 »

有点意思,今天从知网上面发现了Wing-Model的论文,虽然我早就知道这个模型但是没想到真有公开发表的引用源。Wing-Model是一个很基础灵活度很高的模型,大部分时候拟合效果不错,虽然动态拟合出来的参数没有什么解释意义。

阅读全文 »

2017年的时候为了处理不同信息源的因子如何放在一起估算因子载荷的问题花了几周的时间研究Tesnor-Regression算法。后来发现挖因子比权重算法重要的多,再后面就转向研究期权了,今天刚好有空,把旧文回顾一下,温故知新,现在想想这个算法也是蛮有意思的。

阅读全文 »

期权定价模型这个名称在我开始接触的时候带来了很大的疑惑,但在实际应用中BS-Model只是一种非线性的转换函数。期权的价格具有高杠杆、非线性和时间相关的特点,定价模型(场内期权)主要的应用范畴是将这些夸张的价格变化通过非线性扭曲的方式转换为一种变化相对缓慢的报价。

Black Scholes(Black73) 模型认为对冲期权的成本就是期权的合理价格,Merton进一步论证一个期权的到期收益可以通过持有一定数量的该期权标的资产和资金来复制。虽然持有的数量需要根据市场变化不断调整,但是中途没有现金流净流入和流出。因此期权今天的价格必须等于复制组合今天的价值,否则就会出现套利机会。

阅读全文 »