five

Synthetic Banking Data Simulator

收藏
github2026-06-25 更新2026-06-26 收录
下载链接:
https://github.com/kannanjayachandran/bank-data-simulator
下载链接
链接失效反馈
官方服务:
资源简介:
一个高性能、基于人物角色的零售银行宇宙模拟器,生成用于流失预测建模、信用风险分析和数据工程基准测试的真实合成数据。模拟超过10万名客户在24个月内的约1200万行交易、行为和事件驱动数据。

A high-performance, persona-based retail banking universe simulator that generates realistic synthetic data for churn prediction modeling, credit risk analysis, and data engineering benchmarking. It simulates approximately 12 million rows of transactional, behavioral, and event-driven data across over 100,000 customers over a 24-month period.
创建时间:
2026-06-17
原始信息汇总

Synthetic Banking Data Simulator 数据集概述

数据集简介

这是一个基于人物画像驱动的零售银行模拟器,用于生成逼真的合成银行数据,覆盖10万+客户在24个月内的约1200万行数据,适用于客户流失预测建模、信用风险分析和数据工程基准测试。

核心特性

  • 人物画像驱动客户档案:6种不同画像(Salary Core、Affluent Multi-Product、Digital Native、Credit Stressed、Dormant Wealthy、Complaint-Prone Churner),各自具有独特的收入分布、消费模式、数字参与度、投诉倾向和流失敏感度。
  • 事件驱动的生命周期:动态模拟12种生活/银行事件(职业变化、薪资延迟、婚姻、搬迁、服务失败、卡片拒绝激增等),临时影响客户行为和满意度。
  • 信用压力与逾期:真实的EMI付款跟踪、DPD(逾期天数)计数器、贷款发放的FOIR(固定义务收入比)检查以及自然信用违约轨迹。
  • 向量化交易生成:使用NumPy向量化操作批量生成工资贷记、非定期收入、POS消费、UPI支付、ATM取款、贷款偿还和系统费用。
  • 投诉与反馈循环:与事件相关的动态投诉生成、按严重程度分级的解决时间线、CSAT评分和NPS反馈调查,具有基于画像的基线。
  • 多因素流失模型:通过加权组件公式(事件影响、投诉量、贷款压力、数字不活跃、产品参与度)进行连续流失风险评分,包含高斯噪声和硬触发条件。
  • 无泄漏标签:模拟后跨4个预测时间范围(1、3、6、12个月)进行标签推导,确保没有未来数据泄漏到特征窗口中。
  • 17个关系表:完整的银行模式,包括客户/账户/卡/贷款主表、月度快照、交易事实表、产品持有、活动日志、数字参与、投诉、反馈、流失状态、标签和特征。
  • 印度本地化:基于Faker的印度名称(en_IN)、加权都市/城市分行分布、INR货币、印度商户名称(BigBasket、Zepto、Zomato、IRCTC等)。

性能表现

模拟器通过重度的NumPy向量化、Polars原生特征计算、流式内存管理和并行多进程处理实现高速运行。

基准测试 指标
10万客户,24个月(4核Ryzen 5 3550H) 254秒(约1200万行)
Parquet合并(所有分区文件) 约10秒

架构

模拟器采用6阶段流水线:

  1. Spine:种子RNG、生成客户ID、均匀分配画像、采样低敏感度细分群体(约10-15%)、通过互斥预调度无条件生活事件
  2. Static Masters:分行主表(10个印度分行)、客户主表(Faker名称、年龄、收入、位置)、初始产品持有、储蓄/活期账户、借记/贷记卡、个人/房屋贷款(含FOIR验证)
  3. Monthly Loop:24个月状态机,评估预调度和条件事件、生成工资/非工资收入、定期借记交易、EMI付款、信用卡账单、系统费用;更新运行余额、DPD计数器、产品持有;生成活动日志、数字参与、投诉、反馈调查;计算流失分数
  4. Churn Labels:模拟后从真实流失状态推导客户流失标签(1、3、6、12个月时间范围)
  5. Feature Snapshots:通过原生Polars表达式计算16个工程特征:使用期限、产品数量、余额/交易/登录趋势、投诉计数、薪资一致性、信用利用率、EMI收入比、休眠天数、NPS平均值、活动响应率、产品获取速度
  6. Output:分区的Parquet文件 + PostgreSQL批量加载 + DuckDB内存分析

17个输出表

表名 粒度 描述
branch_master 每分行1条 印度都市/城市的10个分行
customer_master 每客户1条 人口统计、收入、KYC、位置
account_master 每账户1条 储蓄/活期账户、工资标志、透支
account_monthly_snapshot 每账户每月1条 余额指标、存款/取款计数、费用
card_portfolio 每卡1条 借记/贷记卡、网络、奖励等级、信用额度
card_monthly_snapshot 每卡每月1条 消费、利用率、付款、逾期
loan_master 每贷款1条 个人/房屋贷款、批准金额、EMI、期限
loan_monthly_snapshot 每贷款每月1条 未偿还、DPD、逾期、已付本金/利息
product_holdings_monthly 每客户每月1条 10个产品标志 + 产品数量
transaction_fact 每交易1条 薪资、UPI、POS、ATM、EMI、费用;20+列
customer_monthly_activity 每客户每月1条 登录数、会话数、交易数、商户多样性
digital_engagement_monthly 每客户每月1条 应用活动、通知、活动、网页会话
customer_complaints 每投诉1条 渠道、类别、严重程度、CSAT、解决
customer_feedback 每反馈1条 NPS、CSAT调查回复
churn_simulation_state 每客户1条 画像、流失月份、流失原因、低敏感度标志
customer_churn_label 每客户每时间点每时间范围1条 流失标志、日期、原因(1/3/6/12个月时间范围)
churn_feature_snapshot 每客户每时间点每时间范围1条 16个工程特征 + 标签列

技术栈

  • 运行时:Python 3.13+
  • 数据核心:Polars、NumPy、SciPy
  • 数据库:DuckDB(分析)、PostgreSQL(生产)
  • 并发:multiprocessing(spawn)
  • 本地化:Faker(en_IN)
  • 验证:pytest
  • 容器化:Docker、Docker Compose

6种客户画像

画像 收入 数字参与度 投诉率 基础月流失率
Salary Core ₹3L–₹12L 0.3%–1.0%
Affluent Multi-Product ₹12L–₹60L 中-高 0.1%–0.6%
Digital Native ₹4L–₹20L 非常高 低-中 0.2%–0.8%
Credit Stressed ₹2.5L–₹10L 1.0%–3.0%
Dormant Wealthy ₹15L–₹1Cr 0.4%–1.5%
Complaint-Prone Churner ₹3L–₹15L 非常高 2.0%–5.0%

流失建模

  • 评分公式base_rate + weighted(event, trend, product, complaint, loan_stress, digital_inactivity) + Gaussian noise → sigmoid → Bernoulli trial(或基于阈值)
  • 硬触发条件(流失概率=1.0):
    • 贷款逾期且DPD ≥ 90天
    • 6个月内4次以上投诉且2次以上未解决
    • 余额 < ₹500且3个月以上无工资入账
    • 2次以上服务失败且2个月以上数字不活跃
  • 流失原因(优先级排序):贷款违约 → 工资账户丢失 → 服务不满意 → 账户休眠 → 产品脱离 → 服务失败 → 自愿关闭
搜集汇总
数据集介绍
main_image_url
构建方式
Synthetic Banking Data Simulator通过一个六阶段流水线构建数据集。首先,种子生成环节设置随机数种子并分配6种客户画像(如工薪核心、富裕多产品等),同时预调度互斥的生命事件。随后,静态主表生成10家印度分行、客户主表(含人口统计、收入、地点)及初始产品持有、账户、银行卡和贷款(经FOIR校验)。在24个月的月度循环中,模拟器评估预调度与条件事件,生成薪资/非薪资收入、常规借记交易、EMI还款、信用卡账单及系统费用,更新余额、DPD计数器与产品持有,同时生成活动日志、数字参与度、投诉与反馈调查,并计算客户流失分数。模拟结束后,基于真实流失状态在1、3、6、12个月预测窗口衍生客户流失标签,并通过Polars原生表达式计算16个工程化特征。最终输出采用分区Parquet文件格式,支持PostgreSQL批量加载与DuckDB内存分析。
使用方法
数据集的使用基于高效的技术栈和灵活的部署方式。环境搭建需Python 3.13+,通过uv包管理器安装依赖(uv pip install -e .)。数据生成通过main.py脚本控制,参数包括客户数量(--n-customers,建议从2000开始验证)、模拟月数(--sim-months,默认24)、并行作业数(--jobs,应不超过CPU核心数)以及输出连接(--duckdb-db用于DuckDB文件,--postgres-uri可选连接PostgreSQL)。例如,10万客户、24个月的全量运行命令为:PYTHONPATH=. uv run python main.py --n-customers 100000 --sim-months 24 --jobs $(nproc) --duckdb-db data/bank_data_final.db。生成后可通过pipeline/validate.py脚本验证数据完整性,使用duckdb执行features/build_features.sql物化特征,或通过pytest运行测试。Docker Compose支持一键部署PostgreSQL并加载数据,所有输出以分区Parquet文件形式存储于./data/raw目录,便于后续分析。
背景与挑战
背景概述
在零售金融领域,客户流失预测、信用风险分析与数据工程基准测试的建模深度依赖于高质量、大规模且具有现实复杂性的数据集。然而,真实客户数据往往受限于隐私法规、获取成本高昂以及事件标注缺失,阻碍了算法研究的迭代与落地验证。为此,Synthetic Banking Data Simulator于近期诞生,由专业数据工程团队基于印度零售银行生态构建,旨在通过仿真生成一个覆盖10万客户、24个月时间跨度、约1200万行交易记录的银行宇宙。该数据集核心研究问题聚焦于如何在保障标签纯净、无未来数据泄露的前提下,模拟客户生命周期中的真实事件驱动行为,包括薪资波动、信用压力、投诉反馈与流失倾向等,为多任务建模提供标准化基准。其基于人物画像的驱动范式与多因子流失算法,显著提升了合成数据的领域可信度,为学术界与工业界在客户智能方向上的研究提供了可复现的数据基础设施。
当前挑战
该数据集所解决的领域挑战在于,真实客户流失数据常呈现类别极不平衡、事件时间边界模糊、多源异构特征耦合等特征,使得模型难以准确捕捉客户从活跃到流失的渐变轨迹,尤其在短期预测窗口内,噪声与微弱信号常导致过拟合或漏警。而在数据集构建过程中,首要挑战是需要设计一种无泄露的标签推导机制,确保未来信息不污染回溯特征窗口,为此采用了后仿真标注法,严格限定事件序列在时间轴上的独立性。其次,模拟100余种客户与银行事件(如换工作、婚姻、卡片降额、服务故障并存时),需处理事件互斥性及因果链的时序传播,避免事件叠加引发非真实行为突变。此外,高并发事务生成要求克服Python原生循环的性能瓶颈,因此工程上采纳了NumPy向量化批处理、Polars原生特征计算与多进程流式写入等优化手段,在4核CPU上实现254秒生成1200万行记录,并保持内存常驻可控。
常用场景
经典使用场景
Synthetic Banking Data Simulator作为一款基于角色驱动的零售银行宇宙模拟器,其最经典的使用场景在于为银行客户流失预测建模提供海量、真实且无隐私泄露风险的合成数据。该模拟器通过生成超过10万名客户在24个月内的约1200万行交易、行为与事件驱动数据,使得数据科学家能够构建高保真的客户流失预测模型,尤其在学术研究中常被用于验证不同机器学习算法在非平衡分类问题上的表现,以及评估特征工程对模型泛化能力的提升效果。
解决学术问题
该数据集有效解决了学术界在银行客户行为研究中面临的数据稀缺与隐私合规矛盾。传统真实银行数据受限于严格的隐私法规难以公开共享,而合成数据在保留真实统计分布与行为模式的同时避免了敏感信息泄露。它通过引入六种不同角色(如薪酬核心客户、信贷压力客户)及事件驱动的生命周期模拟,使得研究者能够系统性地探究客户流失的因果机制、信用卡违约的时序模式以及数字参与度与客户忠诚度的非线性关系,推动了可复现性研究与跨机构基准对比分析的发展。
实际应用
在实际应用中,该模拟器被广泛应用于银行与金融机构的风险管理与客户关系管理系统中。通过生成包含贷款逾期追踪、DPD天数和FOIR比率等指标的合成数据,机构能够在不暴露真实客户信息的前提下测试信用评分模型的有效性、优化客户挽留策略以及评估市场营销活动的响应率。此外,其支持PostgreSQL与DuckDB的生产级架构,使数据工程团队能够在分布式环境中进行ETL流水线性能基准测试与数据仓库压力评估,显著降低了真实数据获取与合规成本。
数据集最近研究
最新研究方向
当前,基于人物驱动的合成数据生成技术正成为零售银行领域客户流失预测与信贷风险分析的核心突破点。该数据集通过模拟10万客户在24个月内的约1200万行交易行为与生命周期事件,为构建无数据泄露的时序特征工程提供了高保真训练基准。其创新的多重硬触发流失机制与加权风险评分模型,精准映射了后疫情时代银行客户行为中频发的收入中断、服务摩擦及合规压力事件,显著提升了流失预警模型在印度本土化场景下的鲁棒性与可解释性。研究前沿聚焦于利用该仿真架构验证跨时域预测窗口的标签有效性,推动银行业从规则驱动的风险管控向事件驱动的动态客户智能系统演进,具备在普惠金融与个性化服务优化中的战略价值。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务