We've written all sorts of options systems for clients, but never had to "store and process some data twice" - and I would not hire a programmer who does that without need. Yes, contract() sets ContractRow. The sequence of fields in a CONTRACT struct can be found in trading.h. The sequence of options in an options chain is determined by the broker or the historical data. contractPrice() sets the contract ask and bid price. If the underlying is also updated depends on the broker; IB does it, other brokers might not.