|
| 1 | +import pandas.testing as pdt |
| 2 | + |
1 | 3 | import capon
|
2 | 4 |
|
3 | 5 |
|
4 | 6 | def test_adjclose():
|
5 |
| - amd_daily = capon.stock('AMD', range='1mo', interval='1d') |
6 |
| - assert 'adjclose' in amd_daily |
| 7 | + amd_daily = capon.stock("AMD", range="1mo", interval="1d") |
| 8 | + assert "adjclose" in amd_daily |
7 | 9 |
|
8 |
| - amd_minutely = capon.stock('AMD', range='1d', interval='2m') |
9 |
| - assert 'close' in amd_minutely |
| 10 | + amd_minutely = capon.stock("AMD", range="1d", interval="2m") |
| 11 | + assert "close" in amd_minutely |
10 | 12 |
|
11 | 13 |
|
12 | 14 | def test_index():
|
13 |
| - sp500 = capon.stock('^GSPC') |
| 15 | + sp500 = capon.stock("^GSPC") |
14 | 16 | assert len(sp500) > 0
|
15 | 17 |
|
16 | 18 |
|
17 | 19 | def test_metadata():
|
18 |
| - metadata = capon.metadata('AMD') |
19 |
| - assert metadata['symbol'] == 'AMD' |
| 20 | + metadata = capon.metadata("AMD") |
| 21 | + assert metadata["symbol"] == "AMD" |
| 22 | + |
| 23 | + |
| 24 | +if False: |
| 25 | + import logging |
| 26 | + |
| 27 | + from IPython.display import display |
| 28 | + |
| 29 | + logging.basicConfig() |
| 30 | + logging.getLogger("capon").setLevel(logging.DEBUG) |
| 31 | + |
| 32 | + |
| 33 | +base_tickers = ["MSFT", "AAPL", "NVDA"] |
| 34 | + |
| 35 | + |
| 36 | +def test_stocks(): |
| 37 | + capon.stocks(["MSFT", "AAPL", "NVDA"]) |
| 38 | + |
| 39 | + |
| 40 | +def test_stocks_njobs(): |
| 41 | + all_quotes = [] |
| 42 | + for n_jobs in [None, -1]: |
| 43 | + quotes = capon.stocks( |
| 44 | + base_tickers, |
| 45 | + start="2020-01-01", |
| 46 | + end="2021-01-01", |
| 47 | + interval="1d", |
| 48 | + n_jobs=n_jobs, |
| 49 | + ) |
| 50 | + all_quotes.append(quotes) |
| 51 | + |
| 52 | + pdt.assert_frame_equal(all_quotes[0], all_quotes[1]) |
| 53 | + |
| 54 | + |
| 55 | +def test_stocks_missing(): |
| 56 | + missing_ticker = "BZZ" |
| 57 | + |
| 58 | + quotes = capon.stocks( |
| 59 | + base_tickers + [missing_ticker], |
| 60 | + start="2020-01-01", |
| 61 | + end="2021-01-01", |
| 62 | + interval="1d", |
| 63 | + ) |
| 64 | + # display(quotes) |
| 65 | + assert (quotes["symbol"].unique() == base_tickers).all() |
| 66 | + |
| 67 | + |
| 68 | +def test_stocks_multiple_tz(): |
| 69 | + international_ticker = "^TA125.TA" |
| 70 | + |
| 71 | + for timestamp_normalizer in ["auto", None, "date"]: |
| 72 | + quotes = capon.stocks( |
| 73 | + base_tickers + [international_ticker], |
| 74 | + start="2020-01-01", |
| 75 | + end="2021-01-01", |
| 76 | + interval="1d", |
| 77 | + timestamp_normalizer=timestamp_normalizer, |
| 78 | + ) |
| 79 | + # display(quotes) |
| 80 | + |
| 81 | + assert ( |
| 82 | + quotes["symbol"].unique() == base_tickers + [international_ticker] |
| 83 | + ).all() |
| 84 | + |
| 85 | + |
| 86 | +def test_stocks_single_ticker(): |
| 87 | + quotes = capon.stocks( |
| 88 | + base_tickers[0], |
| 89 | + start="2020-01-01", |
| 90 | + end="2021-01-01", |
| 91 | + interval="1d", |
| 92 | + ) |
| 93 | + |
| 94 | + assert (quotes["symbol"].unique() == base_tickers[0]).all() |
| 95 | + |
| 96 | + |
| 97 | +# def test_stocks_timestamp_auto(): |
| 98 | +# quotes_1h = capon.stocks( |
| 99 | +# base_tickers, |
| 100 | +# range="1mo", |
| 101 | +# interval="1h", |
| 102 | +# timestamp_normalizer="auto", |
| 103 | +# ) |
| 104 | + |
| 105 | +# quotes_1d = capon.stocks( |
| 106 | +# base_tickers, |
| 107 | +# range="1mo", |
| 108 | +# interval="1d", |
| 109 | +# timestamp_normalizer="auto", |
| 110 | +# ) |
0 commit comments