
🚨 Notice
- 해당 글을 읽기 전에 먼저 BRAIN에서 함수를 직접 한 번 시뮬레이션해 보고 오세요. 코드를 작성한 뒤 우측 하단의 Simulate 버튼을 눌러 결과를 확인하면 되며, Submit Alpha는 하지 말고 단순히 시뮬레이션 결과만 확인하면 됩니다. 이 글의 질문을 남겨주실 때에는 본인이 시뮬레이션 돌려본 함수(코드)를 함께 남겨주시길 바랍니다.
- 이번 IQC 대회에 참가를 희망하는 인원들은 이 글을 읽고난 후 2026년 IQC stage 1 점수 계산방법도 반드시 정독해주세요.
Sharpe는 알파가 얼마나 일관되게 수익을 만들어내는지를 나타내는 대표적인 성과 지표. 단순히 수익의 크기만 보는 것이 아니라, 그 수익을 만들기 위해 감수한 변동성 대비 성과를 측정함. 따라서 같은 수익률이라도 변동성이 더 낮고 안정적으로 발생하는 알파일수록 Sharpe 값이 높게 나타남.
수익의 일관성을 나타내는 대표적인 지표는 알파의 평균 일일 수익률의 평균을 표준편차(변동성)로 나눈 정보 비율(Information Ratio)임.
Sharpe Ratio는 이러한 정보 비율을 연율화한 지표로 볼 수 있으며, 일반적으로 다음과 같이 표현됨
여기서 252는 1년 동안의 평균 거래일 수를 의미하며, 일별 기준으로 계산된 성과를 연 단위로 환산하기 위해 사용됨
산출방식(수식)을 보면 어떻게하면 해당 지표의 값이 높게 나올지 예상가능함
수익률 높이기
이건 창의성, 금융지식의 영역. 그냥 우리가 만든 함수 자체가 애초에 좋은 함수였던 것. 더 좋은 방법은 없을까? 혹은 이러한 접근이나 가정 자체가 틀렸던 게 아닐까? 생각해보는 과정
변동성 줄이기
Sharpe를 높이기 위해서는 수익률을 높이거나 변동성을 줄여야 하지만, 실무적으로는 불필요한 변동성을 줄이는 접근이 더 쉽고 안정적임. 뭔가 새로운 걸 하려는 거 보다 기존걸 잘 다듬는 것만으로도 충분할 수 있다는 것!
알파의 변동성을 줄이기 위해서는 먼저 변동성이 어디에서 발생하는지 원인을 파악해야 함. 알파가 시간에 따라 안정적으로 좋은 종목을 선별하는 규칙이라면 그 신호는 명확한 금융적 의미를 가지기 때문에 대체로 많은 구간에 안정적으로 수익을 낼 수 있어야 함. 근데 그렇지 않다는 것은 중립화가 충분히 진행되지 않아서, 외부 팩터에 의해서 포트폴리오 수익률이 좌지우지되는 상황이라는 것임. 따라서, 어떤 팩터가 나의 전략(함수)에 의도치 않은 영향을 미치고 있는지 찾아내고, (이 과정은 Brain 플랫폼에서 할 수 없음) 해당 팩터에 대한 더 세부적인 중립화를 통해서 변동성을 줄여나갈 수 있음.
중요한 점은 단순히 volatility 자체를 낮추는 것이 목표가 아니라 불필요한 변동성(시장·섹터 노출 등)은 줄이고, 정보에서 발생하는 변동성은 유지하면서 IR = Return / Volatility를 최대화하는 구조로 알파를 설계하는 것이 목적임. 즉 중립화의 목적은 단순히 변동성을 낮추는 것이 아니라 알파의 금융적 의미와 무관한 체계적 노출을 제거해 신호의 순수한 예측력을 남기는 데 있음. 따라서 무조건적인 중립화는 오히려 수익의 원천까지 제거할 수 있으므로, 알파 아이디어가 설명하려는 위험만 선택적으로 제거하는 것이 중요함
포트폴리오에서 하루 동안 새로 거래된 포지션 규모가 전체 보유 포지션 대비 차지하는 비율을 의미하는 거래 회전율 지표.
종목 의 시점 가중치를 라 하면 하루 동안 변경된 포지션 규모는 로 표현되며, 매수·매도 중복을 보정하기 위해 다음과 같이 계산됨.
BRAIN 결과 화면에 표시되는 turnover는 특정 하루 값이 아니라 백테스트 기간 동안의 평균적인 일별 turnover로 이해할 수 있으며 개념적으로는 다음과 같이 표현할 수 있음.
따라서 예를 들어 summary turnover = 0.4라면 백테스트 기간 동안 평균적으로 매일 포트폴리오의 약 40%가 교체된 수준으로 해석할 수 있음.
수식을 보면 turnover는 결국 가중치 변화 에 의해 결정되므로 포지션이 너무 빠르게 변하지 않도록 설계하는 것이 핵심
SignalSmoothing
시그널 생성 단계에서 ts_mean(return, 5)같은 과거 데이터를 반영하는 operator나, rank(returns)등의 순위 기반 operator를 통해서 시그널 자체의 변동폭이 작아지도록 과거 데이터를 반영하여 계산함.
Position Smooting
시그널은 그냥 전략대로 뽑아낸 뒤에, 포지션 벡터에 제약을 걸어서 변동폭이 작아지도록 하는 것. 대표적인 예로 전에 살펴본 setting에서 decay값을 늘리는 게있음
Bigger Universe
투자 유니버스를 더 큰 집합으로 설정하는 것도 방법인데 TOP3000에서 TOP500으로 종목 수가 줄어들수록 신호가 실제 포지션에 더 강하게 반영될 수 있음.
Data
뉴스·애널리스트 데이터처럼 이벤트 기반 데이터는 자연스럽게 turnover가 높아질 수 있음. 예를 들어서 가격기반 데이터는 0.1, 0.2 0.15, 0.09 이런 식으로 일일 turnover가 측정된다면, 이벤트 기반 데이터를 사용할 경우에는 0.0, 0.9, 0.8, 0.0 이런 식.
✚ Turnover를 높이는 방법에는 한 번 거래할 때 더 많이 거래하는 방식도 있지만, 자주 거래하는 방식도 있음! 자주 자주 포지션이 바뀌는 전략을 쓰면 Turnover가 높게 나올 수 있음.
백테스트 기간 동안 전략(함수)를 통해서 운용된 포트폴리오의 총 수익을 의미
롱 포지션과 숏 포지션에서 발생한 PnL의 합으로 포트폴리오 수익률이 결정되며, 각 종목 수익률에 포지션 가중치를 곱한 가중합 형태로 계산됨. 시점 시점 에서 종목 의 포지션 가중치를 , 종목 수익률을 라 하면 포트폴리오의 일일 수익률은 다음과 같이 정의됨
백테스트 기간이 일일 때 총 Returns(누적 수익률)은 일별 수익률을 단순히 합하는 것이 아니라 복리(compounding)로 누적되며 다음과 같이 계산됨
수식을 보면 자명함. 결국 일일 수익률이 게속 좋으면 Returns도 좋을 것임. 근데 문제는 이 수익률을 어떻게 높게 뽑아내냐인데..다른 metric과 다르게 명쾌한 해법이 존재하지 않음. 그래도 살펴보자면 다음과 같음.
Fitness는 Sharpe, Returns, Turnover를 함께 고려하여 알파의 종합적인 성능을 평가하는 지표.
수식을 보면 Fitness는 다음과 같은 구조를 가짐.
Sharpe가 높을수록 증가
Returns가 클수록 증가 (제곱근 형태로 반영)
Turnover가 작을수록 증가 (0.125보다 작아질 수는 없음)
Fitness 자체의 값을 높이는 데 집중하기보다, 지표 간의 균형을 맞추는 용으로 활용. 예를 들어 Returns를 과도하게 키우는 과정에서 Turnover가 급증하면 오히려 Fitness가 개선되지 않거나 악화될 수 있음.
Drawdown은 백테스트 기간 동안 전략이 경험한 가장 큰 손실 규모를 나타내는 지표. WorldQuant BRAIN에서는 일반적인 금융에서 사용하는 전체 기간 기준 Maximum Drawdown과 달리 백테스트 기간을 연도 단위로 나누어 각 연도에서 발생한 최대 손실 비율을 계산하고 그중 가장 큰 값을 Drawdown으로 표시함.
즉 전략이 어떤 특정 연도에서 경험했던 가장 큰 손실 비율이 Drawdown 값이 됨.
변동성 줄이기
중립화를 통해 특정 리스크 요인에 의해 포트폴리오가 크게 흔들리는 상황을 줄임
Combining Function
여러 알파를 결합한 포트폴리오 구조를 구성하면 서로 다른 신호 간의 상관관계가 분산되어 손실 구간이 완화될 수 있음.
Turnover
조금 거래할수록, 그리고 안전하게 거래할수록 손실폭은 줄어들 수 있음
Returns가 전략이 전체적으로 얼마나 많은 수익을 냈는지를 보여주는 지표라면, Margin은 거래된 금액 1달러당 평균적으로 얼마의 이익을 창출했는지를 나타냄.
시점 에서 발생한 PnL을 , 해당 시점에 거래된 총 금액을 라 하면 일별 Margin은 다음과 같음.
백테스트 기간이 일일 때 결과 화면에 표시되는 Margin은 다음과 같이 계산됨.
Margin은 일반적으로 bps(basis points, 만분율) 단위로 환산되어서 표현됨. 예를 들어 Margin이 5bps (= 0.05% = 0.0005)라면 이는 거래 금액 1달러당 평균적으로 0.0005달러의 이익을 얻는다는 의미임.
10,000달러 거래 → 약 5달러 이익
100,000달러 거래 → 약 50달러 이익
1,000,000달러 거래 → 약 500달러 이익
WorldQuant에서 최소 5bps 이상의 Margin을 만족해야한다고 하는데, 이유는 이 정도 수준이 되어야 수수료와 슬리피지 같은 거래 비용을 감당하고도 전략이 실제로 순이익을 낼 가능성이 높기 때문임.
fitness와 유사하게, 직접적인 목표라기보다는 참고지표인 것 같음
앞에서 살펴본 2부터 7까지의 항목을 Key Performance Metric이라고 하며 당연히 전략 평가기준의 기본중의 기본이 됨
단순 지표말고도 전략의 강건성을 판단하기 위한 테스트들을 통과해야 함
진짜 액티브 알파라면 기존 전략과 상관관계가 낮고 시장·유니버스가 바뀌어도 동일하게 작동해야 하며, 이를 통해 특정 환경에 과적합된 것이 아닌 구조적 예측력을 갖는지 강건성을 검증하는 것이 핵심임. 예를 들어 “전일 상승 종목의 단기 약세” 같은 회귀 전략이 특정 국가에서만 작동한다면 이는 보편적 알파가 아니라 지역·시장 특성에 의존한 제한적 효과일 가능성이 높은 것.
Turnover: Between 1% and 70% 이라고 하셨는데, 범위를 보았을때 상당히 폭넓다는 생각이 듭니다. 그렇다면 Turnover 지표보다는 다른 지표를 향상하는 것에 중점을 두어도 되지 않을까라는 생각이 드는데 이에 대해 어떻게 생각하시는지 궁금합니다.