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)
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})
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)
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)
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})
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])
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)