3. 数据采集与业务理解:常见授信数据源与业务指标定义

授信决策引擎的核心是数据与规则。在开始建模之前,必须清晰理解可获取的数据源类型及其业务含义,并统一衡量模型效果的指标口径。本章将系统梳理常见授信数据源,并定义核心业务指标。

3.1 常见授信数据源

现代信贷风控体系通常依赖四类核心数据源:征信数据、多头借贷数据、行为数据与设备指纹数据。每类数据在风险识别中扮演不同角色。

数据源类型 核心字段示例 主要用途 更新频率
征信数据 信贷记录、逾期历史、查询次数、公共记录 评估还款意愿与历史信用表现 月度/季度
多头借贷数据 申请平台数、近7天/30天申请次数 识别共债风险与资金紧张程度 实时/日
行为数据 登录频次、页面停留时长、填写信息修改次数 判断申请欺诈倾向与用户活跃度 实时
设备指纹数据 设备ID、IP地址、GPS位置、应用列表 识别设备关联团伙欺诈与模拟器 实时
建模提示: 多头借贷数据是短期现金贷场景中区分度最高的特征之一,但需注意多头次数与逾期率之间通常呈非线性关系,建议做分箱或WOE转换后入模。

3.1.1 征信数据

征信数据是传统风控的基石,包含个人基础信息、信贷交易明细、公共记录(如法院执行信息)和查询记录。征信报告中的“逾期次数”、“最大逾期天数”、“信用卡使用率”等字段是构建信用评分卡的核心变量。

3.1.2 多头借贷数据

多头借贷指借款人在短时间内向多个平台申请贷款的行为。高频多头通常意味着借款人资金链紧张或存在“以贷养贷”风险。常用特征包括:近7天申请机构数、近30天申请次数、当前在贷平台数。

3.1.3 行为数据

用户在申请流程中的操作行为可反映其真实意图。例如:频繁修改手机号或银行卡号、极短时间完成填写、使用粘贴功能等,均可能指向欺诈行为。行为数据常用于构建反欺诈规则与模型。

3.1.4 设备指纹数据

设备指纹通过采集设备硬件信息(如IMEI、MAC地址)、网络信息(IP、WiFi BSSID)和软件信息(操作系统版本、应用列表)生成唯一设备标识。可用于识别设备关联、模拟器、设备农场等欺诈场景。

数据采集架构示意: 以下SVG展示了从用户申请到数据仓库的典型数据采集流程。
授信数据采集架构图 授信数据采集架构 用户提交申请 征信数据源 多头借贷数据源 行为数据源 设备指纹数据源 数据采集网关(API / SDK / 爬虫) 数据仓库 / 特征存储

3.2 业务指标定义

模型效果最终需要通过业务指标来衡量。以下是授信决策中最核心的三个指标:逾期率、通过率与坏账率。理解这些指标的定义与计算方式,是评估模型业务价值的前提。

3.2.1 逾期率

逾期率反映借款人在约定还款日未能按时还款的比例。根据逾期天数可细分为M1(1-30天)、M2(31-60天)、M3(61-90天)等。常用计算公式:

# 逾期率计算示例(Python伪代码)
overdue_count = df[df['逾期天数'] > 30].shape[0]
total_loan_count = df.shape[0]
overdue_rate = overdue_count / total_loan_count
print(f"M1+逾期率: {overdue_rate:.2%}")

3.2.2 通过率

通过率指通过授信审批的申请量占总申请量的比例。通过率直接影响业务规模,与逾期率通常呈反向关系。模型需要在通过率与风险之间寻找平衡。

# 通过率计算示例
approved_count = df[df['审批结果'] == '通过'].shape[0]
total_apply_count = df.shape[0]
pass_rate = approved_count / total_apply_count
print(f"审批通过率: {pass_rate:.2%}")

3.2.3 坏账率

坏账率通常指逾期超过一定天数(如90天)且无法收回的贷款金额占总放款金额的比例。坏账率是衡量资产质量的核心指标,直接影响金融机构的盈利能力。

# 坏账率计算示例
bad_debt_amount = df[df['逾期天数'] > 90]['放款金额'].sum()
total_loan_amount = df['放款金额'].sum()
bad_debt_rate = bad_debt_amount / total_loan_amount
print(f"坏账率: {bad_debt_rate:.2%}")
指标口径注意: 不同机构对逾期率、坏账率的定义可能存在差异(如是否包含核销、是否按金额加权)。在模型开发前,务必与业务方确认统一口径,避免后续评估偏差。

3.3 指标关系与决策平衡

通过率、逾期率与坏账率之间存在内在关联。通常,放宽审批标准会提高通过率,但可能导致逾期率与坏账率上升;收紧标准则相反。模型调优的目标是在可接受的坏账率范围内最大化通过率,或在目标通过率下最小化坏账率。

决策平衡示意: 以下SVG展示了通过率与坏账率之间的典型权衡曲线。
通过率与坏账率权衡曲线 通过率与坏账率权衡曲线 通过率(%) 100% 0% 坏账率(%) 高 低 最优决策区域 平衡通过率与坏账率
建模策略: 在实际项目中,建议先设定目标坏账率上限(如<3%),然后通过调整模型阈值寻找该约束下的最大通过率。这种“风险预算”思路比单纯追求KS或AUC更能落地。

3.4 数据采集与指标监控的工程化

在Python建模流程中,数据采集通常通过API接口或数据库直连完成。建议将数据采集、特征计算与指标监控封装为可复用的函数或类,便于后续迭代。

# 数据采集与指标监控示例类
class CreditDataCollector:
    def __init__(self, db_conn, api_key):
        self.db_conn = db_conn
        self.api_key = api_key

    def fetch_credit_report(self, user_id):
        # 调用征信API
        pass

    def fetch_multihead_data(self, user_id):
        # 查询多头借贷数据
        pass

    def calculate_overdue_rate(self, df):
        overdue = df[df['逾期天数'] > 30].shape[0]
        return overdue / df.shape[0] if df.shape[0] > 0 else 0.0

    def calculate_pass_rate(self, df):
        approved = df[df['审批结果'] == '通过'].shape[0]
        return approved / df.shape[0] if df.shape[0] > 0 else 0.0

    def calculate_bad_debt_rate(self, df):
        bad = df[df['逾期天数'] > 90]['放款金额'].sum()
        total = df['放款金额'].sum()
        return bad / total if total > 0 else 0.0

通过上述结构,可以快速接入不同数据源,并在模型上线后持续监控业务指标变化,及时发现模型衰减或数据质量问题。