예제 #1
0
    def test_update_stocks_vol_last(self):
        structures.update_stocks_vol('SPX', TEST_DB_NAME)
        with database.connect_db(TEST_DB_NAME) as db:
            db.execute('SELECT MAX(date) FROM stocks WHERE symbol=?;', ['SPX'])
            test_date = database.decode_date(db.fetchall()[0][0])
            db.execute('SELECT * FROM volatility WHERE symbol=? AND date=?;',
                       ['SPX', test_date])
            original_row = db.fetchall()[0][3:]
            db.execute('UPDATE volatility SET change=?, vol1d=?, vol2d=?, ' \
                       'vol3d=?, vol4d=?, vol5d=?, vol6d=?, vol7d=?, vol8d=?, '\
                       'vol9d=?, vol1m=?, vol2m=?, vol3m=?, vol6m=?, vol1y=? ' \
                       'WHERE symbol=? AND date=?;',
                       [0] * 15 + ['SPX', test_date])
            db.execute('SELECT * FROM volatility WHERE symbol=? AND date=?;',
                       ['SPX', test_date])
            corrupted_row = db.fetchall()[0][3:]
        self.assertTrue(all(abs(item) > 1e-5 for item in original_row))
        self.assertTrue(all(abs(item) < 1e-5 for item in corrupted_row))

        structures.update_stocks_vol_last('SPX', TEST_DB_NAME)
        with database.connect_db(TEST_DB_NAME) as db:
            db.execute('SELECT * FROM volatility WHERE symbol=? AND date=?;',
                       ['SPX', test_date])
            updated_row = db.fetchall()[0][3:]
        self.assertTrue(all(abs(item) > 1e-5 for item in updated_row))
예제 #2
0
    def test_update_stocks_vol(self):
        test_date = date(2015, 12, 18)
        expected_row = ('SPX', database.encode_date(test_date),
                        -1.78, -28.25, 3.15, 28.47, 26.80, 23.70, 24.49, 22.66,
                        21.15, 19.84, 16.89, 15.69, 15.88, 18.30, 15.39)

        with database.connect_db(TEST_DB_NAME) as db:
            db.execute('SELECT COUNT(*) FROM volatility WHERE symbol=?;',
                       ['SPX'])
            self.assertEqual(db.fetchall(), [(0,)])

        structures.update_stocks_vol('SPX', TEST_DB_NAME)
        with database.connect_db(TEST_DB_NAME) as db:
            db.execute('SELECT * FROM volatility WHERE symbol=? AND date=?;',
                       ['SPX', test_date])
            self.assertEqual(db.fetchall()[0], expected_row)
            db.execute('DELETE FROM volatility WHERE symbol=? AND date=?;',
                       ['SPX', test_date])
            db.execute('SELECT * FROM volatility WHERE symbol=? AND date=?;',
                       ['SPX', test_date])
            self.assertEqual(db.fetchall(), [])

        structures.update_stocks_vol('SPX', TEST_DB_NAME)
        with database.connect_db(TEST_DB_NAME) as db:
            db.execute('SELECT * FROM volatility WHERE symbol=? AND date=?;',
                       ['SPX', test_date])
            self.assertEqual(db.fetchall()[0], expected_row)
예제 #3
0
def update_quotes():
    """Retrieves all required historical quotes"""
    logger = logging.getLogger(__name__)
    logger.info('Updating quotes ...')

    all_symbols = [
        'VIX', 'VXST', 'VXV', 'VXMT', 'VVIX', 'SPX', 'XIV', 'VXX', 'TLT']
    for symbol in all_symbols:
        stocks.fetch_historical(symbol)
    structures.update_stocks_vol('SPX')

    futures.fetch_historical('VX')
    options.fetch_historical('SPX')
    logger.info('Done')
예제 #4
0
 def test_volatility_cone(self):
     stocks.fetch_historical('SPX', TEST_DB_NAME)
     structures.update_stocks_vol('SPX', TEST_DB_NAME)
     cone1 = structures.volatility_cone(
         'SPX', self.test_timestamp.date(), 252, TEST_DB_NAME)
     cone2 = np.array([
         [ 19.84,  16.89,  15.69,  15.88,  18.30,  15.39],
         [  5.82,   8.08,   9.37,   9.64,  10.81,  11.54],
         [  8.85,   9.43,   9.98,  10.50,  11.50,  11.69],
         [  9.83,  10.54,  11.18,  11.01,  12.26,  11.85],
         [ 12.32,  12.41,  11.90,  12.57,  12.94,  12.3 ],
         [ 16.04,  16.64,  18.51,  20.50,  16.94,  15.04],
         [ 21.94,  26.19,  23.62,  21.59,  17.34,  15.3 ],
         [ 43.41,  31.95,  25.45,  22.06,  18.30,  15.54],
     ])
     self.assertTrue(np.array_equal(cone1, cone2))