Add market data backfilling
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -19,12 +19,29 @@ psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||
class CLASS NOT NULL,
|
||||
exchange EXCHANGE NOT NULL,
|
||||
trading BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
date_added TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
timestamp_added TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
timestamp_first TIMESTAMPTZ NOT NULL,
|
||||
timestamp_last TIMESTAMPTZ NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE bars (
|
||||
timestamp TIMESTAMPTZ NOT NULL,
|
||||
asset_symbol TEXT NOT NULL REFERENCES assets(symbol) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
timestamp TIMESTAMPTZ,
|
||||
asset_symbol TEXT REFERENCES assets(symbol) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
open DOUBLE PRECISION,
|
||||
high DOUBLE PRECISION,
|
||||
low DOUBLE PRECISION,
|
||||
close DOUBLE PRECISION,
|
||||
volume DOUBLE PRECISION NOT NULL,
|
||||
num_trades BIGINT NOT NULL,
|
||||
volume_weighted DOUBLE PRECISION NOT NULL,
|
||||
PRIMARY KEY (asset_symbol, timestamp)
|
||||
);
|
||||
|
||||
SELECT create_hypertable('bars', 'timestamp', 'asset_symbol', 15);
|
||||
|
||||
CREATE TABLE bars_filled (
|
||||
timestamp TIMESTAMPTZ,
|
||||
asset_symbol TEXT REFERENCES assets(symbol) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
open DOUBLE PRECISION NOT NULL,
|
||||
high DOUBLE PRECISION NOT NULL,
|
||||
low DOUBLE PRECISION NOT NULL,
|
||||
@@ -35,27 +52,5 @@ psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||
PRIMARY KEY (asset_symbol, timestamp)
|
||||
);
|
||||
|
||||
SELECT create_hypertable('bars', 'timestamp', 'asset_symbol', 2);
|
||||
|
||||
CREATE TABLE calendar (
|
||||
date DATE NOT NULL PRIMARY KEY,
|
||||
open TIME NOT NULL,
|
||||
close TIME NOT NULL
|
||||
);
|
||||
|
||||
CREATE VIEW bars_missing AS
|
||||
WITH time_series AS (
|
||||
SELECT
|
||||
asset_symbol,
|
||||
generate_series(MIN(timestamp), NOW(), interval '1 minute')::TIMESTAMPTZ AS expected_time
|
||||
FROM bars
|
||||
GROUP BY asset_symbol
|
||||
)
|
||||
SELECT
|
||||
ts.asset_symbol,
|
||||
ts.expected_time AS missing_time
|
||||
FROM time_series ts
|
||||
LEFT JOIN bars b
|
||||
ON ts.asset_symbol = b.asset_symbol AND ts.expected_time = b.timestamp
|
||||
WHERE b.timestamp IS NULL;
|
||||
SELECT create_hypertable('bars_filled', 'timestamp', 'asset_symbol', 15);
|
||||
EOSQL
|
||||
|
Reference in New Issue
Block a user