1479a1e836
* Add Price, Value and Close aliases to BaseContract Expose Price, Value and Close on BaseContract as aliases of LastPrice to mimic the BaseData/TradeBar API without inheriting BaseData. Marked with PandasIgnore to avoid duplicating the LastPrice column in chain DataFrames. * Keep BaseContract chains DataFrame unchanged for Value alias The pandas converter force-includes the 'Value' member for non-Lean-data types (to preserve the value column of custom data types despite BaseData.Value being PandasIgnore'd). That override made the new BaseContract.Value alias leak into option/future chain DataFrames as a redundant 'value' column. Exclude BaseContract-derived types from the forced inclusion so their PandasIgnore'd aliases are honored and the chain DataFrames stay unchanged. * Isolate OptionContract alias test from shared price-model singleton OptionContract's default option data is the shared static OptionPriceModelResultData.Null singleton, which other tests mutate via Update. Reading LastPrice before setting up the contract's own data made the assertion depend on global test state (failing in CI with a leaked price). Assign a dedicated price model so the contract no longer reads from or writes to the shared singleton. * Give each OptionContract its own default option data instead of a shared singleton OptionContract initialized its option data to the shared static OptionPriceModelResultData.Null singleton. Update() mutates that data, so contracts without an explicit price model shared and clobbered each other's trade/quote/open-interest state (a latent bug, and the cause of order-dependent test failures). Each contract now gets its own default OptionPriceModelResultData instance, and the alias test no longer needs to work around the shared state. * Restore shared Null option data default and reset it in test SetUp Revert OptionContract back to the shared static OptionPriceModelResultData.Null default. To keep the alias test deterministic, reset that singleton in the fixture's SetUp by updating a throwaway contract with a zero-priced trade bar, and give the tested contract its own price model so its Update doesn't re-pollute the singleton.