def test_futuresContract(self): contract0 = futuresContract(futuresInstrument.create_empty(), "201801") contract1 = futuresContract.simple("EDOLLAR", "201812") self.assertEqual(contract1.date, "20181200") self.assertEqual(contract1.instrument_code, "EDOLLAR") self.assertTrue(contract1.expiry_date, datetime.datetime(2018,12,1)) # dictionaries contract1_as_dict = contract1.as_dict() self.assertEqual(contract1_as_dict, dict(instrument_code = "EDOLLAR", expiry_date = (2018,12,1), contract_date = "201812", approx_expiry_offset=0)) contract1_fromdict = futuresContract.create_from_dict(contract1_as_dict) self.assertEqual(contract1_fromdict.instrument_code, "EDOLLAR") self.assertEqual(contract1_fromdict.expiry_date, datetime.datetime(2018,12,1)) self.assertEqual(contract1_fromdict.date, "20181200") contract2 = futuresContract.simple("EDOLLAR", "20181215", expiry_date=(2018,12,15)) self.assertEqual(contract2.expiry_date, datetime.datetime(2018,12,15)) self.assertEqual(contract2.date, "20181215") contract3 = futuresContract.simple("EDOLLAR", "20181215", approx_expiry_offset = 4) self.assertEqual(contract3.expiry_date, datetime.datetime(2018,12,19)) # rolling contract1_with_roll_data = futuresContract.create_from_dict_with_rolldata(dict(instrument_code = "EDOLLAR", contract_date = "201812"), dict(priced_rollcycle = "HMUZ", hold_rollcycle = "Z", carry_offset = 1)) contract1a=contract1_with_roll_data.next_priced_contract() self.assertEqual(contract1a.date, "20190300") contract1b=contract1_with_roll_data.previous_priced_contract() self.assertEqual(contract1b.date, "20180900") contract1c = contract1_with_roll_data.carry_contract() self.assertEqual(contract1c.date, "20190300") contract1d = contract1_with_roll_data.next_held_contract() self.assertEqual(contract1d.date, "20191200") contract1e = contract1_with_roll_data.previous_held_contract() self.assertEqual(contract1e.date, "20171200") contract_ident = futuresContract.identGivenCodeAndContractDate("EDOLLAR", "201801") self.assertEqual(contract_ident, "EDOLLAR/20180100")
def get_contracts_with_price_data(self): """ :return: list of contracts """ list_of_contract_tuples = self._get_contract_tuples_with_price_data() list_of_contracts = [futuresContract.simple(contract_tuple[0], contract_tuple[1]) for contract_tuple in list_of_contract_tuples] return list_of_contracts
def _object_given_instrumentCode_and_contractDate(self, instrument_code, contract_date): """ Quickly go from eg "EDOLLAR" "201801" to an object :param instrument_code: str :param contract_date: str :return: futuresContract """ contract_object = futuresContract.simple(instrument_code, contract_date) return contract_object
def test_futuresContract(self): contract0 = futuresContract(futuresInstrument.create_empty(), "201801") contract1 = futuresContract.simple("EDOLLAR", "201812") self.assertEqual(contract1.date, "20181200") self.assertEqual(contract1.instrument_code, "EDOLLAR") self.assertTrue(contract1.expiry_date, datetime.datetime(2018, 12, 1)) # dictionaries contract1_as_dict = contract1.as_dict() self.assertEqual( contract1_as_dict, dict(instrument_code="EDOLLAR", expiry_date=(2018, 12, 1), contract_date="201812", approx_expiry_offset=0)) contract1_fromdict = futuresContract.create_from_dict( contract1_as_dict) self.assertEqual(contract1_fromdict.instrument_code, "EDOLLAR") self.assertEqual(contract1_fromdict.expiry_date, datetime.datetime(2018, 12, 1)) self.assertEqual(contract1_fromdict.date, "20181200") contract2 = futuresContract.simple("EDOLLAR", "20181215", expiry_date=(2018, 12, 15)) self.assertEqual(contract2.expiry_date, datetime.datetime(2018, 12, 15)) self.assertEqual(contract2.date, "20181215") contract3 = futuresContract.simple("EDOLLAR", "20181215", approx_expiry_offset=4) self.assertEqual(contract3.expiry_date, datetime.datetime(2018, 12, 19)) # rolling contract1_with_roll_data = futuresContract.create_from_dict_with_rolldata( dict(instrument_code="EDOLLAR", contract_date="201812"), dict(priced_rollcycle="HMUZ")) contract1a = contract1_with_roll_data.next_priced_contract() self.assertEqual(contract1a.date, "20190300") contract1b = contract1_with_roll_data.previous_priced_contract() self.assertEqual(contract1b.date, "20180900") contract3 = futuresContract.approx_first_priced_futuresContract_after_date( futuresInstrument("EDOLLAR"), rollParameters(priced_rollcycle="HMUZ"), datetime.datetime(1970, 12, 1)) self.assertEqual(contract3.date, "19710300") list_of_contracts = listOfFuturesContracts.series_of_price_contracts_within_daterange( futuresInstrument("EDOLLAR"), rollParameters(priced_rollcycle="HMUZ"), datetime.datetime(2016, 1, 1), datetime.datetime(2018, 1, 1)) self.assertEqual(list_of_contracts[0].date, "20160300") self.assertEqual(list_of_contracts[-1].date, "20180300") contract_ident = futuresContract.identGivenCodeAndContractDate( "EDOLLAR", "201801") self.assertEqual(contract_ident, "EDOLLAR/20180100")
def test_futures_prices(self): data = arcticFuturesContractPriceData(database_name="test") data._arctic.store.delete_library(data._arctic.library_name) ## we need some sham data dummy_series = [5.0] * 5 dummy_series2 = [2.0] * 5 price_data = pd.DataFrame(dict(OPEN=dummy_series, CLOSE=dummy_series, HIGH=dummy_series, LOW=dummy_series, SETTLE=dummy_series), index=pd.date_range(pd.datetime(2000, 1, 1), pd.datetime(2000, 1, 5))) price_data2 = pd.DataFrame(dict(OPEN=dummy_series2, CLOSE=dummy_series2, HIGH=dummy_series2, LOW=dummy_series2, SETTLE=dummy_series2), index=pd.date_range(pd.datetime(2000, 1, 1), pd.datetime(2000, 1, 5))) list_of_contracts = data.contracts_with_price_data_for_instrument_code( "thing one") self.assertEqual(list_of_contracts, []) empty_thing = data.get_prices_for_instrument_code_and_contract_date( "thing one", "201801") self.assertEqual(len(empty_thing.index), 0) self.assertEqual( data.has_data_for_instrument_code_and_contract_date( "thing one", "201801"), False) data.write_prices_for_contract_object( futuresContract.simple("thing one", "201801"), price_data) data.write_prices_for_contract_object( futuresContract.simple("thing one", "20180215"), price_data) data.write_prices_for_contract_object( futuresContract.simple("thing two", "201803"), price_data2) list_of_contracts = data.contracts_with_price_data_for_instrument_code( "thing one") self.assertEqual(list_of_contracts, ['20180100', '20180215']) list_of_contracts = data.contracts_with_price_data_for_instrument_code( "thing two") self.assertEqual(list_of_contracts, ["20180300"]) self.assertEqual( data.has_data_for_instrument_code_and_contract_date( "thing one", "201801"), True) self.assertEqual( data.has_data_for_instrument_code_and_contract_date( "thing one", "20180215"), True) self.assertEqual( data.has_data_for_instrument_code_and_contract_date( "thing one", "201807"), False) self.assertEqual( data.has_data_for_contract( futuresContract.simple("thing two", "201803")), True) getback1 = data.get_prices_for_instrument_code_and_contract_date( "thing one", "201801") getback2 = data.get_prices_for_contract_object( futuresContract.simple("thing two", "201803")) self.assertEqual(getback1.OPEN.values[0], 5.0) self.assertEqual(getback2.OPEN.values[0], 2.0) data.delete_prices_for_contract_object(futuresContract.simple( "thing one", "201807"), areyousure=True) data.delete_prices_for_contract_object(futuresContract.simple( "thing one", "201801"), areyousure=True) list_of_contracts = data.contracts_with_price_data_for_instrument_code( "thing one") self.assertEqual(list_of_contracts, ['20180215']) list_of_contracts = data.contracts_with_price_data_for_instrument_code( "thing two") self.assertEqual(list_of_contracts, ["20180300"]) data.delete_prices_for_contract_object(futuresContract.simple( "thing one", "20180215"), areyousure=True) list_of_contracts = data.contracts_with_price_data_for_instrument_code( "thing one") self.assertEqual(list_of_contracts, []) data.delete_prices_for_contract_object(futuresContract.simple( "thing two", "201803"), areyousure=True) list_of_contracts = data.contracts_with_price_data_for_instrument_code( "thing two") self.assertEqual(list_of_contracts, [])
def test_futuresContract(self): contract0 = futuresContract(futuresInstrument.create_empty(), "201801") contract1 = futuresContract.simple("EDOLLAR", "201812") self.assertEqual(contract1.date, "20181200") self.assertEqual(contract1.instrument_code, "EDOLLAR") self.assertTrue(contract1.expiry_date, datetime.datetime(2018, 12, 1)) # dictionaries contract1_as_dict = contract1.as_dict() self.assertEqual( contract1_as_dict, dict( instrument_code="EDOLLAR", expiry_date=(2018, 12, 1), contract_date="201812", approx_expiry_offset=0, ), ) contract1_fromdict = futuresContract.create_from_dict( contract1_as_dict) self.assertEqual(contract1_fromdict.instrument_code, "EDOLLAR") self.assertEqual(contract1_fromdict.expiry_date, datetime.datetime(2018, 12, 1)) self.assertEqual(contract1_fromdict.date, "20181200") contract2 = futuresContract.simple("EDOLLAR", "20181215", expiry_date=(2018, 12, 15)) self.assertEqual(contract2.expiry_date, datetime.datetime(2018, 12, 15)) self.assertEqual(contract2.date, "20181215") contract3 = futuresContract.simple("EDOLLAR", "20181215", approx_expiry_offset=4) self.assertEqual(contract3.expiry_date, datetime.datetime(2018, 12, 19)) # rolling contract1_with_roll_data = futuresContract.create_from_dict_with_rolldata( dict(instrument_code="EDOLLAR", contract_date="201812"), dict(priced_rollcycle="HMUZ", hold_rollcycle="Z", carry_offset=1), ) contract1a = contract1_with_roll_data.next_priced_contract() self.assertEqual(contract1a.date, "20190300") contract1b = contract1_with_roll_data.previous_priced_contract() self.assertEqual(contract1b.date, "20180900") contract1c = contract1_with_roll_data.carry_contract() self.assertEqual(contract1c.date, "20190300") contract1d = contract1_with_roll_data.next_held_contract() self.assertEqual(contract1d.date, "20191200") contract1e = contract1_with_roll_data.previous_held_contract() self.assertEqual(contract1e.date, "20171200") contract_ident = futuresContract.identGivenCodeAndContractDate( "EDOLLAR", "201801") self.assertEqual(contract_ident, "EDOLLAR/20180100")