码迷,mamicode.com
首页 > 其他好文 > 详细

NewQuant的设计(一)——整体的领域设计

时间:2015-03-14 16:34:35      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

NewQuant的设计思路——整体的领域分析

  “领域驱动设计(DDD)”是著名软件工程建模专家Eric Evans提出的一个重要概念,是“面向对象分析设计(OOAD)”的深化。当业务逻辑变得复杂,系统变得庞大时,OOAD会使人陷入“只见树木不见树林”的处境,而DDD可以指导设计人员暂时忽略掉琐碎细节,高屋建瓴的观察问题。如果要全面了解DDD,请阅读Eric Evans的著作《领域驱动设计》和《实现领域驱动设计》。

  在NewQuant的设计中,DDD的思想给了我很大启发。简单直观地讲,DDD就是仔细的分析业务知识,并把知识对应到相应的软件模块上,把业务中的关键概念对应到软件系统中某些关键的类上。

  NewQuant应用DDD的第一步是“确定领域语言”,就是描述NewQuant系统所使用的专业术语。NewQuant的目标是为数据分析和金融工程计算提供高效优雅的解决方案,NewQuant的大部分内容是特定的数值计算方法和数学模型。这样一来,确定领域语言变得简单,可以直接把这些数值计算方法和数学模型作为NewQuant的领域语言。

  NewQuant应用DDD的第二步是“领域分析”,具体的领域分析的过程其实是一个“苏格拉底式的追问”,在不断细化不断接近问题实质的追问中明确业务的内容。

  先来看“金融工程”模块的分析。金融工程模块是为衍生品等金融产品的定价提供计算服务,金融工程定价的计算存在两大范式,一是模型对应PDE的数值解;二是模型本身的随机模拟(主要是SDE和time series)。PDE的数值解要求对PDE进行离散化得到差分方程,解差分方程的实质是解线性方程组,解线性方程组属于“矩阵计算”范畴,矩阵计算需要设计相应的模块和类来实现。再看随机模拟,无论是SDE和是time series的模拟都是根据模型的结构在递推计算中反复使用特定的随机数,SDE模拟最常用的是正态随机数,time series模拟常用正态和t随机数。由此可以得到两条领域分析的链条:

 

金融工程——PDE数值解——解方程——矩阵计算

金融工程——随机模拟——SDE&time series——随机数

 

  再来看“数据分析”模块分析。NewQuant中的数据分析方法有两大来源,计量经济和多元统计分析(其实这两个领域的方法有许多相通之处)。计量经济的计算是一个“三部曲”——估计、检验和预测,而计量经济的两大主题是“回归分析”和“时间序列分析”。从计算的角度讲几种常见的回归方法可以认为是“最小二乘(LS)问题”的变种,最小二乘问题则是属于矩阵计算范畴。时间序列模型的估计常用到MLE,MLE属于数值最优化范畴。模型参数的检验实质上是一个特定的“假设检验”问题,需要比较统计量和特定分布分位数的大小。常见的几种统计分布的相关计算实质上是“特殊函数”(Gamma和Beta)计算的变形。模型的预测,尤其是“区间预测”也需要特定分布分位数的计算。和计量经济中的回归模型类似,一些多元统计模型也是玩弄矩阵的把戏,例如主成分分析和因子分析,要对矩阵做分解。另外一些方法则单纯一些,比如K均值聚类和判别分析,只用到距离的计算,不过某些距离计算的方法也要用到矩阵分解计算。由此可以得到若干条领域分析的链条:

 

数据分析——计量经济——回归——估计——LS问题——矩阵计算

数据分析——计量经济——回归——检验——假设检验——分位数计算——特殊函数

数据分析——计量经济——回归——预测——假设检验——分位数计算——特殊函数

数据分析——计量经济——时间序列——估计——MLE——数值最优化

数据分析——计量经济——时间序列——检验——假设检验——分位数计算——特殊函数

数据分析——计量经济——时间序列——预测——假设检验——分位数计算——特殊函数

数据分析——多元统计——矩阵分解——矩阵计算

 

  通过上述领域分析,可以看出来矩阵计算、统计计算、特殊函数、随机数和数值最优化是NewQuant中最为基础的模块,属于“基础设施层”。其他部分是使用基础模块功能的高级模块,属于“应用层”。这几个基础模块中随机数部分可以直接使用C++标准库中的<random>,只要自己编写一些特殊随机数即可,二其他模块需要自己编写。下面的任务是对每一个具体的模块做分析和设计。

 

NewQuant的设计(一)——整体的领域设计

标签:

原文地址:http://www.cnblogs.com/xuruilong100/p/4337609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!