Skip to content

기술적 분석 4장: MACD 골든크로스는 언제 유효한가?

MACD 골든크로스 분석

2장에서는 MA20과 MA60의 추세 상태를 보유 전략으로 바꿨을 때 누적수익률 +63.55%를 기록했습니다. 1장의 개별 신호 비교에서도 MACD 골든크로스는 RSI 회복보다 양수 비율과 중앙값이 높았습니다. 이번 장에서는 이 관계가 단순한 사건별 통계에 그치지 않고, MACD 상태를 계속 보유하는 전략에서도 이어지는지 확인합니다.

MACD 골든크로스는 MACD 선이 Signal 선을 아래에서 위로 통과하는 현상입니다. 상승 전환을 보여주는 것처럼 보이지만, 이동평균에서 파생된 지표이므로 신호가 발생할 때 이미 주가가 상당히 움직였을 수 있습니다.

g = df.sort_values(["code", "date"]).copy()
g["ema12"] = g.groupby("code")["close"].transform(
lambda x: x.ewm(span=12).mean()
)
g["ema26"] = g.groupby("code")["close"].transform(
lambda x: x.ewm(span=26).mean()
)
g["macd"] = g["ema12"] - g["ema26"]
g["macd_signal"] = g.groupby("code")["macd"].transform(
lambda x: x.ewm(span=9).mean()
)
g["macd_golden_cross"] = (
(g.groupby("code")["macd"].shift(1) <= g.groupby("code")["macd_signal"].shift(1))
& (g["macd"] > g["macd_signal"])
)

검증 구간에서 MACD 골든크로스는 1,868회 발생했습니다.

신호발생 횟수20일 양수 비율평균 수익률중앙값
MACD 골든크로스1,868회55.1%+6.98%+2.72%

RSI 회복보다 양수 비율과 중앙값이 모두 높았습니다. 평균수익률뿐 아니라 양수 비율과 중앙값도 함께 개선됐기 때문에, 최소한 이번 표본과 기간에서는 MACD 골든크로스가 단순 과매도 회복보다 안정적인 결과를 보였습니다.

MACD 상태를 20일 동안 보유하는 추세 전략으로 바꾸면 검증 구간 누적수익률은 +58.15%, 최대낙폭은 -33.52%였습니다. 코스피의 누적수익률 +33.62%보다 높았지만, 손실 구간은 여전히 컸습니다.

MACD 골든크로스의 사건별 결과는 평균 +6.98%, 중앙값 +2.72%, 양수 비율 55.1%였습니다. 이 신호를 상태 기반 전략으로 바꾸자 누적수익률 +58.15%와 Sharpe 근사 2.00이 나왔습니다. 즉 신호가 발생한 순간의 통계적 우위가 포트폴리오 수준에서도 어느 정도 이어졌지만, 최대낙폭 -33.52%가 남아 “수익률이 높으면 위험도 낮다”는 결론으로 확장할 수는 없습니다.

MACD는 “오늘 사면 내일 오른다”는 단기 예측 도구가 아니라 방향이 바뀌었는지 확인하는 추세 신호에 가깝습니다. 따라서 다음 조건을 함께 기록해야 합니다.

  • 신호 이전 20일 수익률
  • 신호일의 거래량 비율
  • MA20과 MA60의 방향
  • 신호 후 최대 하락폭

평균 수익률이 높아도 특정 몇 개 종목의 급등 때문일 수 있습니다. 그래서 평균과 중앙값, 양수 비율을 동시에 공개했습니다.

다음 장에서는 평균회귀 성격이 강한 볼린저 밴드 하단 반등이 RSI와 같은 약점을 보이는지 비교합니다.

결과 원본은 신호별 결과 CSV, 전략 결과 CSV에서 확인할 수 있습니다.