Matlab:如何计算每只股票的回报率
tr9sh,谢谢你编辑这个问题,但我必须澄清我没有要求计算每日回报。我想要的是通过定位日期行而不输入数据“price”来计算年度回报。公式如下:(price(2001/1/20)/price(2000/1/21)-1) “n期n股”的收盘价导入Matlab,如下所示: 2000/1/123.478.9 2000/1/223.367.1 2001/1/123.277.1 2001/1/224.178.1 每列中的数字是每种股票的价格。如果我想计算他们每个人的年度回报,我的代码应该是什么样子的 我试过了Matlab:如何计算每只股票的回报率,matlab,stock,Matlab,Stock,tr9sh,谢谢你编辑这个问题,但我必须澄清我没有要求计算每日回报。我想要的是通过定位日期行而不输入数据“price”来计算年度回报。公式如下:(price(2001/1/20)/price(2000/1/21)-1) “n期n股”的收盘价导入Matlab,如下所示: 2000/1/123.478.9 2000/1/223.367.1 2001/1/123.277.1 2001/1/224.178.1 每列中的数字是每种股票的价格。如果我想计算他们每个人的年度回报,我的代码应该是什么样子的 我
Return = (filename(find(2001/1/1)),2)/(filename(find(2000/1/1)),2) - 1
您正在尝试使用“查找”作为字符串。下次尝试regexp(对于不区分大小写的变体) 但我会做不同的事情:阅读每一行并提取日期和价格。 完成后:搜索年/月和最后一天的日期(存储在单独的数组中,作为数字,而不是字符)。使用找到的索引从价格数组中获取相应的价格 顺便说一句,你说它存储在mat文件中?但是你的例子看起来更像一个文本文件??
对于文本文件,使用scanf()函数获取数据是最简单的我不太清楚您想要什么,但以下解决方案可能适合您。假设您的数据存储在矩阵
X
中。然后
close = X(:,2:end);
ret = close(2:end,:) ./ close(1:end-1,:) - 1;
dates = X(2:end,1);
你是说数据是以文本文件的形式存在的,每个条目之间都有空格吗?对不起,我没有写清楚。没有空格。它在mat中。你需要更清楚一些。如果在MATLAB中键入
load filename
(其中filename
)是.mat文件的名称,结果会是什么?是的,它是.mat文件。第一列是日期,“第二至n”列是(n-2)种不同股票的价格。如果键入load filename
,结果是什么?是mat文件,是的,日期存储为数字…第一列是日期,第二至n列是(n-2)种不同股票的价格。我是否必须使用循环来计算每个股票的回报,或者是否有一个公式?谢谢酷。现在,如果我能让你帮我(和你自己)一个忙,坐下来,确保你明白为什么这段代码适合你。从长远来看会更好!代码没有直接解决我的问题,但它确实帮助我理解并完成了工作。谢谢你的帮助:)