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, 数据可视化, 数据治理, 访问控制, 证券验证系统, 金融数据质量