목차
바로가기
최근 헷징(Hedging) 전략이 대표적인 리스크 관리 기법으로 주목받고 있습니다. 헷징 전략이란 특정 자산이 하락할 때, 반대 경향성을 가진 자산을 포트폴리오에 포함시켜 손실 폭을 줄이는 방법입니다. 이를 통해 시장의 변동성을 어느 정도 상쇄할 수 있지만, 이러한 전략을 개인 투자자가 활용하기는 쉽지 않습니다. 헷징 전략을 적절히 적용하기 위해서는 상관관계 분석을 포함한 다량의 시장 데이터 분석이 필요하기 때문입니다.
VIN - 리스크 헷지 기반 ETF 추천 서비스는 상관관계 분석을 통해 개인 투자자들이 시장 변동성에 대비해 안정적인 포트폴리오를 구성하도록 돕는 것을 목표로 합니다. 특히, 개별 주식보다 변동성이 낮고 다양한 섹터에 분산 투자된 ETF(Exchange-Traded Funds)를 분석 대상으로 삼아 보다 안정적인 헷징 효과를 제공하고자 합니다. 이를 통해 사용자는 특정 종목 선택 시 반대 경향성을 가진 ETF를 추천받아 리스크를 효과적으로 관리할 수 있습니다.
VIN은 개인 투자자들은 투자 리스크를 줄이고 장기적인 재정 목표를 달성하는 데 도움을 줄 수 있습니다. 특히 주식 시장에서의 변동성을 관리하며 보다 체계적이고 안정적인 투자 포트폴리오를 설계할 수 있도록 도울 것입니다.
ETF는 Exchange Trade Fund로 한국어로 번역하면 상장지수펀드라고 부릅니다. 즉, 주식처럼 거래소에서 매매할 수 있는 펀드입니다. ETF는 주식시장에 상장되어 있어서 투자자들이 주식처럼 실시간으로 사고팔 수 있습니다. 그리고 ETF는 다양한 자산에 분산 투자를 할 수 있기 때문에 많은 투자자들에게 인기가 있는 금융상품 중 하나입니다.
저희가 ETF를 선택한 이유는 3가지 조건을 만족하기 때문입니다.
첫 번째는, 상품의 경향성에 노이즈가 적어야 합니다.
여러 개의 주식이나 자산들로 이루어진 상품이 아닌 주식 하나 하나에 대한 1대1 경향성을 분석하게 되면, 단일 회사의 호재와 악재로 인한 주가의 급등과 급락이 그대로 가격에 반영되게 되어 가격변동이 심해질 수 있습니다. 이렇게 가격이 급격하게 변동하는 상황이 발생한다면 분석 결과가 왜곡되어 도출될 위험이 있습니다.
두 번째는, 매매가 간단하여 일정 가격을 형성하고, 이를 통해 경향성을 파악할 수 있어야 합니다.
ETF는 여러 주식이나 자산을 묶어서 하나의 상품으로 만들어지고, 주식이나 채권처럼 매매가 간단해서 가격이 일정하게 형성됩니다. 가격이 일정하게 형성된다는 거는 ETF의 가격 변화를 통해 그 안에 포함된 자산들의 경향성을 분석할 수 있다는 것을 의미합니다. 그래서 특정 섹터 ETF나 시장의 움직임을 반영하는 ETF를 통해서 해당 시장의 전반적인 경향을 파악할 수 있다는 장점이 있습니다.
세 번째는, 상품의 개수와 기간이 적절해야 합니다.
앞서 말씀드렸듯이 상품의 개수가 너무 많으면 분석 과정에서 너무 오랜 시간과 비용이 발생하고, 데이터베이스 성능에도 영향이 갈 우려가 있습니다. 반대로 상품의 개수가 너무 적으면, 분석할 수 있는 데이터의 양이 줄어들기 때문에 결과의 신뢰성이 낮아질 우려가 있습니다.
또한, 데이터의 많은 개수를 줄이기 위해 임의로 저희가 상품들을 빼버리면, 전체적인 상품 자체의 경향성을 제대로 반영하지 못하기 때문에 딱 적절한 범위의 개수를 갖는 상품을 골라야 했습니다.
그래서 저희는 금융 상품 당 약 1000개의 데이터가 있어야 최소한의 신뢰성을 가진다고 판단했는데, 이를 위해서는 약 3년 이상의 period를 가지는 데이터가 필요했습니다.
이러한 이유로 저희는 ETF로 분석을 진행하기로 결정했습니다.
VIN 서비스에서는 한국과 미국 시장의 약 1,100개 이상의 ETF 상품의 정보를 확인하실 수 있습니다.
ETF 목록 페이지에서도 대략적인 ETF 상품의 정보와 전체적인 주가 추세를 보실 수 있습니다.
페이지 위쪽에 위치한 검색 탭에서 원하는 ETF를 찾을 수 있도록 조건을 설정할 수 있습니다.
이름, 금액, 국가를 통해 검색이 가능합니다.
사용자가 원하는 ETF 상품을 찾았다면, 다음 페이지에서 상품에 대한 자세한 정보를 확인할 수 있습니다.
또한, 해당 ETF와 다른 ETF들의 상관 관계를 1대1로 분석하여 추천 ETF 상품을 제시합니다.
추천 ETF 상품은 높은 상관계수, 중간 상관계수, 낮은 상관계수로 3개가 추천되며, 사용자가 성향 분석을 마쳤다면 추가로 성향에 맞는 상품 2개가 추천됩니다.
아래 표를 통해 추천 ETF 상품을 선택하게 되면 두 상품의 주가 그래프를 볼 수 있습니다.
특히, 보라색 그래프로 표현된 두 상품에 투자했을 때의 헤지 예상값을 볼 수 있습니다. 이 그래프를 통해 리스크 헷지를 고려하여 ETF 상품에 투자해보세요.
선택한 ETF와 추천된 ETF, 2개의 ETF를 선택했다면 이제 두 ETF를 구매하여 나의 포트폴리오에 추가할 수 있습니다.
두 ETF를 각각 몇개 구매할 것인지를 사용자가 입력할 수 있으며, 이에 기반하여 그래프의 비율도 변동됩니다.
자신이 투자할 자산과 투자 비율을 파악하고 현명하게 투자해보세요.
여러 가지 ETF 상품을 탐색하며 구매 페이지를 통해 상품을 구매할 수 있습니다. 이렇게 구매가 된 상품들은 사용자의 포트폴리오 페이지에서 확인할 수 있습니다.
현재 당신의 포트폴리오를 구성하는 자산의 목록과 비율을 쉽게 파악할 수 있으며, 표를 클릭하여 해당 상품에 대한 정보 페이지로 이동하는 것도 가능합니다.
저희 서비스의 최종적인 목표는 이러한 사용자 개개인만의 포트폴리오를 쉽게 구성하는 것입니다.
VIN에서 개인 맞춤형 서비스를 이용하고 싶으시다면 설문조사에 응답해주셔야 합니다.
설문조사는 몇번이고 다시 실시하실 수 있습니다.
성의있게 답변하실수록 더욱 정확한 성향 분석 결과가 나올 수 있습니다.
설문조사에 응답해주셨다면 이를 기반으로 한 나의 투자 위험 감수 성향을 볼 수 있습니다.
또한 당신의 응답을 평가한 AI의 코멘트를 확인하고 객관적인 평가를 받을 수 있습니다.
나의 투자 위험 감수 성향을 알아보셨다면, 이제 당신의 성향에 맞는 ETF 상품 2개를 추가로 추천받을 수 있습니다. (총 5개)
성향 데이터를 얻은 사용자는 자신의 성향 점수를 기반으로 상관계수가 상위 N%에 위치하는 ETF 상품을 추천받습니다.
- Python
- Langchain
- React.js
- Material-UI
- Chart.js, Recharts
- Spring Boot
- MyBatis
- MySQL
- Apache Airflow
- Kubernetes
VIN에서는 두 ETF의 주가 경향성의 상관계수를 계산하여 상관관계를 분석합니다.
저희 팀에서 채택을 고민했던 상관계수는 피어슨 상관계수와 스피어만 상관계수입니다.
‘피어슨 상관계수’는 두 변수 간의 선형 관계를 측정하는 상관계수입니다. 계산을 할때, 값 자체 즉, 원시 값에 기초하여 계산됩니다.
반면에 ‘스피어만 상관계수’는 변수 간의 순위 관계를 기반으로 하는 비모수적인 상관계수입니다. 값의 크기에 따라 순위를 메긴 후에 그 순위를 계산에 활용하여 상관계수를 계산합니다. 데이터 자체의 값이 아닌 순위에 기반하여 계산하기 때문에 비선형 데이터에서도 상관관계를 파악할 수 있습니다.
이 두 상관계수 값은 해석의 차이가 있습니다.
‘피어슨 상관계수’의 값이 0.7의 양의 상관관계가 나온다면 하나의 변수가 1 단위 증가할 때, 다른 변수가 평균적으로 0.7 단위로 증가한다는 것을 의미하고, ‘스피어만 상관계수’의 값이 0.7이라면 하나의 변수가 증가할 때 다른 변수도 증가하는 경향이 70%로 강하게 나타난다는 것을 의미합니다.
두 개의 상관계수에서 저희가 사용자의 투자성향과 최종점수를 기반으로 ETF를 추천하기 위해서는 피어슨 상관계수를 사용하는 것이 적절합니다. 그 이유는 만약 사용자의 최종 점수가 80점일 경우, 최종 점수의 상한값인 100으로 나누어 0.8 (80%)로 계산한 후, 공격적 성향의 ETF 종목 중 상위 20%의 상관계수 값을 가지는 ETF를 추천합니다. 그렇기 때문에 여기서 상관계수 값을 스피어만 상관계수로 사용하게 되면 그 오름차순으로 분류된 상관계수 값이 리스크 헷지의 정도를 나타내는 것이 아니라 상관관계 경향의 강도를 나타내기 때문에 적절하지 않습니다.
하지만 주식 시장 데이터는 일반적으로 비선형성을 띕니다. 주가의 움직임은 수많은 요인에 의해서 영향을 받기 때문에 선형 관계를 가지기 보다는 비선형 관계를 가지는 경우가 많습니다. 실제 연구 결과에 따르면 주식 데이터의 상관관계나 회귀 분석을 수행할 때 비선형성을 고려해야 한다는 결과가 많습니다.
그래서 저희는 ‘피어슨 상관계수’와 ‘스피어만 상관계수를 적절히 조합하여 사용해야 했습니다.
많은 고민을 한 결과, 양과 음의 상관관계에 대한 결과는 ‘스피어만 상관계수’를 신뢰하기로 하고, 상관계수 값은 ‘피어만 상관계수’를 신뢰하기로 했습니다.
‘피어슨 상관계수’와 ‘스피어만 상관계수’를 그대로 사용하고, 부호를 비교합니다. 비교를 해보니 부호는 대부분 비슷했지만 상관계수 값이 0에 가까운 몇몇의 값들이 서로 부호가 다른 모습을 보였습니다. 부호는 비선형 데이터의 더 적합한 ‘스피어만 상관계수’를 따라가서 부호를 ‘스피어만 상관계수’에 맞춰 조정하고, 상관계수 값은 ‘피어슨 상관계수’를 그대로 사용하는 방식으로 문제를 해결하였습니다.
저희 프로젝트의 개인 맞춤형 서비스를 위해 사용자의 투자 시 위험 감수 성향 점수를 도출해야 했습니다. 이 점수는 ETF 상관계수 범위인 -1 ~ 1에 맞추어 -100점 ~ 100점으로 결정했습니다.
저희는 사용자의 성향 점수를 도출하기 위해 설문조사를 활용하기로 했습니다. 사용자가 개인 맞춤형 서비스를 이용하고 싶다면 설문조사에 참여하도록 계획했습니다.
처음에는 객관식 질문만으로 설문조사를 구성했습니다. 하지만 객관식 질문만으로는 투자 시 위험 감수 정도를 판단하기 어려웠습니다. 특히나 객관식 질문에 대한 응답 만으로 점수의 신뢰성을 보장하기가 어려웠습니다. 따라서 저희는 서술형 질문을 도입하게 되었는데, 서술형 질문을 어떻게 분석해야 할지가 큰 난관이었습니다.
저희 팀은 LLM을 도입하고 리커드 척도 이론을 결합하여 문제를 해결했습니다.
리커드 척도 이론은 특정 질문에 대해 응답자가 얼마나 동의하거나 반대하는지를 수치로 평가하는 측정 방법입니다.
리커드 척도 이론은 응답자가 쉽게 이해할 수 있다는 장점이 있으나, 정확한 의미 해석에 어려움이 있고, 응답자가 중립적 선택지를 고르면 실제 의견을 반영하기 어렵다는 문제가 있습니다.
저희는 이러한 리커드 척도의 단점을 LLM을 통해 해결하고, LLM의 단점을 리커드 척도를 통해 해결할 수 있다고 생각했습니다.
위 사진은 사람이 리커드 척도 이론을 따르는 질문에 답변하는 예시와 저희가 설계한 LLM이 서술형 답변을 평가하는 예시입니다.
LLM이 서술형 답변을 평가하는 방식을 사람이 답변하는 방식과 동일하게 설계했습니다.
예를 들어 보겠습니다. 사람은 질문을 보고, 자신의 상태가 이 질문의 5가지 점수 중 어느 것에 가장 적절할지 생각하고 답변을 고릅니다.
같은 흐름입니다. LLM은 서술형 답변을 보고, 이 답변이 5가지 점수 중 어느 것에 가장 적절할지 생각하고 답변을 고릅니다.
이런 식으로 LLM에 리커드 척도를 적용하여, 기존 LLM보다 답변의 변동을 줄이면서 쉽고 빠르게 서술형 답변을 분석할 수 있었습니다.
저희 서비스의 Airflow 웹 서버는 위와 같은 흐름도를 통해 분석 결과를 백엔드 서버에 전달합니다.
Apache Airflow란
Apache Airflow는 워크플로우를 정의하고 실행하는 플랫폼입니다. 기존 웹 서버와 다르게 배치 프로세스나 파이프라인처럼 순차화된 처리에 특화되어 있습니다.
응용 백엔드 서버가 파이썬에게 데이터의 수집부터 전처리, 분석, 후처리까지 순차적으로 분석 서비스를 제공받아야 하기 때문에, Flask같은 일반적인 Python 백엔드 서버보다는 이를 하나의 Workflow로 구성할 수 있는 Apache Airflow를 채택했습니다.
Airflow는 DAG(Directed Acyclic Graph)로 워크플로우를 표현합니다. 워크플로우를 구성하는 작업들을 Task로서 순서대로 배치하여 조건에 맞게 실행할 수 있도록 합니다. 특히, DAG는 작업 내용보다는 작업 순서, 작업 재시도 횟수 등의 실행 방법에 집중하여 워크플로우가 안정적으로 운영될 수 있도록 관리합니다.
VIN 서비스에서는 다음과 같은 DAG를 생성했습니다.
- LLM을 통한 성향 분석 DAG
- 사용자의 설문조사 결과를 입력받습니다.
- 사용자의 위험 감수 성향 점수와 AI의 코멘트를 응답합니다.
- 1개 ETF 상품에 대한 5개 추천 ETF 상품 도출 DAG
- 1개 ETF의 티커 심볼을 입력받습니다.
- 5개의 ETF 티커 심볼을 응답합니다.
Airflow 웹 서버는 REST API를 제공하기 때문에 외부에서 DAG를 트리거하여 DAG run 객체를 생성하고 그 결과를 응답받을 수 있습니다.