- arbitrary number of stocks in portfolio ('ls_portfolio_size')- prices cached in a dictionary to avoid all I/O ('d_prices')- itertools used to build stock combinations and allocation permutations- only valid portfolio allocations (sum=1)