云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云数据库_文件存储安全_企业级

小七 141 0

风险管理现代化第1部分:流数据摄取、快速模型开发和大规模蒙特卡罗模拟

在过去几年里,金融服务部门,特别是银行业内部的风险管理变得越来越复杂。首先,新的框架(比如FRTB)正在被引入,这些框架可能需要巨大的计算能力和分析多年历史数据的能力。与此同时,监管者要求他们监管的银行提高透明度和解释力。最后,新技术和商业模式的引入意味着对健全风险治理的需求空前高涨。然而,银行业有效满足这些需求的能力并非易事。依赖内部基础设施的传统银行已无法有效地管理风险。银行必须摒弃传统技术计算效率低下的问题,建立一种灵活的现代风险管理实践,能够通过使用数据和先进的分析方法对市场和经济波动作出快速反应。最近的经验表明,随着新威胁的出现,历史数据和聚合风险模型很快就会失去其预测值。风险分析师必须用其他数据集来扩充传统数据,以便探索新的方法来识别和量化业务面临的风险,无论是规模还是实时。在本博客中,我们将演示如何通过使用Databricks统一数据分析平台(Delta Lake、Apache SparkTM和MLflow)的各种组件,使传统的风险价值(VaR)计算现代化,从而实现更灵活、更具前瞻性的风险管理方法。第一系列笔记本将涵盖多种数据工程和数据科学挑战,为有效实现风险管理实践的现代化,必须解决这些挑战:使用Delta Lake统一查看您的市场数据利用MLflow作为模型开发和部署的交付工具利用apachespark进行大规模的蒙特卡罗模拟分发第二篇博客文章将介绍如何有效地对蒙特卡罗模拟进行切分和切分,以便对风险管理采取更灵活和前瞻性的方法,这篇文章更侧重于风险分析师的角色。利用Delta Lake实现数据管理现代化随着大数据和基于云的技术的兴起,IT领域在过去十年发生了巨大的变化。然而,大多数金融服务机构仍然依赖大型机和非分布式数据库进行核心风险操作,如VaR计算,并且只将部分下游流程转移到现代数据湖和云基础设施。因此,银行落后于技术曲线,它们目前的风险管理做法已不足以适应现代经济。风险管理的现代化始于数据。具体来说,通过改变看待数据的角度:不是作为一种成本,而是作为一种资产。旧方法:当数据被视为一种成本时,金融服务机构限制了风险分析师探索"假设"情景的能力,并将其聚合的数据仓库限制为仅满足预定义的风险策略。随着时间的推移,为了适应不断变化的需求,工程师们在已经脆弱的工作流程的基础上,对新的流程进行分支,并创建新的聚合视图。自相矛盾的是,将数据作为一种低成本商品保存在房地产上的持续努力导致了一个更脆弱的生态系统,因此总体上维护成本更高。失败的进程(在下面注释为X符号)有太多的下游影响,以保证数据的及时性和可靠性。因此,对于市场风险的日内(和可靠的)观点变得越来越复杂,而且考虑到下图中所示的所有移动组件和相互依赖性,成本难以实现。现代方法:当数据被视为一种资产时,组织会接受数据的多功能性,服务于多个用例(如风险价值和预期短缺),并支持各种特殊分析(如了解特定国家的风险敞口)。风险分析师不再局限于狭隘的风险视野,可以采用更灵活的方法进行风险管理。通过统一流和批处理ETL,确保ACID合规性和架构实施,Delta Lake为您的data Lake带来性能和可靠性,通过其青铜、银色和金色层逐步提高数据的质量和相关性,并在操作流程和分析数据之间架起桥梁。在这个演示中,我们评估了拉丁美洲股票投资组合的风险水平,该投资组合由多个行业的40个工具组成,将所有回报存储在一个集中的Delta-Lake表中,该表将驱动我们所有的风险价值计算(见第2部分演示)。在这个演示中,我们使用pythonyfinance库访问Yahoo finance的每日收盘价。在现实生活中,人们可以直接从源系统获取市场数据(例如从大型机捕获的更改数据)到Delta-Lake表,将原始信息存储在Bronze表上,并在Silver表上实时存储经过策划/验证的数据。在三角洲湖的核心数据可用的情况下,我们应用一个简单的窗口函数来计算每日日志回报,并将结果输出回一个黄金表,以便进行风险建模和分析。@自定义项("双精度")def compute_return(首先,关闭):回流浮子(np.日志(关闭/第一个)窗口=窗口.分区依据('ticker').orderBy('date').rowsBetween(-1,0)火花\.阅读\.table(股票数据银)\.withColumn("first",F.first('close').over(window))\.withColumn("return",计算\u return('first','close'))\.select('date','ticker','return').写入\.格式("delta")\.mode("覆盖")\.saveAsTable(股票数据黄金)在下面的例子中,我们展示了在哥伦比亚经营的金融服务公司AVAL(Grupo AVAL Acciones y Valores S S.a)的投资数据。鉴于其股价在2020年3月后的预期下跌,我们可以评估其对我们整体风险投资组合的影响。利用MLFlow简化模型开发虽然定量分析并不是一个新概念,但最近数据科学的兴起和数据量的爆炸性增长揭示了银行运作模型的主要低效性。在没有任何行业标准的情况下,数据科学家通常会尽最大努力进行操作。这通常意味着针对单个节点上的数据样本对模型进行培训,并在整个开发过程中手动跟踪模型,从而导致较长的发布周期(可能需要6到12个月才能将模型交付到生产环境中)。长的模型开发周期阻碍了他们快速适应新出现的威胁和动态地减轻相关风险的能力。在这种模式下,金融服务机构面临的主要挑战是减少模型开发到生产的时间,而不是以牺牲治理和法规为代价,也不是为更加脆弱的数据科学生态系统做出贡献MLflow是通过为模型开发带来不变性和透明性来管理机器学习生命周期的事实标准,但并不局限于AI。银行对模型的定义通常相当宽泛,包括从Excel宏到基于规则的系统或最先进的机器学习的任何财务模型,所有这些模型都可以从Databricks统一数据分析平台中MLflow提供的中央模型注册表中受益。复制模型开发在这个例子中,我们想训练一个新的模型,在给定的市场指标(如标准普尔500指数、原油和国债)下预测股票收益。我们可以检索"截至"数据,以确保模型的完整再现性和审计合规性。三角洲湖的这种能力通常被称为"时间旅行"。得到的数据集将在所有实验中保持一致,并且可以按原样访问以供审计之用。描述历史市场收益率;从市场中选择*返回截至'2020-05-04'的时间戳;从2的市场返回版本中选择*;为了在他们的模型中选择正确的特性,定量分析员经常在Spark和Pandas数据帧之间导航。我们在这里展示如何从pyspark切换到python上下文,以便提取市场因素的相关性。Databricks交互式笔记本电脑具有内置的可视化功能,并且完全支持Matplotlib、seaborn(或R的ggplot2)的使用。factor_returns_pd=因子_返回_东方达()factor_corr=因子_返回_局部腐蚀(method='spearman',分时段=12)假设我们的指标是不相关的(他们是)和预测我们的投资组合回报(他们可能),我们想记录这个图表作为我们成功实验的证据。这表明了内部审计、模型验证职能部门以及监管机构,模型探索是以最高质量标准进行的,其开发是以实证结果为导向的。mlflow.log_工件('/tmp)/相关性.png')并行训练模型随着投资组合中工具数量的增加,我们可能需要并行地训练模型。这可以通过一个简单的Pandas UDF函数实现,如下所示。为了方便起见(模型在现实生活中可能更复杂),我们希望训练一个简单的线性回归模型,并将所有模型系数聚合为一个n x m矩阵(n是工具的数量,m是来自我们市场因素的特征数)。架构=结构类型([StructField('ticker',StringType(),True),StructField('weights',ArrayType(FloatType()),True)])@熊猫(模式,PandasudType.GROUPED_映射)def列车型号(分组,pdf):X=np.数组(pdf["功能"])X=sm.add_常数(X,prepend=真)y=np.数组(pdf['return')型号=sm.OLS公司(y,X).fit()w_df=pd数据帧(数据)=[[模型参数]],列=['weights'])w_df['ticker']=组[0]返回w_df型号_df=x_火车.groupBy('ticker')。应用(列车模型)。toPandas()得到的数据集(每个模型的权重)可以很容易地收集回内存,并记录到MLflow中,作为后面实验的候选模型。在贝尔