I agree that the naming of these structures is unfortunate. You would be better off structuring your data like so:
data(1).prices = someData;
data(2).prices = someMoreData;
data(n).prices = nData;
Or even like this (depending on the content of prices)
prices(1) = someData;
prices(2) = someMoreData;
prices(n) = nData;
If your data was one level deeper in your structures then you could also take advantage of dynamic field names.
To illustrate dynamic field referencing, let's assume you had your data nested under a parent structure called "data." You would then have fields within data called data.structure_portfolio1_prices, data.structure_portfolio2_prices, and so on. In this case, you could then reference them without resorting to eval, like so:
for idx = 1:10
tempData = data.(['structure_portfolio' num2str(idx) '_prices']);
With dynamic fields, you reference (or create) fields using parentheses.
Hope this helps!