Пример #1
0
    def test_putcallpair_addoption_expiration_error_on_different_expiration(
            self):
        pair = PutCallPair()
        self.assertEqual(None, pair._expiration)
        self.assertEqual(None, pair.expiration)
        pair.addoption(self.option_contract_put)
        opt_contract_dict_call = {
            '_id': '577a573e4b01f47f84d0cbd5',
            'callorput': 'c',
            'cqgsymbol': 'P.US.EPH1427750',
            'expirationdate': datetime(2014, 3, 22, 0, 0),
            'idcontract': 4736,
            'idinstrument': 11,
            'idoption': 11558454,
            'optionmonth': 'H',
            'optionmonthint': 3,
            'optionname': 'P.US.EPH1427750',
            'optionyear': 2014,
            'strikeprice': 2775.0
        }
        self.assertEqual(pair.expiration, datetime(2014, 3, 21, 0, 0))

        option_contract_call = OptionContract(opt_contract_dict_call,
                                              self.fut_contract)
        self.assertRaises(ValueError, pair.addoption, option_contract_call)
Пример #2
0
 def test_putcallpair_has_p(self):
     pair = PutCallPair()
     self.assertEqual(None, pair.P)
     self.assertEqual(None, pair.p)
     pair.addoption(self.option_contract_put)
     self.assertEqual(self.option_contract_put, pair.P)
     self.assertEqual(self.option_contract_put, pair.p)
     self.assertEqual(self.option_contract_put, pair.put)
Пример #3
0
    def test_putcallpair_has_underlying(self):
        pair = PutCallPair()
        self.assertEqual(None, pair.underlying)
        pair.addoption(self.option_contract_put)
        self.assertEqual(self.fut_contract, pair.underlying)

        opt_contract_dict_call = {
            '_id': '577a573e4b01f47f84d0cbd5',
            'callorput': 'c',
            'cqgsymbol': 'P.US.EPH1427750',
            'expirationdate': datetime(2014, 3, 21, 0, 0),
            'idcontract': 4736,
            'idinstrument': 11,
            'idoption': 11558454,
            'optionmonth': 'H',
            'optionmonthint': 3,
            'optionname': 'P.US.EPH1427750',
            'optionyear': 2014,
            'strikeprice': 2775.0
        }
        option_contract_call = OptionContract(opt_contract_dict_call,
                                              self.fut_contract)

        pair = PutCallPair()
        pair.addoption(option_contract_call)
        self.assertEqual(self.fut_contract, pair.underlying)
Пример #4
0
    def __init__(self, option_chain_dic, futures_contract, options_limit=0):
        self._data = option_chain_dic
        self._fut = futures_contract
        self._options = OrderedDict()
        self._atm_index = -1
        self._options_limit = options_limit

        self._expiration = self._data['_id']['date']

        if options_limit > 0:
            all_strikes = np.array(
                sorted(
                    list(set([x['strikeprice']
                              for x in self._data['chain']]))))
            atm_index = np.argmin(np.abs(all_strikes - self.underlying.price))
            all_strikes = all_strikes[max(0, atm_index - options_limit):min(
                len(self._data['chain']), atm_index + options_limit + 1)]

        for opt_dic in self._data['chain']:
            if options_limit > 0:
                if opt_dic['strikeprice'] not in all_strikes:
                    continue
            option = OptionContract(opt_dic, self._fut)
            pc_pair = self._options.setdefault(option.strike, PutCallPair())
            pc_pair.addoption(option)
        self._strike_array = np.array(list(self._options.keys()))
Пример #5
0
    def test_putcallpair_has_repr(self):
        pair = PutCallPair()
        pair.addoption(self.option_contract_put)

        opt_contract_dict_call = {
            '_id': '577a573e4b01f47f84d0cbd5',
            'callorput': 'c',
            'cqgsymbol': 'P.US.EPH1427750',
            'expirationdate': datetime(2014, 3, 21, 0, 0),
            'idcontract': 4736,
            'idinstrument': 11,
            'idoption': 11558454,
            'optionmonth': 'H',
            'optionmonthint': 3,
            'optionname': 'P.US.EPH1427750',
            'optionyear': 2014,
            'strikeprice': 2775.0
        }
        option_contract_call = OptionContract(opt_contract_dict_call,
                                              self.fut_contract)

        pair.addoption(option_contract_call)
        self.assertEqual(
            pair.__repr__(),
            "{0} {1} / {2}".format(pair.strike, pair.call.name, pair.put.name))
Пример #6
0
 def test_putcallpair_addoption_error_on_duclicate(self):
     pair = PutCallPair()
     pair.addoption(self.option_contract_put)
     self.assertRaises(ValueError, pair.addoption, self.option_contract_put)
Пример #7
0
 def test_putcallpair_addoption(self):
     pair = PutCallPair()
     pair.addoption(self.option_contract_put)
     self.assertEqual(pair._put, self.option_contract_put)
     self.assertEqual(pair._call, None)
Пример #8
0
 def test_constructor(self):
     pair = PutCallPair()
     self.assertEqual(pair._put, None)
     self.assertEqual(pair._call, None)
     self.assertTrue(np.isnan(pair._strike))
Пример #9
0
 def test_putcallpair_addoption_expiration_set(self):
     pair = PutCallPair()
     self.assertEqual(None, pair._expiration)
     self.assertEqual(None, pair.expiration)
     pair.addoption(self.option_contract_put)
     self.assertEqual(pair.expiration, datetime(2014, 3, 21, 0, 0))
Пример #10
0
 def test_putcallpair_has_expiration(self):
     pair = PutCallPair()
     self.assertEqual(None, pair._expiration)
     self.assertEqual(None, pair.expiration)
     pair.addoption(self.option_contract_put)
Пример #11
0
 def test_putcallpair_has_strike(self):
     pair = PutCallPair()
     pair.addoption(self.option_contract_put)
     self.assertEqual(pair._put, self.option_contract_put)
     self.assertEqual(pair._call, None)
     self.assertEqual(pair.strike, 2775.0)