风险管理现代化
利用统一的数据处理方法
和人工智能来降低运营风险
金融服务业
简介
在过去几年中,金融服务(尤其是银行业)的风险管理越来越复杂。首先,引入了新的框架(如FRTB),这些框架可能需要强大的计算能力和分析多年历史数据的能力。与此同时,监管机构要求其监管的银行提高透明度和解释性。最后,新技术和商业模式的引入意味着对健全风险治理的需求空前高涨。然而,银行业有效满足这些需求的能力并不是一件容易的事情。依靠内部基础设施的传统银行已无法有效管理风险。银行必须放弃传统技术计算效率低下的做法,建立灵活的现代风险管理实践,能够通过使用数据和高级分析快速响应市场和经济波动。最近的经验表明,随着新威胁的出现,历史数据和汇总风险模型很快就失去了预测价值。风险分析师必须使用替代数据集来增强传统数据,以便探索识别和量化其业务面临的大规模和实时风险的新方法。
在本解决方案简介中,我们将演示如何通过使用Databricks统一数据分析平台的各种组件(Delta Lake、Apache SparkTM和MLflow)来使传统的风险价值(VaR)计算现代化,以实现更灵活和前瞻性的风险管理方法。bob体育客户端下载
风险管理解决方案加速器
在金融服务中构建现代风险管理解决方案
通过统一Lakehouse中的数据和人工智能,采用更灵活的风险管理方法
这个解决方案有两个加速器。首先,它展示了Delta Lake和MLflow如何用于风险价值计算——展示了银行如何通过流式数据输入、快速模型开发和与Lakehouse进行大规模蒙特卡罗模拟,使其风险管理实践现代化。
第二个解决方案加速器展示了如何执行聚合、大规模回溯测试和使用替代数据,以实现更全面、敏捷和前瞻性的风险管理和投资方法。
好处:
- 获得全面的观点:使用实时和可按需分析的替代数据来使用更完整的风险和投资观点
- 发现新出现的威胁:主动识别新出现的威胁,以保护资本并优化风险暴露
- 实现大规模速度:快速彻底地扫描大量数据,以及时响应并降低风险
应对常见的风险管理挑战
Databricks提供了一种统一的数据分析方法,以解决试图有效地现代化风险管理实践时最常见的挑战。在本节的解决方案简介中,我们将介绍以下解决方案:
- 使用Delta Lake对您的市场数据有一个统一的视图
- 利用MLflow作为模型开发和部署的交付工具
- 使用Apache Spark大规模分发蒙特卡罗模拟
借助Delta Lake实现现代化数据管理
随着大数据和云技术的兴起,IT领域在过去十年发生了翻天覆地的变化。然而,大多数金融服务机构仍然依赖大型机和非分布式数据库来进行核心风险操作,如VaR计算,并且只将部分下游流程转移到现代数据湖和云基础设施。其结果是,银行正在落后于技术曲线,它们目前的风险管理实践已不能满足现代经济的需要。现代化的风险管理始于数据。具体来说,就是改变看待数据的角度:不是作为成本,而是作为资产。
旧方法:当数据被视为成本时,金融服务机构限制了风险分析师探索“假设”场景的能力,并将其汇总的数据竖井限制为仅满足预定义的风险策略。随着时间的推移,维护筒仓的刚性导致工程师在已经脆弱的工作流的基础上分支新的流程并创建新的聚合视图,以适应不断变化的需求。矛盾的是,不断努力将数据作为低成本商品保存在本地,导致了一个更脆弱的生态系统,因此整体维护成本更高。为了保证数据的及时性和可靠性,失败的流程(下面注释为X符号)有太多的下游影响。因此,考虑到下图所示的所有移动组件和相互依赖性,对市场风险进行日内(和可靠的)观察变得越来越复杂,实现成本也越来越高。
现代方法:当数据被视为资产时,组织利用数据的多用途特性,服务于多种用例(如风险价值和预期不足),并支持各种特别分析(如了解特定国家的风险暴露)。风险分析师不再局限于狭隘的风险观点,可以采用更灵活的方法进行风险管理。与三角洲湖作为开源存储层,风险分析师可以确保大规模数据的一致性。通过统一流和批处理ETL,确保ACID合规性和模式强制,Delta Lake为您的数据湖带来性能和可靠性,通过其青铜层、银层和金层逐步提高数据的质量和相关性,并弥合操作流程和分析数据之间的差距。
在这个例子中,我们评估了拉丁美洲股票投资组合中各种投资的风险水平,该组合由多个行业的40种工具组成,将所有收益存储在一个集中的Delta Lake表中,该表将驱动我们所有的风险价值计算。
为了这个演示的目的,我们使用python金融库从雅虎金融访问每日收盘价。在现实生活中,人们可以直接从源系统获取市场数据(例如从大型机捕获的变更数据)到Delta Lake表,实时地将原始信息存储在Bronze表上,并将管理/验证的数据存储在Silver表上。
利用Delta Lake的核心数据,我们应用了一个简单的窗口函数来计算每日日志收益,并将结果输出到一个金表中,以便进行风险建模和分析。
在下面的例子中,我们展示了我们在哥伦比亚经营的金融服务公司AVAL (Grupo AVAL Acciones y Valores s.a.)的投资数据的特定部分。鉴于其股价在2020年3月后的预期下跌,我们可以评估其对我们整体风险投资组合的影响。
使用MLFlow简化模型开发
尽管定量分析并不是一个新概念,但最近数据科学的兴起和数据量的爆炸式增长,揭示了银行运营模型的主要低效之处。在没有任何行业标准的情况下,数据科学家通常会尽最大努力工作。这通常意味着针对单个节点上的数据样本训练模型,并在整个开发过程中手动跟踪模型,从而导致较长的发布周期(可能需要6到12个月才能将模型交付到生产)。较长的模型开发周期阻碍了他们快速适应新出现的威胁和动态减轻相关风险的能力。金融服务机构在这种模式中面临的主要挑战是缩短模型开发到生产的时间,而不以牺牲治理和法规为代价,或者为更脆弱的数据科学生态系统做出贡献。
MLflow是通过为模型开发带来不变性和透明性来管理机器学习生命周期的事实上的标准,但并不局限于AI。银行对模型的定义通常相当广泛,包括从Excel宏到基于规则的系统或最先进的机器学习的任何金融模型,所有这些模型都可以从Databricks统一数据分析平台中MLflow提供的中央模型注册表中受益。bob体育客户端下载
复制模型开发
在这个例子中,我们想训练一个新模型,在给定市场指标(如标准普尔500、原油和国债)的情况下预测股票回报。我们可以检索“AS OF”数据,以确保完整的模型再现性和审计遵从性。三角洲湖的这种能力通常被称为“时间旅行”。结果数据集将在所有实验中保持一致,并且可以按原样访问以用于审计目的。
为了在他们的模型中选择正确的特征,定量分析师经常在Spark和Pandas数据框架之间导航。我们在这里展示如何从pyspark切换到python上下文,以便提取市场因素的相关性。Databricks交互式笔记本带有内置的可视化,也完全支持使用Matplotlib, seaborn(或R的ggplot2)。
假设我们的指标是不相关的(他们是)和预测我们的投资组合回报(他们可能),我们想记录这个图表作为我们成功实验的证据。这表明内部审计、模型验证功能以及监管机构以最高质量标准进行模型探索,其开发是由实证结果主导的。
并行训练模型
随着投资组合中工具数量的增加,我们可能希望并行训练模型。这可以通过一个简单的Pandas UDF函数实现,如下所示。为了方便起见(现实生活中的模型可能更复杂),我们希望训练一个简单的线性回归模型,并将所有模型系数聚合为n × m矩阵(n是工具的数量,m是由市场因素派生的特征的数量)。
结果数据集(每个模型的权重)可以很容易地收集到内存中,并记录到MLflow中,作为我们实验剩余部分的候选模型。在下图中,我们报告了从我们的模型中得到的哥伦比亚石油和天然气生产商Ecopetrol s.a.的预测和实际股票回报。
我们的实验现在与独立验证单元(IVU)提交所需的所有证据一起存储在MLflow中,IVU可能是您的模型风险管理框架的一部分。值得注意的是,这个实验不仅与我们的笔记本有关,而且与它的准确修订有关,为独立专家和监管机构带来了我们模型的完整可追溯性以及模型验证所需的所有必要背景。
使用Apache Spark™进行大规模蒙特卡罗模拟
风险价值是模拟随机游走的过程,它涵盖了可能的结果和最坏的情况(n)。(t)天内95%的风险值是最糟糕的5%试验中的最佳情况。因此,考虑到我们投资组合中所有工具的90天历史市场波动,我们希望生成足够的模拟来覆盖一系列可能的结果。考虑到每个仪器所需的模拟数量,该系统在设计时必须考虑到高度的并行性,使风险价值成为在基于云的环境中执行的完美工作负载。风险管理是当今顶级银行评估云计算分析并通过Databricks运行时加速价值的首要原因。
创建多元分布
尽管业内建议生成2万至3万次模拟,但计算混合投资组合的风险价值的主要复杂性并不在于衡量单个资产的回报,而是它们之间的相关性。在投资组合级别,市场指标可以在本地python中优雅地操作,而不必将复杂的矩阵计算转移到分布式框架。由于操作多本书和作品集是很常见的,因此可以通过并行分布矩阵计算来轻松扩展相同的过程。我们使用过去90天的市场回报来计算今天的波动率(提取平均值和协方差)。
我们通过对市场的多元预测(市场因素的个别正态分布的叠加)中的一个点进行抽样来生成特定的市场状况。这提供了一个特征向量,可以注入到我们的模型中,以预测我们的金融工具的回报。
大规模进行一致和独立的试验
模拟风险价值的另一个复杂性是通过使用“种子”仔细固定随机数来避免自相关性。我们希望每个试验都是独立的,尽管在不同工具之间是一致的(每个模拟头寸的市场条件都是相同的)。请看下面一个创建独立和一致的试验集的例子——运行相同的块两次将产生完全相同的市场向量集。
在分布式环境中,我们希望集群中的每个执行程序都负责跨多个工具的多个模拟。我们定义了种子策略,以便每个执行程序都将负责num_instruments x (num_simulations / num_executors)试验。假设我们的投资组合中有100,000次蒙特卡洛模拟、50个执行者的并行性和10个乐器,每个执行者将运行20,000个乐器回报。
我们对每个执行程序的种子集进行分组,并通过使用Pandas UDF为每个模型生成试验。请注意,可能有多种方法可以实现相同的目标,但是这种方法的好处是可以完全控制并行度的级别,以确保没有热点发生,没有执行程序闲置等待其他任务完成。
我们将按天划分的试验附加到Delta Lake表上,以便分析师可以轻松地访问一天的模拟结果,并按试验Id(即种子号)对个人收益进行分组,以便访问收益的每日分布及其各自的风险价值。
根据我们最初将数据定义为核心资产(而不是成本)的定义,我们存储了所有丰富了投资组合分类(如行业类型和运营国家)的试验,从而能够更全面地、按需地看待我们投资策略面临的风险。
聚合,大规模回测和引入替代数据
本解决方案的第一部分简要介绍了与使用数据和高级分析实现风险管理实践现代化相关的技术挑战,涵盖了使用MLflow和Apache Spark进行风险建模和蒙特卡罗模拟的概念。解决方案简介的这一部分集中于风险分析师角色和他们的需求,以便在新威胁出现时实时地更好地理解投资组合风险。我们将讨论以下主题:
- 使用Delta Lake和SQL按需聚合风险价值
- 使用Apache SparkTM和MLflow回测模型,并向监管机构报告违规情况
- 探索使用替代数据来更好地评估您的风险暴露
三角洲湖的风险价值
在本例中,我们揭示了由多个行业的40种工具组成的拉丁美洲股票投资组合中各种投资的风险。为此,我们利用了通过蒙特卡罗模拟(40个仪器x 50,000个模拟x 52周= 1亿条记录)生成的大量数据,按天划分,并使用我们的投资组合分类法进行丰富。
风险价值
风险价值是模拟随机游走的过程,它涵盖了可能的结果和最坏的情况(n)。(t)天内95%的风险值是最糟糕的5%试验中的最佳情况。
由于我们的试验是按天划分的,分析师可以很容易地访问一天的模拟数据,并通过试验Id(即用于生成金融市场条件的种子)对个人回报进行分组,以访问我们投资回报的每日分布及其各自的风险价值。我们的第一种方法是使用Spark SQL来聚合给定一天(50,000条记录)的模拟回报,并使用内存python通过简单的numpy操作来计算5%的分位数。
如果在我们所有的拉丁美洲股票工具上进行1万美元的初始投资,在特定的时间点上95%的风险价值将是3000美元。这是我们的业务在所有可能发生的事件中最糟糕的5%中(至少)准备损失的金额。
这种方法的缺点是,我们首先需要收集内存中的所有日常试验,以便计算5%的分位数。虽然这个过程在使用1天的数据时可以很容易地执行,但当在较长一段时间内聚集风险价值时,它很快就会成为瓶颈。
一种实用的、可扩展的解决问题的方法
从大型数据集中提取百分位数对于任何分布式计算环境都是一个已知的挑战。一种常见的(尽管效率很低)做法是:1)对所有数据进行排序,2)使用takeOrdered选择特定的行,或者通过approxQuantile方法找到近似值。我们的挑战略有不同,因为我们的数据不构成一个单一的数据集,而是跨越多个天、多个行业和多个国家,其中每个桶可能太大,无法在内存中有效地收集和处理。
在实践中,我们利用风险价值的本质,只关注最坏的n个事件(n小)。给定每台仪器50,000次模拟和99%的VaR,我们只感兴趣在最差的500个实验中找到最好的。为此,我们创建了一个用户定义的聚合函数(UDAF),它只返回最差n个事件中的最佳事件。这种方法将大大减少计算大规模VaR聚合时可能出现的内存占用和网络约束。
通过spark.udf.register方法注册我们的UADF,我们向所有用户公开了该功能,将风险分析民主化到所有不了解scala / python / spark的人。人们只需按试验Id(即种子)进行分组,以便应用上述方法,并在所有数据中使用普通的旧SQL功能提取相关的风险值。
我们可以很容易地发现COVID-19对我们市场风险计算的影响。自2020年3月初以来,90天的经济波动期导致风险价值大幅降低,因此整体风险敞口大幅上升。
全面看待我们的风险暴露
在大多数情况下,仅仅了解总体的风险价值是不够的。分析师需要了解不同账簿、资产类别、不同行业或不同运营国家的风险敞口。除了之前讨论过的时间旅行和ACID事务等Delta Lake功能外,Delta Lake和Apache Spark还在Databricks运行时进行了高度优化,以提供读取时的快速聚合。通过使用我们的本地分区逻辑(按日期)以及适用于国家和行业的z顺序索引,可以实现高性能。在选择国家或行业级别的特定数据切片时,将充分利用这个额外的索引,从而大大减少在VaR聚合之前需要读取的数据量。
通过使用国家和行业作为VALUE_AT_RISK方法的分组参数,我们可以轻松地调整上面的SQL代码,以便对风险暴露有一个更细粒度和描述性的视图。由此产生的数据集可以使用Databricks笔记本进行可视化,并可以进一步细化,以了解这些国家对我们整体风险价值的确切贡献。
在这个例子中,秘鲁似乎对我们整体风险敞口的贡献最大。在秘鲁的行业级别上查看相同的SQL代码,我们可以调查跨行业风险的贡献。
2020年3月,秘鲁的主要风险敞口似乎与采矿业有关,这一比例接近60%。为应对新冠病毒而实施的越来越严格的封锁措施,影响了铜、黄金和白银生产中心秘鲁的采矿项目。源).
扩展本文的范围,我们可能想知道是否可以更早地使用替代数据,特别是使用事件、位置和基调的全球数据库(GDELT).我们在下面的图表中报告秘鲁采矿业的媒体报道,通过简单的移动平均线对积极和消极趋势进行颜色编码。
这清楚地显示了2月初的积极趋势,即在观察到的股票波动的15天之前,这可能是风险增加的早期迹象。这一分析强调了风险价值计算现代化的重要性,用来自替代数据的外部因素来补充历史数据。
模型,val
为了应对2008年金融危机,巴塞尔银行监管委员会又制定了一套措施。1天VaR 99结果将与每日损益进行比较。每季度使用最近250天的数据进行回测。根据在此期间所经历的超标次数,VaR测量被分为三个彩色区域之一。
水平 | 阈值 | 结果 |
---|---|---|
绿色 | 最多4个超限 | 没有特别的担忧 |
黄色的 | 最多可达9级 | 监测要求 |
红色的 | 超过10次 | VaR措施有待改进 |
的风险价值
根据我们前面定义的聚合函数,我们可以在整个投资组合中提取每日的风险价值。由于我们的聚合风险价值数据集很小(包含2年的历史,即365 x 2个数据点),我们的策略是收集每日VaR并将其广播到更大的数据集,以避免不必要的混乱。有关AS-OF功能的更多详细信息,请参见博客民主化金融时间序列分析。
我们通过一个简单的用户定义函数检索与实际收益最接近的风险价值,并执行250天的滑动窗口来提取连续的每日违规。
根据《巴塞尔协议III》框架,我们可以观察到从2月起连续发生了17起违规行为,需要向监管机构报告。随着时间的推移,同样的情况也可以反映在图表上。
在2020年初,我们观察到一段不寻常的稳定时期,这似乎预示着我们现在面临的困难时期。我们还可以观察到,我们的风险价值正在急剧下降(随着我们整体风险的增加),但似乎没有实际收益下降得那么快。我们的风险价值计算的这种明显滞后是由于我们的模型需要90天的波动观察期。
在MLflow上注册了模型后,我们可能希望将这些结果记录为为审计和监管提供证据,为他们提供我们风险模型的真实性、准确性、技术背景(为了透明度)以及最坏情况的单一来源如这里所示。
强调VAR
引入“压力风险值”有助于减轻我们今天面临的风险,将最糟糕的交易日作为我们持续计算的一部分。然而,这并不能改变这样一个事实,即整个方法仅基于历史数据,无法应对新出现的威胁所导致的实际波动。事实上,尽管有复杂的“压力VaR”模型,但银行已不再具备在历史不再重演的所谓“前所未有的时代”运营的能力。因此,正如英国《金融时报》下面的文章所报道的那样,大多数顶级银行目前都报告其风险价值计算严重违规。
华尔街银行的交易风险飙升至2011年以来的最高水平
根据英国《金融时报》对银行监管申报文件中披露的季度VaR高点的分析,今年头3个月,华尔街五大银行的总“风险价值”(VaR)飙升至34个季度以来的最高水平。“风险价值”衡量的是它们潜在的每日交易损失
https://www.ft.com/content/7e64bfbc-1309-41ee-8d97-97d7d79e3f57?shareType=nongift
前瞻性的方法
如前所述,现代风险和投资组合管理实践不应该仅仅基于历史回报,还必须包含当今可用的各种信息,在蒙特卡罗模拟中引入冲击,并在它们展开时增加现实生活中的新闻事件。例如,白皮书从阿特金斯等人描述了如何利用金融新闻比收盘价更好地预测股票市场波动。正如上面秘鲁的例子所表明的那样,使用替代数据可以极大地提高风险分析师的智力,使他们对现代经济有一个更具描述性的视角,使他们能够更好地实时理解和应对外生冲击。
结论
理解和降低风险是任何金融服务机构的首要任务。然而,如今的银行仍在努力应对其业务面临的新风险和威胁。受本地基础设施和遗留技术限制的困扰,银行直到最近才拥有有效构建现代风险管理实践的工具。幸运的是,基于云原生基础设施支持的开源技术,目前存在更好的替代方案。
银行可以通过迁移到云端并采用Databricks的统一数据分析方法来实现风险管理实践的现代化。此外,借助Databricks的力量,银行可以收回对数据的控制权(将数据视为资产,而不是成本),并通过使用替代数据来丰富他们对现代经济的看法,以便朝着前瞻性和更灵活的风险管理和投资决策的方向发展。
使风险管理方法现代化:下一步
如果您想了解统一数据分析如何将数据科学、业务分析和工程结合在一起,以加速您的数据和ML工作,请查看按需研讨会-使用Apache Spark.™统一数据管道、业务分析和机器学习
如果您准备加速风险管理实践的现代化,请尝试以下VaR和风险管理笔记本:
//www.neidfyre.com/notebooks/00_context.html
//www.neidfyre.com/notebooks/01_market_etl.html
//www.neidfyre.com/notebooks/02_model.html
//www.neidfyre.com/notebooks/03_monte_carlo.html
//www.neidfyre.com/notebooks/04_var_aggregation.html
//www.neidfyre.com/notebooks/05_alt_data.html
//www.neidfyre.com/notebooks/06_backtesting.html