-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.sql
More file actions
111 lines (94 loc) · 2.45 KB
/
schema.sql
File metadata and controls
111 lines (94 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
-- Companies static metadata
CREATE TABLE IF NOT EXISTS companies (
cik TEXT PRIMARY KEY,
ticker TEXT,
name TEXT,
business_state TEXT,
state_incorp TEXT,
sic TEXT,
sic_description TEXT,
fiscal_year_end TEXT,
last_price REAL,
market_cap REAL
);
CREATE INDEX IF NOT EXISTS idx_companies_ticker ON companies(ticker);
-- Fundamentals: one row per cik and report date
CREATE TABLE IF NOT EXISTS fundamentals (
id INTEGER PRIMARY KEY AUTOINCREMENT,
cik TEXT NOT NULL,
report_date TEXT,
fiscal_year INTEGER,
fiscal_period TEXT,
revenue_lq REAL,
revenue_annualized REAL,
revenue_ltm REAL,
revenue_yoy REAL,
ebitda_lq REAL,
ebitda_annualized REAL,
ebitda_ltm REAL,
ebitda_yoy REAL,
ebitda_margin REAL,
net_income_lq REAL,
net_income_annualized REAL,
net_income_ltm REAL,
net_income_yoy REAL,
net_income_margin REAL,
gross_profit_lq REAL,
gross_margin REAL,
operating_income_lq REAL,
operating_margin REAL,
cfo_lq REAL,
capex_lq REAL,
fcf_lq REAL,
cash_sti REAL,
total_debt REAL,
shares_outstanding REAL,
stock_price REAL,
market_cap REAL,
deferred_revenue REAL,
FOREIGN KEY (cik) REFERENCES companies(cik)
);
CREATE INDEX IF NOT EXISTS idx_fund_cik_date ON fundamentals(cik, report_date);
-- Enforce one row per (cik, report_date)
CREATE UNIQUE INDEX IF NOT EXISTS ux_fund_cik_report ON fundamentals(cik, report_date);
-- Filings (unique by cik+type+url)
CREATE TABLE IF NOT EXISTS filings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
cik TEXT NOT NULL,
filing_type TEXT NOT NULL,
url TEXT NOT NULL,
UNIQUE(cik, filing_type, url),
FOREIGN KEY (cik) REFERENCES companies(cik)
);
-- Optional raw facts store (subset or all concepts)
CREATE TABLE IF NOT EXISTS facts_raw (
id INTEGER PRIMARY KEY AUTOINCREMENT,
cik TEXT NOT NULL,
concept TEXT NOT NULL,
unit TEXT,
end TEXT,
fy INTEGER,
fp TEXT,
form TEXT,
val REAL,
dims TEXT,
UNIQUE(cik, concept, unit, end, form, dims)
);
-- Audit records for metric extraction traceability
CREATE TABLE IF NOT EXISTS fundamentals_audit (
id INTEGER PRIMARY KEY AUTOINCREMENT,
cik TEXT NOT NULL,
report_date TEXT,
fiscal_year INTEGER,
fiscal_period TEXT,
metric TEXT NOT NULL,
value REAL,
source_tag TEXT,
unit TEXT,
scale_applied INTEGER,
form TEXT,
fy INTEGER,
fp TEXT,
FOREIGN KEY (cik) REFERENCES companies(cik)
);
CREATE INDEX IF NOT EXISTS idx_fundaudit_cik_date_metric ON fundamentals_audit(cik, report_date, metric);