本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS服務計算有風險的價值 VaR)
由 Sumon Samanta 建立 (AWS)
環境:PoC 或試行 | 技術:分析;無伺服器 | AWS 服務:Amazon Kinesis Data Streams;AWSLambda;AmazonSQS;Amazon ElastiCache |
Summary
此模式說明如何使用 AWS服務實作具有風險值 (VaR計算系統。在內部部署環境中,大多數 VaR 系統使用大型專用基礎設施和內部或商業網格排程軟體來執行批次程序。此模式提供簡單、可靠且可擴展的架構,以處理 AWS Cloud 中的 VaR 處理。它建立無伺服器架構,使用 Amazon Kinesis Data Streams 作為串流服務、Amazon Simple Queue Service (Amazon SQS) 作為受管佇列服務、Amazon ElastiCache 作為快取服務,以及 AWS Lambda 來處理訂單和計算風險。
VaR 是一種統計指標,交易者和風險經理用來估計其投資組合中超出特定可信度水平的潛在損失。大多數 VaR 系統涉及執行大量數學和統計計算,並儲存結果。這些計算需要大量的運算資源,因此 VaR 批次程序必須分成較小的運算任務集。可以將大批次分割為較小的任務,因為這些任務大部分是獨立的 (也就是說,一個任務的計算不依賴其他任務)。
VaR 架構的另一項重要需求是運算可擴展性。此模式使用無伺服器架構,可根據運算負載自動擴展或擴展。由於批次或線上運算需求難以預測,因此需要動態擴展才能在服務層級協議 () 規定的時間內完成程序SLA。此外,成本最佳化的架構應該能在資源上的任務完成後,立即縮減每個運算資源。
AWS 服務非常適合 VaR 計算,因為它們提供可擴展的運算和儲存容量、用於以成本最佳化方式處理的分析服務,以及執行風險管理工作流程的不同類型排程器。此外,您只需為在 上使用的運算和儲存資源付費AWS。
先決條件和限制
先決條件
作用中的 AWS 帳戶。
輸入檔案,這取決於您的業務需求。典型的使用案例涉及下列輸入檔案:
市場資料檔案 (輸入 VaR 計算引擎)
交易資料檔案 (除非交易資料透過串流)。
組態資料檔案 (模型和其他靜態組態資料)
計算引擎模型檔案 (定量程式庫)
時間序列資料檔案 (適用於過去五年的股票價格等歷史資料)
如果市場資料或其他輸入透過串流進入,則設定 Amazon Kinesis Data Streams,以及設定寫入串流的 Amazon Identity and Access Management (IAM) 許可。
此模式會建置一個架構,其中交易資料會從交易系統寫入 Kinesis 資料串流。您可以不使用串流服務,將交易資料儲存在小型批次檔案中、將其存放在 Amazon Simple Storage Service (Amazon S3) 儲存貯體中,並叫用事件以開始處理資料。
限制
每個碎片都保證 Kinesis 資料串流排序,因此寫入多個碎片的交易訂單不保證會以與寫入操作相同的順序交付。
AWS Lambda 執行時間限制目前為 15 分鐘。(如需詳細資訊,請參閱 Lambda FAQ
。)
架構
目標架構
下列架構圖顯示風險評估系統的AWS服務和工作流程。
此圖展示了以下要點:
從訂單管理系統交易串流。
票證位置淨額結算 Lambda 函數會處理訂單,並將每個標記的合併訊息寫入 Amazon 中的風險佇列SQS。
風險計算引擎 Lambda 函數會處理來自 Amazon 的訊息SQS、執行風險計算,以及更新 Amazon 中風險快取中的 VaR 損益 (PnL) 資訊 ElastiCache。
讀取 ElastiCache 資料 Lambda 函數會從 擷取風險結果, ElastiCache 並將其存放在資料庫和 S3 儲存貯體中。
如需這些服務和步驟的詳細資訊,請參閱 Epics 章節。
自動化和擴展
您可以使用 AWS 雲端開發套件 (AWS CDK) 或 AWS CloudFormation 範本來部署整個架構。此架構可以同時支援批次處理和當日 (即時) 處理。
擴展已內建於 架構中。隨著更多交易寫入 Kinesis 資料串流並等待處理,可以叫用其他 Lambda 函數來處理這些交易,然後在處理完成後縮減規模。透過多個 Amazon SQS 風險計算佇列進行處理也是一個選項。如果需要跨佇列嚴格排序或合併,則無法平行處理處理。不過,對於 end-of-the天數批次或迷你天數內批次,Lambda 函數可以平行處理,並將最終結果儲存在 中 ElastiCache。
工具
AWS 服務
Amazon Aurora My SQL-Compatible Edition 是完全受管的 My SQL相容關聯式資料庫引擎,可協助您設定、操作和擴展我的SQL部署。此模式使用 MySQL 作為範例,但您可以使用任何RDBMS系統來存放資料。
Amazon ElastiCache 可協助您在 AWS Cloud 中設定、管理和擴展分散式記憶體內快取環境。
Amazon Kinesis Data Streams 可協助您即時收集和處理大量資料記錄。
AWS Lambda 是一種運算服務,可協助您執行程式碼,而不需要佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需支付您使用的運算時間。
Amazon Simple Queue Service (Amazon SQS) 提供安全、耐用且可用的託管佇列,可協助您整合和解耦分散式軟體系統和元件。
Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。
Code
此模式為 AWS Cloud 中的 VaR 系統提供範例架構,並說明如何使用 Lambda 函數進行 VaR 計算。若要建立 Lambda 函數,請參閱 Lambda 文件 中的程式碼範例。如需協助,請聯絡 AWS Professional Services。
最佳實務
讓每個 VaR 運算任務盡可能小且輕量。實驗每個運算任務中的交易數量不同,以查看哪個交易最適合運算時間和成本。
在 Amazon 中存放可重複使用的物件 ElastiCache。使用 Apache Arrow 之類的架構來減少序列化和還原序列化。
考慮 Lambda 的時間限制。如果您認為運算任務可能超過 15 分鐘,請嘗試將其分解為較小的任務,以避免 Lambda 逾時。如果無法做到這一點,您可以考慮使用 AWS Fargate、Amazon Elastic Container Service (Amazon ECS) 和 Amazon Elastic Kubernetes Service (Amazon ) 的容器協調解決方案EKS。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
開始撰寫交易。 | 新的、已結算或部分結算的交易會從訂單管理系統寫入風險串流。此模式使用 Amazon Kinesis 作為受管串流服務。交易委託單代號雜湊用於跨多個碎片下達交易委託。 | Amazon Kinesis |
任務 | 描述 | 所需的技能 |
---|---|---|
使用 Lambda 開始風險處理。 | 為新訂單執行 AWS Lambda 函數。根據待處理交易訂單的數量,Lambda 會自動擴展規模。每個 Lambda 執行個體都有一或多個訂單,並從 Amazon 擷取每個代號的最新位置 ElastiCache。(您可以使用其他金融衍生產品的 CUSIP ID、曲線名稱或索引名稱作為金鑰,以存放和擷取來自 的資料 ElasticCache。) 在 中 ElastiCache,每個標記的總位置 (數量) 和鍵值對 <ticker ,淨位置 >,其中淨位置是縮放係數,會更新一次。 | Amazon Kinesis 、AWSLambda、Amazon ElastiCache |
任務 | 描述 | 所需的技能 |
---|---|---|
將合併的訊息寫入風險佇列。 | 將訊息寫入佇列。此模式使用 Amazon SQS作為受管佇列服務。單一 Lambda 執行個體可能在任何指定時間取得一批小型交易訂單,但只會將每個代號的單一訊息寫入 Amazon SQS。系統會計算縮放係數: (舊淨位置 + 目前位置) / 舊淨位置 。 | Amazon SQS、AWSLambda |
任務 | 描述 | 所需的技能 |
---|---|---|
開始風險計算。 | 叫用風險引擎 lambda 的 Lambda 函數。每個位置都由單一 Lambda 函數處理。不過,為了最佳化目的,每個 Lambda 函數都可以處理來自 Amazon 的多個訊息SQS。 | Amazon SQS、AWSLambda |
任務 | 描述 | 所需的技能 |
---|---|---|
擷取和更新風險快取。 | Lambda 從 擷取每個標記的目前淨位置 ElastiCache。它也會從 擷取每個標記的 VaR 損益 PnL) 陣列 ElastiCache。 如果 PnL 陣列已存在,Lambda 函數會使用 Amazon SQS 訊息的規模更新陣列和 VaR,該規模來自網路 Lambda 函數編寫的 Amazon 訊息。如果 PnL 陣列不在 中 ElasticCache,則新的 PnL 和 VaR 會使用模擬交易價格序列資料計算。 | Amazon SQS、AWSLambda、Amazon ElastiCache |
任務 | 描述 | 所需的技能 |
---|---|---|
儲存風險結果。 | 在 中更新 VaR 和 PnL 號碼後 ElastiCache,每五分鐘會叫用新的 Lambda 函數。此函數會從 Aurora My SQL-Compatible 資料庫 ElastiCache 和 S3 儲存貯體讀取所有儲存的資料,並將其儲存在其中。 | AWS Lambda,Amazon ElastiCache |