# 风控研究数据准备 ## 🎯 目标 准备风控研究所需的各类数据,保证研究的准确性和可验证性。 --- ## 1. 所需数据类型 ### 1.1 历史价格成交量数据 **用途**: - 计算收益率 - 计算波动率 - 计算VaR/回撤等风险指标 - 回测风控策略 **要求**: - 时间范围:至少5年A股历史数据 - 频率:日线数据足够(日内需要更高频) - 字段:代码、日期、开盘、最高、最低、收盘、成交量 **来源**: - Akshare(免费) - TuShare(需要token) - 聚宽数据导出 ### 1.2 风险事件数据 **用途**: - 验证极端风险应对 - 压力测试 - 案例分析 **需要收集的风险事件**: | 事件 | 时间 | 类型 | |------|------|------| | 2015年股灾 | 2015-06 ~ 2015-08 | 系统性风险 | | 2016熔断 | 2016-01 | 流动性风险 | | 2018贸易战熊市 | 2018-01 ~ 2018-12 | 系统性风险 | | 2020新冠疫情 | 2020-02 ~ 2020-03 | 黑天鹅 | | 2022俄乌战争 | 2022-02 ~ 2022-05 | 系统性风险 | | 2023AI牛市 | 2023-01 ~ 2023-04 | 波动率变化 | ### 1.3 流动性数据 **用途**: - 流动性分层研究 - 流动性阈值设定 - 冲击成本模型验证 **需要数据**: - 日均成交额 - 换手率 - 流通市值 - 买卖盘口数据(可选) ### 1.4 上市公司基本面数据 **用途**: - 信用风险研究 - ST/*ST识别 - 退市风险识别 - 质押比例数据 **需要数据**: - 是否ST/*ST - 是否退市风险警示 - 大股东质押比例 - 财务指标 --- ## 2. 数据预处理 ### 2.1 数据有效性校验 使用我们开发的 `DataValidityChecker`: ```python from sanguo.risk import DataValidityChecker checker = DataValidityChecker() is_valid = checker.check_dataframe(df) ``` **校验内容**: - 价格不能为负 - 最高价 ≥ 开盘价/收盘价 ≥ 最低价 - 成交量不能为负 - 日期连续性检查 ### 2.2 收益率计算 **对数收益率**(推荐用于风险计算): ```python returns = np.log(close / close.shift(1)).dropna() ``` **简单收益率**: ```python returns = (close / close.shift(1) - 1).dropna() ``` ### 2.3 缺失值处理 - 交易日缺失:A股本身有节假日,不需要填充 - 价格缺失:删除该日数据,不影响计算 - 停牌:停牌期间没有交易,不计算收益率 --- ## 3. 数据集划分 ### 3.1 时间划分 - **训练集**:2016-01-01 ~ 2020-12-31(5年) - **验证集**:2021-01-01 ~ 2022-12-31(2年) - **测试集**:2023-01-01 ~ 当前(最新) ### 3.2 股票分层 按流动性分层测试: - **大盘层**:日均成交额 > 10亿 - **中盘层**:1亿 < 日均成交额 ≤ 10亿 - **小盘层**:0.3亿 < 日均成交额 ≤ 1亿 - **微盘层**:日均成交额 ≤ 0.3亿 按市值分层测试: - **大盘**:流通市值 > 500亿 - **中盘**:100亿 < 流通市值 ≤ 500亿 - **小盘**:流通市值 ≤ 100亿 --- ## 4. 数据存储方案 ### 4.1 原始数据存储 ``` risk-management/research/06-data/ ├── raw/ # 原始数据 │ ├── daily_prices/ # 日线价格数据 │ ├── risk_events/ # 风险事件数据 │ └── fundamentals/ # 基本面数据 └── processed/ # 预处理后数据 ├── returns/ # 计算好的收益率 ├── risk_metrics/ # 计算好的风险指标 └── train_test_split/ # 训练测试划分 ``` ### 4.2 缓存机制 - 原始数据缓存避免重复下载 - 预处理结果缓存避免重复计算 - 缓存文件格式:parquet(高效读写) --- ## 5. 数据质量保证 ### 5.1 检查清单 - [ ] 价格数据完整性检查 - [ ] 收益率分布检查 - [ ] 极值异常检查 - [ ] 日期连续性检查 - [ ] 涨跌停价格一致性检查 ### 5.2 异常处理 - 明显异常价格(比如一字跌停价格错误)→ 删除 - 个别交易日缺失 → 忽略不影响 - 连续多个交易日缺失 → 剔除该股票 --- ## 6. 压力测试数据准备 ### 6.1 历史情景压力测试 使用历史上真实发生过的风险事件: | 情景 | 起始日期 | 结束日期 | 测试内容 | |------|----------|----------|----------| | 2015股灾 | 2015-06-01 | 2015-08-26 | 极端回撤风控应对 | | 2020新冠股灾 | 2020-02-01 | 2020-03-23 | 黑天鹅风控应对 | | 2022俄乌战争 | 2022-02-24 | 2022-04-30 | 系统性风险应对 | ### 6.2 模拟压力测试 生成极端模拟情景: - 连续5日跌停单票 - 整体市场连续3日跌停 - 波动率突然翻倍 - 单票集中度达到上限后暴跌 --- ## 7. 总结 数据准备是风控研究的基础: 1. **数据必须完整准确**,否则研究结果不可靠 2. **分层测试**很重要,不同流动性股票风控参数不同 3. **压力测试**必须用历史真实情景+模拟极端情景 4. **数据验证**必须严格,避免垃圾数据污染研究结果 --- **本章完** ⚔️