Example #1
0
def get_stocks():
    date = get_db_date()
    symbols = ["SPX", "VIX"]
    quotes = stocks.query_historical(symbols, date)
    prev_quotes = stocks.query_historical(symbols, dates.business_dates_add(date, -1))
    data = {}
    if quotes["SPX"] and quotes["VIX"]:
        data = {
            "SPX": "%.2f" % quotes["SPX"].close,
            "VIX": "%.2f" % quotes["VIX"].close,
            "SPX_change": "%+.2f %%" % ((quotes["SPX"].close / prev_quotes["SPX"].close - 1) * 100),
            "VIX_change": "%+.2f" % (quotes["VIX"].close - prev_quotes["VIX"].close),
        }
    return jsonify(data)
Example #2
0
def get_futures():
    date = get_db_date()
    quotes = futures.query_historical("VX", date)
    vix_quote = stocks.query_historical(["VIX"], date).get("VIX", 10)
    if vix_quote is None:
        return jsonify()

    data1 = [
        {
            "x": dates.business_dates_diff(date, quote.expiration),
            "y": quote.close,
            "name": quote.expiration.strftime("%b'%y"),
            "suffix": "%+.2f, %+.0f %%, " % (quote.close - vix_quote.close, (quote.close / vix_quote.close - 1) * 100),
        }
        for quote in quotes
    ]

    if len(data1) > 0:
        first_point = data1[0]
        first_point.update({"marker": {"enabled": "false"}})
        data2 = [{"x": 0, "y": vix_quote.close, "name": "VIX"}, first_point]
    else:
        data2 = []

    return jsonify({"part1": data1, "part2": data2})
Example #3
0
 def _check_database_quotes(self, symbol, total, check_date, check_close):
     with database.connect_db(TEST_DB_NAME) as db:
         db.execute("SELECT COUNT(*) FROM stocks WHERE symbol=?;", [symbol])
         self.assertEqual(db.fetchall(), [(total,)])
     if total > 0:
         database_quotes = stocks.query_historical([symbol], check_date, TEST_DB_NAME)
         self._check_quotes(database_quotes, symbol, check_date, check_close)
Example #4
0
 def test_query_historical_multiple_quotes(self):
     stocks.fetch_historical("SPX", TEST_DB_NAME)
     stocks.fetch_historical("VIX", TEST_DB_NAME)
     stocks.fetch_historical("AAPL", TEST_DB_NAME)
     quotes = stocks.query_historical(["SPX", "VIX", "AAPL"], date(2015, 12, 15), TEST_DB_NAME)
     self.assertEqual(quotes["SPX"].close, 2043.41)
     self.assertEqual(quotes["VIX"].close, 20.95)
Example #5
0
def get_indices():
    quotes = stocks.query_historical(INDICES_PERIODS.keys(), get_db_date())
    data = []
    for index, period in INDICES_PERIODS.items():
        point_data = {"x": period, "y": quotes[index].close if quotes[index] else None, "name": index}
        if index == "VIX":
            point_data.update(
                {
                    "marker": {"radius": 6, "fillColor": "#DDDF00"},
                    "dataLabels": {"style": {"fontSize": "11px", "font-weight": "bold"}},
                }
            )
        data.append(point_data)
    return jsonify({"root": data})
Example #6
0
 def test_query_historical_non_existing_quote(self):
     quotes = stocks.query_historical([NON_EXISTING_SYMBOL], date(2015, 12, 15), TEST_DB_NAME)
     self.assertIsNone(quotes[NON_EXISTING_SYMBOL])
Example #7
0
 def test_query_historical_single_quote(self):
     test_date = date(2015, 12, 15)
     stocks.fetch_historical("SPX", TEST_DB_NAME)
     quotes = stocks.query_historical(["SPX"], test_date, TEST_DB_NAME)
     self._check_quotes(quotes, "SPX", test_date, 2043.41)