If bids are nearly immutable and are always a part of a portfolio, then they don't need to be smart pointers.  Probably just use a combination of bare pointers and passing by (const) reference.