Add AAPL and NVDA as default symbols for the Alpaca adapter and in .env.example (.env will of course override defaults)
This commit is contained in:
parent
3eb7dc9211
commit
57450138c4
5 changed files with 48 additions and 16 deletions
|
|
@ -205,11 +205,38 @@ const run = async () => {
|
|||
await ensureFlowPacketsTable(clickhouse);
|
||||
});
|
||||
|
||||
const subscription = await subscribeJson(
|
||||
js,
|
||||
SUBJECT_OPTION_PRINTS,
|
||||
buildDurableConsumer("compute-option-prints")
|
||||
);
|
||||
const durableName = "compute-option-prints";
|
||||
const subscription = await (async () => {
|
||||
try {
|
||||
return await subscribeJson(js, SUBJECT_OPTION_PRINTS, buildDurableConsumer(durableName));
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
const shouldReset =
|
||||
message.includes("duplicate subscription") ||
|
||||
message.includes("durable requires") ||
|
||||
message.includes("subject does not match consumer");
|
||||
|
||||
if (!shouldReset) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
logger.warn("resetting jetstream consumer", { durable: durableName, error: message });
|
||||
|
||||
try {
|
||||
await jsm.consumers.delete(STREAM_OPTION_PRINTS, durableName);
|
||||
} catch (deleteError) {
|
||||
const deleteMessage = deleteError instanceof Error ? deleteError.message : String(deleteError);
|
||||
if (!deleteMessage.includes("not found")) {
|
||||
logger.warn("failed to delete jetstream consumer", {
|
||||
durable: durableName,
|
||||
error: deleteMessage
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return await subscribeJson(js, SUBJECT_OPTION_PRINTS, buildDurableConsumer(durableName));
|
||||
}
|
||||
})();
|
||||
|
||||
const shutdown = async (signal: string) => {
|
||||
logger.info("service stopping", { signal });
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ const envSchema = z.object({
|
|||
NATS_URL: z.string().default("nats://localhost:4222"),
|
||||
CLICKHOUSE_URL: z.string().default("http://localhost:8123"),
|
||||
CLICKHOUSE_DATABASE: z.string().default("default"),
|
||||
INGEST_ADAPTER: z.string().min(1).default("synthetic"),
|
||||
EQUITIES_INGEST_ADAPTER: z.string().min(1).default("synthetic"),
|
||||
EMIT_INTERVAL_MS: z.coerce.number().int().positive().default(1000)
|
||||
});
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ const run = async () => {
|
|||
await ensureEquityPrintsTable(clickhouse);
|
||||
});
|
||||
|
||||
const adapter = selectAdapter(env.INGEST_ADAPTER);
|
||||
const adapter = selectAdapter(env.EQUITIES_INGEST_ADAPTER);
|
||||
logger.info("ingest adapter selected", { adapter: adapter.name });
|
||||
|
||||
const stopAdapter: StopHandler = await adapter.start({
|
||||
|
|
|
|||
|
|
@ -27,13 +27,13 @@ const envSchema = z.object({
|
|||
NATS_URL: z.string().default("nats://localhost:4222"),
|
||||
CLICKHOUSE_URL: z.string().default("http://localhost:8123"),
|
||||
CLICKHOUSE_DATABASE: z.string().default("default"),
|
||||
INGEST_ADAPTER: z.string().min(1).default("alpaca"),
|
||||
OPTIONS_INGEST_ADAPTER: z.string().min(1).default("alpaca"),
|
||||
ALPACA_KEY_ID: z.string().default(""),
|
||||
ALPACA_SECRET_KEY: z.string().default(""),
|
||||
ALPACA_REST_URL: z.string().default("https://data.alpaca.markets"),
|
||||
ALPACA_WS_BASE_URL: z.string().default("wss://stream.data.alpaca.markets/v1beta1"),
|
||||
ALPACA_FEED: z.enum(["indicative", "opra"]).default("indicative"),
|
||||
ALPACA_UNDERLYINGS: z.string().default("SPY"),
|
||||
ALPACA_UNDERLYINGS: z.string().default("SPY,NVDA,AAPL"),
|
||||
ALPACA_STRIKES_PER_SIDE: z.coerce.number().int().positive().default(8),
|
||||
ALPACA_MAX_DTE_DAYS: z.coerce.number().int().positive().default(30),
|
||||
ALPACA_MONEYNESS_PCT: z.coerce.number().positive().default(0.06),
|
||||
|
|
@ -203,7 +203,7 @@ const run = async () => {
|
|||
await ensureOptionPrintsTable(clickhouse);
|
||||
});
|
||||
|
||||
const adapter = selectAdapter(env.INGEST_ADAPTER);
|
||||
const adapter = selectAdapter(env.OPTIONS_INGEST_ADAPTER);
|
||||
logger.info("ingest adapter selected", { adapter: adapter.name });
|
||||
|
||||
const stopAdapter: StopHandler = await adapter.start({
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue