コード例 #1
0
    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")
コード例 #2
0
    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 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
コード例 #4
0
    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
コード例 #5
0
    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")
コード例 #6
0
    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, [])
コード例 #7
0
    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")