由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Quant版 - Matlab进行SDE离散化
相关主题
[Matlab]内存释放概率题
[合集] 急求一道面试题答案,在线等,一小时后面试离散非齐次马科夫链求点思路..
[合集] 请教一个简单的问题包子问 implied vola surface问题
外行求教 离散金融数据的相关性分析请问美式的Call需要特别定价么?
电面要问概率统计,好怕怕Aerospace Software Engineer at The MathWorks
Option Pricing 之 风云离散请教matlab转C++
一道Barclays的面试题混编的英文怎么说?
有些问题请教一下大家请教大牛们matlab 里调用c++
相关话题的讨论汇总
话题: matlab话题: s0话题: deltat话题: sminus话题: splus
进入Quant版参与讨论
1 (共1页)
s********r
发帖数: 529
1
最近在搞一下MC的东西,主要用的Matlab。
发觉对于路径依赖的期权,例如说亚式期权,需要得到股票价格的历史路径。
有一些比较复杂的股票价格dynamics,如果一条路径上面取200个点,跑10^8条路径的话
,用Matlab就很慢了。
我Matlab用得很烂,基本上就是用很简单的for循环,但是这样的方法对于Matlab肯定是
不够优化的,不知道有没有达人能够指点一下,对于这样的MC方法,Matlab有哪些方法
可以让过程更加优化,跑得更加快呢?
多谢各位了!
l******i
发帖数: 1404
2
关于Matlab速度问题,我胡诌两句:
Matlab慢的关键是在循环上,Matlab尽量少用循环语句,尽量写成矩阵形式的计算。
如果matlab code里没有循环,全是大量矩阵运算的话,速度会很快的。
想用很多循环的又要速度的就上C++,想更快就把C++ code写成可以并行计算的那种。
抛开速度问题,另一个角度来说:你程序很大,变量很多的话,
C++是首选,因为C/C++拥有丰富的数据结构。
S*********g
发帖数: 5298
3
1, 尽量少用for,多用logical indexing
2, 各种数组提前安排好大小,往里填数,不要让数组动态的长

的话
定是

【在 s********r 的大作中提到】
: 最近在搞一下MC的东西,主要用的Matlab。
: 发觉对于路径依赖的期权,例如说亚式期权,需要得到股票价格的历史路径。
: 有一些比较复杂的股票价格dynamics,如果一条路径上面取200个点,跑10^8条路径的话
: ,用Matlab就很慢了。
: 我Matlab用得很烂,基本上就是用很简单的for循环,但是这样的方法对于Matlab肯定是
: 不够优化的,不知道有没有达人能够指点一下,对于这样的MC方法,Matlab有哪些方法
: 可以让过程更加优化,跑得更加快呢?
: 多谢各位了!

A*****s
发帖数: 13748
4
MATLAB现在循环还有那么慢么?
我那天手滑试了一下FDM上的,还好啊?

【在 l******i 的大作中提到】
: 关于Matlab速度问题,我胡诌两句:
: Matlab慢的关键是在循环上,Matlab尽量少用循环语句,尽量写成矩阵形式的计算。
: 如果matlab code里没有循环,全是大量矩阵运算的话,速度会很快的。
: 想用很多循环的又要速度的就上C++,想更快就把C++ code写成可以并行计算的那种。
: 抛开速度问题,另一个角度来说:你程序很大,变量很多的话,
: C++是首选,因为C/C++拥有丰富的数据结构。

a*******1
发帖数: 1554
5
你看这样可以不?
S0是初始价格,r是利率,sigma是波动率,T是到期日,K是执行价,hsigma是算vega用
的,h0是算delta用的,N是200,p是10^8,但一般不用取这么大吧,我读书做project
才取10万,这是当时作业的一小部分
function []=ThreeMethodsMilter(S0, r, sigma, T, K, h0, hsigma,p,N)
%% Finite difference
SqrRootp = sqrt(p);
DeltaT = T/N;
SqrtDeltaT = sqrt(DeltaT);
Z= randn(N-1,p);
P = prod([ones(1,p);1+r*DeltaT+sigma*SqrtDeltaT*Z+0.5*sigma^2*DeltaT*(Z.^2-1
)]);
S = P*S0;
C = exp(-r*T)*max(0,S-K);
SPlus = exp(-r*T)*max(0,(S0+h0)*P-K);
SMinus = exp(-r*T)*max(0,(S0-h0)*P-K);
DeltaFD = (SPlus-SMinus)/2/h0;
GammaFD = (SPlus-2*C+SMinus)/h0^2;
SPlus = prod([S0*ones(1,p);1+r*DeltaT+(sigma+hsigma)*SqrtDeltaT*Z]);
VegaPlus = exp(-r*T)*max(0,SPlus-K);
SMinus = prod([S0*ones(1,p);1+r*DeltaT+(sigma-hsigma)*SqrtDeltaT*Z]);
VegaMinus = exp(-r*T)*max(0,SMinus-K);
VegaFD = (VegaPlus-VegaMinus)/2/hsigma;
A*****s
发帖数: 13748
6
Monte Carlo如果不是动真枪的话,用Excel就可以了 lol

project

【在 a*******1 的大作中提到】
: 你看这样可以不?
: S0是初始价格,r是利率,sigma是波动率,T是到期日,K是执行价,hsigma是算vega用
: 的,h0是算delta用的,N是200,p是10^8,但一般不用取这么大吧,我读书做project
: 才取10万,这是当时作业的一小部分
: function []=ThreeMethodsMilter(S0, r, sigma, T, K, h0, hsigma,p,N)
: %% Finite difference
: SqrRootp = sqrt(p);
: DeltaT = T/N;
: SqrtDeltaT = sqrt(DeltaT);
: Z= randn(N-1,p);

s********r
发帖数: 529
7
嗯,这个真不错
但是如果碰到股票的dynamics当中的drift和volatility是和状态变量相关的话,比如说
stochastic volatility或者local volatility的话是不是就只能用for循环了?
多谢解答了!

project

【在 a*******1 的大作中提到】
: 你看这样可以不?
: S0是初始价格,r是利率,sigma是波动率,T是到期日,K是执行价,hsigma是算vega用
: 的,h0是算delta用的,N是200,p是10^8,但一般不用取这么大吧,我读书做project
: 才取10万,这是当时作业的一小部分
: function []=ThreeMethodsMilter(S0, r, sigma, T, K, h0, hsigma,p,N)
: %% Finite difference
: SqrRootp = sqrt(p);
: DeltaT = T/N;
: SqrtDeltaT = sqrt(DeltaT);
: Z= randn(N-1,p);

a*******1
发帖数: 1554
8
你得把那个dynamics写出来我才知道。。。。。。
l******n
发帖数: 9344
9
MEX compile C/C++
*p

【在 l******i 的大作中提到】
: 关于Matlab速度问题,我胡诌两句:
: Matlab慢的关键是在循环上,Matlab尽量少用循环语句,尽量写成矩阵形式的计算。
: 如果matlab code里没有循环,全是大量矩阵运算的话,速度会很快的。
: 想用很多循环的又要速度的就上C++,想更快就把C++ code写成可以并行计算的那种。
: 抛开速度问题,另一个角度来说:你程序很大,变量很多的话,
: C++是首选,因为C/C++拥有丰富的数据结构。

s********r
发帖数: 529
10
Sorry, cant type chinese here
Say, dSt=rt St dt + sqrt(St) sigma dWt
Thanks for your help!
Great weekend!

【在 a*******1 的大作中提到】
: 你得把那个dynamics写出来我才知道。。。。。。
a*******1
发帖数: 1554
11
其实我好久没碰了,你可以试试用Ito's Formula变一下。。。。。。
1 (共1页)
进入Quant版参与讨论
相关主题
请教大牛们matlab 里调用c++电面要问概率统计,好怕怕
关于sortrowsc函数无法使用的问题(Matlab 1.6版)Option Pricing 之 风云离散
请教 MATLAB 和 c/fortran 实现的可能性一道Barclays的面试题
好像数据去噪都是用DWT, 为什么不用CWT?有些问题请教一下大家
[Matlab]内存释放概率题
[合集] 急求一道面试题答案,在线等,一小时后面试离散非齐次马科夫链求点思路..
[合集] 请教一个简单的问题包子问 implied vola surface问题
外行求教 离散金融数据的相关性分析请问美式的Call需要特别定价么?
相关话题的讨论汇总
话题: matlab话题: s0话题: deltat话题: sminus话题: splus