如何学好Simio?

-

推荐教程,软件的优点和缺点,特点。

Simio自带PDF版本简要教程和大量的simbits小测试,以及几个典型的例子。

初学者可以首先把几个典型例子多运行几遍,尝试更改几个参数,比如实体Entity产生的频率或者Server的处理时间等等,观察在不同参数条件下仿真可视化的区别,由此对Simio产生一个大致的了解。

接下来就是对着教程一步步实践了,注意不要错过任何细节,然后独立完成教程中要求的实践任务。总之一句话,多实践多思考。

Simio可以说是Arena的升级版,当年Arena被收购后几个主要技术核心出走并创立了一个新公司才有了Simio。与Arena相比,Simio号称自己是一个面向智能体Agent的建模与仿真平台,而不是像arena一样基于工作流。我个人觉得Simio只能算一个面向对象的平台,尽管Simio的核心是用户可增减/修改内部处理逻辑,即内部processes。

如果觉得软件自带教程太简单,需要外部参考书的话,推荐:

应用数学 仿真 物流管理 运筹学 Monte Carlo

学习 蒙特卡罗方法 必须预先学习哪些知识?

-

蒙特卡洛名字高大上啊,本质就是用期望(或者积分,一个意思)求不出来然后用平均数来估计(可以理解为大数定律的一个应用了)。
因为要做实现,对某一个编程语言熟悉下总是好的,不过其实也可以通过学monte carlo来当编程语言入门了,貌似MATLAB用的多些。
然后就是看你要用monte carlo做什么了,物理还是金融工程一类的。不管怎么样,你得先知道你要算的是啥,再学怎么算吧。
以亚式期权定价为例,路径是这样的:
啥是期权->啥是亚式期权->亚式期权在几何布朗运动假设下怎么定价,能写出SDE->变成了一个求解期望的问题->期望没法直接用手解出来,需要数值算法(现在问题来了)->monte carlo是一种算法->知道如何生成一条几何布朗运动路径->写成程序,并且循环模拟N次,然后求平均数->解出来了一个数值解->monte carlo当然没这么简单,方差缩减技术,路径模拟如何降低误差->学会若干种Monte Carlo优化方法->实现这些方法,比较下最粗暴的monte carlo,发现效率提升很多->自己觉得自己学会monte carlo了->去知乎回答问题

结论:概率期望方差一类的就算预先知识了,最重要的是学科背景知识,monte carlo只是计算方法。粗暴的monte carlo过后,那些方差缩减技术也就是期望 方差一类的推导还有随机数的生成。
PS:期望是期望,平均数是平均数,期望是更广的概念。很多人学monte carlo时候对一切理解为“平均数”,没有期望的概念,比如 Integrate[f(x)g(x), {x, 0, 3}],很多人就是认为x取0到3之间的随机数,然后求f(X)g(X)的平均数,这没错,但是也可以理解为取密度函数为f(x)的随机数X,求g(x)的平均数。

统计 Monte Carlo 人工智能算法 随机过程 蒙特卡洛方法

请教:monte carlo模拟中使用control variate method减少方差的具体方法?

-

None

题主的答案貌似有误..

BS公式下的解析答案是18.75

大概说一下思路吧

首先模特卡罗其实就是模拟一年后的股票价格n次,然后得出n个这个期权可能有的价值,最后取平均然后再折现到现在,就得出这个期权现在的价格。

Control Variates的过程是这样的:

原来你模拟的n个期权价格Y_{i} 的均值就是我们想要的期权价格

现在引入\mu_i (b)=Y_{i}-b(X_{i}-E[X])
X可以是任意的随机变量,但是这里选择模拟出来的股价,因为这是计算Y的时候就用到的,可以减少计算量

展开一下你会发现\mu_i(b)序列的期望其实和Y_{i}序列的期望是一样的
但是方差 Var[\mu(b)]=\sigma_{Y}^{2}-2b\sigma_X\sigma_Y\rho_{XY}+b^2\sigma_{X}^{2}

也就是说选择合适的b和X,就可以使得\mu(b)的方差比Y的方差小,同时均值又相等

根据上面的公式,\mu (b)的方差是一个关于b的二次函数,可以解出当b=\frac{\sigma_Y}{\sigma_X}\rho_{XY} 时方差有最小值,以上的统计量均可以代入它们的估计值来进行计算。

附上一段R代码

> n=100000
> a=rnorm(n)
> X=100*exp(0.1-0.0072+0.12*a)
> Y=(X-90)/exp(0.1)
> Y=pmax(rep(0,n),Y)
> b=cov(X,Y)/var(X)
> Z=Y-b*(X-exp(0.1)*100)
> mean(Y)
[1] 18.71751
> sd(Y)
[1] 11.6256
> mean(Z)
[1] 18.75508
> sd(Z)
[1] 1.053267

可以看到Y的均值和Z的均值是相近的,但是标准差相差了不少。

统计学 Monte Carlo 期权 期权定价 金融工程学

伊辛(Ising)模型中,没有外场时,能量最低状态为什么不是其平衡分布?

-

为什么还要用Metropolis、Wang-Landau等方法去求他的态密度,例如一维情况,直接让所有状态都朝上或朝下不就是最低能量状态么?

It is simple. For the Ising system, spin tends to align in the same direction to minimize its energy, as in the case of ferromagnetic case. While entropy of the system tends to get bigger, which cause the randomization of the system. The equilibrium result is the balance between energy and entropy. The actual minimization is the free energy we defined as F=E-TS.

Monte Carlo 蒙特卡洛方法

想配台合适的电脑用Python做sequential运算?(mcmc)

-

我不知道我理解的对不对(由于本人专业局限性)。我只是想提出我的问题,希望能有回答。

我有一个自己写的MCMC算法,我用Python写了代码。。也就是一个for loop里面的每一个iteration都要依靠前一个Iteration的值,我认为在这样的情况下是不可以parallel computation的。所以我不可能用比如multiprocess这些方法来加速。

老板给我经费换一台好电脑来跑,我不知道到底要配置什么样的电脑?因为Python是只用单核的,但是电脑都是4核啊8核啊什么的,感觉核多了也没用。。 我到底要什么电脑跑这个Python呀?

谢谢各位大大的帮助了!!!


另外的问题是,用ubuntu或者msc os x会比windows快很多吗?

由于我专业的局限,python是我能用的最快的语言了,没法换别的语言了。。谢谢大家帮助!!

试试gevent
和操作系统没太大关系

Python Monte Carlo

写kinetic Monte Carlo模拟程序用什么语言合适?

-

打算要写kMC的模拟程序,C,FORTRAN,Python都能够熟练使用,正在纠结用哪个语言写合适,求指点

Fortran和C都可以,看你熟悉和喜欢哪一个吧。python不太建议,毕竟是解释型语言,效率上太低。

Fortran写起来很方便,数组加减乘除方根都可以直接操作,不用写循环也不用调用函数。其效率上一般高于C,语法严格不容易出现run time error,debug起来比较方便,毕竟是专职数值计算的语言。C的优势在于网上各类的子函数源码多一些,例如KMC常用的各种搜索算法(如二叉树),C语言版本的网上一搜一堆,Fortran的多半要自己写。另外,用C的人毕竟比用Fortran的要多一些,程序的合作性好一些。总的来说,Fortran和C的差距并不大。

若是用Fortran,请用Fortran90以上的语法规范。

Python 科学计算 计算化学 Monte Carlo 分子模拟

随机过程、机器学习和蒙特卡洛在金融应用中都有哪些关系?

-

最近了解了一些数学金融中用到的数学, 随机过程,机器学习和monte carlo。但是不太明白这三者的关系是什么,请教内行易于理解的讲一讲这三者在金融中是如何应用的,彼此的关系。谢谢

提问者说的这些我都学过,并在硕士阶段攻读其中若干领域。

\begin{article}

============Keywords============


随机过程 stochastic processes
泊松过程 Poisson processes
更新过程 renewal processes
布朗运动 Brownian motion
仿射(跳跃)扩散过程 affine processes (or affine-jump diffusions)
列维过程 Levy processes
连续状态分枝过程 continuous state branching processes
随机微分方程 stochastic differential equations
半鞅 semimartingale
偏微分方程 partial differential equations
偏积分-微分方程 partial integro-differential equations
倒向随机微分方程 backward stochastic differential equations
二阶倒向随机微分方程 second order backward stochastic differential equations
随机偏微分方程 stochastic partial differential equations
随机最优控制 stochastic optimal control
极值建模 modeling of extremes
风险度量 risk measures
蒙特卡洛模拟 Monte Carlo simulation

============Stochastic Processes============

Introduction and References

『随机过程』(stochastic processes) 是概率论的一个分支,一般来说是特指一个学科,而『蒙特卡洛』 (Monte Carlo) 是一种获得某种统计量、待求值或函数值的方法,二者不太具有明显的并列关系或者包含与被包含关系。

随机过程从内容上来说大致有两类:

第一种我称之为应用随机过程,也是大家一般所说的随机过程,
内容包括几种具体的经典随机过程,例如:Poisson process,renewal process,discrete time and continuous time Markov chain,basics of Brownian motion,以及他们的应用,比如 queue systems 等。

相关的书籍有:
Stochastic processes, Sheldon Ross
另外一本稍微高阶书的是 Cornell University 的“李登辉”教授 (Lee Teng Hui Professor)、应用概率大牛 Sidney Resnick 所著的
Adventures in stochastic processes

第二种是指随机过程一般理论:一般包括概率论、随机过程的测度论基础 (probability space、convergence theory、limit theory、martingale theory 等),Markov process,stochastic integral, stochastic differential equations, semimartingale theory (半鞅)尤其是后者等比较艰深的概念和问题(内容参考以下书籍);

其中入门的书籍有:
Stochastic calculus for finance II, Steven Shreve
Arbitrage theory in continuous time, Tomas Bjork
这两本是与金融交互讲的;另外一本稍微偏理论的随机分析入门书籍是:
Stochastic differential equations, Bernt Oksendal
高阶数学研究生水平的书籍有:
Stochastic integrals and differential equations, Philip Protter
Brownian motion and stochastic calculus, Karatzas, Shreve
Brownian motion and continuous martingales, Revuz, Yor
Limit theorems for stochastic processes, Jacod, Shiryayev
一本比较艰深的讲套利数学的研究生读物(需要懂半鞅、泛函分析):
Mathematics of arbitrage, Delbaen, Schachermayer,
其中讲了不同模型设定下的的套利理论,包括离散模型,连续模型比如半鞅等过程驱动的市场对应的套利结论;utility maximization, convex duality 等概念。

当然,学习高级随机分析的书籍需要比较坚实的概率论基础,在此我推荐:
Probability: theory and examples, Richard Durret
Real analysis and probability, Dudley
特别地,我强烈推荐两本我当作参考文献的概率论书籍。一下两本书全面介绍了概率论基本理论,非常适合已经有一定测度背景并且想继续深入学习随机分析的读者:
Probability theory: a comprehensive course, Klenke
Foundations of modern probability, Kallenberg

Overview

『数学金融』中涉及的随机过程应该主要涵盖上述第一类里的几乎所有内容和上述第二类里的stochastic integrals, stochastic differential equations (SDE),semimartingale 等,其中实务中最常用的是 Ito process 和 Levy process;因为他们都有比较好的马尔可夫性 (Markovian structure),根据 Feynman-Kac 等定理,所以又能与 partial differential equation 和 partial integro-differential equation 联系起来。这也是期权定价的 PDE 方法。讲定价公式可以写成 PDE 的好处是可以使用现成的 PDE 数值方法。

此外,Ito processes 和 Levy processes 是特殊的 semimartingale。用 semimartingale 做金融建模的好处有两点:
1、semimartingale 作为 stochastic integrator,是从一致度量 (uniform metric) 下可料 (predictable) 被积过程所形成的空间到随机变量 (topologized by convergence in probability) 所形成的空间的连续线性映射,这种性质对应于金融资产价格的稳健性,通俗地讲就是:如果你对投资策略施加一个小小的扰动,最后投资组合的价值在某种意义下也会只有相应较小的扰动。因此用 semimartingale 模拟金融价格是合理的。
2、semimartingale 组成的空间在 Emery topology (metrizable) 下是完备的;这个性质加上一个比较符合经济逻辑的无套利假设 (No free lunch with vanishing risk, NFLVR),可以推出存在 sigma-martingale measure,反之亦然;这是目前最广义的套利定价理论,它的特殊形式是:
1、在离散模型中,无套利等价于存在等价鞅测度,
2、在 Ito processes 中,NFLVR 等价于存在等价局部鞅测度 (equivalent local martingale measure),而 NFLVR 可以推出无套利。
这里可以参考 A general version of the fundamental theorem of asset pricing, Delbaen, Schachermayer,慎入,作者均是泛函分析领域的大牛,教过无数顶尖分析和概率领域的学生,写的文章非常艰深;前者也是鄙人所在学校 ETH Zurich 概率论与金融数学组的退休教授,他们的学术成果请自行 scholar.google;笔者的老师用了大约20学时教相关的半鞅知识,20学时教这篇论文)。简而言之,用这两种随机过程模拟价格是可以满足无套利的,因此可以用鞅方法定价,这即是用这两种过程建模的好处之二。

在衍生品定价问题中,一般假设 underlying price process 服从例如上述某种随机过程,定价则是利用金融工具的复制(超复制 super-replication)等方法,在特定金融市场的假设(比如无套利,或者更特殊的假设 NFLVR;又比如自由买卖假设;假设很重要!!!)下求得一个该金融工具的无套利价格,以及对应的复制(或超复制)策略。当然(超)复制问题大概涉及两个数学问题,一个是:
optional decomposition theorem,这个定理与最广义的 FTAP 有着天然数学美感的交互;另一个是随机控制论中的 stochastic target problem,问题是如何找到一个期初价格和交易策略使得期末 payoff 被(超)复制。 总之,不论在何种方法和假设下,资产定价理论中都用随机过程模拟资产价格。

Concrete Examples

Brownian motion,这是搞金融数学不得不懂的随机过程,略,请参考:
Stochastic calculus for finance II, Steven Shreve

Poisson processes,compound Poisson processes 在金融数学中的应用之一是:在结构定价问题中,我们假设资产过程除了布朗运动驱动的部分之外,还有跳跃,而跳跃经常是由这两种过程模拟的;更一般地,我们还可以假设资产价格过程服从更广义的跳跃形式,该跳跃形式存在于 Levy processes, affine processes 或者 continuous state branching processes 中,一般称作 Levy-type jump 。 Levy processes 可以看做 weak closure of Compound Poisson processes;Levy process 区别于 Brownian motion 和 compound Poisson process 的地方在于,Levy process 还有一项 square integrable martingale,它可以理解为是 intensity 为无穷大、跳跃幅度无穷小(因此有可积性)的 compensated compound poisson,在 Ito-Levy decomposition 中,它是由可数个 compound compensated Poisson processes 组成的。在模型的微分形式中,跳跃和布朗运动驱动的部分经常是线性存在。

关于 Levy processes,请参考
Introductory lectures on fluctuations of Levy processes, Kyprianou
Levy processes and stochastic calculus, Applebaum

Renewal processes,Levy processes 经常被用于金融保险中的 Ruin 问题,鉴于这已经超越我的知识范畴,在此不详细讨论,一本可能的参考文献是:
Introductory lectures on fluctuations of Levy processes, Kyprianou

除衍生工具性定价问题,在金融控制问题中,一般也假设资产过程价格或者其他相关过程服从某种随机过程。比如在最简单的 Merton problem 中,我们假设资产价格服从多维几何布朗运动。又比如在 Jacod 和 Shiryayev 在1993年发表的关于 optimal dividend 的文章中,公司的价值服从一个带线性漂移的布朗运动减去一个左极限右连续的红利支付过程,然后用一个停时 (stopping time) 使其停止于价值首次为0的时刻。

随机过程在金融中也可以描述资产价格之外的过程。比如SDE可以描述短期利率,在此请参考
Stochastic calculus for finance II, Steven Shreve
关于伊藤过程驱动的高级利率模型,比如 affine process,请参考
Term structure models: a graduate course, Damir Filipovic

随机过程还可以描述除了价格、利率之外的金融变量。比如在著名数理金融学家 Darrel Duffie 写的关于 intensity based credit risk model 的文章中(原文叫 credit risk modeling with affine processes, Duffie),假设 default intensity 服从 affine process,则可违约债券定价形式与短期利率下的债券定价有相同的形式和计算方法,只是将短期利率改写成违约强度而已。
关于 affine process,请参考
Affine process and applications in finance, Duffie, Filipovic, Schachermayer
Transform analysis and asset pricing for Affine jump-diffusions, Duffie, Pan, Singleton
以及以上文到的那本讲 Term structure 的书:
Term structure models: a graduate course, Damir Filipovic

在KMV模型中,假设公司价值服从某个随机过程,比如几何布朗运动。

以上这两种随机过程在信用风险中的应用均可以在 Darrel Duffie 的书 Credit Risk: Pricing, Measurement, and Management 中找到。

随机过程也可以描述衍生金融工具的价格。比如我们知道欧式期权的 payoff (在这里是期末价值),同时知道 underlying asset price process,我们可以论证欧式期权的价格过程满足倒向随机微分方程 (BSDE);如果underlying asset price processes 满足 Markovian structure,则该 BSDE为一个前向-倒向随机微分方程 (FBSDE);其中方程期末条件是 payoff,方程生成元 (generator) 与 underlying price 相关;方程有一对解,第一个解是期权价格过程,第二个解则对应欧式期权在该市场下的复制策略。如果假设 underlying process 是几何布朗运动,则该 BSDE 为线性 BSDE,其解的形式就是欧式期权的定价公式:风险中性测度下期末值贴现的期望。
相关文献请参考:
Backward stochastic differential equations in finance: Karoui, Peng, Quenez
类似地,BSDE也可以描述效用,称作随机微分效用 (stochastic differential utility),可以参考:
Stochastic differential utility, Duffie, Epstein

此外 Marek Musiela,Rama Cont,Tomas Bjork,Rene Carmona 等人也尝试过用随机偏微分方程 (stochastic partial differential equations,可以近似理解为用无穷维随机微分方程或 Banach 空间取值的随机微分方程) ;用 SPDE 建模就是用 SPDE 来模拟一个取值为连续函数的 forward rate curve 演化过程。

这应该就是 Heath-Jarrow-Morton-Musiela,请参考:
Stochastic PDEs and term structure models, Musiela
Towards a general theory of bond markets,Tomas Bjork, et al
Modeling term structure dynamics: an infinite dimensional approach, Rama Cont
Interest rate models: an infinite dimensional stochastic analysis perspective, Rene Carmona

当时实务中并不需要这么多高深的数学知识。只要能明白概率论,应用随机过程,随机分析(基本内容一般包括 stochastic integral, SDE,特别是与 Ito processes 相关的内容)就能看懂绝大多数常用模型了。

如果是做金融数学学术,则额外还需要专攻以下方向中的一个或多个: Levy process, affine process, backward stochastic differential equations, semimartingale, stochastic control, stochastic differential games, stochastic PDE, 等。

除了概率论,金融相关的数学还涉及偏微分方程(及黏性解),控制论,数值分析,统计计量等。

============Monte Carlo===========

Monte Carlo 最早是摩纳哥赌场的名字,笔者曾在七月造访。『Monte Carlo』算法一般是指,利用随机抽样的方法,获得一些随机系统的统计量或者参数。比如你有一颗硬币,你想知道掷出后获得正面的概率,那么你通过大量试验以后,可以利用获得正面的频率来估计,这也是中心极限定理的结果。金融中的一个应用是,通过 MC 来模拟多条标的资产的价格走势,代入形式为求概率期望的定价公式就可以求出估计的期权价格的模拟值。此方法则是实现定价的 MC 方法。将扔硬币和 Brownian motion 联系起来的数学定理是 Donsker invariance principle:我们可以想象用硬币反复地大量地投,减小面值 (+\epsilon, -\epsilon),同时减小投币时间间隔 (\delta),那么累积值过程在某种意义下收敛于布朗运动。

MC 具体还有很多其他金融应用,比如求某一个风险度量下的风险值。

============Machine Learning===========

『机器学习』是一门学科也可以算是方法。我在这领域涉足不深,曾经学习的是主要基于数据、利用回归分析、贝叶斯理论等方法种决策树并用它投票,用以实现模式识别、分类和预测等问题。具体方法有 adaboost,bagging prediction,random forest 等。假设你是银行数据分析师,你有客户的数据,比如年龄,性别,年收入等。如何根据这些数据来简单的构造一个信用分类法则是机器学习的一个简单应用。

\end{article}

机器学习 金融 Monte Carlo 随机过程 蒙特卡洛方法

如何用蒙特卡罗方法估计一个高维映射在某点处的雅可比行列式?

-

可以不是无偏的。维数~100K。

如果雅克比是一个对称的、正的、可逆的, 行列式可以转换成一个高斯积分, MCMC做到这个积分上便可...

\int \exp(-\frac{1}{2}\sum_{ij}A_{ij} x_i x_j) d^{n} x = \frac{(2 \pi)^{n/2}}{\sqrt{\det(A)}}

如果不是满足: 想办法搞成满足....比如
SVD分解, A = UaV, 分别按照上式计算det(U), det(V), 然后det(A) = det(U) * det(a) * det(V), 至于100k维矩阵的SVD...... 桥豆麻袋, 我的gpu在哪?

Monte Carlo 深度学习(Deep Learning) 蒙特卡罗算法

© COPYRIGHT BY i How And Why.com 2015