Matlab 拟合两个变量的二次函数(Black-Scholes确定性波动函数)

Matlab 拟合两个变量的二次函数(Black-Scholes确定性波动函数),matlab,optimization,curve-fitting,Matlab,Optimization,Curve Fitting,我试图拟合确定性波动率函数的参数,以用于从业者Black-Scholes模型 我想估算“a”参数的公式是: sig=a0+a1*K+a2*K^2+a3*T+a4*T^2+a5*KT 其中sig、K和T是已知的;我对K、T和sig组合进行了多次观察,但只需要一组“a”参数 我该怎么办?不幸的是,我的谷歌搜索和自己的尝试都失败了 谢谢大家! 函数lsqcurvefit允许您定义要拟合的函数。从那以后应该是直截了当的 一些数学知识 注释材料:用i索引您的观察结果,并添加一个错误项 sig_i = a0

我试图拟合确定性波动率函数的参数,以用于从业者Black-Scholes模型

我想估算“a”参数的公式是:

sig=a0+a1*K+a2*K^2+a3*T+a4*T^2+a5*KT

其中sig、K和T是已知的;我对K、T和sig组合进行了多次观察,但只需要一组“a”参数

我该怎么办?不幸的是,我的谷歌搜索和自己的尝试都失败了


谢谢大家!

函数lsqcurvefit允许您定义要拟合的函数。从那以后应该是直截了当的

一些数学知识 注释材料:用i索引您的观察结果,并添加一个错误项

sig_i = a0 + a1*K_i + a2*K_i^2 + a3*T_i + a4*T_i^2 + a5*KT_i + e_i
可能不疯狂的做法是最小化误差项的平方:

minimize (over a)  \sum_i e_i^2
最小二乘法的解是一个简单的线性代数问题。(如果您真的关心,请参阅解决方案。)(进一步说明:e_i是a的线性函数。我不确定您为什么需要lsqcurvefit作为另一个建议答案?)

OLS(普通最小二乘法)的Matlab代码 假设
sig
K
T
KT
n
乘以1的向量

y = sig;
X = [ones(length(sig),1), K, K.^2, T, T.^2, KT];
a = X \ y;  %basically computes a = inv(X'*X)*(X'*y) but in a better way
这是y对X的普通最小二乘回归

进一步的想法 根据错误项的分布、相关错误等。。。常规OLS可能效率低下,甚至可能不合适。。。我不知道这个问题的细节。你可能想检查人们做什么

一种对大的异常值不太敏感的技术是最小化误差的绝对值

minimize (over a) \sum_i |a_i|

如果你有一个好的统计模型来描述数据是如何生成的,你可以做最大似然估计。无论如何这很快就演变成了一个多季度的统计类。

谢谢-我最初尝试过lsqcurvefit,但似乎只有一个独立变量(扩展数据),或者我忽略了什么?如果他的函数在a@SW7中是线性的,为什么他需要lsqcurvefit?数据变量可能是一个值向量,这样你的a就变成了扩展数据(1),数据(2),等等@MatthewGunn他没有,但是这个解决方案是我发现的最简单的,没有任何先决条件。