SOXL 매매 전략 : 연평균 수익률 29%, MDD 46%
📌 원문: https://m.blog.naver.com/hyunsoo-is-cute/224043310001

SOXL은 SOXX라는 반도체 지수 ETF를 3배로 추종하는 상품으로, 엄청난 변동성을 자랑합니다.
하루에 20% 오르는 일도 심심치 않게 있지만, 반대로 하루에 20% 하락하는 일도 자주 있죠.
그냥 Buy and Hold로 매매한다면 90%가 넘는 MDD 때문에 버티기가 매우 힘듭니다.

오늘은 tradingview에서 pine script를 통해 제가 개발한 SOXL 매매법을 소개해보려고 합니다.
매매 아이디어
기본적인 투자 아이디어는 그리드 매매입니다.
그리드 매매란, 특정 자산의 가격 변동성을 활용하여 수익을 내는 자동화 매매 전략 중 하나입니다. 쉽게 말해, 미리 정해둔 가격 구간에 거미줄처럼 촘촘하게 매수와 매도 주문을 걸어놓고, 가격이 오르내릴 때마다 주문이 체결되면서 작은 수익을 꾸준히 쌓아가는 방식입니다.
'추세'를 예측하여 큰 수익을 노리기보다는, 가격이 일정 범위 안에서 움직일 것이라는 가정하에 그 '변동성' 자체를 수익의 원천으로 삼는 것이 핵심입니다.
SOXL의 가격 자체를 예측할 수는 없기에 어느 정도 가격이 하락하면 사고, 어느 정도 가격이 상승하면 파는거죠. 대신 이걸 여러개로 분할해서 거래해서 최대한 위험도를 낮춥니다.
SOXL은 지속적으로 우상향 한다기 보다도 천국과 지옥을 왕복하는 스타일로 움직이기 때문에, 그리드 매매법이 좀더 적절하다고 생각했습니다.
매매 방법
1단계: 첫 매수 시점 포착
먼저, 최근 120일 동안의 종가 중 가장 높았던 가격(최고가)을 계속해서 추적합니다.
만약 현재 주가가 이 최고가 대비 30% 이상 하락하면, 드디어 첫 번째 매수 신호를 합니다.
이때 전체 자본의 20%만 사용합니다.
예시:SOXL의 120일 최고가가 $100이었다면, 주가가 $70 이하로 떨어질 때까지 아무것도 하지 않고 기다립니다. $70에 도달하면 첫 매수를 실행합니다.
2단계: 추가 매수 (물타기/피라미딩)
첫 매수 이후 주가가 더 하락할 경우, 추가 매수를 통해 평균 단가를 낮춥니다.
추가 매수의 기준 가격은 '120일 최고가'가 아니라 '가장 처음 매수한 가격'이 됩니다.
첫 매수 가격을 기준으로, 주가가 20%씩 추가로 하락할 때마다 정해진 횟수(최대 10회)만큼 계속해서 매수합니다.
두 번째 매수: 첫 매수 가격 대비 20% 하락 시 자산의 20% 진입
세 번째 매수: 첫 매수 가격 대비 40% 하락 시 자산의 20% 진입
네 번째 매수: 첫 매수 가격 대비 60% 하락 시 자산의 20% 진입
마지막 매수: 첫 매수 가격 대비 80% 하락 시 자산의 20% 진입 (올인)
예시:첫 매수를 $70에 했다면,
3단계: 매도
이 전략은 모든 포지션의 평균 단가로 한 번에 익절하지 않고, 각각의 매수 포지션을 개별적으로 관리하여 수익을 극대화합니다.
개별 익절 목표: 매수한 각각의 포지션에 대해 개별적으로 200%의 수익 목표를 설정합니다. (즉, 매수 가격의 3배가 되면 매도)
어떤 포지션이든 자신의 매수 가격 대비 200% 수익에 도달하면, 그 포지션만 부분적으로 익절합니다.
예시:
백테스트 결과

2010년 3월 11일부터 2025년 10월 15일까지 테스트 한 결과입니다.
총 손익은 5248.81%로 연 평균 수익률로 환산하면 약 29.04% 입니다.
최대 자본 감소, MDD는 46.48% 입니다.
승률은 96.77% 입니다. (사실 승률은 100%일 수밖에 없습니다. 전략상 목표가에 도달하지 않으면 매도를 하지 않는, 손절이 없는 전략입니다. 백테스트 상의 오류가 좀 있습니다.)

중간의 한 지점을 보면 이렇습니다.
주황색으로 표시된 선이 120일간의 최고가를 추적하는 부분입니다.
파란선은 진입 가격으로, 주황색 선으로 표시된 최고가에서 30% 하락한 가격입니다.
종가가 파란색 선 아래로 내려간 경우에 매수하고, (Buy_0) 이후 20% 하락할 때마다 Buy_1, Buy_2가 발생하는 것을 볼 수 있습니다. 포트폴리오 전체 수익률이 20% 하락할 때 추가 매수하는 것이 아니라 최초 매수가 (Buy_0)에서 20% 하락할 때 추가 매수 합니다.
전략의 이유
1) 종목 선정
SOXL은 반도체 지수를 3배로 추종하는 상품입니다. 여러가지 종목이 담겨있는 ETF라서 어느날 갑자기 청산될 확률은 별로 없다고 생각했고, 부침은 있지만 결국 장기적으로는 우상향 가능성이 높아보입니다. 이 AI 시대에 반도체가 필요가 없을리는 없잖아요.
2) 지표의 설정값
이 전략에서 쓰인 설정값은 120일 간의 최고가, 최고가 대비 하락율 30%, 이후 20% 하락시 추가매수, 비중 20% 입니다.
120일은 주식시장에서 6개월 정도라고 보면 됩니다. 6개월을 고른 이유는 특별한 이유는 없습니다.
60일 : CAGR 20.21%
120일 : CAGR 25.12%
250일 : CAGR 23.69%
3개월, 6개월, 1년 정도로 잡고 보면 6개월이 가장 성과가 좋았지만 전반적으로 20% 이상의 수익률을 보여주긴 합니다.
120일 최고가 대비 30%하락에서 30%도 특별한 이유가 있는 숫자는 아닙니다.
기본 전략 상 최고가에서 어느정도 떨어진 시점부터 매수를 시작해야 하는데 테스트 상 적절해 보이는 숫자를 하나 골랐습니다. 숫자를 낮추면, 그러니까 최고가 대비 조금만 하락해도 매수를 시작한다면 거래 횟수는 늘어나고 수익률도 늘어나지만 MDD도 좀 늘어나는 경향이 있죠.
20% : CAGR 31.08%
40% : CAGR 24.51%
50% : CAGR 28.12%
이후 추가 매수와 매수 비율은 임의의 값으로 그냥 정했습니다. 15% 하락시에 15%씩 진입하거나 10% 하락시에 10%씩 진입할 수도 있죠.
15% 하락시에 15%씩 진입 : CAGR 28.09%
20% 하락시에 25%씩 진입 : CAGR 29.08%
숫자를 이리 저리 바꾸면 좀더 좋은 결과를 얻을 수도 있지만 백테스트 결과를 좋게 하려고 너무 많은 숫자를 변경하는 것은 결국 전략의 신뢰도를 떨어뜨립니다.
숫자를 좀 바꾸더라도 백테스트의 결과가 비슷한 경향을 보여줘야 좋은 전략이겠죠.
실제로 실행 가능한가?
MDD가 거의 50%에 육박하는 전략이라서 현실적으로 적용이 쉽지 않을 것 같습니다. MDD를 낮추려면 다른 전략과 같이 쓰거나, 현금 비중을 더 늘리는 방식으로 해야하겠죠. 예를들어 매수 진입할 때 자산의 20%가 아니라 10%씩만 진입한다면 CAGR 17% 대로 감소하지만 MDD도 24.44%로 감소합니다.
이 전략은 애초에 바닥을 잡으려는 전략이 아니라 바닥이 어딘지는 모르겠지만 어쨋든 분할매수로 리스크를 분산하면 나중에 오르면 벌수 있다 라는 전략으로 투자하는 거라서 손절을 추가할 수는 없고, 다른 지표와 조합해서 매수 시점을 더 세밀하게 잡을 수 있다면 좋은 전략이 될 수도 있겠습니다.
tradingview에서 이용할 수 있는 pine script도 첨부하였습니다.
테스트에 오류가 있거나 의견이 있으면 댓글 남겨주시면 참고하겠습니다.
그럼 끝!