89 lines
4.5 KiB
TypeScript
89 lines
4.5 KiB
TypeScript
import type { OptionPrint } from "@islandflow/types";
|
|
|
|
export const OPTION_PRINTS_TABLE = "option_prints";
|
|
|
|
export const optionPrintsTableDDL = (): string => {
|
|
return `
|
|
CREATE TABLE IF NOT EXISTS ${OPTION_PRINTS_TABLE} (
|
|
source_ts UInt64,
|
|
ingest_ts UInt64,
|
|
seq UInt64,
|
|
trace_id String,
|
|
ts UInt64,
|
|
option_contract_id String,
|
|
price Float64,
|
|
size UInt32,
|
|
exchange String,
|
|
conditions Array(String),
|
|
underlying_id Nullable(String),
|
|
option_type Nullable(String),
|
|
notional Nullable(Float64),
|
|
nbbo_side Nullable(String),
|
|
execution_nbbo_bid Nullable(Float64),
|
|
execution_nbbo_ask Nullable(Float64),
|
|
execution_nbbo_mid Nullable(Float64),
|
|
execution_nbbo_spread Nullable(Float64),
|
|
execution_nbbo_bid_size Nullable(UInt32),
|
|
execution_nbbo_ask_size Nullable(UInt32),
|
|
execution_nbbo_ts Nullable(UInt64),
|
|
execution_nbbo_age_ms Nullable(Float64),
|
|
execution_nbbo_side Nullable(String),
|
|
execution_underlying_spot Nullable(Float64),
|
|
execution_underlying_bid Nullable(Float64),
|
|
execution_underlying_ask Nullable(Float64),
|
|
execution_underlying_mid Nullable(Float64),
|
|
execution_underlying_spread Nullable(Float64),
|
|
execution_underlying_ts Nullable(UInt64),
|
|
execution_underlying_age_ms Nullable(Float64),
|
|
execution_underlying_source Nullable(String),
|
|
execution_iv Nullable(Float64),
|
|
execution_iv_source Nullable(String),
|
|
is_etf Nullable(Bool),
|
|
signal_pass Nullable(Bool),
|
|
signal_reasons Array(String) DEFAULT [],
|
|
signal_profile Nullable(String)
|
|
)
|
|
ENGINE = MergeTree
|
|
ORDER BY (ts, option_contract_id)
|
|
`;
|
|
};
|
|
|
|
export const optionPrintsTableMigrations = (): string[] => {
|
|
return [
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS underlying_id Nullable(String)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS option_type Nullable(String)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS notional Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS nbbo_side Nullable(String)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_nbbo_bid Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_nbbo_ask Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_nbbo_mid Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_nbbo_spread Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_nbbo_bid_size Nullable(UInt32)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_nbbo_ask_size Nullable(UInt32)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_nbbo_ts Nullable(UInt64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_nbbo_age_ms Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_nbbo_side Nullable(String)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_underlying_spot Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_underlying_bid Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_underlying_ask Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_underlying_mid Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_underlying_spread Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_underlying_ts Nullable(UInt64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_underlying_age_ms Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_underlying_source Nullable(String)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_iv Nullable(Float64)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS execution_iv_source Nullable(String)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS is_etf Nullable(Bool)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS signal_pass Nullable(Bool)`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS signal_reasons Array(String) DEFAULT []`,
|
|
`ALTER TABLE ${OPTION_PRINTS_TABLE} ADD COLUMN IF NOT EXISTS signal_profile Nullable(String)`
|
|
];
|
|
};
|
|
|
|
export const normalizeOptionPrint = (print: OptionPrint): OptionPrint => {
|
|
return {
|
|
...print,
|
|
conditions: print.conditions ?? [],
|
|
signal_reasons: print.signal_reasons ?? []
|
|
};
|
|
};
|