pylookback TODO Use flyweight pattern for asset codes and fx rates? We never want two assets existing with the same code. Observable base class?