对于我自己的数据集,我想使用自2006年以来包含在Matlab中的periodreturns函数(并且我使用的是2015版),但是我无法使其正常工作,也无法在线找到有关该问题的任何信息。第一步,我想运行示例代码。
这是MathWorks(https://ch.mathworks.com/help/finance/periodicreturns.html)提供的示例代码:
Dates = datetime(2015,1,1:10,'Locale','en_US')';
Prices = [0.01 0.03 0.1 -0.05 0.02 0.07 0.03 -0.01 -0.02 0.01]';
TotalReturnPrices = table(Dates,Prices);
TotalReturn = periodicreturns(TotalReturnPrices)
不幸的是,我总是收到以下错误消息:
Undefined function 'isnan' for input arguments of type 'table'.
Error in periodicreturns>dailyreturnspersecurity (line 85)
trprc(isnan(trprc(:,2)),:) = [];
Error in periodicreturns (line 50)
tmptr{i} = dailyreturnspersecurity(trprc(:,[1,i+1]));
我尝试了以下操作: -一种变体,其中选择一个单元格作为输入而不是表格(导致出现不同的错误消息) -重新启动工作区 -谷歌搜索,但仅发现数据集中存在的NaN问题 -调整功能,因此它不检查NaN(因为示例中不存在),这导致我遇到了一个新问题:
Undefined operator '-' for input arguments of type 'table'.
Error in periodicreturns1>dailyreturnspersecurity (line 93)
tr(tindex,2) = (pp - pp0)/pp0;
Error in periodicreturns1 (line 50)
tmptr{i} = dailyreturnspersecurity(trprc(:,[1,i+1]));
有什么想法我想念的吗?
答案 0 :(得分:0)
函数periodicreturns
当前目前支持table
variables as inputs,但是在您使用的旧版MATLAB中不支持它们。如果您有MathWorks帐户,则可以查看R2015b here的较旧文档,该文档仅将数字矩阵指定为该函数的有效输入。 very next release (R2016a)是在添加对表输入的支持时。
似乎也不支持将单元格数组作为输入。以下是旧版文档说明应格式化输入的方式:
根据给定证券的总回报价格的资产数量(
NUMOBS
)矩阵的观察次数(NASSETS + 1
)。第1列包含MATLAB®序列号。其余列包含总退货价格数据。
因此,您需要使用date numbers而不是datetime
对象。