Yahoo Finance Error "Error using yahoo/fetch (line 44) Security list must be cell array of strings."

1 次查看(过去 30 天)
Hi All,
I am trying to build out the current market value for a portfolio where the # of securities is dynamic, and the user enters the number of securities and portfolio weights each time the code runs (This all works fine).
I am running into issues when trying to pull data back from yahoo for multiple securities, see the below code. i should be the value in the array "Securities".
Also, once I get this working, how would I be able to have it constantly run and update the market value during market hours, so I can have a close to up to date market value streaming real time (less the 15 yahoo delay).
numsec = ('Enter the number of securities in Portfolio: ');
numsec = input(numsec)
Security = cell(numsec,1);
SecurityWt = nan(numsec,1);
for ns = 1:numsec
Security{ns} = input(['Enter Security ',num2str(ns),' Ticker: '],'s');
SecurityWt(ns) = input(['Enter Security ',num2str(ns),' Weight (ex: .25): ']);
end
if sum(SecurityWt) ~=1
display('Error - The sum of the security weights must be equal to 1! ')
else
pie(SecurityWt,Security)
% Begin Pulling in market prices to contruct portfolio Market Value
c = yahoo;
yhoo_fld = 'Last';
for i=1:size(Security)
fetch(c,i,yhoo_fld)
end

采纳的回答

Walter Roberson
Walter Roberson 2015-10-14
You are trying to fetch information about the number stored in i rather than about the i'th security. fetch(c, Security{i}, yhoo_fld)
Alternately you can use fetch(c, Security, yhoo_fld) to get information on all of them at once without a loop.
  3 个评论
P_Alpha
P_Alpha 2015-10-14
编辑:P_Alpha 2015-10-14
I actually figured it out using your method without the loop. Once I got the prices. My question now is how do I tie together my prices to my securities? PriList is converting the the 1x1 structure into a column of prices.
numsec = ('Enter the number of securities in Portfolio: ');
numsec = input(numsec)
Security = cell(numsec,1);
SecurityQty = nan(numsec,1);
for ns = 1:numsec
Security{ns} = input(['Enter Security ',num2str(ns),' Ticker: '],'s');
SecurityQty(ns) = input(['Enter Security ',num2str(ns),' Quantity: ']);
end
c = yahoo;
yhoo_fld = 'Last';
prices = fetch(c,Security,yhoo_fld);
PriList = prices.Last

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Financial Toolbox 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by