Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:如何计算每只股票的回报率_Matlab_Stock - Fatal编程技术网

Matlab:如何计算每只股票的回报率

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 每列中的数字是每种股票的价格。如果我想计算他们每个人的年度回报,我的代码应该是什么样子的 我

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)种不同股票的价格。我是否必须使用循环来计算每个股票的回报,或者是否有一个公式?谢谢酷。现在,如果我能让你帮我(和你自己)一个忙,坐下来,确保你明白为什么这段代码适合你。从长远来看会更好!代码没有直接解决我的问题,但它确实帮助我理解并完成了工作。谢谢你的帮助:)