feat(cot): add CFTC Traders-in-Financial-Futures adapter (M22 slice 7)
CI / Test & Type-Check (push) Canceled after 0s

Parse the annual FinFutYY.txt zip (leveraged-funds long/short + OI) into a
CotSeries. Registers the 'cot' source_kind, 'cot_weekly' TTL (7d), the 'cftc'
vendor family (1 req/1.5s pacing), and the adapter in the queue registry.

Uses the file-header column names so parser is robust to layout changes.
This commit is contained in:
Investor Flow Build
2026-08-10 16:35:33 -04:00
parent 8031eae1b2
commit a9fc5d243e
6 changed files with 356 additions and 2 deletions
+2
View File
@@ -9,6 +9,7 @@ import { OptionsAdapter } from './adapters/OptionsAdapter.ts';
import { NasdaqAdapter } from './adapters/NasdaqAdapter.ts';
import { FinraBulkAdapter } from './adapters/FinraBulkAdapter.ts';
import { FinraShortInterestAdapter } from './adapters/FinraShortInterestAdapter.ts';
import { CotAdapter } from './adapters/CotAdapter.ts';
import { SecFetchAdapter } from './adapters/SecFetchAdapter.ts';
import { SecCompanyTickersAdapter } from './adapters/SecCompanyTickersAdapter.ts';
import { SecLintAdapter } from './adapters/SecLintAdapter.ts';
@@ -40,6 +41,7 @@ const adapters = new Map<SourceKind, SourceFetch>([
['sec-tickers' as const, new SecCompanyTickersAdapter(database) as unknown as SourceFetch],
['sec-lint-holders' as const, new SecLintAdapter(() => database, 'sec-lint-holders') as unknown as SourceFetch],
['sec-lint-insiders' as const, new SecLintAdapter(() => database, 'sec-lint-insiders') as unknown as SourceFetch],
['cot' as const, new CotAdapter() as unknown as SourceFetch],
]);
// Load X credentials at startup and register XCookieAdapter if available.
let xAdapter: XCookieAdapter | null = null;