0

因此,我有一个巨大的 Excel 电子表格,其中包含 2010 年到当前日期之间不同日期的标准普尔 100 指数历史期权数据。我正在寻找每个日期的股票概率密度函数。

找到这个函数的方法是对行使价(列于第 5 列)取看涨价的二阶导数。我希望我的 MATLAB 脚本按如下方式工作:

  1. 使用曲线拟合工具箱样条拟合函数来创建调用价格相对于每个日期的行使价的曲线。每个日期大约有 10 分。

  2. 使用微分函数可能得到 50 分的二阶导数来估计二阶导数函数。

  3. 在这些点上使用黎曼积分来计算期望值的积分。

我的主要问题是表格分组。我已经进行了研究,并认为我可能不得不使用 rowfun,但我对处理这样的数据真的不是很有经验。

任何帮助将不胜感激!

数据集的一个样本:

数据表

4

1 回答 1

0

您是否只是为了计算该日期的“最佳”二阶导数值而执行步骤 (1) 到 (3)?如果是这样,有一个更简单的方法来做到这一点。在伪代码中,它看起来像:

%assume that all_dates is a Matlab datenum that encodes both
%the date and the time as a floating point value

%find just those values for your day that you care about
I = find(todays_date == floor(all_dates));
todays_data = all_data(I);
todays_datenums = all_dates(I);

%find the best-fit parabola to today's data
N_fit = 2;  %2nd order is a parabola
p = polyfit(todays_datenums, todays_data,N_fit); 

%compute the 2nd derivative
p_1st = polyder(p);      %first derivative, form is y = p(1)*todays_datenum+p(2)
p_2nd = polyder(p_1st);  %second derivative

因为您只适合抛物线,所以 p_2nd 将是一个值。这是您对当天数据的二阶导数的最佳估计。单位为每天美元 (?)。

于 2014-11-26T23:21:55.620 回答