양적 거래 (Quantitative trading) - 페이지 34

 

국내 거래 환경의 고수준 설계!


국내 거래 환경의 고수준 설계!

모두들 안녕! 제 이름은 Denis이고 "Close to AlgoTrading"을 보고 계십니다.

지난 비디오에서 우리는 알고리즘 거래 시스템의 일반적인 구조에 대해 논의했습니다. 오늘은 국내 거래 환경을 위한 간단한 고급 디자인을 만들고자 합니다.

환경에서 기대하는 것을 식별하는 것으로 시작하겠습니다. 우리는 미래에 새로운 전략과 데이터 소스를 추가할 수 있는 기능을 원합니다. 확장성은 중요합니다. 현재는 주식 시장에 초점을 맞추고 있지만 미래에는 암호화폐 거래에도 도전할 수 있기 때문입니다. 따라서 새로운 시장을 지원해야 합니다. 또한 시스템 내 구성 요소를 쉽게 변경할 수 있는 유연성이 필요합니다.

이제 거래 환경의 전반적인 구조를 살펴보겠습니다.

두 가지 주요 구성 요소는 데이터와 거래 시스템입니다. 또한 환경을 효과적으로 제어할 수 있는 사용자 인터페이스를 포함하고 싶습니다. 추가 블록으로 시뮬레이션 시스템 통합을 고려해 보겠습니다.

데이터 구성 요소는 전체 시스템을 구동합니다. 처음에는 브로커의 데이터와 하드 드라이브의 파일을 사용할 계획입니다. 그러나 나중에 다른 데이터베이스와 뉴스 대행사에 액세스하기로 결정할 수 있습니다. 우리는 여러 데이터 소스를 지원하기를 원하기 때문에 다양한 드라이버를 수용해야 합니다.

드라이버는 데이터 읽기 및 쓰기, 연결 열기 또는 닫기 등과 같은 간단한 기능을 제공합니다. 그러나 우리는 거래 시스템이 드라이버의 API와 직접 상호 작용하는 것을 원하지 않습니다. 이를 해결하기 위해 Data Handler 계층을 도입합니다.

데이터 핸들러는 드라이버와 직접 작업하고 데이터 직렬화, 역직렬화 및 특수 형식으로의 변환과 같은 논리 기능을 구현합니다. 일련의 데이터 핸들러가 있지만 여전히 애플리케이션 계층을 위한 통합 인터페이스가 필요합니다.

이러한 인터페이스를 제공하기 위해 Data Manager와 Order Manager를 소개합니다. Data Manager는 데이터 소스 작업을 위한 공통 인터페이스를 제공하고 Order Manager는 주문 실행을 위한 공통 인터페이스를 제공합니다. 두 인터페이스를 모두 활용함으로써 시스템은 다양한 데이터 소스 및 브로커 서비스에 액세스할 수 있습니다.

여기에 중요한 측면이 있습니다. 데이터 원본에 액세스하기 위한 공통 인터페이스를 제공하는 구성 요소를 정의합니다. 즉, 예를 들어 거래 시스템이 뉴스를 검색하려는 경우 소스가 브로커인지 데이터베이스인지에 관계없이 동일한 인터페이스를 사용합니다. 이 디자인은 데이터 공급자를 전환할 때 인터페이스가 변경되지 않도록 합니다. 따라서 애플리케이션의 기능을 방해하지 않고 새 데이터 소스를 추가하거나 브로커를 변경할 수 있습니다.

이제 데이터 처리 부분을 설계했으므로 데이터의 주요 사용자인 거래 시스템에 초점을 맞추겠습니다. 이전 동영상을 보셨다면 거래 시스템의 다섯 가지 블록인 알파 모델, 위험 모델, 거래 비용 모델, 포트폴리오 구성 모델 및 실행 모델에 익숙하실 것입니다. 이러한 블록은 Data Manager 및 Order Manager를 활용하여 데이터 및 브로커 서비스에 액세스합니다.

데이터 및 거래 시스템 구성 요소에 대해 설명했지만 이제 누가 모든 것을 제어할지 정의해야 합니다. 우리는 전체 시스템을 담당하는 구성 요소, 즉 기초 응용 프로그램이 필요합니다. 이 응용 프로그램은 시작 순서, 드라이버 및 구성 요소 초기화를 처리하고 기본 상태 시스템을 구현합니다.

기본 애플리케이션을 정의한 후 사용자 인터페이스를 고려해야 합니다. PC 인터페이스일 수도 있고 웹 인터페이스일 수도 있지만 일반적으로 프론트엔드와 백엔드를 분리하는 것이 좋습니다. 이를 달성하기 위해 GUI와 핵심 애플리케이션 사이에 통신 계층을 생성합니다.

또한 로거 구성 요소를 포함해야 합니다. 이 구성 요소는 로거 인터페이스를 구현하고 데이터베이스 또는 로그 파일에 로그를 저장합니다. 또한 웹 기반 모니터링 시스템을 활용하여 데이터베이스 서버에 직접 액세스하고 거기에서 데이터를 읽을 수 있는 환경을 추적할 수 있습니다. 프런트엔드 애플리케이션은 데이터 관리자를 사용하여 데이터에 액세스하고 주문 관리자를 사용하여 브로커 서비스와 상호 작용할 수 있습니다.

마지막으로 수동 주문 실행 가능성을 잊지 말자. 우리는 그 기능을 시스템에 통합할 수도 있습니다.

이번 영상에서는 시뮬레이션 환경에 대해 자세히 다루지는 않았지만 기존 시스템의 변경 없이 추가 브로커 서비스와 유사하게 구현할 수 있었습니다.

거래 환경의 설계를 보면 목표를 달성할 수 있다고 자신 있게 말할 수 있습니다. 애플리케이션을 별도의 도메인으로 나누고 인터페이스 계층을 통해 연결했습니다. 데이터 및 주문 관리자는 공통 인터페이스를 제공하여 리소스에 대한 액세스를 단순화합니다. 이 설계를 통해 데이터 공급업체 또는 브로커를 쉽게 변경하고 다른 사용자 인터페이스를 사용할 수 있습니다. 또한 전체 애플리케이션을 업데이트하지 않고도 시스템의 특정 부분을 변경할 수 있습니다.

오늘은 그게 다야. 제가 놓친 부분이 있거나 이 디자인에 대한 의견이 있으시면 의견을 남겨주시고 이 채널을 구독하는 것을 잊지 마세요. 다음 영상에서 만나요!

High-Level Design of a Homegrown Trading Environment!
High-Level Design of a Homegrown Trading Environment!
  • 2019.11.01
  • www.youtube.com
In this video I tried to create a high-level software design of a homegrown trading environment.You will see how we can split the system into different domai...
 

거래 환경 IB API - QT C++ - Flask - RL 모델. 작업 예제를 완료하십시오.


거래 환경 IB API - QT C++ - Flask - RL 모델. 작업 예제를 완료하십시오.

제 이름은 Denis이고 Close to Algo Trading에 오신 것을 환영합니다. 오늘 저는 이전 에피소드에서 논의한 모든 구성 요소가 실제 거래에서 어떻게 함께 작동하는지 보여줄 특별한 비디오를 가지고 있습니다. GitHub에서 모든 소스 코드를 찾아 직접 사용해 볼 수 있습니다.

이 데모에서는 Interactive Brokers API와 IBTrader라는 이전 프로젝트를 사용합니다. 저는 수년 전에 IBTrader 작업을 시작했지만 완료할 시간이 없었습니다. 하지만 지금은 프로젝트를 갱신하는 것을 고려하고 있습니다. 이 특별 프로젝트에 관심이 있으시면 이 비디오의 댓글 섹션에 알려주세요. 자, 그럼 이 비디오에서 우리가 할 일에 대해 알아봅시다. 강화 학습 환경 및 에이전트에 대한 간략한 업데이트 및 개요부터 시작하겠습니다. 그런 다음 Flask를 사용하여 모델을 배포하는 방법을 간단히 소개하겠습니다.

브로커에 연결하기 위해 Qt 애플리케이션을 사용할 것이므로 REST API를 사용하여 모델과 상호 작용해야 합니다. 비디오가 끝날 무렵에는 이러한 모든 부분이 어떻게 원활하게 함께 작동하는지 확인할 수 있습니다.

시작하기 전에 여기에서 논의된 개념을 더 잘 이해하기 위해 이전 비디오를 시청하는 것이 좋습니다. 이러한 비디오를 이미 본 적이 있다면 TF-Agent 라이브러리를 사용하여 RL 에이전트를 만드는 방법을 기억할 수 있습니다. 이 데모를 위해 에이전트와 환경을 모두 약간 변경했습니다. 이전에 사용한 것처럼 에이전트는 여전히 DQN이지만 이제 QRnnNetwork 대신 QNetwork를 사용합니다. 마찬가지로 환경을 단순화했습니다. 여러 날의 과거 데이터를 사용하는 대신 현재 날짜의 가격 관찰만 있습니다.

그러나 현재 관찰에만 의존하는 것은 이상적이지 않습니다. 이 문제를 해결하기 위해 우리는 관측을 하루에서 역사적인 3일을 포함하도록 변환할 것입니다. tf-agent 환경 패키지의 히스토리 래퍼를 사용하고 history_length 매개변수를 3으로 설정하여 이를 달성할 수 있습니다. 이제 환경의 관찰을 확인하면 세 가지 일반적인 관찰이 결합된 것을 알 수 있습니다. 각 관측치에는 거래량과 함께 OHLC 데이터(시가, 고가, 저가, 종가)가 포함됩니다.

일관된 범위를 보장하기 위해 몇 가지 변환을 수행했으며 이제 입력 데이터가 로그 가격 백분율 변경을 나타내야 합니다. 마지막으로 모델에 현재 날짜와 과거 두 날짜의 세 가지 관찰을 제공해야 합니다. 우리는 또한 지난날의 위치 상태를 기억해야 합니다. 에이전트가 훈련되면 매수, 매도, 건너뛰기 또는 포지션 닫기와 같은 행동을 예측할 수 있는 정책을 갖게 됩니다. 정책은 신경망을 사용하여 구현되며 직접 API를 사용하여 작업할 수 있습니다.

그러나 애플리케이션을 추천 모델과 긴밀하게 연결하고 싶지 않다면 어떻게 해야 할까요? 또는 모델이 Python으로 구현되어 있고 다른 애플리케이션에서 사용하고 싶다면 어떻게 해야 할까요? 이 문제를 해결하기 위해 Flask를 사용하여 모델을 소규모 웹 서비스로 배포할 수 있습니다. Flask는 Python으로 작성된 마이크로 웹 프레임워크입니다. 이 비디오를 위해 Flask를 선택한 이유는 간단하고 설정 시간이 많이 필요하지 않기 때문입니다. 또한 JSON을 사용하여 애플리케이션과 모델 간에 데이터를 전송할 수 있습니다.

Flask 애플리케이션을 디버깅하고 배포하기 위해 Dockerfile을 사용할 수 있습니다. Microsoft는 Dockerfile을 만드는 방법에 대한 좋은 자습서를 제공하므로 자세한 내용은 설명의 링크를 확인하십시오. Flask 애플리케이션에는 JSON 형식의 입력 데이터가 포함된 POST 요청을 처리하는 "predict"라는 경로가 있습니다. 응답도 JSON 형식입니다. JSON 데이터를 변환하고 예측을 위해 정책 모델에 전달하는 코드를 작성합니다.

이제 브로커에 연결하여 데이터를 수신하고 서버에 주문을 보내는 애플리케이션으로 이동하겠습니다. 응용 프로그램에서 직접 전략을 구현할 수 있지만 이 예에서는 그렇게 하지 않습니다. 대신 브로커에 연결되고 REST API를 사용하여 전략 및 작업 선택 모델과 통신하는 QtIBTrade 애플리케이션을 사용합니다. QtIBTrade는 C++를 사용하여 알고리즘 거래를 탐색하기 위해 얼마 전에 만든 Qt 기반 응용 프로그램입니다. 크로스 플랫폼이며 잘 문서화되어 있습니다.

그러나 QtIBTrade는 작업할 시간이 충분하지 않아 아직 개발 중입니다. 이 프로젝트에 대한 공동 작업에 관심이 있는 사람이 있으면 알려주거나 GitHub(설명에 제공된 링크)에서 코드를 확인하십시오.

이제 이러한 모든 구성 요소가 함께 작동하는 방식을 살펴보겠습니다. 먼저 Flask 애플리케이션을 시작해야 합니다. 디버그 모드에서 시작했으므로 포트 번호를 기억하고 Qt 애플리케이션에서 업데이트해야 합니다. 다음으로 IB 애플리케이션 또는 게이트웨이에 연결해야 합니다. "연결" 버튼을 클릭하기 전에 API가 활성화되어 있고 올바른 포트가 구성되어 있는지 확인하십시오.

모든 것이 설정되면 모델을 사용하는 테스트 애플리케이션을 시작할 수 있습니다. 보시다시피 5초마다 다른 가격 데이터로 서버에 요청을 보냅니다. 브로커로부터 가격 데이터를 받을 때마다 모델을 트리거하고 해당 조치를 다시 받습니다.

이 데모가 흥미로웠기를 바랍니다. 하셨다면 채널을 구독하시면 더 많은 영상을 보실 수 있습니다. 시청해주셔서 감사하고, 다음 영상에서 만나요!

Trading environment IB API - QT C++ - Flask - RL Model. Complete working example.
Trading environment IB API - QT C++ - Flask - RL Model. Complete working example.
  • 2021.02.21
  • www.youtube.com
This video contains example of the trading environment wich uses Interactive Brokers API (TWS or IB Gateway), QT C++ client and reinforcement learning agent ...
 

주식 포트폴리오를 백테스트하는 방법은 얼마나 쉽고 간단합니까?


주식 포트폴리오를 백테스트하는 방법은 얼마나 쉽고 간단합니까?

여러분, 안녕하세요! "Close to AlgoTrading"에 오신 것을 환영합니다. 저는 Denis입니다. 오늘 저는 다양한 포트폴리오를 백테스팅하기 위해 제가 개발한 매우 유용하고 간단한 프레임워크를 여러분과 공유하고 싶습니다. 이전 비디오 중 하나에서 논의한 초기 아이디어를 기반으로 합니다.

quantconnect에서 제공하는 것과 같이 더 강력한 구현을 사용할 수 있지만 추가 서비스에 의존하지 않고 아이디어를 테스트할 수 있는 로컬의 간단한 솔루션을 갖는 것이 항상 좋다고 생각합니다.

이 프레임워크의 핵심은 백테스팅 및 거래를 위한 Python 프레임워크인 Backtrader입니다. 저는 우리가 사용할 일반적인 재조정 전략을 구현했지만 프레임워크는 Backtrader의 세부 사항에 뛰어들지 않고도 다양한 아이디어를 테스트할 수 있는 방식으로 설계되었습니다.

이 프레임워크의 구조와 구성 요소를 자세히 살펴보겠습니다. 재조정 전략은 핵심 구성 요소이며 특정 구조를 따릅니다. 먼저 작업할 자산 세트를 선택해야 합니다. 이를 위해 선택 모델이라는 유니버스를 기반으로 선택 프로세스를 구현하는 모델이 있습니다. 선택한 자산이 있으면 알파 모델로 전달됩니다. 알파 모델은 알고리즘의 핵심이며 거래 신호를 생성합니다. 그런 다음 이러한 신호를 사용하여 포트폴리오를 구성합니다.

포트폴리오 구성 모델은 알파 모델에서 생성된 신호를 받아 자산 할당을 생성합니다. 이 할당은 키가 자산 티커이고 값이 가중치인 사전입니다. 초기 포트폴리오 구성 후 리밸런싱 단계로 이동합니다. 여기에서 이전 자산을 제거하거나 새 자산을 추가하거나 정의된 가중치에 따라 포트폴리오의 자산 양을 조정할 수 있습니다.

다음으로 위험 모델을 사용하여 몇 가지 위험 조건을 확인하려고 할 수 있습니다. 이 모델은 재조정 단계에서 출력을 수신하고 필요한 변경을 수행한 다음 실행 모델로 전달합니다. 실행 모델은 기본적으로 요청된 자산 수만큼 매수 또는 매도 주문을 합니다.

재조정 전략의 코드를 살펴보면 이러한 각 단계의 구현을 볼 수 있습니다. 선택 모델 전에 종가만 있는 데이터 프레임을 반환하는 함수를 호출합니다. 이 전략에서는 종가만 필요하기 때문입니다.

이제 프레임워크 내에서 모델 구현에 대해 간략하게 살펴보겠습니다. 선택 모델은 간단합니다. 주요 목적은 우리가 사용하는 모든 데이터가 유효한지 확인하기 위해 누락되거나 0인 가격이 있는 자산을 삭제하는 것입니다. 알파 모델은 단순하고 일반적인 모멘텀 전략입니다. 이 경우 모멘텀이 가장 높은 자산을 매수합니다. 할당 모델의 경우 모든 자산에 동일한 가중치를 할당하는 모델을 구현합니다.

마지막으로 재조정 모델은 할당된 가중치를 기반으로 간단한 재조정을 수행합니다. 모든 모델을 구현했으면 모델을 사용하는 방법을 살펴보겠습니다.

먼저 데이터가 필요합니다. 이 예에서는 현재 S&P 500 시세 목록을 유니버스로 사용하겠습니다. 2007년 1월부터 이러한 모든 주식에 대한 과거 가격 데이터를 다운로드합니다. 다음으로 구성을 채웁니다. 시가 및 종가만 사용하도록 지정하여 데이터 소스의 구조를 정의합니다. 다음날 시가를 기준으로 포지션을 열고 청산하기를 원하기 때문에 시가가 필요합니다.

또한 자산 목록, 벤치마크 티커, 시작 현금, 오픈 시 옵션 거래를 정의하고 작년을 기준으로 모멘텀을 계산하기 위한 알고리즘의 워밍업 기간을 설정합니다. 그런 다음 전략 구성을 만듭니다. 이 구성에서는 rebalanceDay 옵션을 22로 설정했습니다. 즉, 한 달에 한 번 포트폴리오를 재조정합니다. 자금 부족으로 인한 실행 오류를 방지하기 위해 예비 현금 매개변수도 있습니다.

다음으로 모든 모델과 해당 매개변수를 정의합니다. 백 테스트를 시작하기 전에 구성에 두 개의 데이터 세트를 할당해야 합니다. 하나는 모든 자산에 대한 데이터를 포함하고 다른 하나는 벤치마크 데이터를 포함합니다. 마지막으로 백테스트 기능을 호출하고 보고서가 생성될 때까지 기다릴 수 있습니다. 보고서는 quantstats 패키지를 사용하여 생성되며 많은 유용한 정보를 제공합니다.

내 GitHub 페이지에서 전체 코드를 찾을 수 있습니다. 링크는 설명에 제공됩니다.

오늘은 그게 다야. 시청해주셔서 감사하고 질문이나 의견이 있으시면 아래에 남겨주세요. 더 흥미로운 콘텐츠를 보려면 내 채널을 구독하는 것을 잊지 마세요.

How Easily And Simply to Backtest a Stock Portfolio
How Easily And Simply to Backtest a Stock Portfolio
  • 2022.06.20
  • www.youtube.com
The video describes the simple, but powerful, framework for backtesting the portfolio ideas. It is based on Backtrader, but to use it you don't need to know ...
 

시장을 이기는 방법. 모멘텀 및 포트폴리오 최적화


시장을 이기는 방법. 모멘텀 및 포트폴리오 최적화

여러분, 안녕하세요! 제 이름은 Denis이고 "Close to AlgoTrading"을 보고 계십니다.

이 짧은 비디오에서 우리는 두 가지 기본 포트폴리오 투자 전략인 수익률 모멘텀과 가격과 추세의 차이로서의 모멘텀에 대해 알아볼 것입니다. 또한 포트폴리오 최적화 방법이 투자 결과를 개선하는 데 어떻게 도움이 되는지 살펴보겠습니다.

모멘텀은 본질적으로 고정된 간격 동안 취해진 두 가격 간의 차이입니다. 속도 또는 변화율을 나타냅니다. 주식 시장의 맥락에서 모멘텀은 일일 수익률로 표현할 수 있습니다. 모멘텀 전략의 기본 개념은 간단합니다. 과거에 가격이 상승했다면 앞으로도 계속 상승할 가능성이 높습니다. 비교를 용이하게 하기 위해 모든 시장을 동일한 표기로 표현하는 것이 편리합니다.

주식 시장의 경우 모멘텀은 종종 오늘의 가격과 해당 이동 평균 값의 차이로 정의됩니다. 모멘텀이 커지면 가격이 이동 평균에서 더 멀어집니다. 반대로 모멘텀이 작아지면 가격 변동 속도가 느려지고 가격은 이동 평균에 가까워지거나 심지어 음의 방향으로 움직입니다.

이 두 가지 유형의 모멘텀을 구현하기 위해 이미 알파 모델을 만들었습니다. 이를 통해 다양한 매개변수로 테스트할 수 있습니다.

1년 동안의 모멘텀을 계산하고 모멘텀이 가장 높은 상위 10개 종목을 선택해 보겠습니다. 우리는 한 달에 한 번 포트폴리오를 재조정할 것이며 모든 자산은 균등하게 할당됩니다. 이제 구성을 복사하고 다른 유형의 모멘텀을 설정하겠습니다. 이러한 구성을 테스트에 추가하고 2005년부터 2015년까지의 기간 동안 백테스트할 수 있습니다.

두 전략 모두 유사한 변동성과 손실률을 나타내며 지수에 대한 투자를 능가하는 것을 볼 수 있습니다. 그러나 인덱스 보유에 비해 약간 더 많은 위험을 감수한다는 점에 유의하는 것이 중요합니다. 위험을 지수 수준으로 낮추기 위해 몇 가지 포트폴리오 최적화 방법을 사용해 볼 수 있습니다. 균등 할당 모델 대신 포트폴리오 최적화에 대한 이전 비디오에서 논의한 pyportfolioopt 패키지의 여러 최적화 방법을 구현하는 모델을 사용할 것입니다.

여기에서는 포트폴리오 최적화 할당 모델을 사용하도록 구성을 변경하는 방법을 보여 드리겠습니다. 잘 알려진 두 가지 방법인 CLA 및 HRP와 두 가지 더 구체적인 방법인 Efficient CVaR(Conditional Value at Risk) 및 Efficient CDaR(Conditional Drawdown at Risk)를 테스트합니다. 이러한 방법에 대한 자세한 내용은 공식 문서를 참조하십시오. 이러한 최적화 방법은 그다지 빠르지 않기 때문에 실행하는 데 다소 시간이 걸릴 수 있습니다. 백 테스팅이 완료될 때까지 참을성 있게 기다리자.

모든 방법이 결과를 향상시키는 것을 관찰할 수 있습니다. 위험 최적화의 조건부 가치를 기반으로 한 할당을 사용하는 초기 수익 모멘텀 전략은 손실률을 거의 12%까지 줄입니다. 동일한 전략과 조건부 손실 최적화 도구를 사용하면 수익률이 3% 향상됩니다. 할당 모델을 변경하는 것만으로도 결과가 크게 향상될 수 있음을 확인했습니다. 이 초기 전략을 향상시키는 다른 많은 방법이 있습니다. 더 중요한 것은 모멘텀을 사용하는 간단한 아이디어가 작동하고 시장을 능가한다는 것입니다. 몇 가지 간단한 단계만으로 구현할 수 있습니다.

오늘은 그게 다야. 다음 영상에서 만나요!

How to beat the Market. Momentum and Portfolio Optimization
How to beat the Market. Momentum and Portfolio Optimization
  • 2022.07.06
  • www.youtube.com
This video is a quick demonstration how to get a good investment result using the simple strategy. With few portfolio optimization methods we can achieve hig...
 

샤프 비율을 넘어서: 효과적인 거래 전략 평가 공개


샤프 비율을 넘어서: 효과적인 거래 전략 평가 공개

여러분, 안녕하세요! "Close to AlgoTrading"에 오신 것을 환영합니다. 오늘 우리는 흥미로운 거래 전략 평가의 세계를 탐구하고 있습니다. 우리는 샤프 비율이 인기가 있지만 항상 작업에 가장 적합한 도구가 아닐 수 있는 이유를 알아낼 것입니다.

이 비디오에서는 네 가지 주요 영역을 다룹니다. 먼저 샤프 비율을 정의하고 공식을 설명합니다. 그런 다음 Sharpe 비율의 한계에 대해 논의합니다. 셋째, Sortino 및 Calmar 비율을 대체 메트릭으로 소개합니다. 마지막으로 이러한 모든 메트릭을 사용하여 두 가지 가상 거래 전략을 비교할 것입니다. 그렇다면 샤프 비율은 무엇입니까? 노벨상 수상자 William F. Sharpe의 이름을 따서 명명되었으며, 위험을 조정한 후 무위험 자산과 비교하여 투자 성과를 측정합니다. 즉, 샤프 비율은 자산의 수익이 투자자가 감수한 위험에 대해 얼마나 잘 보상하는지를 특징짓는 것입니다.

샤프 비율의 공식은 다음과 같습니다. 샤프 비율 = (기대 수익률 - 무위험 비율) / 표준 편차.

기대수익률 8%, 무위험수익률 2%, 표준편차 15%인 전략을 생각해보자. 샤프 비율은 (8 - 2) / 15로 약 0.4입니다. 그러나 샤프 비율에는 고려해야 할 몇 가지 제한 사항이 있습니다. 첫째, 수익률이 정규 분포를 따른다고 가정합니다. 이는 종종 왜곡되거나 두꺼운 꼬리가 있는 비정규 분포를 나타내는 많은 거래 전략의 경우가 아닙니다. 이것은 샤프 비율을 사용할 때 잘못된 결과를 초래할 수 있습니다.

둘째, 샤프 비율은 작고 빈번한 이익을 창출하는 전략을 선호하며 이러한 이익이 비례적으로 확대될 수 있다고 가정합니다. 이 가정은 모든 유형의 전략, 특히 고주파 거래 전략에 적용되지 않을 수 있습니다. 결과적으로 고주파 거래 전략은 샤프 비율을 사용하여 평가할 때 더 성공적으로 나타날 수 있습니다. 셋째, 샤프 비율은 극단적인 사건이나 상당한 손실의 가능성을 나타내는 꼬리 위험을 명시적으로 설명하지 않습니다. 꼬리 위험이 더 높은 전략은 샤프 비율에 적절하게 반영되지 않을 수 있으며 잠재적으로 그러한 전략과 관련된 위험을 과소 평가할 수 있습니다.

이러한 제한을 감안할 때 트레이더는 종종 Sortino 비율 및 Calmar 비율과 같은 대체 메트릭으로 전환합니다. 이러한 메트릭은 추가 통찰력을 제공하고 Sharpe 비율의 일부 제한을 극복하는 데 도움이 될 수 있습니다. Sortino 비율은 하향 변동성만 고려하여 투자의 위험 조정 수익률을 측정합니다. 이는 일반적으로 무위험 수익률인 지정된 임계값 미만의 수익률 편차에 초점을 맞춥니다. 이 비율은 위험에 대한 보다 구체적인 평가를 제공하며 하방 위험에 대한 투자자의 일반적인 우려와 일치합니다.

반면 Calmar 비율은 연평균 수익률을 최대 손실률과 비교하여 위험 조정 수익률을 평가합니다. 이 비율은 최대 드로다운이 중요한 요소인 전략에 특히 유용합니다. 상당한 손실을 경험할 위험과 관련하여 생성된 수익을 강조합니다. 이러한 대체 지표를 고려함으로써 트레이더는 거래 전략의 위험 및 수익 특성에 대해 보다 포괄적인 관점을 얻을 수 있습니다. Sortino 비율은 하락 변동성에 초점을 맞추는 반면, Calmar 비율은 최대 하락률을 기준으로 수익률을 측정합니다.

이제 이러한 메트릭을 사용하여 두 가지 가상 전략을 비교해 보겠습니다. 이를 전략 A와 전략 B라고 부르겠습니다. 전략 A의 연수익률은 15%, 표준편차는 10%, 하향편차는 7%, 최대 손실률은 -20%입니다. 이를 통해 Sharpe 비율은 1.3, Sortino 비율은 1.86, Calmar 비율은 0.8이 됩니다. 반면 전략 B는 연수익률 12%, 표준편차 8%, 하방편차 5%, 최대 손실률 -15%입니다. 전략 B의 샤프 비율은 1.25, 소르티노 비율은 2.0, 칼마 비율은 0.8입니다.

보시다시피 전략 A가 수익률이 높지만 하방편차와 최대 하락폭을 감안하면 전략 B가 아웃퍼폼해 수익률에 대한 위험도가 낮습니다. 따라서 전략 B는 각 위험 단위에 대해 더 많은 수익을 제공하며 이는 모든 투자 결정에서 중요한 고려 사항입니다. 샤프 비율과 대체 메트릭 간의 선택은 거래 전략의 특정 특성과 목표에 따라 다릅니다. 다음은 샤프 비율에 집중할 시기와 다른 메트릭을 고려할 시기를 결정하는 데 도움이 되는 몇 가지 권장 사항입니다.

샤프 비율에 더 주의를 기울여야 하는 경우: 샤프 비율은 특정 범주에 속하는 전략을 평가할 때 유용한 도구가 될 수 있습니다. 예를 들어, 주식 및 채권과 같은 전통적인 자산에 초점을 맞춘 잘 다각화된 장기 투자 포트폴리오가 있는 경우 샤프 비율은 위험 조정 성과의 적절한 척도를 제공합니다. 상대적으로 안정적인 수익, 중간 위험 및 전반적인 위험 조정 수익에 중점을 둔 전략과 특히 관련이 있습니다.

대체 지표를 고려해야 하는 경우: 반면에, Sharpe 비율의 가정을 따르지 않을 수 있는 전략에는 Sortino 비율 및 Calmar 비율과 같은 대체 지표가 사용됩니다. 예를 들어, 옵션 거래, 레버리지 기반 전략 또는 포지션이 집중된 전략과 같은 고위험 거래 전략에 참여하는 경우 대체 지표가 더 중요해집니다. 이러한 전략은 종종 비정규 수익률 분포, 더 높은 꼬리 위험을 나타내며 하방 위험 관리에 중점을 둘 필요가 있습니다. Sortino 비율과 Calmar 비율은 위험 조정된 성과, 꼬리 위험 및 손실에 대한 보다 구체적인 통찰력을 제공하여 해당 상황에서 전략의 실행 가능성에 대한 더 나은 평가를 제공합니다.

어떤 단일 지표도 거래 전략의 복잡성과 뉘앙스를 완전히 포착할 수 없다는 점을 기억하십시오. 위험과 수익에 대한 종합적인 이해를 얻으려면 지표 조합을 고려하는 것이 필수적입니다. Sharpe 비율, Sortino 비율 및 Calmar 비율과 같은 여러 메트릭을 사용하여 다양한 관점에서 전략의 강점과 약점을 평가할 수 있으므로 보다 강력한 평가와 정보에 입각한 의사 결정이 가능합니다.

오늘의 튜토리얼은 여기까지입니다. 참여해 주셔서 감사합니다. 이 동영상이 도움이 되었기를 바랍니다.

Beyond the Sharpe Ratio: Unveiling Effective Trading Strategy Assessment
Beyond the Sharpe Ratio: Unveiling Effective Trading Strategy Assessment
  • 2023.05.24
  • www.youtube.com
Welcome to our insightful tutorial on trading strategy assessment! In this video, we delve into the popular Sharpe Ratio and explore its limitations when eva...
 

예상 최대 손실 추정을 위한 빠른 몬테카를로 시뮬레이션(python 코드 x2000 더 빠르게 실행)


예상 최대 손실 추정을 위한 빠른 몬테카를로 시뮬레이션(python 코드 x2000 더 빠르게 실행)

모두 환영합니다! 나는 Denis이고 당신은 CloseToalgotrading을 보고 있습니다.

이 비디오에서는 Python 코드의 실행 성능을 잠재적으로 천 배 이상 크게 향상시키는 프로세스를 자세히 살펴봅니다. 우리의 목표는 그것을 흥미롭게 만들 뿐만 아니라 매우 유용하게 만드는 것입니다. 이를 달성하기 위해 Monte Carlo 시뮬레이션의 예를 사용하여 예상되는 최대 손실을 계산합니다.

시작하려면 최대 드로다운이 무엇을 의미하고 어떻게 계산할 수 있는지에 대한 근본적인 질문을 다루겠습니다. 최대 하락폭은 특정 기간 동안 하락 위험을 나타내는 지표 역할을 합니다. 일반적으로 백분율로 표시되며 다음 공식을 사용하여 결정됩니다.

공식이 유망해 보이지만 실제 데이터에 적용하면 더 나은 정확도를 얻을 수 있습니다. SPY의 예를 들어 기간을 100일로 설정해 보겠습니다. 그래프는 이 100일 동안의 SPY 종가를 표시합니다. 두 가지 손실이 분명하며 두 번째 손실이 최대로 나타납니다. 드로다운을 계산하기 위해 간단한 계산을 수행할 수 있습니다. 최고가는 약 212.1, 최저는 204.4에 도달했습니다. 앞서 언급한 공식을 활용하면 최대 손실률을 약 3.6%로 추정할 수 있습니다.

그러나 이 결과는 가격 수준에 대한 가정으로 인해 정확성이 부족합니다. 보다 정확한 계산을 위해 이 목적을 위해 특별히 설계된 Python 함수를 활용합니다. 한 가지 가능한 구현은 다음과 같습니다.

[최대 드로다운 계산을 위한 Python 코드]

이 함수는 최대 드로다운을 계산하여 3.5%의 값을 산출합니다. 이 함수의 실행 시간은 약 16.3마이크로초로 상당한 수준입니다. 그러나 복잡하고 복잡한 기술에 의존하지 않고 이 타이밍을 더욱 향상시킬 수 있습니까? 대답은 확실히 그렇다이며 실행을 개선하는 가장 간단한 방법은 Numba를 사용하는 것입니다.

Numba는 Python 및 NumPy 코드의 하위 집합을 매우 효율적인 기계 코드로 변환하는 오픈 소스 JIT(Just-In-Time) 컴파일러입니다. Python 코드를 Numba로 변환하면 성능을 크게 향상시킬 수 있습니다. 그러나 우리 함수의 초기 구현은 Numba에서 작동하지 않을 것입니다. Numba는 "최대 축적" 함수를 인식하지 않기 때문입니다. 그럼에도 불구하고 이 함수를 사용하지 않고 최대 드로우다운을 계산하는 다른 방법을 고안할 수 있습니다. 수정된 드로다운 계산은 다음과 같이 구현할 수 있습니다.

[Numba를 사용하여 수정된 드로다운 계산을 위한 Python 코드]

보시다시피 함수 정의 위에 Numba 데코레이터를 추가했습니다. 이 구현으로 Numba는 불만을 제기하지 않으며 실행 시간은 4.8마이크로초로 단축됩니다. 이는 속도 측면에서 3배 이상의 개선을 나타냅니다. 아주 간단하죠? 개인적으로 이 구현을 선호하는 이유는 알고리즘을 간단한 방식으로 설명하기 때문입니다.

따라서 우리는 3.5%에 달하는 최대 하락폭을 정확하게 계산할 수 있습니다. 그것을 "역사적 최대 하락"이라고 부르자. 이 위험 지표를 기반으로 시장 조건이 변경되지 않은 경우 최대 위험은 3.5%에 불과할 것이라고 가정할 수 있습니다. 그러나 단일 특정 관찰에서 파생된 값에만 우리의 신뢰를 둘 수 있는지에 대한 질문을 제기합니다. 비슷한 상황에서 몇 가지 관찰을 더 해보는 것이 좋지 않을까요? 실제로, 그것은 유익할 것이고, 이것이 Monte Carlo 방법이 작용하는 곳입니다.

잠시 시간을 내어 Monte Carlo 방법이 수반하는 것이 무엇인지 명확히 합시다. 무작위 변수 생성기를 사용하는 수학적 모델을 통해 프로세스를 설명하는 것이 포함됩니다. 그런 다음 모델을 반복적으로 계산하고 수집된 데이터를 기반으로 프로세스의 확률적 특성을 도출합니다.

우리의 경우 프로세스에는 GBM(Geometric Brown Motion) 모델을 사용하여 시뮬레이션하는 일련의 주식 반환이 수반됩니다. GBM 모델은 주식 수익률이 연속적인 확률 과정을 따른다고 가정하며 재무 모델링에 널리 사용됩니다. GBM을 사용하여 주식 수익률을 시뮬레이션함으로써 여러 시나리오를 생성하고 각 시나리오의 최대 하락폭을 계산할 수 있습니다. 이것은 우리에게 최대 드로다운의 분포를 제공하여 하방 위험에 대한 보다 강력한 추정치를 제공합니다.

Monte Carlo 시뮬레이션을 구현하려면 GBM 모델에 대한 매개변수를 정의해야 합니다. 이러한 매개변수에는 드리프트 비율(μ), 변동성(σ) 및 시간 범위(T)가 포함됩니다. 또한 각 실행 내에서 시뮬레이션 실행 수(N)와 시간 단계 수(M)를 지정합니다. 이러한 매개 변수를 설정하면 시뮬레이션을 진행할 수 있습니다.

다음은 Python을 사용하여 예상되는 최대 손실을 계산하기 위한 Monte Carlo 시뮬레이션 구현의 예입니다.

import numpy as np

def monte_carlo_max_drawdown(S0, mu, sigma, T, N, M):
    dt = T / M

    S = np.zeros((N, M+ 1 ))
    S[:, 0 ] = S0

     for i in range( 1 , M+ 1 ):
        epsilon = np.random.normal( 0 , 1 , N)
        S[:, i] = S[:, i- 1 ] * np. exp ((mu - 0.5 * sigma** 2 ) * dt + sigma * np. sqrt (dt) * epsilon)

    drawdowns = np.zeros(N)

     for i in range(N):
        peak = np.maximum.accumulate(S[i])
        drawdowns[i] = np.max((peak - S[i]) / peak)

    expected_max_drawdown = np.mean(drawdowns)

     return expected_max_drawdown

# Example usage
S0 = 100.0    # Initial stock price
mu = 0.05    # Drift rate
sigma = 0.2    # Volatility
T = 1.0    # Time horizon in years
N = 10000    # Number of simulation runs
M = 252    # Number of time steps (assuming 252 trading days in a year)

expected_max_drawdown = monte_carlo_max_drawdown(S0, mu, sigma, T, N, M)
print( "Expected Maximum Drawdown:" , expected_max_drawdown)

이 예제에서는 NumPy를 사용하여 배열 작업을 효율적으로 처리합니다. 각 실행 및 시간 단계에 대해 시뮬레이션된 주가를 저장하기 위해 배열 S를 초기화합니다. GBM 공식을 사용하여 시간 단계를 반복하고 주가 변화를 시뮬레이션합니다. 모든 실행을 시뮬레이션한 후 최고 값을 찾아 현재 가격에서 빼서 각 실행에 대한 손실을 계산합니다. 마지막으로 모든 드로다운의 평균을 취하여 예상되는 최대 드로다운을 계산합니다.

이 Monte Carlo 시뮬레이션을 실행하면 여러 시뮬레이션 시나리오를 기반으로 예상되는 최대 손실을 추정할 수 있습니다. 이는 과거 데이터의 단일 관찰과 비교하여 하방 위험에 대한 보다 포괄적인 이해를 제공합니다.

결론적으로, 우리는 최대 감소의 개념, 과거 데이터를 사용한 계산, 예상 최대 감소를 추정하기 위한 몬테카를로 방법의 적용을 탐구했습니다. 또한 Numba를 사용하여 드로다운 계산의 성능을 향상시키는 방법에 대해서도 논의했습니다. 이러한 기술을 통합하면 재무 계산의 효율성과 정확성을 크게 개선하여 트레이더와 투자자에게 의사 결정을 위한 귀중한 위험 지표를 제공할 수 있습니다.

CloseToalgotrading을 시청해주셔서 감사합니다! 이 비디오가 유익하고 도움이 되었기를 바랍니다. 질문이나 의견이 있으시면 아래에서 자유롭게 공유해 주세요. 알고리즘 트레이딩 및 퀀트 파이낸스에 대한 더 흥미로운 주제를 기대해 주세요.

Fast Monte Carlo Simulation For Estimation Maximum Expected Drawdown (run python code x2000 faster)
Fast Monte Carlo Simulation For Estimation Maximum Expected Drawdown (run python code x2000 faster)
  • 2022.02.27
  • www.youtube.com
In this video we will see how with a few simple steps we can improve execution performance of a python code more than in x1000 time. And in order for us to b...
 

R Studio(CRAN)를 사용하여 Sharpe Ratio를 최대화하기 위한 포트폴리오 최적화


R Studio(CRAN)를 사용하여 Sharpe Ratio를 최대화하기 위한 포트폴리오 최적화

안녕 친구, 매크로 사피엔스에 오신 것을 환영합니다. 오늘 튜토리얼에서는 샤프 비율을 최대화하기 위해 포트폴리오를 최적화하는 방법을 배웁니다. 샤프 비율은 감수한 위험 단위당 포트폴리오의 수익을 측정합니다. 이를 달성하기 위해 quantmod, PortfolioAnalytics, PerformanceAnalytics 및 NSE2R 라이브러리를 사용할 것입니다. quantmod 라이브러리는 Yahoo Finance에서 데이터를 가져오는 데 도움이 되며 PortfolioAnalytics는 최적화 기능을 제공하고 PerformanceAnalytics는 시각화를 지원하며 NSE2R은 인도 국립 증권 거래소 전용 라이브러리입니다.

먼저 주식 이름을 저장하기 위해 "stock_names"라는 변수를 정의합니다. quantmod 라이브러리를 사용하여 Yahoo Finance에서 인도 Nifty 50 지수의 50개 주식 기호에 대한 데이터를 가져옵니다. 기호 열을 추출하여 "기호"라는 새 변수에 저장합니다.

다음으로 검색하려는 데이터의 시작 날짜와 종료 날짜를 지정해야 합니다. "since" 변수를 사용하여 시작 날짜를 2018년 1월 1일로 정의하고 종료 날짜를 현재 날짜로 정의합니다. 우리는 조정된 종가가 주식의 성과를 더 잘 나타내므로 "prices_data"라는 변수에 저장하는 데 초점을 맞춥니다.

포트폴리오 수익률을 계산하기 위해 일일 수익률 공식을 사용합니다: (2일 종가 - 1일 종가) / 1일 종가. 데이터의 누락된 값(NA)을 처리하도록 함수를 수정합니다.

다음으로 포트폴리오 반환 데이터 세트의 열 이름을 "funds"로 정의합니다. 이는 나중에 최적화 프로세스에서 사용됩니다.

이제 PortfolioAnalytics 라이브러리를 사용하여 최적화 프로세스를 시작할 수 있습니다. 초기 포트폴리오를 만들고 제약 조건을 추가합니다. 하나의 제약 조건은 포트폴리오의 총 가중치가 1이 되도록 보장하고 다른 제약 조건은 마이너스 가중치가 없음을 의미하는 장기 전용 포트폴리오를 원한다고 지정합니다.

price_data를 사용하여 포트폴리오의 평균 수익률인 목적 함수를 추가합니다. 최적화 프로세스의 최대 반복 횟수를 2000으로 설정했습니다.

샤프 비율을 계산하려면 무위험 수익률을 정의해야 합니다. 이 경우 0%로 간주합니다. 우리는 PerformanceAnalytics 라이브러리의 기능을 사용하여 포트폴리오의 수익을 분석하고 샤프 비율을 계산합니다.

무작위 최적화를 통해 달성한 최대 샤프 비율 수익과 ROI 최적화 프로그램의 수익을 포함하여 결과를 표시하는 테이블을 만듭니다. 최적화된 포트폴리오를 시각화하기 위해 효율적인 프론티어를 플로팅합니다.

또한 포트폴리오 수익을 Nifty 50 지수에 대한 투자 수익과 비교합니다. 각 접근 방식에 대한 누적 수익을 계산하고 이를 플롯하여 성과를 분석합니다.

그 결과 랜덤 포트폴리오 최적화 방법이 ROI 옵티마이저와 Nifty 50 지수에 비해 더 높은 샤프 비율과 누적 수익률을 제공하는 것을 관찰했습니다.

이러한 최적화된 가중치는 투자용 주식 바스켓을 만드는 데 사용할 수 있습니다. 일정 기간 동안 바스켓의 성과를 추적함으로써 투자자는 선택한 주식에 대한 투자에 대해 정보에 입각한 결정을 내릴 수 있습니다.

이 튜토리얼이 도움이 되었기를 바랍니다. 질문이 있으시면 언제든지 문의해 주십시오. 저희 채널을 좋아하고, 공유하고, 구독하는 것을 잊지 마세요. 감사합니다!

Portfolio optimization for maximizing Sharpe Ratio using R Studio (CRAN)
Portfolio optimization for maximizing Sharpe Ratio using R Studio (CRAN)
  • 2021.08.28
  • www.youtube.com
Portfolio optimization for maximizing Sharpe Ratio using R Studio (CRAN)#SharpeRatio #Rstudio #CRAN #Portfolio #Optimization
 

현물 요율 대 전달 요율(CFA® 및 FRM® 시험에 대한 계산)


현물 요율 대 전달 요율(CFA® 및 FRM® 시험에 대한 계산)

좋은 하루 되세요! 오늘 논의할 개념을 소개하고자 합니다. 현물환율에서 선도환율을 계산하는 방법을 살펴보겠지만 공식을 사용하는 대신 타임라인 방법을 사용할 것입니다. 이 접근 방식은 복잡한 공식을 외울 필요를 없애고 프로세스를 보다 직관적으로 만듭니다.

자세한 내용을 살펴보기 전에 선물환율과 현물환율의 정의를 간단히 요약해 보겠습니다. 현물 금리는 현재 시장에서 사용할 수 있는 모든 금리를 말합니다. 오늘부터 2년, 3년, 4년, 5년 등 특정 기간 동안 투자할 수 있는 비율을 나타냅니다. 현물 금리는 투자 가능한 금리로 개인이 시장에 투자하여 수익을 얻을 수 있습니다.

반면에 선물환율은 종종 내재된 선물환율이라고도 하는 이론적인 환율입니다. 두 미래 기간 사이의 예상 이자율을 나타냅니다. 예를 들어, 현재 기간이 0인 경우 3년차와 4년차 사이의 비율을 결정하려고 할 수 있습니다. 포워드 금리는 현재 현물 금리를 기반으로 계산되며 미래 시점의 금리 예측 역할을 합니다.

선물환 계약이나 선물 계약과 같은 파생 상품을 사용하지 않는 한 선물환 금리는 투자 가능한 금리가 아니라는 점에 유의하는 것이 중요합니다. 그때까지는 묵시적 비율로 남아 있습니다. 즉, 미래에 지정된 기간이 도래하면 실제로 존재할 수도 있고 존재하지 않을 수도 있습니다.

묵시적 선도금리를 투자 가능하게 하려면 선도계약을 체결해야 합니다. 이를 통해 비율이 고정되고 지정된 미래 시간에 금융 거래에 사용될 수 있습니다.

이제 포워드 비율을 계산하기 위한 타임라인 방법을 살펴보겠습니다. 먼저 공식을 살펴보겠지만 목표는 공식에 의존하는 것에서 벗어나 타임라인 방법을 수용하는 것임을 기억하십시오. 두 가지 접근 방식을 비교하면 공식을 외울 필요 없이 타임라인 방식이 동일한 결과를 가져온다는 사실을 알게 될 것입니다.

선도환율을 계산하는 공식은 다음과 같습니다.

(1 + 자)^a * (1 + ifr) = (1 + zb)^b

이 공식에서 "a"는 더 짧은 만기를 나타내고 "b"는 더 긴 만기를 나타내며 "za"와 "zb"는 더 짧은 만기와 더 긴 만기에 대한 각각의 현물 금리를 나타내며 "ifr"은 사이의 내재 선도 금리를 나타냅니다. 기간 "a" 및 "b."

이제 이해를 돕기 위해 예를 들어 보겠습니다. 1년 현물 금리는 5%이고 2년 현물 금리는 6%입니다. 우리의 목표는 오늘부터 1년 후의 1년 선도 금리를 결정하는 것입니다.

공식을 사용하여 주어진 현물 요율을 방정식으로 대체할 수 있습니다.

(1 + 0.05)^1 * (1 + ifr) = (1 + 0.06)^2

더 단순화하면 다음을 얻습니다.

1.05 * (1 + ifr) = 1.1236

이제 동일한 계산을 위한 타임라인 방법을 살펴보겠습니다. 기간이 0, 1, 2인 타임라인을 그립니다. 이에 따라 현물 요금을 플로팅합니다. 2년 현물금리는 0에서 2까지 6%를 표시합니다. 1년 현물금리의 경우 0에서 1까지 5%를 표시합니다. 우리의 목표는 "f"로 표시되는 오늘부터 1년 후의 1년 선도 금리를 계산하는 것입니다.

타임라인 방법을 사용하여 내재된 선도 비율을 결정하기 위해 우리는 차익 거래가 없다는 원칙을 활용합니다. 이 원칙은 타임라인에서 선택한 경로에 관계없이 동일한 미래 가치로 끝나야 한다고 주장합니다. 이 경우 1달러를 2년 동안 6% 이율로 투자하거나 1달러를 1년 동안 5% 이자로 투자한 다음 그 금액을 선도금리 "f"로 다시 1년 동안 재투자할 수 있습니다.

1년 선물 금리를 계산하기 위해 1년 현물 금리 5%로 1년 동안 1달러를 투자하는 것으로 시작합니다. 이 투자는 1년 후 $1.05로 증가합니다.

이제 우리는 1.05달러를 가져다가 향후 1년 동안 포워드 금리 "f"로 재투자합니다. 이 투자의 미래 가치는 2년 현물 금리 6%로 2년 동안 1달러를 투자한 것과 같아야 합니다.

포워드 비율 "f"가 x%라고 가정해 봅시다. 방정식을 다음과 같이 설정할 수 있습니다.

(1 + 0.05) * (1 + x%) = (1 + 0.06)^2

더 단순화하면 다음과 같습니다.

1.05 * (1 + x%) = 1.1236

양쪽을 1.05로 나누면:

1 + x% = 1.1236 / 1.05

1 + x% = 1.07

x% = 1.07 - 1

x% = 0.07

따라서 "f"로 표시된 오늘부터 1년 후의 1년 선도 금리는 7%입니다.

타임라인 방법을 사용하여 공식에 의존하지 않고 포워드 비율을 계산할 수 있었습니다. 이 접근 방식은 타임라인을 시각적으로 표현하고 암시된 전달 비율을 보다 직관적으로 이해할 수 있도록 합니다.

Spot Rate vs. Forward Rates (Calculations for CFA® and FRM® Exams)
Spot Rate vs. Forward Rates (Calculations for CFA® and FRM® Exams)
  • 2020.08.17
  • www.youtube.com
AnalystPrep's Concept Capsules for CFA® and FRM® ExamsThis series of video lessons is intended to review the main calculations required in your CFA and FRM e...
 

Sharpe Ratio, Treynor Ratio 및 Jensen's Alpha(CFA® 및 FRM® 시험 계산)


Sharpe Ratio, Treynor Ratio 및 Jensen's Alpha(CFA® 및 FRM® 시험 계산)

신사 숙녀 여러분, 여러분 모두에게 따뜻한 인사를 전합니다. 오늘 우리는 중요한 주제, 즉 포트폴리오 성과의 다양한 척도에 대해 탐구할 것입니다. 구체적으로 Sharpe 비율, Treynor 비율 및 Jensen의 알파를 살펴보겠습니다. 몇 가지 다른 포트폴리오 성과 측정이 존재하지만 이 세 가지가 중추적인 것으로 널리 인식되고 있습니다. 다가오는 CFA 또는 FRM 시험뿐만 아니라 실제 적용을 위해서도 이러한 측정치 간의 상호 관계와 실질적인 의미를 이해하는 것이 중요합니다. 이러한 개념은 CFA 커리큘럼의 세 가지 수준 모두에 스며들어 시험 과정 전반에 걸쳐 그 중요성을 강조합니다.

오늘날까지 이 분야에서 가장 존경받는 비율로 남아 있는 샤프 비율부터 시작하겠습니다. 몇 가지 본질적인 한계에도 불구하고 그 매력은 단순함에 있습니다. 그럼에도 불구하고 헤지 펀드와 뮤추얼 펀드에서 일반적으로 보고되는 것처럼 펀드를 비교할 때 계속해서 이동 비율입니다. 마찬가지로 Treynor 비율과 Jensen의 알파는 업계에서 광범위하게 사용됩니다. 따라서 이러한 개념을 이해하는 것은 시험뿐만 아니라 실제 관련성에도 필수적입니다.

다음과 같이 공식화된 샤프 비율은 우리의 주의를 보증합니다.

샤프 비율 = (포트폴리오 수익률 - 무위험 수익률) / 포트폴리오의 표준편차

분자에서 "포트폴리오 수익률(rp)"은 무위험 수익률(rf)에 대한 초과 수익률을 나타냅니다. 포트폴리오에 투자할 때 위험을 감수한다는 것은 더 큰 보상을 추구한다는 것을 의미하므로 무위험 수익률보다 높은 수익을 기대합니다. 따라서 무위험수익률을 넘어서는 수익을 의미하는 초과수익률에 주목한다. 분모에는 위험을 측정하는 표준 편차가 있습니다. 여기서 표준 편차는 분산 가능한 위험과 분산 불가능한 위험을 모두 설명한다는 점에 유의해야 합니다. 분산 가능한 위험은 분산을 통해 제거할 수 있지만 분산 불가능한 위험은 지속됩니다. 결과적으로 샤프 비율은 체계적 위험과 비체계적 위험을 모두 결합하여 총 위험 단위당 초과 수익을 평가합니다.

다른 포트폴리오의 샤프 비율과 비교할 때 샤프 비율의 가치가 가장 관련성이 높다는 점을 강조하는 것이 중요합니다. 포트폴리오를 서로 상대적으로 평가할 때 중요성을 찾습니다. 실제로 업계 전문가들은 종종 샤프 비율을 "샤프"라고 부릅니다. 예를 들어, 포트폴리오 매니저는 각각의 샤프 비율을 나타내는 "I'm return two sharps" 또는 "three sharps"라고 말할 수 있습니다.

더 높은 샤프 비율은 유리한 것으로 간주됩니다. 비율이 높을수록 동일한 위험 수준에서 더 많은 수익을 창출할 수 있는 포트폴리오의 능력을 나타내므로 선호되는 선택입니다. 따라서 샤프 비율을 기준으로 포트폴리오를 선택할 때 비율이 가장 높은 것을 선택하십시오.

이제 Treynor 비율에 대해 살펴보겠습니다. 분자는 Sharpe 비율과 매우 유사하지만 분모는 다릅니다. Treynor 비율은 베타로 표시되는 체계적 위험 단위당 초과 수익을 측정합니다. 베타는 투자에 내재된 분산 불가능하고 체계적인 위험을 나타냅니다. 이 좁은 척도는 샤프 비율의 넓은 범위와 달리 체계적 위험에만 초점을 맞춥니다. 마찬가지로, Treynor 비율은 다른 유사한 펀드의 비율과 비교할 때 더 가치가 있습니다. Treynor 비율을 기준으로 포트폴리오를 선택하면 비율이 가장 높은 것을 선택해야 합니다. 값이 높을수록 체계적 위험 단위당 초과 수익이 더 크다는 것을 나타냅니다.

Jensen의 알파를 살펴보기 전에 CAPM(Capital Asset Pricing Model)을 검토해 보겠습니다. CAPM은 Jensen의 알파를 이해하는 데 도움이 됩니다. 포트폴리오의 예상 수익 또는 필수 수익을 결정하는 데 도움이 되기 때문입니다. CAPM은 무위험 수익률에서 시작하여 시장 위험 프리미엄(시장 수익률과 위험의 차이)에 베타 배를 더하여 기대 수익률을 계산합니다.

Jensen 성과 지수 또는 단순히 알파라고도 하는 Jensen의 알파는 자본 자산 가격 책정 모델(CAPM)에 기반한 예상 수익률과 비교하여 포트폴리오의 초과 수익률을 측정한 것입니다. CAPM은 자산 또는 포트폴리오의 예상 수익률을 시장 움직임에 대한 체계적인 위험 또는 민감도를 나타내는 베타와 관련시킵니다.

Jensen의 알파는 다음과 같이 계산됩니다.

Jensen의 알파 = 포트폴리오 수익률 - [무위험 수익률 + 베타 × (시장 수익률 - 무위험 수익률)]

이 공식에서 포트폴리오 수익은 포트폴리오가 얻은 실제 수익을 나타내고 무위험 수익률은 국채와 같은 무위험 투자의 수익이며 베타는 시장 움직임에 대한 포트폴리오의 민감도를 측정하며 시장 수익은 다음과 같습니다. 전체 시장의 평균 수익률.

Jensen의 알파는 포트폴리오가 CAPM을 기준으로 기대 수익률을 상회했는지 또는 하회했는지를 나타냅니다. 양의 알파는 포트폴리오가 주어진 체계적 위험을 감안할 때 예상되는 것보다 초과 수익을 창출했음을 시사하는 반면, 음의 알파는 성과가 저조함을 나타냅니다. 따라서 투자자와 포트폴리오 관리자는 일반적으로 투자 성과를 평가할 때 양의 알파를 찾습니다.

Jensen의 알파는 체계적 위험만 고려하며 전체 위험 또는 포트폴리오와 관련된 특정 위험을 설명하지 않는다는 점에 유의해야 합니다. 따라서 Jensen의 알파를 Sharpe 비율 및 Treynor 비율과 같은 다른 성과 측정과 함께 사용하여 포트폴리오 성과를 보다 포괄적으로 이해하는 것이 좋습니다.

요약하면 Sharpe 비율, Treynor 비율 및 Jensen의 알파는 모두 포트폴리오 성과를 평가하는 데 유용한 척도입니다. Sharpe 비율은 총 위험 단위당 초과 수익을 평가하는 반면 Treynor 비율은 체계적 위험 단위당 초과 수익에 중점을 둡니다. Jensen의 알파는 체계적 위험만을 고려하여 CAPM을 기반으로 포트폴리오의 실제 수익률과 예상 수익률을 비교합니다. 이러한 측정은 포트폴리오 성과에 대한 다양한 관점을 제공하며 정보에 입각한 투자 결정을 내리는 데 함께 사용할 수 있습니다.

Sharpe Ratio, Treynor Ratio and Jensen's Alpha (Calculations for CFA® and FRM® Exams)
Sharpe Ratio, Treynor Ratio and Jensen's Alpha (Calculations for CFA® and FRM® Exams)
  • 2020.08.15
  • www.youtube.com
AnalystPrep's Concept Capsules for CFA® and FRM® ExamsThis series of video lessons is intended to review the main calculations required in your CFA and FRM e...
 

공분산 및 상관관계(CFA® 및 FRM® 시험 계산)


공분산 및 상관관계(CFA® 및 FRM® 시험 계산)

안녕하세요 여러분, 공분산과 상관관계의 개념에 대해 논의하는 것으로 시작하겠습니다. 오늘의 주제는 많은 사람들에게 혼란스러울 수 있습니다. 왜냐하면 상관관계는 일반적으로 듣는 용어인 반면 공분산은 계산과 관련하여 생소한 경우가 많기 때문입니다. 또한 공분산과 상관 관계는 모두 동일한 것을 측정하기 위한 것이므로 혼란스러울 수 있습니다. 동일한 목적을 위해 두 가지 다른 측정값이 있는 이유를 살펴보고 공분산을 사용할 시기와 상관관계를 사용할 시기를 결정할 것입니다. 또한 공분산과 상관관계를 모두 계산하는 방법을 살펴보겠습니다.

공분산에 대해 알아보기 전에 논의의 기초가 되는 분산을 계산하는 방법을 빠르게 검토해 보겠습니다. 분산을 계산하는 방법을 이해하면 공분산으로 진행하여 두 측정값 간의 관계를 탐색할 수 있습니다. 이를 통해 이러한 측정값의 기원과 상관 관계에 대한 통찰력을 얻을 수 있습니다.

이제 분산 계산을 이해하기 위한 예를 살펴보겠습니다. 5년 동안의 포트폴리오 수익률을 나타내는 데이터 시리즈가 있습니다. 수익은 각 연도에 대한 백분율로 제공됩니다. 분산을 계산하려면 먼저 데이터 계열의 평균을 결정해야 합니다. 우리는 모든 수익을 합산하고 그 합계를 관찰 횟수로 나눕니다. 이 경우에는 5년입니다. 이것은 데이터 계열의 평균을 제공합니다.

다음으로 각 관측치에 대한 평균과의 편차를 계산합니다. 각 반환 값에서 평균을 뺍니다. 이것은 우리에게 각 관찰에 대한 평균으로부터의 편차를 제공합니다. 제곱 편차는 각 편차를 제곱하여 계산됩니다. 모든 제곱 편차를 합산하고 그 결과를 관측치 수로 나누어 분산을 구합니다. 마지막으로 분산의 제곱근을 취하여 관련 척도인 표준 편차를 찾습니다.

실제 시나리오나 CFA 또는 FRM과 같은 시험에서 분산을 수동으로 계산하는 동안 이러한 계산은 일반적으로 BA2 Plus 또는 BA2 Plus Professional과 같은 계산기의 내장 함수를 사용하여 수행된다는 점에 유의해야 합니다.

공분산으로 이동하면 두 개의 서로 다른 데이터 계열 간의 공동 이동 또는 관계를 측정합니다. 단일 데이터 계열을 다루는 분산과 달리 공분산을 사용하면 두 데이터 계열이 함께 움직이는 방식을 검사할 수 있습니다. 예를 들어 공분산을 사용하여 ETF와 벤치마크 지수 간의 동조 움직임을 분석할 수 있습니다. 양의 공분산은 두 변수가 같은 방향으로 움직이는 것을 나타내고 음의 공분산은 반대의 움직임을 나타냅니다. 공분산이 0이면 변수 간에 관계가 없음을 나타냅니다.

공분산을 계산하려면 해당 계열의 각 관측치에서 첫 번째 데이터 계열의 평균을 빼고 두 번째 데이터 계열의 평균 편차를 곱합니다. 모든 관찰에 대해 이 과정을 반복하고, 편차를 곱하고, 결과를 합산하고, 공분산을 얻기 위해 관찰 수로 나눕니다.

공분산이 분산과 유사성을 공유한다는 점은 주목할 가치가 있지만 하나가 아닌 두 개의 다른 데이터 계열을 포함합니다. 실제로 분산은 두 변수가 동일한 공분산의 특수한 경우로 간주될 수 있습니다.

그러나 공분산만을 사용하는 데는 한계가 있습니다. 공분산은 두 변수 간의 관계에 대한 통찰력을 제공하지만 관계의 규모에 대한 감각을 제공하지는 않습니다. 이는 서로 다른 데이터 계열 간의 관계를 비교할 때 문제가 됩니다. 여기서 상관관계가 작용합니다.

상관 관계는 공분산의 표준화된 버전입니다. 공분산을 두 데이터 계열의 표준 편차의 곱으로 나누어 계산합니다. 이 정규화 프로세스를 통해 -1에서 +1 범위의 표준화된 척도로 관계를 비교할 수 있습니다. 상관관계 +1은 완전한 긍정적 관계, -1은 완전한 부정적 관계, 0은 관계 없음을 나타냅니다.

공분산 및 상관 관계는 서로 다른 데이터 계열 간의 관계를 이해하는 데 도움이 되는 측정값입니다. 공분산은 변수 간의 공동 이동을 나타내는 반면 상관 관계는 이 측정을 표준화하고 쉽게 허용합니다.

Covariance and Correlation (Calculations for CFA® and FRM® Exams)
Covariance and Correlation (Calculations for CFA® and FRM® Exams)
  • 2020.08.19
  • www.youtube.com
AnalystPrep's Concept Capsules for CFA® and FRM® ExamsThis series of video lessons is intended to review the main calculations required in your CFA and FRM e...