Esempio n. 1
0
def get_history_table():  # TODO: check app when markets are open
    request_date = get_db_date()

    with database.connect_db() as db:
        symbols = ["VIX", "VXST", "VXV", "VXMT", "VVIX", "SPX", "XIV", "VXX", "TLT"]
        query_dates = [database.encode_date(request_date - timedelta(days=30)), database.encode_date(request_date)]
        db.row_factory = stocks.quote_factory
        db.execute(
            "SELECT * FROM stocks WHERE symbol IN (%s) "
            "AND date BETWEEN ? and ? "
            "ORDER BY symbol, date;" % ",".join("?" * len(symbols)),
            symbols + query_dates,
        )
        quotes = db.fetchall()
        db.row_factory = None
        db.execute(
            "SELECT vol1d, vol2d, vol3d, vol4d, vol5d, vol6d, "
            "vol7d, vol8d, vol9d FROM volatility "
            "WHERE symbol=? AND date BETWEEN ? and ? "
            "ORDER BY date;",
            ["SPX"] + query_dates,
        )
        volatilities = np.array(db.fetchall()).T

    data = {}
    for symbol, quotes in groupby(quotes, key=itemgetter(0)):
        quotes = list(quotes)
        data[symbol] = ["%.2f" % quote.close for quote in quotes[-10:]]
        data["%s_change" % symbol] = [
            "%+.2f %%" % ((quote.close / prev_quote.close - 1) * 100)
            for quote, prev_quote in izip(quotes[-10:], quotes[-11:-1])
        ]
        if symbol in ["VIX", "VXST", "VXV", "VXMT"]:
            data["%s_color" % symbol] = [colorpicker.get_value_color(abs(quote.close), 5, 80) for quote in quotes[-10:]]
    data["Date"] = [quote.date.strftime("%d.%m.%y") for quote in quotes[-10:]]
    if (request.args.get("date") == "") and not dates.are_markets_open() and len(data["Date"]) > 0:
        data["Date"][-1] = "ETH"

    for period, row in enumerate(volatilities, 1):
        data["SPX vol. %d" % period] = ["%.2f" % item for item in row[-10:]]
        data["SPX vol. %d_color" % period] = [colorpicker.get_value_color(abs(item), 5, 80) for item in row[-10:]]
    return jsonify(data)
Esempio n. 2
0
 def test_get_value_color_lower(self):
     self.assertEqual(colorpicker.get_value_color(9, 10, 90), '#ffffd9')
Esempio n. 3
0
 def test_get_value_color_invalid(self):
     self.assertEqual(colorpicker.get_value_color(0, -1, -2), '#ffffff')
Esempio n. 4
0
 def test_get_value_color_higher(self):
     self.assertEqual(colorpicker.get_value_color(91, 10, 90), '#081d58')
Esempio n. 5
0
 def test_get_value_color_upper_bound(self):
     self.assertEqual(colorpicker.get_value_color(90, 10, 90), '#081d58')
Esempio n. 6
0
 def test_get_value_color_middle(self):
     self.assertEqual(colorpicker.get_value_color(65, 10, 90), '#243b97')