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

1 visualización (últimos 30 días)
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

Respuesta aceptada

Walter Roberson
Walter Roberson el 14 de Oct. de 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 comentarios
P_Alpha
P_Alpha el 14 de Oct. de 2015
Editada: P_Alpha el 14 de Oct. de 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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Financial Data en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by