Files
Jhonathan Abreu 1479a1e836 Add Price, Value and Close aliases to BaseContract (#9578)
* 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.
2026-07-02 09:25:49 -04:00
..