본문 바로가기
시스템트레이딩

자산배분전략의 환위험 헷지

by 오늘밤날다 2025. 11. 6.

 

 

 

해외 ETF를 사용한 자산배분 전략을 어느 정도 마무리 지었는데 환율 문제가 생각났다.

달러 또한 장기적으로는 우상향 하는 자산 중의 하나라고 생각하지만 변동성이 얼마나 될지 몰라서 한번 반영해 봤더니 금융위기라든지 특정 구간에서 변동성이 심해졌고 -10% 안쪽으로 운영하기 위해 최대한 안정적으로 구성했던 변수들이 전혀 의미 없어졌다.

 

  CAGR TOTAL_PLR MDD SHARP
USD 8.4% 168.2% -7.0%          1.255
KRW 10.8% 215.6% -19.5%          0.994

 

 

 

 

  • 평균 모멘텀 스코어에 따른 환헷지

첫 번째로 든 생각은 환율의 움직임 중 하락하는 것만이 위험이라고 볼 수 있기 때문에 환율 자체의 평균 모멘텀 스코어를 가지고 하락장을 판단해서 이 시점에 헷지를 하는 것은 어떨까 하고 테스트해보고 있었는데 쓸만한 결과가 나오지 않았다. 

 

사실 평균 모멘텀 스코어만 보았을 때는 정규분포와 같은 형태가 나타나지 않는다. 조금 더 생각해 보니 횡보 짱이라 판단되는 0.5를 기준으로 일정 수준 벗어나는 경우에 환헷지를 걸면 환율이 상승하든 하락하던 어느 정도 큰 변동성을 막아 주면서 USD기준에 근접하는 수익률 곡선을 만들어 줄 수 있겠다 싶었다.

 

어느 방향이든 모멘텀 스코어가 중심에서 멀어지는 순간 70%의 익스포저를 헷지 하는 경우에는 대략 아래와 같은 흐름이 나왔다.

점수를 가지고 가중치를 두는 방법도 생각해 봤지만 큰 개선이 보이지는 않았다.

 

  CAGR TOTAL_PLR MDD SHARP
USD 8.4% 168.2% -7.0%          1.255
KRW 10.8% 215.6% -19.5%          0.994
KRW (hedge_model1) 9.5% 189.8% -10.6%          1.323

 

 

문제는 상당히 오랜 기간 동안 환율을 헷지 하는데 비용이 소모된다는 점이다. 다른 방법을 찾아야 했다.

이 방법을 조금 더 생각해 보다가 "어느 방향이든 모멘텀 스코어가 중심에서 멀어지는 순간" 이란 말이 변동성을 의미한다는 것을 알았다.

 

 

 

 

  • 변동성에 따른 환헷지

우선 정상적인 환율의 변동성을 정의하고 최근 일정기간 동안의 변동성이 어떤 임계점을 넘어서는 시점부터 환율의 변동성이 크게 증가할 수 있으니 위든 아래든 헷지를 시작하는 방법을 생각해 봤다.

 

여러 가지 변수들을 모조리 테스트해 봤는데 분명 효과는 있으나 무슨 변수들을 사용해야 할지 판단하기 어려웠다. 따라서 Sharp지수와 헷지기간을 고려해서 정성적으로 변수들을 선택했다. 특히 hedge_ratio를 1에 가깝게 설정하면 sharp_ratio나 전체 성과가 더 개선되는 효과도 있었지만 약간의 환노출은 부가피하다고 생각해서 0.7 수준에 맞췄다. 어찌보면 0.7도 너무 과도한 수치일지도 모르겠다. 

 

설명하기가 좀 어려워서 그 부분의 코드를 그대로 붙여 넣으면 아래와 같다.

 

 

long_period = 252 * 5
current_period = 200
threshold = 0.5
hedge_ratio = 0.7

# sigma = 200일 동안의 일일 USD 로그 수익률의 stdev
# sigma_mean = sigma의 5년 (252 X 5 = 1260일) 동안의 평균
# sigma_std= sigma의 5년 (252 X 5 = 1260일) 동안의 stdev
# sigma_mean + threshold * sigma_std  <  sigma인 경우 환헷지 시작

df['sigma'] = df['usd_plr'].rolling(current_period).std()
df['sigma_mean'] = df['sigma'].rolling(long_period).mean()
df['sigma_std'] = df['sigma'].rolling(long_period).std()
df['threshold'] = df['sigma_mean'] + threshold * df['sigma_std']
df['hedge_condition'] = df['sigma'] > df['threshold']
df['hedge_ratio'] = np.where(df['hedge_condition'].shift(1), hedge_ratio, 0)

 

 

  CAGR TOTAL_PLR MDD SHARP
USD 8.4% 168.2% -7.0%          1.255
KRW 10.8% 215.6% -19.5%          0.994
KRW (hedge_model2) 10.8% 214.8% -7.2%          1.375

 

 

결과는 나쁘지 않다. 금융위기뿐만 아니라 이후 구간에서도 괜찮은 흐름을 보여준다. 

 

 

'시스템트레이딩' 카테고리의 다른 글

전략의 유효성  (0) 2025.11.08
Calm Rebound Allocator (CRA)  (0) 2025.11.07
절대모멘텀 - SPY, QQQ  (0) 2025.11.03
자산배분전략 #2  (0) 2025.11.01
자산배분전략 #1  (0) 2025.10.25