Stdelarosa/reference-data-quality-engine

GitHub: Stdelarosa/reference-data-quality-engine

一个基于 PostgreSQL 和 Python 的金融证券参考数据质量验证系统,解决数据错误导致交易与监管风险问题。

Stars: 0 | Forks: 0

# 参考数据质量引擎 ## 概述 金融机构依赖参考数据,即描述其交易的每种证券的主记录。ISIN 标识符、货币代码、资产类别、到期日期。当这些数据出错时,交易会失败,风险计算会崩溃,监管报告也会变得不准确。 本项目是一个完整的参考数据质量系统,旨在模拟对冲基金数据运营团队使用的验证基础设施。它接收证券数据集,跨五个数据质量维度进行自动化验证,根据定义的阈值执行 SLA 规则,对供应商数据质量进行评分,并通过实时的 Streamlit dashboard 将所有信息直观展示出来。 ## 架构 ``` data/securities.csv | v db/schema.py Creates PostgreSQL database and tables db/seed.py Loads securities data into PostgreSQL | v validation/sql_checks.py 10 SQL validation queries validation/schema_validation.py Pandera schema enforcement validation/sla_engine.py SLA rules engine and vendor scorecard | v dashboard/app.py Streamlit dashboard: metrics, failures, SLA, drill-down ``` ## 验证检查 | 检查项 | 维度 | 严重程度 | 结果 | |---|---|---|---| | Null ISIN 值 | 完整性 | 高 | FAIL | | Null CUSIP 值 | 完整性 | 高 | FAIL | | 重复的 ISIN 值 | 唯一性 | 高 | FAIL | | 无效的 ISIN 格式 | 有效性 | 高 | FAIL | | 负价格值 | 有效性 | 高 | FAIL | | 状态为活跃的已过期证券 | 一致性 | 中 | FAIL | | 货币与国家不匹配 | 一致性 | 中 | FAIL | | 无效的状态值 | 有效性 | 中 | PASS | | Null sector 值 | 完整性 | 低 | PASS | | 活跃证券价格为 0 | 有效性 | 中 | PASS | | Pandera: price_usd schema 强制校验 | 有效性 | 高 | FAIL | ## SLA 规则 | 规则 | 阈值 | 实际值 | 状态 | |---|---|---|---| | ISIN 完整性 | 95% | 94.4% | FAIL | | 0 个重复 ISIN | 0 | 1 | FAIL | | 0 个负价格 | 0 | 1 | FAIL | | 所有活跃证券都有价格 | 0 个缺失 | 0 个缺失 | PASS | | 没有标记为活跃的已过期证券 | 0 | 1 | FAIL | | 供应商 A 的 ISIN 完整性 | 95% | 100.0% | PASS | | 供应商 B 的 ISIN 完整性 | 95% | 88.9% | FAIL | ## 关键发现 | 发现 | 详情 | |---|---| | 证券总数 | 跨股票和固定收益共 18 条记录 | | 验证失败 | 11 项检查中有 8 项失败 | | SLA 违规 | 7 条规则中有 5 条被违反 | | 严重问题 | Null ISIN、重复 ISIN、无效 ISIN 格式、负价格 | | 一致性违规 | 1 只已过期证券仍标记为活跃,1 处货币/国家不匹配 | | 供应商表现 | 供应商 A 表现良好,ISIN 完整性达到 100%;供应商 B 未达标,仅为 88.9% | ## 工具 Python | PostgreSQL | Pandas | Pandera | Streamlit | SQLAlchemy ## 如何运行 1. 安装依赖: `pip install pandas pandera streamlit sqlalchemy psycopg2-binary` 2. 设置数据库密码: `export DB_PASSWORD=your_password_here` 3. 创建数据库和数据表: `python db/schema.py` 4. 加载证券数据: `python db/seed.py` 5. 运行 SQL 验证检查: `python validation/sql_checks.py` 6. 运行 schema 验证: `python validation/schema_validation.py` 7. 运行 SLA 引擎: `python validation/sla_engine.py` 8. 启动 dashboard: `streamlit run dashboard/app.py`
标签:Pandera, PostgreSQL, Streamlit, 数据可视化, 数据治理, 访问控制, 证券验证系统, 金融数据质量