def _build_all_price_data(set_of_price_data, contract_date_info): current_price_data, next_price_data, carry_price_data = set_of_price_data all_price_data = pd.concat( [current_price_data, next_price_data, carry_price_data], axis=1) all_price_data.columns = [ price_name, forward_name, carry_name, ] all_price_data[contract_name_from_column_name( price_name)] = contract_date_info.current_contract all_price_data[contract_name_from_column_name( forward_name)] = contract_date_info.next_contract all_price_data[contract_name_from_column_name( carry_name)] = contract_date_info.carry_contract return all_price_data
def _change_contracts_to_str(multiple_price_data_aspd): for price_column in list_of_price_column_names: multiple_price_data_aspd[price_column] = multiple_price_data_aspd[ price_column].astype(float) contract_column = contract_name_from_column_name(price_column) multiple_price_data_aspd[contract_column] = multiple_price_data_aspd[ contract_column].astype(str) return multiple_price_data_aspd
def as_aligned_pd_row(self, time_index: datetime.timedelta) -> pd.DataFrame: new_dict = { price_name: self.price, carry_name: self.carry, forward_name: self.forward, contract_name_from_column_name(price_name): self.price_contract, contract_name_from_column_name(carry_name): self.carry_contract, contract_name_from_column_name(forward_name): self.forward_contract } new_dict_with_nones_removed = dict([(key, value) for key, value in new_dict.items() if value is not None]) new_df_row = pd.DataFrame(new_dict_with_nones_removed, index=[time_index]) return new_df_row
def _calc_new_multiple_prices(existing_adjusted_prices: futuresAdjustedPrices, updated_multiple_prices: futuresMultiplePrices)\ -> (futuresMultiplePrices, str): last_date_in_current_adj = existing_adjusted_prices.index[-1] multiple_prices_as_dict = updated_multiple_prices.as_dict() prices_in_multiple_prices = multiple_prices_as_dict[price_name] price_contract_column = contract_name_from_column_name(price_name) last_contract_in_price_data = prices_in_multiple_prices[ price_contract_column][:last_date_in_current_adj][-1] new_multiple_price_data = prices_in_multiple_prices.prices_after_date( last_date_in_current_adj) return new_multiple_price_data, last_contract_in_price_data
def as_dict(self) -> dictFuturesNamedContractFinalPricesWithContractID: """ Split up and transform into dict :return: dictFuturesContractFinalPricesWithContractID, keys PRICE, FORWARD, CARRY """ self_as_dict = {} for price_column_name in list_of_price_column_names: contract_column_name = contract_name_from_column_name( price_column_name) self_as_dict[ price_column_name] = futuresNamedContractFinalPricesWithContractID( self[price_column_name], self[contract_column_name], price_column_name=price_column_name) self_as_dict = dictFuturesNamedContractFinalPricesWithContractID( self_as_dict) return self_as_dict
import pandas as pd from syscore.objects import missing_instrument from sysdata.sim.sim_data import simData from sysobjects.adjusted_prices import futuresAdjustedPrices from sysobjects.instruments import assetClassesAndInstruments, instrumentCosts, futuresInstrumentWithMetaData from sysobjects.multiple_prices import futuresMultiplePrices from sysobjects.dict_of_named_futures_per_contract_prices import price_name, carry_name, forward_name, contract_name_from_column_name price_contract_name = contract_name_from_column_name(price_name) carry_contract_name = contract_name_from_column_name(carry_name) forward_contract_name = contract_name_from_column_name(forward_name) class futuresSimData(simData): def __repr__(self): return "futuresSimData object with %d instruments" % len( self.get_instrument_list()) def all_asset_classes(self) -> list: asset_class_data = self.get_instrument_asset_classes() return asset_class_data.all_asset_classes() def all_instruments_in_asset_class(self, asset_class: str) -> list: """ Return all the instruments in a given asset class :param asset_class: str :return: list of instrument codes