1. 课程导论:组合风险归因与决策优化的核心价值、SQL在金融风控中的角色、课程目标与学习路径

1.1 组合风险归因:从“单笔风控”到“组合决策”的跃迁

传统信贷风控聚焦于单笔申请或单笔资产的违约概率评估。然而,当业务规模扩大至数万笔、数十万笔资产时,单笔风险的简单加总无法揭示组合层面的系统性脆弱性。组合风险归因的核心价值在于:将整体风险指标(如组合VaR、预期损失、集中度比率)拆解至因子、行业、产品线或单笔资产层面,从而回答“风险从哪里来”以及“如何调整组合结构以优化风险-收益比”。

关键洞察: 组合风险并非单笔风险的线性叠加。相关性、集中度、尾部依赖等非线性因素使得组合风险可能远大于或小于单笔风险之和。SQL通过集合运算与窗口函数,能够高效完成这种高维拆解。

1.2 SQL在金融风控中的角色:从数据仓库到决策引擎

SQL(结构化查询语言)在金融风控体系中扮演着三重核心角色:

  • 数据整合层: 将分散在交易系统、征信接口、行为评分卡、外部黑名单等异构数据源中的信息,通过JOIN与UNION操作整合为统一的风险宽表。
  • 指标计算层: 利用聚合函数(SUM、AVG、PERCENTILE_CONT)、窗口函数(LAG、LEAD、SUM OVER)以及条件聚合(CASE WHEN + SUM)计算组合层面的风险指标,如集中度指数、滚动逾期率、边际风险贡献。
  • 决策支持层: 通过参数化查询与动态SQL,支持“假设分析”(What-if Analysis)与限额管理,例如“若将行业A的敞口降低10%,组合VaR如何变化?”
角色层级 典型SQL操作 风控产出物
数据整合 JOIN、UNION、COALESCE 统一风险宽表、客户360视图
指标计算 SUM OVER、PERCENTILE_CONT、CASE WHEN 组合VaR、集中度HHI、边际贡献
决策支持 参数化查询、子查询嵌套 限额压力测试、组合再平衡方案
SQL在组合风险归因中的角色架构 SQL在组合风险归因中的角色架构 交易系统 征信与外部数据 行为评分卡 SQL 数据整合层 (JOIN / UNION) SQL 指标计算层 (窗口函数 / 聚合) SQL 决策支持层 (假设分析 / 限额管理)

1.3 课程目标:掌握用SQL实现组合风险归因与决策优化的全流程

本课程旨在帮助金融风控从业者与数据分析师,建立从“数据查询”到“组合决策”的完整能力闭环。完成本课程后,学员将能够:

  1. 构建组合风险宽表: 使用SQL整合多源数据,生成包含敞口、评级、行业、期限等维度的组合基础表。
  2. 计算核心风险指标: 通过窗口函数与聚合函数,计算组合预期损失(EL)、非预期损失(UL)、集中度指数(HHI)、边际风险贡献(MRC)。
  3. 执行归因分析: 按行业、产品线、客户评级等维度拆解风险贡献,定位风险“热点”。
  4. 优化组合决策: 基于归因结果,使用SQL模拟限额调整、资产置换等策略,并评估其对组合风险-收益的影响。
适用人群: 信贷风控分析师、组合管理岗、数据仓库开发人员、金融科技领域的数据科学家。建议具备基础SQL语法知识(SELECT、JOIN、GROUP BY)。

1.4 学习路径:从基础到实战的阶梯式设计

课程共分为五个模块,层层递进:

模块 章节范围 核心内容 实战案例
基础篇 第1-4章 组合风险概念、SQL环境搭建、风险宽表设计 构建零售信贷组合宽表
指标篇 第5-10章 窗口函数、聚合技巧、集中度与边际贡献计算 计算组合VaR与行业集中度
归因篇 第11-18章 多维度归因、因子拆解、归因结果可视化准备 识别组合风险最大贡献行业
优化篇 第19-25章 假设分析、限额优化、压力测试SQL实现 模拟降低某行业敞口后的组合变化
实战篇 第26-30章 综合案例、性能调优、自动化报表 完整组合风险归因与优化报告
课程学习路径与模块关系 课程学习路径:从基础到实战 基础篇 风险宽表设计 指标篇 窗口函数与聚合 归因篇 多维度风险拆解 优化篇 假设分析与限额 实战篇 综合案例与调优 每模块均包含SQL代码实战与风控案例

1.5 为什么选择SQL作为组合风险归因的工具?

在Python、R等高级分析语言流行的今天,SQL在组合风险领域仍具有不可替代的优势:

  • 数据原生性: 风险数据通常存储在关系型数据库中,SQL无需数据搬运即可直接计算,避免I/O瓶颈。
  • 集合思维: 组合风险本质上是集合的集合(资产集合、行业集合、评级集合),SQL的集合操作语义天然匹配。
  • 可审计性: SQL查询逻辑透明,易于风控合规部门审查与验证,这是黑箱模型难以做到的。
  • 性能与扩展性: 现代MPP数据库(如ClickHouse、Greenplum)对SQL的并行优化,使得百亿级组合风险计算可在秒级完成。
注意: 本课程不要求学员具备Python或R基础。所有归因与优化逻辑均使用标准SQL实现,部分高级场景会涉及窗口函数与CTE(公用表表达式),这些将在后续章节详细讲解。

1.6 一个直观的例子:为什么需要组合风险归因?

假设某银行信贷组合包含两笔贷款:

  • 贷款A:敞口100万,违约概率1%,违约损失率40%
  • 贷款B:敞口100万,违约概率1%,违约损失率40%

如果两笔贷款完全独立,组合预期损失为0.8万,组合VaR(99%置信水平)约为2.3万。但如果两笔贷款均投向同一行业(如房地产),且行业系统性风险导致违约相关性为0.5,组合VaR可能跃升至4.5万。这种相关性带来的风险放大效应,只有通过组合层面的归因分析才能揭示。SQL通过计算协方差矩阵与边际贡献,能够量化这种非线性影响。

-- 示例:计算两笔贷款的组合预期损失(简化版)
WITH loan_data AS (
    SELECT 'A' AS loan_id, 1000000 AS exposure, 0.01 AS pd, 0.40 AS lgd
    UNION ALL
    SELECT 'B' AS loan_id, 1000000 AS exposure, 0.01 AS pd, 0.40 AS lgd
)
SELECT 
    SUM(exposure * pd * lgd) AS expected_loss
FROM loan_data;
-- 结果:8000