AWS 서비스를 사용하여 위험 가치(VaR) 계산 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS 서비스를 사용하여 위험 가치(VaR) 계산

작성자: Sumon Samanta(AWS)

환경: PoC 또는 파일럿

기술: 분석, 서버리스

AWS 서비스: Amazon Kinesis Data Streams, AWS Lambda, Amazon SQS, Amazon ElastiCache

요약

이 패턴은 AWS 서비스를 사용하여 위험 값(VaR) 계산 시스템을 구현하는 방법을 설명합니다. 온프레미스 환경에서 대부분의 VaR 시스템은 대규모의 전용 인프라와 사내 또는 상용 그리드 스케줄링 소프트웨어를 사용하여 배치 프로세스를 실행합니다. 이 패턴은 AWS 클라우드에서 VaR 처리를 처리할 수 있는 간단하고 안정적이며 확장 가능한 아키텍처를 제공합니다. Amazon Kinesis Data Streams를 스트리밍 서비스로, Amazon Simple Queue Service(Amazon SQS)를 관리형 대기열 서비스로, Amazon을 캐싱 서비스로, AWS Lambda를 사용하여 주문을 처리하고 위험을 계산하는 서버리스 아키텍처 ElastiCache 를 구축합니다.

VaR은 트레이더와 위험 관리자가 포트폴리오의 잠재적 손실을 특정 신뢰 수준 이상으로 추정하는 데 사용하는 통계 지표입니다. 대부분의 VaR 시스템에는 많은 수의 수학적 및 통계적 계산을 실행하고 결과를 저장하는 작업이 포함됩니다. 이러한 계산에는 상당한 컴퓨팅 리소스가 필요하므로 VaR 배치 프로세스를 더 작은 컴퓨팅 작업 세트로 나누어야 합니다. 대규모 배치를 작은 작업으로 분할하는 것은 이러한 작업이 대부분 독립적이기 때문에 가능합니다. 즉, 한 작업의 계산이 다른 작업에 종속되지 않습니다. 

VAR 아키텍처의 또 다른 중요한 요구 사항은 컴퓨팅 확장성입니다. 이 패턴은 컴퓨팅 부하에 따라 자동으로 규모를 늘리거나 줄이는 서버리스 아키텍처를 사용합니다. 배치 또는 온라인 컴퓨팅 수요를 예측하기 어려우므로 서비스 수준 계약()에서 부과한 타임라인 내에서 프로세스를 완료하려면 동적 조정이 필요합니다SLA. 또한 비용 최적화된 아키텍처는 해당 리소스의 작업이 완료되는 즉시 각 컴퓨팅 리소스를 스케일 다운할 수 있어야 합니다. 

AWS 서비스는 확장 가능한 컴퓨팅 및 스토리지 용량, 비용 최적화 방식으로 처리하기 위한 분석 서비스, 위험 관리 워크플로를 실행하는 다양한 유형의 스케줄러를 제공하기 때문에 VaR 계산에 적합합니다. 또한 에서 사용하는 컴퓨팅 및 스토리지 리소스에 대해서만 비용을 지불합니다AWS.

사전 조건 및 제한 사항

사전 조건 

  • 활성 상태의 AWS 계정.

  • 입력 파일(비즈니스 요구 사항에 따라 다름). 일반적인 사용 사례에는 다음과 같은 입력 파일이 포함됩니다.

    • 시장 데이터 파일(VaR 계산 엔진에 입력)

    • 거래 데이터 파일(거래 데이터가 스트림을 통해 제공되는 경우 제외).

    • 구성 데이터 파일(모델 및 기타 정적 구성 데이터)

    • 계산 엔진 모델 파일(정량적 라이브러리)

    • 시계열 데이터 파일(지난 5년간의 주가와 같은 과거 데이터용)

  • 시장 데이터 또는 기타 입력이 스트림을 통해 들어오는 경우 Amazon Kinesis Data Streams가 설정하고 스트림에 쓰도록 구성된 Amazon Identity and Access Management(IAM) 권한이 설정됩니다. 

이 패턴은 트레이딩 시스템에서 Kinesis 데이터 스트림으로 거래 데이터를 쓰는 아키텍처를 구축합니다. 스트리밍 서비스를 사용하는 대신, 작은 배치 파일에 거래 데이터를 저장하여 Amazon Simple Storage Service(S3) 버킷에 저장한 다음, 이벤트를 간접적으로 호출하여 데이터 처리를 시작할 수 있습니다.

제한 사항

  • Kinesis 데이터 스트림 시퀀싱은 각 샤드에서 보장되므로 여러 샤드에 작성된 거래 주문은 쓰기 작업과 동일한 순서로 전달되지 않을 수 있습니다.

  • AWS Lambda 런타임 제한은 현재 15분입니다. (자세한 내용은 Lambda 섹션을 FAQ참조하세요.)

아키텍처

대상 아키텍처

다음 아키텍처 다이어그램은 위험 평가 시스템의 AWS 서비스 및 워크플로를 표시합니다.

AWS 서비스가 포함된 VaR 계산 시스템

다이어그램은 다음을 보여 줍니다.

  1. 주문 관리 시스템에서 거래가 유입됩니다.

  2. 티켓 위치 네팅 Lambda 함수는 주문을 처리하고 각 티커에 대한 통합 메시지를 Amazon 의 위험 대기열에 기록합니다SQS.

  3. 위험 계산 엔진 Lambda 함수는 Amazon 의 메시지를 처리하고SQS, 위험 계산을 수행하고, Amazon 의 위험 캐시에서 VaR 손익(PnL ) 정보를 업데이트합니다 ElastiCache.

  4. 읽기 ElastiCache 데이터 Lambda 함수는 에서 위험 결과를 검색 ElastiCache 하여 데이터베이스 및 S3 버킷에 저장합니다.

이러한 서비스와 단계에 대한 자세한 내용은 에픽 섹션을 참조하세요.

자동화 및 규모 조정

AWS 클라우드 개발 키트(AWSCDK) 또는 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 클라우드에서 분산 인메모리 캐시 환경을 설정, 관리 및 확장하는 데 도움이 됩니다.

  • Amazon Kinesis Data Streams를 사용하여 대규모 데이터 레코드 스트림을 실시간으로 수집하고 처리할 수 있습니다.

  • AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.

  • Amazon Simple Queue Service(Amazon SQS)는 분산 소프트웨어 시스템 및 구성 요소를 통합하고 분리하는 데 도움이 되는 안전하고 내구성이 뛰어나며 사용 가능한 호스팅 대기열을 제공합니다.

  • Amazon Simple Storage Service(Amazon S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

code

이 패턴은 AWS 클라우드의 VaR 시스템에 대한 예제 아키텍처를 제공하고 VaR 계산에 Lambda 함수를 사용하는 방법을 설명합니다. Lambda 함수를 생성하려면 Lambda 설명서의 코드 예제를 참조하세요. 도움이 필요한 경우 AWS 전문 서비스 에 문의하세요.

모범 사례

  • 각 VaR 컴퓨팅 작업을 최대한 작고 가볍게 유지합니다. 각 컴퓨팅 작업에서 서로 다른 수의 거래를 실험하여 어떤 것이 컴퓨팅 시간과 비용에 가장 최적화되어 있는지 확인해 보세요.

  • 재사용 가능한 객체를 Amazon 에 저장합니다 ElastiCache. Apache Arrow와 같은 프레임워크를 사용하여 직렬화 및 역직렬화를 줄이세요.

  • Lambda의 시간 제한을 고려해 보세요. 컴퓨팅 작업이 15분을 초과할 것으로 생각되면 Lambda 시간 초과가 발생하지 않도록 작은 작업으로 나눕니다. 이것이 불가능한 경우 AWS Fargate, Amazon Elastic Container Service(AmazonECS) 및 Amazon Elastic Kubernetes Service(Amazon)를 사용하는 컨테이너 오케스트레이션 솔루션을 고려할 수 있습니다EKS.

에픽

작업설명필요한 기술

거래 작성을 시작합니다.

신규, 정산 또는 부분 정산 거래가 주문 관리 시스템에서 리스크 스트림으로 기록됩니다. 이 패턴은 Amazon Kinesis를 관리형 스트리밍 서비스로 사용합니다. 거래 주문 티커의 해시는 여러 샤드에 거래 주문을 보내는 데 사용됩니다.

Amazon Kinesis
작업설명필요한 기술

Lambda로 위험 처리를 시작합니다.

새 주문에 대해 AWS Lambda 함수를 실행합니다. 보류 중인 거래 주문 수에 따라 Lambda가 자동으로 규모를 조정합니다. 각 Lambda 인스턴스에는 하나 이상의 명령이 있으며 Amazon 에서 각 티커의 최신 위치를 검색합니다 ElastiCache. (다른 금융 파생 제품의 CUSIP ID, 곡선 이름 또는 인덱스 이름을 키로 사용하여 에서 데이터를 저장하고 검색할 수 있습니다 ElasticCache.) 에서 ElastiCache총 위치(수량)와 키-값 페어 <ticker , 순 위치 >, 여기서 순 위치가 조정 인자인 경우 각 티커에 대해 한 번 업데이트됩니다. 

Amazon Kinesis , AWS Lambda, Amazon ElastiCache
작업설명필요한 기술

통합 메시지를 위험 대기열에 기록합니다.

메시지를 대기열에 기록합니다. 이 패턴은 AmazonSQS을 관리형 대기열 서비스로 사용합니다. 단일 Lambda 인스턴스는 언제든지 미니 거래 주문 배치를 가져올 수 있지만 Amazon 에 각 티커에 대해 단일 메시지만 씁니다SQS. 스케일링 팩터는 (기존 순 포지션 + 현재 포지션) / 기존 순 포지션과 같이 계산됩니다.

Amazon SQS, AWS Lambda
작업설명필요한 기술

위험 계산을 시작합니다.

리스크 엔진 Lambda에 대한 Lambda 함수가 간접적으로 호출됩니다. 각 위치는 단일 Lambda 함수에 의해 처리됩니다. 그러나 최적화를 위해 각 Lambda 함수는 Amazon 에서 여러 메시지를 처리할 수 있습니다SQS.

Amazon SQS, AWS Lambda
작업설명필요한 기술

위험 캐시를 검색 및 업데이트합니다.

Lambda는 에서 각 티커의 현재 순 위치를 검색합니다 ElastiCache. 또한 에서 각 티커에 대한 VaR 손익(PnL ) 배열을 검색합니다 ElastiCache. 

PnL 배열이 이미 있는 경우 Lambda 함수는 배열과 VaR을 넷팅 Lambda 함수가 작성한 Amazon SQS 메시지에서 나오는 스케일로 업데이트합니다. PnL 배열이 에 없는 경우 시뮬레이션된 티커 가격 시리즈 데이터를 사용하여 ElasticCache새 PnL 및 VaR이 계산됩니다.

Amazon SQS, AWS Lambda, Amazon ElastiCache
작업설명필요한 기술

위험 결과를 저장합니다.

에서 VaR 및 PnL 번호가 업데이트되면 ElastiCache5분마다 새 Lambda 함수가 호출됩니다. 이 함수는 에서 저장된 모든 데이터를 읽고 Aurora My SQL-Compatible 데이터베이스와 S3 버킷에 ElastiCache 저장합니다.

AWS Lambda, Amazon ElastiCache

관련 리소스