
🚨 Recap
월드퀀트에서 말하는 Alpha를 앞으로 우리는 Signal을 생성하는 Function(함수/전략)이라는 용어로 통일해서 사용함을 반드시 기억! (브레인 플랫폼에서 자료 학습할 때도 유의할 것) 수학에서 함수들을 합성하면 새로운 합성함수를 만들 수 있듯이, 새로운 전략을 설계할 때 완전히 새로운 아이디어를 작성하기보다 이미 존재하는 Function들을 적절히 조합해 활용하는 방법이 가능함. 이 장에서는 이러한 방식으로 Function을 결합할 때 각 Function이 갖추어야 할 조건과 고려해야 할 요소들을 소개하고자 함.
위의 방식으로 새로운 함수를 제안해도 안될 건 없지만, 서로 관련 없는 function을 선형결합하는 것은 몇 가지 문제가 있음
따라서, 좋은 합성 함수를 만들기 위한 두 가지 조건을 자연스럽게 떠올릴 수 있음.
조건에 따라 서로 다른 알파를 직접 전환하는 regime switching 구조임. 즉 조건이 참이면 한 전략을 사용하고, 거짓이면 다른 전략을 사용하므로, 두 신호를 동시에 더하거나 빼서 하나의 방향성으로 다시 수렴시키는 문제가 발생하지 않음. 따라서 if_else의 핵심은 상황별로 대체 전략을 명확히 분리해 적용함으로써, 한 알파가 부진한 구간에서 다른 알파가 보완적으로 작동할 수 있게 만드는 것
✚ if_else()의 직관적 이해
구간별로 정의된 함수에서 각 구간의 식을 f1, f2로 볼 수 있으며, 특정 기준값(예: 1.0)을 기준으로 어떤 식을 사용할지를 선택하는 구조가if_else라고 이해할 수 있음. 즉 조건이 참이면 f1을 사용하고, 거짓이면 f2를 사용하는 방식으로 서로 다른 식을 구간에 따라 선택하게 됨. 이처럼 고차식(삼차식·사차식 등)을 직접 사용하지 않더라도, 조건에 따라 다른 식을 선택하는 구조만으로도 전체 함수 f의 관점에서는 비선형적인 형태가 만들어질 수 있다는 점을 직관적으로 이해하면 좋음.
특정 조건에서만 알파 함수가 실제 포지션을 생성하도록 제한하는 조건부 실행 구조임. entry 조건이 충족된 구간에서만 함수 (f)의 신호가 사용되어 포지션이 생성·업데이트되며, exit 조건이 발생하면 해당 종목의 포지션은 즉시 0으로 리셋되어 완전히 종료되는 구조임. 따라서 exit 이후에는 기존 포지션이 유지되지 않고, 다시 entry 조건이 충족되기 전까지 해당 종목은 거래되지 않는 상태를 유지하게 됨. 이러한 구조는 시장 전체의 거래를 멈추기 위한 목적이라기보다, 알파의 신뢰도가 낮아질 가능성이 있는 특정 종목·상황을 제외하거나 예외적인 구간에서의 노출을 줄이기 위한 장치임. 즉 이벤트, 유동성 문제, 데이터 왜곡 등으로 인해 신호가 정상적으로 작동하지 않을 수 있는 상황에서 해당 종목에 대한 진입을 제한하거나 기존 포지션을 정리함으로써 알파의 취약 구간 노출을 줄이는 역할을 수행함.
를 구성하는 , 의 상관관계가 낮아야 한다고 하면 “상관관계가 음수여야 진짜로 보완적인 것이 아닌가?”라는 의문이 생길 수 있음. 예를 들어 모멘텀 전략과 리버전 전략처럼 서로 명확히 반대 방향의 신호가 되어야만 결합을 통해 의미 있는 효과가 발생하는 것이 아닌지 생각할 수 있음.
이론적으로는 상관관계가 큰 음수일수록 가장 강한 헤지 효과가 발생하지만, 실제 알파 연구에서는 이러한 관계가 거의 나타나지 않음. 대부분의 알파는 가격, 모멘텀, 거래량, 뉴스 등 유사한 정보 집합을 기반으로 만들어지기 때문에 완전히 반대 방향의 신호가 지속적으로 나타나는 경우가 드물며, 설령 나타나더라도 장기적으로 안정적으로 유지되기 어렵기 때문임. 따라서 실무에서는 “강한 음의 상관”을 목표로 하기보다는 서로 거의 독립적으로 움직이는 낮은 상관(low correlation 또는 near independence)의 알파들을 많이 확보하는 것을 더 현실적인 목표로 삼음.
이를 직관적으로 이해하기 위해 간단한 실생활 함수 예시를 생각해 볼 수 있음. 예를 들어 와 처럼 동일한 입력 변수에 대해 같은 방향으로 선형적으로 반응하는 함수들은 입력이 증가하거나 감소할 때 항상 같은 방향으로 함께 움직이므로 높은 양의 상관관계를 가지게 됨. 반대로 와 와 같이 입력에 대해 정확히 반대 방향으로 반응하는 함수들은 한 함수가 증가할 때 다른 함수가 동일한 크기로 감소하므로 강한 음의 상관관계를 형성함. 한편 서로 다른 구조를 가진 함수들, 예를 들어 와 처럼 선형 함수와 주기 함수의 관계에서는 특정 구간에서는 같은 방향으로 움직이기도 하고 다른 구간에서는 반대 방향으로 움직이기도 하므로 전체적으로 상관관계가 낮은 관계가 나타나게 됨. 더 나아가 와 처럼 서로 다른 변수에 의존하는 함수의 경우 두 함수의 변동이 직접적으로 연결되지 않기 때문 near independence(거의 독립적인 관계)로 이해할 수 있음. 실제 알파 연구에서도 완전히 반대 방향의 신호를 찾기보다는 이렇게 서로 다른 방식으로 반응하여 동조성이 낮은 신호들을 확보하는 것이 포트폴리오 분산 효과를 만드는 데 더 현실적인 접근으로 여겨짐.
이렇게 구성된 알파 집합에서는 특정 알파가 드로우다운을 겪더라도 다른 알파들이 동일한 시점에 동시에 악화될 가능성이 낮아 전체 포트폴리오의 변동성과 드로우다운이 완화되는 분산 효과가 발생함. 반대로 상관관계가 높은 알파들로 구성된 풀에서는 여러 알파가 동일한 구간에서 동시에 성과가 악화될 수 있어 포트폴리오 리스크가 커지게 됨. 이러한 이유로 플랫폼에서 말하는 Alpha pool diversification은 보통 강한 음의 상관을 의미하기보다는 낮은 상관관계와 서로 다른 드로우다운 패턴을 가진 알파들의 집합을 의미함..
이전 글에서 남재현님의 질문에 대한 답변을 먼저 확인해주세요
과 가 기존에 널리 알려진 팩터를 기반으로 한 함수라면, 예를 들어 rank(returns)처럼 단순한 모멘텀 팩터를 활용한 구조의 경우 기존 팩터의 영향권 안에서 변형된 형태로 볼 수 있으므로 이러한 결합을 통해 만들어진 는 확장형 액티브 알파 전략에 가깝다고 볼 수 있음. 반대로 과 가 기존에 정립된 팩터가 아니라 새로운 데이터 해석이나 구조에서 출발한 함수라면, 이들을 결합해 만든 역시 기존 팩터 체계와 독립적인 순수 액티브 알파 전략으로 해석될 수 있음. 실제 함수(전략) 연구에서는 이러한 두 유형이 반복적으로 확장되는 구조가 자주 나타남. 즉 먼저 새로운 아이디어를 기반으로 한 비교적 순수한 형태의 함수 들을 몇 개 설계하고, 이후 이들을 결합하거나 변형하여 확장형 함수를 만들어 함수 풀을 넓혀 나가는 방식임. 이후 다시 새로운 아이디어에서 출발한 순수 함수들을 추가하고, 이를 기존 함수들과 재조합하는 과정을 반복하면서 함수의 수와 구조를 점진적으로 확장해 나가는 식으로 연구가 진행되는 경우가 많음. (질적 연구 + 양적 연구 병행). 스마트 베타 전략을 쓸 일은 브레인 플랫폼 상에서 없기 때문에 앞으로 우리가 만들어낼 함수는 순수형, 확장형 이렇게 두개로 부르기로 약속!
앞에서도 잠깐 언급했듯이 함수가 지나치게 복잡해지거나, 중립화가 원하는 수준만큼 이루어지지 않거나, 불필요한 미세 조정(e.g. setting에서 decay를 2에서 3으로 늘리는 식의 조정)을 하게 되면 가 담고 있던 금융적 해석 가능성이 점차 희석되고 동시에 overfitting 위험도 함께 증가하게 됨.
브레인 플랫폼에서도 이러한 이유로 알파를 설계할 때 데이터 필드는 최대 3개, 연산자는 최대 8개 이내로 제한하는 비교적 단순한 구조를 일반적으로 권장하고 있으며, 더불어 중립화(neutralization)를 통해 의도하지 않은 factor 노출을 제거하는 과정 역시 중요한 설계 원칙으로 강조됨.
exit 조건 발생 시 해당 종목의 포지션을 즉시 0으로 리셋하여 위험 노출을 줄인다고 명시하셨습니다. 포지션을 즉각적으로 0으로 청산한다는 것은 그 순간 해당 종목에 대해 Turnover이 발생함을 의미합니다. 브레인 플랫폼과 같은 퀀트 평가 환경에서는 Turnover과 거래 비용이 시그널의 Fitness나 Sharpe를 손상시킬 수 있습니다니다. 위험 노출을 피하려다 오히려 거래 비용 폭탄을 맞아 알파가 망가지는 현상을 피하는게 좋을지 아니면 그래도 위험 부담을 줄이는 것이 좋을지 궁금합니다.( 어떤 전략이 일반적으로 좋을지 궁금합니다)
마지막 부분에서 함수가 지나치게 복잡할 경우 금융적 해석 가능성은 희석 되고 동시에 과대적합의 가능성도 높아진다고 나와있습니다. 금융적 해석 가능성의 희석은 이해가 되지만 어떻게 과대적합이 증가하는 것이며, 이를 해결하는 방법이 함수를 간단하게 설계하는 방법 밖에 없는 것인지 궁금합니다.
if_else(condition, f1, f2)가 조건에 따라 서로 다른 알파를 직접 전환하는 regime switching 구조라고 나와있습니다. 그런데 데이터가 조건의 경계선에서 왔다갔다해서 f1, f2 전략을 수시로 바꿔야 하는 상황이 온다면, 거래 비용이 증가할 것 같은데, 이를 해결할 수 있는 방법이 있는지 궁금합니다. 또한, 앞에서 말한 f1,f2 전략을 수시로 바궈야 하는 상황이 trade_when(entry, f, exit)에서 exit 조건에 포함되는지 궁금합니다.
독립적인(상관관계가 0에 가까운) 알파들을 그럼 많이 합칠수록 각각의 실수는 서로 상쇄하고 수익은 쌓일 수도 있을 것 같은데 이런 알파들을 많이 합치는 방법에 단점은 무엇일까요? 당장 생각나는게 사고팔아야 하는 종목 수가 많아지니까 수수료 문제만 떠오릅니다. 근데 그래도 수익이 더 난다면 수수료 단점을 상쇄하고도 남을 것 같아서요
알파를 판단하는데에 있어 점수가 산출될 때, setting 값에 의해서 결정된다면 그것이 단순 알파에 대한 판단이라고 할 수 있는지, 아니면 그것조차 포함해서 알파 or 시그널이라고 부르는 건지 궁금합니다
설계에 따라 알파 값이 강하게 작용하는 시기가 만들어진다고 한다면, 의도적으로 특정 시기를 거냥하고 만드는 것은 잘못된 것인가요?
반대로 모든 사람이 일반적인 상황에서 성능을 잘 내는 알파를 만든다고 한다면 그것이 오히려 헤지 효과를 낮추는 일이 아닌가 하는 의문이 있습니다.