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

1 Ansicht (letzte 30 Tage)
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

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 14 Okt. 2015
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 Kommentare
P_Alpha
P_Alpha am 14 Okt. 2015
Bearbeitet: P_Alpha am 14 Okt. 2015
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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Financial Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by