576 lines
28 KiB
SQL
576 lines
28 KiB
SQL
-- ============================================================
|
|
-- 量化投资数据库 Schema
|
|
-- PostgreSQL (Docker: 192.168.27.15:12345)
|
|
-- 数据来源:Tushare
|
|
-- ============================================================
|
|
|
|
-- 先创建数据库(需要超级用户权限,在 psql 中手动执行):
|
|
-- CREATE DATABASE quant_db ENCODING 'UTF8';
|
|
|
|
-- ============================================================
|
|
-- 1. 股票基本信息表 (stock_basic)
|
|
-- tushare接口: stock_basic
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS stock_basic (
|
|
ts_code VARCHAR(20) PRIMARY KEY, -- 股票代码 (如 000001.SZ)
|
|
symbol VARCHAR(10) NOT NULL, -- 股票代码 (如 000001)
|
|
name VARCHAR(50) NOT NULL, -- 股票名称
|
|
area VARCHAR(30), -- 地区
|
|
industry VARCHAR(50), -- 行业
|
|
market VARCHAR(10), -- 市场类型 (主板/中小板/创业板/科创板)
|
|
list_date DATE, -- 上市日期
|
|
list_status CHAR(1) DEFAULT 'L', -- 上市状态 L上市 D退市 P暂停上市
|
|
is_hs VARCHAR(5), -- 是否沪深港通标的
|
|
act_name VARCHAR(100), -- 实控人名称
|
|
act_ent_type VARCHAR(50), -- 实控人企业性质
|
|
updated_at TIMESTAMP DEFAULT NOW() -- 记录更新时间
|
|
);
|
|
|
|
COMMENT ON TABLE stock_basic IS '股票基本信息表 (Tushare: stock_basic)';
|
|
|
|
-- 索引
|
|
CREATE INDEX IF NOT EXISTS idx_stock_basic_industry ON stock_basic(industry);
|
|
CREATE INDEX IF NOT EXISTS idx_stock_basic_area ON stock_basic(area);
|
|
CREATE INDEX IF NOT EXISTS idx_stock_basic_list_status ON stock_basic(list_status);
|
|
|
|
|
|
-- ============================================================
|
|
-- 2. 日线行情表 (daily) - 按年份分区
|
|
-- tushare接口: daily / pro_bar
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS daily (
|
|
id BIGSERIAL, -- 自增主键
|
|
ts_code VARCHAR(20) NOT NULL, -- 股票代码
|
|
trade_date DATE NOT NULL, -- 交易日期
|
|
open NUMERIC(12,3), -- 开盘价
|
|
high NUMERIC(12,3), -- 最高价
|
|
low NUMERIC(12,3), -- 最低价
|
|
close NUMERIC(12,3), -- 收盘价
|
|
pre_close NUMERIC(12,3), -- 昨收价
|
|
change NUMERIC(12,3), -- 涨跌额
|
|
pct_chg NUMERIC(10,4), -- 涨跌幅 (%)
|
|
vol NUMERIC(20,2), -- 成交量 (手)
|
|
amount NUMERIC(20,4), -- 成交额 (千元)
|
|
turnover_rate NUMERIC(10,4), -- 换手率 (%)
|
|
volume_ratio NUMERIC(10,4), -- 量比
|
|
ma5 NUMERIC(12,3), -- 5日均价
|
|
ma10 NUMERIC(12,3), -- 10日均价
|
|
ma20 NUMERIC(12,3), -- 20日均价
|
|
ma_v_5 NUMERIC(20,2), -- 5日均量
|
|
ma_v_10 NUMERIC(20,2), -- 10日均量
|
|
ma_v_20 NUMERIC(20,2), -- 20日均量
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (ts_code, trade_date)
|
|
);
|
|
|
|
COMMENT ON TABLE daily IS '日线行情表 (Tushare: daily)';
|
|
|
|
-- 核心索引
|
|
CREATE INDEX IF NOT EXISTS idx_daily_trade_date ON daily(trade_date);
|
|
CREATE INDEX IF NOT EXISTS idx_daily_ts_code ON daily(ts_code);
|
|
CREATE INDEX IF NOT EXISTS idx_daily_ts_code_date ON daily(ts_code, trade_date);
|
|
|
|
|
|
-- ============================================================
|
|
-- 3. 日线行情表 - 按年份分区子表(优化查询性能)
|
|
-- PostgreSQL 原生分区表 (PG 10+)
|
|
-- 如果版本不支持,可以跳过,直接使用 daily 表
|
|
-- ============================================================
|
|
|
|
-- 仅 PG 10+ 支持以下语法,如果报错请删除分区表相关语句
|
|
-- CREATE TABLE daily_partitioned (
|
|
-- id BIGSERIAL,
|
|
-- ts_code VARCHAR(20) NOT NULL,
|
|
-- trade_date DATE NOT NULL,
|
|
-- open NUMERIC(12,3),
|
|
-- high NUMERIC(12,3),
|
|
-- low NUMERIC(12,3),
|
|
-- close NUMERIC(12,3),
|
|
-- pre_close NUMERIC(12,3),
|
|
-- change NUMERIC(12,3),
|
|
-- pct_chg NUMERIC(10,4),
|
|
-- vol NUMERIC(20,2),
|
|
-- amount NUMERIC(20,4),
|
|
-- turnover_rate NUMERIC(10,4),
|
|
-- volume_ratio NUMERIC(10,4),
|
|
-- ma5 NUMERIC(12,3),
|
|
-- ma10 NUMERIC(12,3),
|
|
-- ma20 NUMERIC(12,3),
|
|
-- ma_v_5 NUMERIC(20,2),
|
|
-- ma_v_10 NUMERIC(20,2),
|
|
-- ma_v_20 NUMERIC(20,2),
|
|
-- updated_at TIMESTAMP DEFAULT NOW(),
|
|
-- PRIMARY KEY (ts_code, trade_date, trade_date) -- 分区键必须包含在主键中
|
|
-- ) PARTITION BY RANGE (trade_date);
|
|
|
|
|
|
-- ============================================================
|
|
-- 4. 复权因子表 (adj_factor)
|
|
-- tushare接口: adj_factor
|
|
-- 用于计算前复权/后复权价格
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS adj_factor (
|
|
ts_code VARCHAR(20) NOT NULL,
|
|
trade_date DATE NOT NULL,
|
|
adj_factor NUMERIC(16,8), -- 复权因子
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (ts_code, trade_date)
|
|
);
|
|
|
|
COMMENT ON TABLE adj_factor IS '复权因子表 (Tushare: adj_factor)';
|
|
|
|
|
|
-- ============================================================
|
|
-- 5. 个股资金流向表 (moneyflow)
|
|
-- tushare接口: moneyflow
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS moneyflow (
|
|
ts_code VARCHAR(20) NOT NULL,
|
|
trade_date DATE NOT NULL,
|
|
buy_sm_vol NUMERIC(20,2), -- 小单买入量(手)
|
|
buy_sm_amount NUMERIC(20,4), -- 小单买入金额(万元)
|
|
sell_sm_vol NUMERIC(20,2), -- 小单卖出量(手)
|
|
sell_sm_amount NUMERIC(20,4), -- 小单卖出金额(万元)
|
|
buy_md_vol NUMERIC(20,2), -- 中单买入量(手)
|
|
buy_md_amount NUMERIC(20,4), -- 中单买入金额(万元)
|
|
sell_md_vol NUMERIC(20,2), -- 中单卖出量(手)
|
|
sell_md_amount NUMERIC(20,4), -- 中单卖出金额(万元)
|
|
buy_lg_vol NUMERIC(20,2), -- 大单买入量(手)
|
|
buy_lg_amount NUMERIC(20,4), -- 大单买入金额(万元)
|
|
sell_lg_vol NUMERIC(20,2), -- 大单卖出量(手)
|
|
sell_lg_amount NUMERIC(20,4), -- 大单卖出金额(万元)
|
|
buy_elg_vol NUMERIC(20,2), -- 特大单买入量(手)
|
|
buy_elg_amount NUMERIC(20,4), -- 特大单买入金额(万元)
|
|
sell_elg_vol NUMERIC(20,2), -- 特大单卖出量(手)
|
|
sell_elg_amount NUMERIC(20,4), -- 特大单卖出金额(万元)
|
|
net_mf_vol NUMERIC(20,2), -- 净流入量(手)
|
|
net_mf_amount NUMERIC(20,4), -- 净流入额(万元)
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (ts_code, trade_date)
|
|
);
|
|
|
|
COMMENT ON TABLE moneyflow IS '个股资金流向表 (Tushare: moneyflow)';
|
|
|
|
|
|
-- ============================================================
|
|
-- 6. 每日指标表 (daily_basic) - 包含基本面/估值数据
|
|
-- tushare接口: daily_basic
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS daily_basic (
|
|
ts_code VARCHAR(20) NOT NULL,
|
|
trade_date DATE NOT NULL,
|
|
close NUMERIC(12,3), -- 收盘价
|
|
turnover_rate NUMERIC(10,4), -- 换手率(%)
|
|
turnover_rate_f NUMERIC(10,4), -- 自由流通股换手率(%)
|
|
volume_ratio NUMERIC(10,4), -- 量比
|
|
pe NUMERIC(16,4), -- 市盈率(PE)
|
|
pe_ttm NUMERIC(16,4), -- 市盈率(TTM)
|
|
pb NUMERIC(16,4), -- 市净率(PB)
|
|
ps NUMERIC(16,4), -- 市销率(PS)
|
|
ps_ttm NUMERIC(16,4), -- 市销率(TTM)
|
|
dv_ratio NUMERIC(10,4), -- 股息率(%)
|
|
dv_ttm NUMERIC(10,4), -- 股息率(TTM)(%)
|
|
total_share NUMERIC(20,4), -- 总股本(万股)
|
|
float_share NUMERIC(20,4), -- 流通股本(万股)
|
|
free_share NUMERIC(20,4), -- 自由流通股本(万股)
|
|
total_mv NUMERIC(20,4), -- 总市值(万元)
|
|
circ_mv NUMERIC(20,4), -- 流通市值(万元)
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (ts_code, trade_date)
|
|
);
|
|
|
|
COMMENT ON TABLE daily_basic IS '每日指标表/基本面估值表 (Tushare: daily_basic)';
|
|
|
|
|
|
-- ============================================================
|
|
-- 7. 利润表 (income)
|
|
-- tushare接口: income
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS income (
|
|
ts_code VARCHAR(20) NOT NULL,
|
|
ann_date DATE, -- 公告日期
|
|
f_ann_date DATE, -- 实际公告日期
|
|
end_date DATE NOT NULL, -- 报告期
|
|
report_type VARCHAR(10), -- 报告类型
|
|
comp_type CHAR(1), -- 公司类型
|
|
end_type VARCHAR(10), -- 报告期类型
|
|
basic_eps NUMERIC(16,4), -- 基本每股收益
|
|
diluted_eps NUMERIC(16,4), -- 稀释每股收益
|
|
total_revenue NUMERIC(20,4), -- 营业总收入(元)
|
|
revenue NUMERIC(20,4), -- 营业收入(元)
|
|
int_income NUMERIC(20,4), -- 利息收入
|
|
prem_earned NUMERIC(20,4), -- 已赚保费
|
|
comm_income NUMERIC(20,4), -- 手续费及佣金收入
|
|
n_commis_income NUMERIC(20,4), -- 手续费及佣金净收入
|
|
n_oth_income NUMERIC(20,4), -- 其他经营净收益
|
|
n_oth_b_income NUMERIC(20,4), -- 加:其他业务净收益
|
|
prem_income NUMERIC(20,4), -- 保险业务收入
|
|
out_prem NUMERIC(20,4), -- 减:分出保费
|
|
une_prem_reser NUMERIC(20,4), -- 提取未到期责任准备金
|
|
reins_income NUMERIC(20,4), -- 其中:分保费收入
|
|
n_sec_tb_income NUMERIC(20,4), -- 代理买卖证券业务净收入
|
|
n_sec_uw_income NUMERIC(20,4), -- 证券承销业务净收入
|
|
n_asset_mg_income NUMERIC(20,4), -- 受托客户资产管理业务净收入
|
|
oth_b_income NUMERIC(20,4), -- 其他业务收入
|
|
fv_value_chg NUMERIC(20,4), -- 加:公允价值变动净收益
|
|
invest_income NUMERIC(20,4), -- 加:投资净收益
|
|
ass_invest_income NUMERIC(20,4), -- 其中:对联营企业和合营企业的投资收益
|
|
forex_gain NUMERIC(20,4), -- 加:汇兑净收益
|
|
total_cogs NUMERIC(20,4), -- 营业总成本
|
|
oper_cost NUMERIC(20,4), -- 减:营业成本
|
|
int_exp NUMERIC(20,4), -- 减:利息支出
|
|
comm_exp NUMERIC(20,4), -- 减:手续费及佣金支出
|
|
biz_tax_surchg NUMERIC(20,4), -- 减:营业税金及附加
|
|
sell_exp NUMERIC(20,4), -- 减:销售费用
|
|
admin_exp NUMERIC(20,4), -- 减:管理费用
|
|
fin_exp NUMERIC(20,4), -- 减:财务费用
|
|
assets_impair_loss NUMERIC(20,4), -- 减:资产减值损失
|
|
prem_refund NUMERIC(20,4), -- 退保金
|
|
compens_payout NUMERIC(20,4), -- 赔付总支出
|
|
reser_insur_liab NUMERIC(20,4), -- 提取保险责任准备金
|
|
div_payt NUMERIC(20,4), -- 保户红利支出
|
|
reins_exp NUMERIC(20,4), -- 分保费用
|
|
oper_exp NUMERIC(20,4), -- 营业支出
|
|
compens_payout_refu NUMERIC(20,4), -- 减:摊回赔付支出
|
|
insur_reser_refu NUMERIC(20,4), -- 减:摊回保险责任准备金
|
|
reins_cost_refund NUMERIC(20,4), -- 减:摊回分保费用
|
|
other_bus_cost NUMERIC(20,4), -- 其他业务成本
|
|
operate_profit NUMERIC(20,4), -- 营业利润
|
|
non_oper_income NUMERIC(20,4), -- 加:营业外收入
|
|
non_oper_exp NUMERIC(20,4), -- 减:营业外支出
|
|
nca_disploss NUMERIC(20,4), -- 其中:减:非流动资产处置净损失
|
|
total_profit NUMERIC(20,4), -- 利润总额
|
|
income_tax NUMERIC(20,4), -- 所得税费用
|
|
n_income NUMERIC(20,4), -- 净利润(含少数股东损益)
|
|
n_income_attr_p NUMERIC(20,4), -- 净利润(不含少数股东损益)
|
|
minority_gain NUMERIC(20,4), -- 少数股东损益
|
|
oth_compre_income NUMERIC(20,4), -- 其他综合收益
|
|
total_compre_income NUMERIC(20,4), -- 综合收益总额
|
|
comp_pre_inc_attr_p NUMERIC(20,4), -- 归属于母公司(或股东)的综合收益总额
|
|
comp_inc_attr_m_s NUMERIC(20,4), -- 归属于少数股东的综合收益总额
|
|
ebit NUMERIC(20,4), -- 息税前利润
|
|
ebitda NUMERIC(20,4), -- 息税折旧摊销前利润
|
|
insurance_exp NUMERIC(20,4), -- 保险业务支出
|
|
undist_profit NUMERIC(20,4), -- 年初未分配利润
|
|
distable_profit NUMERIC(20,4), -- 可分配利润
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (ts_code, end_date, report_type)
|
|
);
|
|
|
|
COMMENT ON TABLE income IS '利润表 (Tushare: income)';
|
|
|
|
|
|
-- ============================================================
|
|
-- 8. 资产负债表 (balancesheet)
|
|
-- tushare接口: balancesheet
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS balancesheet (
|
|
ts_code VARCHAR(20) NOT NULL,
|
|
ann_date DATE,
|
|
f_ann_date DATE,
|
|
end_date DATE NOT NULL, -- 报告期
|
|
report_type VARCHAR(10),
|
|
comp_type CHAR(1),
|
|
end_type VARCHAR(10),
|
|
|
|
-- 资产
|
|
total_hldr_eqy_exc_min_int NUMERIC(20,4), -- 股东权益合计(不含少数股东权益)
|
|
total_hldr_eqy_inc_min_int NUMERIC(20,4), -- 股东权益合计(含少数股东权益)
|
|
total_assets NUMERIC(20,4), -- 资产总计
|
|
total_cur_assets NUMERIC(20,4), -- 流动资产合计
|
|
total_nca NUMERIC(20,4), -- 非流动资产合计
|
|
money_cap NUMERIC(20,4), -- 货币资金
|
|
trad_asset NUMERIC(20,4), -- 交易性金融资产
|
|
notes_receiv NUMERIC(20,4), -- 应收票据
|
|
account_receiv NUMERIC(20,4), -- 应收账款
|
|
oth_receiv NUMERIC(20,4), -- 其他应收款
|
|
prepayment NUMERIC(20,4), -- 预付款项
|
|
div_receiv NUMERIC(20,4), -- 应收股利
|
|
int_receiv NUMERIC(20,4), -- 应收利息
|
|
inventories NUMERIC(20,4), -- 存货
|
|
amor_exp NUMERIC(20,4), -- 待摊费用
|
|
nca_within_1y NUMERIC(20,4), -- 一年内到期的非流动资产
|
|
sett_rsrv NUMERIC(20,4), -- 结算备付金
|
|
loanto_oth_bank_fi NUMERIC(20,4), -- 拆出资金
|
|
premium_receiv NUMERIC(20,4), -- 应收保费
|
|
reinsur_receiv NUMERIC(20,4), -- 应收分保账款
|
|
reinsur_res_receiv NUMERIC(20,4), -- 应收分保合同准备金
|
|
pur_resale_fa NUMERIC(20,4), -- 买入返售金融资产
|
|
oth_cur_assets NUMERIC(20,4), -- 其他流动资产
|
|
|
|
-- 非流动资产
|
|
fa_avail_for_sale NUMERIC(20,4), -- 可供出售金融资产
|
|
htm_invest NUMERIC(20,4), -- 持有至到期投资
|
|
lt_eqt_invest NUMERIC(20,4), -- 长期股权投资
|
|
invest_real_estate NUMERIC(20,4), -- 投资性房地产
|
|
time_deposits NUMERIC(20,4), -- 定期存款
|
|
oth_assets NUMERIC(20,4), -- 其他资产
|
|
lt_rec NUMERIC(20,4), -- 长期应收款
|
|
fix_assets NUMERIC(20,4), -- 固定资产
|
|
cip NUMERIC(20,4), -- 在建工程
|
|
const_materials NUMERIC(20,4), -- 工程物资
|
|
fixed_assets_disp NUMERIC(20,4), -- 固定资产清理
|
|
produc_bio_assets NUMERIC(20,4), -- 生产性生物资产
|
|
oil_and_gas_assets NUMERIC(20,4), -- 油气资产
|
|
intan_assets NUMERIC(20,4), -- 无形资产
|
|
r_and_d NUMERIC(20,4), -- 研发支出
|
|
goodwill NUMERIC(20,4), -- 商誉
|
|
lt_amor_exp NUMERIC(20,4), -- 长期待摊费用
|
|
defer_tax_assets NUMERIC(20,4), -- 递延所得税资产
|
|
decr_in_disbur NUMERIC(20,4), -- 待处理流动资产损益
|
|
oth_nca NUMERIC(20,4), -- 其他非流动资产
|
|
|
|
-- 负债
|
|
total_liab NUMERIC(20,4), -- 负债合计
|
|
total_cur_liab NUMERIC(20,4), -- 流动负债合计
|
|
total_ncl NUMERIC(20,4), -- 非流动负债合计
|
|
short_borr NUMERIC(20,4), -- 短期借款
|
|
lt_borr NUMERIC(20,4), -- 长期借款
|
|
st_notes_payable NUMERIC(20,4), -- 应付票据
|
|
acct_payable NUMERIC(20,4), -- 应付账款
|
|
adv_receipts NUMERIC(20,4), -- 预收款项
|
|
bonds_payable NUMERIC(20,4), -- 应付债券
|
|
oth_payable NUMERIC(20,4), -- 其他应付款
|
|
div_payable NUMERIC(20,4), -- 应付股利
|
|
int_payable NUMERIC(20,4), -- 应付利息
|
|
lt_payable NUMERIC(20,4), -- 长期应付款
|
|
special_payable NUMERIC(20,4), -- 专项应付款
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (ts_code, end_date, report_type)
|
|
);
|
|
|
|
COMMENT ON TABLE balancesheet IS '资产负债表 (Tushare: balancesheet)';
|
|
|
|
|
|
-- ============================================================
|
|
-- 9. 现金流量表 (cashflow)
|
|
-- tushare接口: cashflow
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS cashflow (
|
|
ts_code VARCHAR(20) NOT NULL,
|
|
ann_date DATE,
|
|
f_ann_date DATE,
|
|
end_date DATE NOT NULL, -- 报告期
|
|
report_type VARCHAR(10),
|
|
comp_type CHAR(1),
|
|
end_type VARCHAR(10),
|
|
|
|
-- 经营活动
|
|
net_profit NUMERIC(20,4), -- 净利润
|
|
fin_exp NUMERIC(20,4), -- 财务费用
|
|
c_fr_sale_sg NUMERIC(20,4), -- 销售商品、提供劳务收到的现金
|
|
recp_tax_rends NUMERIC(20,4), -- 收到的税费返还
|
|
n_depos_incr_fi NUMERIC(20,4), -- 客户存款和同业存放款项净增加额
|
|
n_incr_loans_cb NUMERIC(20,4), -- 向中央银行借款净增加额
|
|
n_incr_borr_oth_fi NUMERIC(20,4), -- 向其他金融机构拆入资金净增加额
|
|
prem_fr_orig_contr NUMERIC(20,4), -- 收到原保险合同保费取得的现金
|
|
n_incr_insured_dep NUMERIC(20,4), -- 保户储金净增加额
|
|
n_reinsur_prem NUMERIC(20,4), -- 收到再保业务现金净额
|
|
n_incr_disp_tfa NUMERIC(20,4), -- 处置交易性金融资产净增加额
|
|
ifc_cash_incr NUMERIC(20,4), -- 收取利息、手续费及佣金的现金
|
|
n_incr_disp_faas NUMERIC(20,4), -- 处置可供出售金融资产净增加额
|
|
n_incr_loans_oth_bank NUMERIC(20,4), -- 拆入资金净增加额
|
|
dcr_cash_paym NUMERIC(20,4), -- 回购业务资金净增加额
|
|
oth_cash_recp_ral_oper_act NUMERIC(20,4), -- 收到其他与经营活动有关的现金
|
|
st_cash_out_act NUMERIC(20,4), -- 经营活动现金流出小计
|
|
n_cashflow_act NUMERIC(20,4), -- 经营活动产生的现金流量净额
|
|
|
|
-- 投资活动
|
|
c_inf_fr_invest_act NUMERIC(20,4), -- 投资活动现金流入小计
|
|
c_out_invest_act NUMERIC(20,4), -- 投资活动现金流出小计
|
|
n_cashflow_inv_act NUMERIC(20,4), -- 投资活动产生的现金流量净额
|
|
|
|
-- 筹资活动
|
|
c_inf_fr_fin_act NUMERIC(20,4), -- 筹资活动现金流入小计
|
|
st_cash_out_fin_act NUMERIC(20,4), -- 筹资活动现金流出小计
|
|
n_cash_flows_fin_act NUMERIC(20,4), -- 筹资活动产生的现金流量净额
|
|
eff_fx_flu_cash NUMERIC(20,4), -- 汇率变动对现金的影响
|
|
n_incr_cash_cash_equ NUMERIC(20,4), -- 现金及现金等价物净增加额
|
|
c_cash_equ_beg_period NUMERIC(20,4), -- 期初现金及现金等价物余额
|
|
c_cash_equ_end_period NUMERIC(20,4), -- 期末现金及现金等价物余额
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (ts_code, end_date, report_type)
|
|
);
|
|
|
|
COMMENT ON TABLE cashflow IS '现金流量表 (Tushare: cashflow)';
|
|
|
|
|
|
-- ============================================================
|
|
-- 10. 财务指标表 (fina_indicator) - 核心基本面指标
|
|
-- tushare接口: fina_indicator
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS fina_indicator (
|
|
ts_code VARCHAR(20) NOT NULL,
|
|
ann_date DATE,
|
|
end_date DATE NOT NULL, -- 报告期
|
|
-- 每股指标
|
|
eps NUMERIC(16,4), -- 每股收益
|
|
dt_eps NUMERIC(16,4), -- 稀释每股收益
|
|
total_revenue_ps NUMERIC(16,4), -- 每股营业总收入
|
|
revenue_ps NUMERIC(16,4), -- 每股营业收入
|
|
capital_rese_ps NUMERIC(16,4), -- 每股资本公积
|
|
surplus_rese_ps NUMERIC(16,4), -- 每股盈余公积
|
|
undist_profit_ps NUMERIC(16,4), -- 每股未分配利润
|
|
extra_item NUMERIC(16,4), -- 非经常性损益
|
|
profit_dedt NUMERIC(16,4), -- 扣除非经常性损益后的净利润(扣非净利润)
|
|
-- 成长能力
|
|
gross_margin NUMERIC(16,4), -- 毛利
|
|
current_ratio NUMERIC(16,4), -- 流动比率
|
|
quick_ratio NUMERIC(16,4), -- 速动比率
|
|
cash_ratio NUMERIC(16,4), -- 保守速动比率
|
|
invturn_days NUMERIC(16,4), -- 存货周转天数
|
|
arturn_days NUMERIC(16,4), -- 应收账款周转天数
|
|
inv_turn NUMERIC(16,4), -- 存货周转率
|
|
ar_turn NUMERIC(16,4), -- 应收账款周转率
|
|
assets_turn NUMERIC(16,4), -- 总资产周转率
|
|
-- 盈利能力
|
|
roe NUMERIC(16,4), -- 净资产收益率
|
|
roe_dt NUMERIC(16,4), -- 净资产收益率(扣除非经常损益)
|
|
roa NUMERIC(16,4), -- 总资产净利率
|
|
roa2 NUMERIC(16,4), -- 总资产报酬率
|
|
roic NUMERIC(16,4), -- 投入资本回报率
|
|
-- 杠杆/偿债
|
|
longdeb_to_debt NUMERIC(16,4), -- 长期借款与资产总计之比
|
|
debt_to_assets NUMERIC(16,4), -- 资产负债率
|
|
ncfm NUMERIC(16,4), -- 销售商品提供劳务收到的现金/营业收入
|
|
-- 收益质量
|
|
profit_to_op NUMERIC(16,4), -- 经营活动净收益/利润总额
|
|
cfo_to_or NUMERIC(16,4), -- 经营活动现金流净额/营业收入
|
|
ocf_to_or NUMERIC(16,4), -- 经营现金净流量/营业总收入
|
|
-- 杜邦分析
|
|
dupont_roe NUMERIC(16,4), -- 净资产收益率(杜邦)
|
|
dupont_assets_turn NUMERIC(16,4), -- 资产周转率(杜邦)
|
|
dupont_equity_multi NUMERIC(16,4), -- 权益乘数(杜邦)
|
|
dupont_net_profit_margin NUMERIC(16,4), -- 销售净利率(杜邦)
|
|
-- 分红
|
|
div_rec NUMERIC(16,4), -- 每股股利(税前)
|
|
-- 其他
|
|
ocfps NUMERIC(16,4), -- 每股经营活动产生的现金流量净额
|
|
cfps NUMERIC(16,4), -- 每股现金流量净额
|
|
ebit_ps NUMERIC(16,4), -- 每股息税前利润
|
|
fcff_ps NUMERIC(16,4), -- 每股企业自由现金流量
|
|
fcfe_ps NUMERIC(16,4), -- 每股股东自由现金流量
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (ts_code, end_date)
|
|
);
|
|
|
|
COMMENT ON TABLE fina_indicator IS '财务指标表 (Tushare: fina_indicator)';
|
|
|
|
|
|
-- ============================================================
|
|
-- 11. 交易日历表 (trade_cal)
|
|
-- tushare接口: trade_cal
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS trade_cal (
|
|
exchange VARCHAR(10) NOT NULL, -- 交易所 SSE上交所 SZSE深交所
|
|
cal_date DATE NOT NULL, -- 日历日期
|
|
is_open INTEGER NOT NULL, -- 是否交易 0休市 1交易
|
|
pretrade_date DATE, -- 上一个交易日
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (exchange, cal_date)
|
|
);
|
|
|
|
COMMENT ON TABLE trade_cal IS '交易日历表 (Tushare: trade_cal)';
|
|
|
|
|
|
-- ============================================================
|
|
-- 12. 指数日线行情表 (index_daily)
|
|
-- tushare接口: index_daily
|
|
-- 用于记录主要指数(沪深300、中证500等)的日线行情
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS index_daily (
|
|
ts_code VARCHAR(20) NOT NULL, -- 指数代码 (如 000300.SH)
|
|
trade_date DATE NOT NULL,
|
|
close NUMERIC(12,4),
|
|
open NUMERIC(12,4),
|
|
high NUMERIC(12,4),
|
|
low NUMERIC(12,4),
|
|
pre_close NUMERIC(12,4),
|
|
change NUMERIC(12,4),
|
|
pct_chg NUMERIC(10,4),
|
|
vol NUMERIC(20,2),
|
|
amount NUMERIC(20,4),
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
|
|
PRIMARY KEY (ts_code, trade_date)
|
|
);
|
|
|
|
COMMENT ON TABLE index_daily IS '指数日线行情表 (Tushare: index_daily)';
|
|
|
|
|
|
-- ============================================================
|
|
-- 常用查询视图
|
|
-- ============================================================
|
|
|
|
-- 视图1: 日线行情 + 估值指标联合查询
|
|
CREATE OR REPLACE VIEW v_daily_with_valuation AS
|
|
SELECT
|
|
d.ts_code,
|
|
d.trade_date,
|
|
b.name,
|
|
b.industry,
|
|
b.area,
|
|
d.open,
|
|
d.high,
|
|
d.low,
|
|
d.close,
|
|
d.pre_close,
|
|
d.pct_chg,
|
|
d.vol,
|
|
d.amount,
|
|
d.turnover_rate,
|
|
db.pe,
|
|
db.pe_ttm,
|
|
db.pb,
|
|
db.ps,
|
|
db.ps_ttm,
|
|
db.total_mv,
|
|
db.circ_mv,
|
|
db.dv_ratio,
|
|
db.dv_ttm
|
|
FROM daily d
|
|
LEFT JOIN stock_basic b ON d.ts_code = b.ts_code
|
|
LEFT JOIN daily_basic db ON d.ts_code = db.ts_code AND d.trade_date = db.trade_date;
|
|
|
|
COMMENT ON VIEW v_daily_with_valuation IS '日线行情+估值联合查询视图';
|
|
|
|
|
|
-- 视图2: 最新财务指标 + 股票基本信息
|
|
CREATE OR REPLACE VIEW v_latest_financials AS
|
|
SELECT DISTINCT ON (f.ts_code)
|
|
f.ts_code,
|
|
b.name,
|
|
b.industry,
|
|
b.area,
|
|
b.list_date,
|
|
f.end_date AS report_date,
|
|
f.eps,
|
|
f.roe,
|
|
f.roa,
|
|
f.roic,
|
|
f.current_ratio,
|
|
f.quick_ratio,
|
|
f.debt_to_assets,
|
|
f.gross_margin,
|
|
f.assets_turn,
|
|
f.cfps,
|
|
f.ocfps,
|
|
f.div_rec
|
|
FROM fina_indicator f
|
|
JOIN stock_basic b ON f.ts_code = b.ts_code
|
|
ORDER BY f.ts_code, f.end_date DESC;
|
|
|
|
COMMENT ON VIEW v_latest_financials IS '最新财务指标+股票信息';
|
|
|
|
-- ============================================================
|
|
-- 完成
|
|
-- ============================================================ |