확인한 것 — 환율 하락 미국주식 질문을 숫자로 바꿨다. 1998년 1월부터 2026년 9월까지 345개 월말을 매수 후보로 놓고 S&P 500 대용자료(SPY 수정종가, 배당 재투자)를 사서 1·3·5년 보유했을 때의 원화 수익 분포(표마다 실제 n은 다르다), 매수 직전 3개월 환율이 얼마나 움직였는지에 따른 구간별 수익, 매수 시점 환율 수준별 5년 수익, “환율이 3·5·10% 더 내리면 사겠다”며 최대 6·12·24개월 기다린 9가지 규칙과 즉시 매수의 비교, 5년 보유에서 원화와 달러 수익의 부호가 갈린 사례, 환율이 3개월 안에 10% 넘게 급락한 직후 산 9번의 사례.
확인하지 않은 것 — 앞으로 환율이 어디로 갈지(이 글은 환율 전망이 아니다), 환헤지 ETF와 비헤지 ETF의 실제 상품 비교, 환전 수수료·세금, 월중 체결(조건은 월말에만 점검했다), 개별 종목, 1998년 이전(자유변동환율제 이전은 제외). 송팀장 10월 7일 영상에서 소재를 얻었지만 그 영상의 규칙을 재현한 것이 아니라 이 글의 설계로 계산했고, 영상 규칙과의 동일성은 대조하지 않았다.
다음에 볼 것 — 2026년 9월 말 매수분의 1년 결과(2027년 9월), 환율이 1,300원을 깨거나 1,500원을 다시 넘는 달의 재집계, 환헤지(H) 상품으로 같은 질문을 다시 묻는 후속 글.
2026년 6월 말 1,549원이던 원·달러 환율은 9월 말 1,356원으로 석 달 만에 12.5% 내렸다. 월말 기준으로 이 속도의 하락은 1998년 이후 열 번째다. 환율이 내리면 미국 주식 투자자는 두 가지를 동시에 느낀다. 달러를 싸게 살 수 있다는 기대와, 이미 들고 있는 달러 자산의 원화 평가액이 줄었다는 불안이다. 그래서 질문은 늘 같은 모양으로 돌아온다. 환율 하락 미국주식, 지금 사도 되나, 아니면 더 내릴 때까지 기다려야 하나.
이 글은 전망을 하지 않는다. 대신 1998년부터 지금까지 월말마다 똑같은 질문을 던졌다고 가정하고 그 결과를 전부 세어 봤다. 결론부터 말하면, “환율이 더 내리면 사겠다”는 기다림은 과거 어느 규칙에서든 즉시 매수에 뒤진 시작 월이 더 많았고, 목표를 크게 잡고 오래 기다린 규칙일수록 중앙값 차이가 더 벌어졌다. 그러나 기다림이 이긴 달도 분명히 있었고 그 달들이 어떤 달이었는지, 환율이 수익의 부호를 바꾼 때가 언제였는지가 이 글의 나머지 절반이다.
백테스트 시리즈 · 9편
- 1호 · TQQQ 장기투자, 16년 실물과 27년 합성
- 2호 · 레버리지 ETF decay, 27년 실측 (영문)
- 3호 · QLD 적립식 20년, 금융위기 포함
- 4호 · SOXL 장기투자 16년, 적립식도 못 구한 구간
- 5호 · 나스닥 폭락 역사 55년, 14번의 -20%
- 6호 · 2배 레버리지 ETF 장기투자, 삼성전자 26년 합성
- 7호 · 커버드콜 ETF 단점, QYLD·XYLD·JEPI·JEPQ 12년
- 8호 · 환율 하락 미국주식, 더 내릴 때까지 기다리면 유리할까 (1998~ 345개월)
- 9호 · 공포탐욕지수 매수 타이밍, VIX 30 신호 다음 날 샀다면 (1993~ 33번)
다음 백테스트와 갱신 소식은 텔레그램 Ajussi Guide Research에 올라간다.
환율 하락 미국주식 — 질문을 숫자로 바꾸는 방법
백테스트의 규칙은 다음과 같다.
- 자산: S&P 500 노출의 대용자료로 SPY의 수정종가(배당 재투자 반영, Yahoo Finance)를 썼다. SPY는 실재 ETF라 비용·추적 차이가 들어간 시계열이며 지수 자체와 같지 않다. 지수 가격지수는 배당이 빠져 장기 비교에서 수익을 과소평가하기 때문에 택했다. 상품 선택 비교가 아니라 환율 대기 규칙의 실험이다. 나스닥 종합은 가격지수라 부록에서 방향만 본다.
- 환율: FRED DEXKOUS(미국 연준 H.10)의 각 월 마지막 유효 관측값. 이 값은 뉴욕 정오 매입환율이며 서울 외환시장 종가, 미국 주식 종가와 같은 시각의 시세가 아니다. 357개월 중 6개월(2002-03·2010-12·2013-03·2018-03·2021-12·2024-03)은 환율 관측일과 SPY 마지막 거래일도 하루 다르다. 공개 패널에 두 날짜를 함께 넣었다.
- 매수 시점: 1998년 1월부터 2026년 9월까지 매월 말, 345개월. 1997년 12월 자유변동환율제 이후만 다루기 위해 1998년에서 시작했고 1997년은 직전 값 준비용이다.
- 수익: 원화 기준 = (매도 시점 SPY × 매도 시점 환율) ÷ (매수 시점 SPY × 매수 시점 환율) − 1. 달러 기준은 환율 항을 뺀 값. 환전 수수료·세금은 0.
- 보유 기간: 1년·3년·5년. 보유가 끝나지 않은 최근 매수분은 해당 기간 집계에서 빠진다. 그래서 n은 1년 333, 3년 309, 5년 285이고 345가 아니다.
- 점검 시점: 모든 조건은 월말에만 본다. 월중에 목표 환율에 닿았다가 되돌아온 경우는 반영하지 않았다. H.10은 전주 일별 값을 주간 발표하므로 “그날 FRED를 보고 체결했다”는 실시간 전략도 아니다. 이 글은 사후 월말 비교이며 그대로 실행 가능한 매매 성과를 뜻하지 않는다.
- 표본: 매월 말마다 한 번씩 사는 중첩 표본이다. 인접한 달의 결과는 서로 비슷하므로 n이 300이라고 300개의 독립된 사건은 아니다. 큰 차이는 사건 몇 개(1998년, 2000~2002년, 2008~2009년, 2022년)에서 나온다는 점을 표마다 적어 둔다.
- 하위 10%는 정렬된 값의 관측 순서통계량(보간 없음)이다.
중앙값·플러스 비율·하위 10%·최악값을 같이 적은 이유는 평균 하나로는 꼬리가 안 보이기 때문이다.
아무 때나 샀을 때 — 원화와 달러의 차이
| 보유 | 기준 | n | 중앙값 | 플러스 비율 | 하위 10% | 최악 |
|---|---|---|---|---|---|---|
| 1년 | 원화 | 333 | +10.7% | 82% | −7.2% | −31.5% |
| 1년 | 달러 | 333 | +13.3% | 79% | −13.7% | −43.4% |
| 1년 | 환율만 | 333 | −1.1% | 44% | −9.8% | −25.1% |
| 3년 | 원화 | 309 | +37.1% | 83% | −12.3% | −34.8% |
| 3년 | 달러 | 309 | +36.8% | 81% | −19.8% | −41.3% |
| 3년 | 환율만 | 309 | +2.4% | 58% | −17.7% | −27.1% |
| 5년 | 원화 | 285 | +77.1% | 80% | −12.6% | −37.2% |
| 5년 | 달러 | 285 | +67.5% | 84% | −7.0% | −29.2% |
| 5년 | 환율만 | 285 | +4.5% | 59% | −21.7% | −30.5% |
표1. 1998-01 이후 매월 말 SPY 매수, 보유 기간별 수익 분포. 환율만 = 같은 기간 원·달러 환율 변화율(플러스가 원화 약세).
세 가지가 보인다. 첫째, 1년 보유에서는 원화 수익의 꼬리가 달러보다 짧다. 2008년 가을처럼 미국 주가가 무너질 때 환율이 치솟아 원화 평가액의 낙폭을 줄인 구간이 있어서다(최악 −31.5% 대 −43.4%). 둘째, 5년 보유에서는 반대로 원화 쪽 꼬리가 길다. 달러 수익이 플러스였는데 환율이 내려 원화로는 손해를 본 구간이 있다. 셋째, 5년 표본 285개에서 원화 수익과 달러 수익의 부호가 같은 경우는 258개(90.5%)다. 다만 환율이 수익률의 크기를 크게 바꾸거나 부호를 뒤집은 경우도 있었다. 원화 수익률에서 달러 수익률을 뺀 차이는 −85.2%p에서 +69.1%p까지 퍼져 있고 중앙값은 +6.5%p다. 원화 수익률 − 달러 수익률 = (1 + 달러 수익률) × 환율 변화율이라, 환율이 20% 움직이면 달러로 2배가 된 자산에서는 40%p 차이가 난다.
매수 직전 3개월 환율이 급하게 움직였을 때
지금 상황을 가장 닮은 조건으로 좁혀 보자. 매수 월 기준 직전 3개월 환율 변화율로 다섯 구간을 나눴다.
| 매수 직전 3개월 환율 | 보유 | n | 중앙값 | 플러스 비율 | 하위 10% | 최악 |
|---|---|---|---|---|---|---|
| 7% 이상 하락 | 1년 | 21 | +8.0% | 90% | +1.8% | −8.7% |
| 7% 이상 하락 | 3년 | 20 | +16.5% | 90% | +2.5% | −3.3% |
| 7% 이상 하락 | 5년 | 18 | +16.7% | 67% | −20.1% | −25.8% |
| 3~7% 하락 | 1년 | 54 | +13.4% | 96% | +3.2% | −5.8% |
| 3~7% 하락 | 3년 | 50 | +42.2% | 86% | −3.8% | −34.8% |
| 3~7% 하락 | 5년 | 49 | +88.7% | 86% | −7.0% | −19.3% |
| ±3% 이내 | 1년 | 180 | +9.8% | 78% | −9.3% | −31.5% |
| ±3% 이내 | 3년 | 171 | +36.4% | 81% | −13.2% | −33.5% |
| ±3% 이내 | 5년 | 158 | +71.7% | 80% | −13.4% | −22.7% |
| 3~7% 상승 | 1년 | 53 | +11.8% | 81% | −9.7% | −30.0% |
| 3~7% 상승 | 3년 | 44 | +45.4% | 86% | −8.8% | −33.5% |
| 3~7% 상승 | 5년 | 41 | +89.8% | 85% | −5.4% | −19.4% |
| 7% 이상 상승 | 1년 | 25 | +7.9% | 72% | −10.8% | −17.8% |
| 7% 이상 상승 | 3년 | 24 | +37.0% | 79% | −16.6% | −19.2% |
| 7% 이상 상승 | 5년 | 19 | +67.9% | 68% | −29.0% | −37.2% |
표2. 매수 직전 3개월 원·달러 환율 변화율 구간별 원화 수익(SPY). 구간 경계는 ±3%·±7%.
환율이 석 달 새 7% 넘게 내린 뒤 산 21번은 1년 뒤 90%가 플러스였고 최악도 −8.7%에 그쳤다. 3년 보유도 90% 플러스, 최악 −3.3%다. 그런데 5년 보유로 가면 중앙값이 +16.7%로 다른 구간의 4분의 1 수준이고 플러스 비율도 67%로 떨어진다. 표본의 정체를 보자. 이 구간의 5년 표본 18개 중 6개가 1998년 3월부터 1999년 1월, 외환위기 직후 환율이 1,700원에서 1,200원대로 정상화되던 구간이다. 나머지는 2002년 5~7월, 2004년 11월~2005년 1월, 2006년 1월, 2009년 4~9월, 2017년 3월이다. 1998년 매수분은 2000~2002년 닷컴 붕괴를 통과했고 환율은 그 뒤로도 더 내렸다. 급락 직후 매수 자체가 나빴다기보다 그 시점 이후의 주가와 환율이 함께 그 표본을 만들었다.
5년 성적이 가장 좋은 두 구간(중앙 +88.7%, +89.8%)은 환율이 3~7% 내렸거나 3~7% 오른 “적당히 움직인” 구간이다. 두 구간의 중앙값이 비슷하다는 사실은, 적어도 이 표본에서는 매수 직전 환율의 방향만으로 5년 결과가 갈리지 않았다는 뜻이다. 그 이상의 인과는 이 표로 말할 수 없다.
환율 “수준”으로 보면 — 1,300원 위에서 산 표본이 22개뿐이라는 함정
“지금 환율이 역사적으로 높으니 기다리자”는 말도 자주 나온다. 매수 시점 환율의 절대 수준으로 구간을 나눠 봤다.
| 매수 시점 환율 | 보유 | n | 중앙값 | 플러스 비율 | 최악 |
|---|---|---|---|---|---|
| 1,000원 미만 | 5년 | 28 | +27.5% | 100% | +14.9% |
| 1,000~1,100 | 5년 | 54 | +81.0% | 100% | +9.7% |
| 1,100~1,200 | 5년 | 137 | +93.4% | 82% | −22.7% |
| 1,200~1,300 | 5년 | 44 | +35.4% | 66% | −23.1% |
| 1,300~1,400 | 5년 | 17 | −8.5% | 18% | −25.8% |
| 1,400원 이상 | 5년 | 5 | −18.6% | 40% | −37.2% |
표3. 매수 시점 원·달러 환율 수준별 5년 원화 수익(SPY). 5년 집계는 2021년 9월 매수분까지라, 2022년 이후 1,300~1,550원 구간에서 산 표본은 아직 없다.
환율 하락 미국주식 논의에서 자주 나오는 표다. 표만 보면 1,300원 위에서 산 사람은 5년 뒤 대부분 손해다. 그런데 n을 보자. 1,300원 위 표본 22개는 1998년(9개월), 2001년 3월~2002년 3월(9개월), 2008년 11월~2009년 3월(4개월)로 묶인다. 이것은 저자가 나눈 국면 묶음이지 독립된 세 관측이라는 뜻은 아니다. 마이너스는 전부 1998년과 2001~2002년 매수분으로, 닷컴 붕괴 전후의 S&P 500 정체와 환율 정상화를 함께 통과한 경우다. 2008년 11월~2009년 3월 매수분은 매수 환율 1,372~1,533원이 5년 뒤 1,058~1,080원으로 22~30% 내렸는데도 주가가 2.2~2.8배가 돼 원화로 +61~102%였다. 반대로 1,000~1,100원 구간의 “100% 플러스”는 2004년 11월~2007년 매수분이 2008년 전후 환율 상승으로 원화 평가액을 지킨 것과 2013~2014년·2018년·2020년 말 매수분이 이후 강세장을 탄 결과가 합쳐진 것이다. 환율 수준은 사건 몇 개의 이름표에 가깝고, 이 표로 “1,300원 위는 사지 마라”를 끌어내면 국면 세 개로 규칙을 만드는 셈이다. 그래서 이 글은 수준이 아니라 변화율(표2)과 기다림의 비용(표4)을 중심에 뒀다.
환율 하락 미국주식의 핵심 실험 — “더 내리면 사겠다”는 기다림의 가격
이 글의 중심 실험이다. 매월 말마다 “지금보다 환율이 X% 더 내리면 산다”는 규칙을 세우고, 조건이 충족되는 월말에 샀다. 상한 기간(6·12·24개월) 안에 조건이 안 오면 상한 시점에 그냥 샀다. 비교 대상은 같은 달에 바로 산 경우다. 기다리는 동안은 원화 현금을 0% 수익으로 들고 있다고 가정했다(이미 달러를 보유한 독자는 다른 질문이다).
두 전략을 같은 날짜에 평가하면 평가일의 주가와 환율은 약분되고, 남는 것은 두 매수 시점의 원화 매입단가 비율이다. 즉 “대기 ÷ 즉시 최종자산 − 1 = (즉시 매수일 SPY × 환율) ÷ (실제 매수일 SPY × 환율) − 1″이고, 이 비율은 3년 뒤에 보든 5년 뒤에 보든 같다. 그래서 표는 9가지 규칙을 5년 결과가 있는 공통 285개월(1998-01~2021-09 시작)로 한 번만 계산했다. 3년 평가 가능 월 309개로 계산한 표는 재현 코드 출력에 부록으로 뒀다. 표본이 달라 수치는 달라지지만, 모든 규칙에서 대기가 뒤진 시작 월이 더 많다는 결론은 같았다.
| 목표 추가 하락 | 대기 상한 | n | 기다린 쪽이 유리 | 대기/즉시 최종자산 − 1 (중앙값) | 목표 미달성 | 평균 대기 |
|---|---|---|---|---|---|---|
| 3% | 6개월 | 285 | 33.7% | −2.6% | 55% | 4.7개월 |
| 3% | 12개월 | 285 | 34.4% | −3.0% | 35% | 7.4개월 |
| 3% | 24개월 | 285 | 35.8% | −3.1% | 26% | 10.9개월 |
| 5% | 6개월 | 285 | 31.2% | −3.5% | 74% | 5.3개월 |
| 5% | 12개월 | 285 | 29.8% | −4.7% | 54% | 9.2개월 |
| 5% | 24개월 | 285 | 32.6% | −5.8% | 37% | 14.4개월 |
| 10% | 6개월 | 285 | 29.5% | −4.1% | 92% | 5.8개월 |
| 10% | 12개월 | 285 | 22.8% | −8.2% | 85% | 11.2개월 |
| 10% | 24개월 | 285 | 24.9% | −14.7% | 70% | 20.5개월 |
표4. 대기 전략 대 즉시 매수. 값은 같은 100원으로 시작했을 때 대기 전략의 최종 자산을 즉시 매수의 최종 자산으로 나눈 비율에서 1을 뺀 것(수익률의 %p 차이가 아니다). 목표 미달성 = 상한에서 강제 매수한 비율.

아홉 규칙 전부에서 기다린 쪽이 유리했던 시작 월은 22.8~35.8%였다. 뒤집으면 모든 규칙에서 대기가 즉시 매수에 뒤진 시작 월이 더 많았다(64~77%). 목표를 10%로 잡고 24개월까지 기다린 규칙은 중앙값으로 −14.7%까지 벌어졌다. 이 범위 안에서는 목표가 클수록, 상한이 길수록 중앙값 차이가 더 낮아졌다. 다만 승률이 상한 길이에 따라 단조롭게 낮아진 것은 아니다(3% 규칙은 24개월이 가장 높다).
이유의 첫째는 환율이 생각만큼 더 내리지 않는다는 것이다. 5% 추가 하락을 6개월 안에 본 경우는 26%뿐이고, 10% 추가 하락은 12개월을 기다려도 15%에서만 왔다. 목표에 못 미치면 상한 시점에 사야 하는데, 그때의 원화 매입단가(주가 × 환율)가 시작 시점보다 높은 달이 더 많았다. 1998년 이후 SPY 월평균 수익은 +0.84%인 반면 환율의 월평균 절대 변동은 2.3%로 한 달 단위로는 환율이 더 크게 흔들리지만, 이 표본에서 여러 달을 쌓으면 주가 쪽 누적이 더 컸다.
기다림이 유리했던 달은 어떤 달인가. 5% 목표·12개월 상한에서 대기가 5% 넘게 앞선 41개 시작 월(공통 285개월 기준) 중 31개는 기다리는 동안 주가가 하락했다. 2000년 3월~2002년 5월과 2007년 10월~2008년 11월이 대부분이다. 나머지 10개는 주가가 올랐지만 환율 하락이 이를 상쇄했다. 1998년 2월(→3월, 주가 +4.9%·환율 −15.2%), 2004년 1월(→11월, +5.4%·−10.7%), 2008년 11월(→12월, +1.0%·−14.0%)이 그 예다. 대기의 승패는 기다리는 동안의 주가와 환율을 곱한 원화 매입단가로 갈렸다. 주가 상승을 환율 하락이 상쇄한 경우도, 환율 상승을 주가 하락이 상쇄한 경우도 있었다. 이 사후 분해만으로 환율의 예측력 유무까지 판정할 수는 없다.
현금 0% 가정은 대기에 불리하다. 가상의 고정 연복리 수익을 대기 기간에 붙이면 9규칙의 대기 유리 비율은 연 2%에서 27.0~38.2%, 연 4%에서 32.3~43.9%로 올라가고, 10%·24개월 규칙의 중앙값은 −14.7%에서 −11.8%, −9.1%로 좁혀진다. 역사적 예금금리를 넣은 백테스트가 아니라 가정 민감도이며, 이 범위 안에서는 중앙값이 모두 음수로 남았다.
표4는 모든 시작 월을 섞은 것이라 “지금처럼 이미 내린 뒤”에 해당하는 결과는 아니다. 직전 3개월 환율이 3% 넘게 내린 시작 월 67개만 따로 보면 대기 유리 비율은 9.0~25.4%, 중앙값은 −4.9%에서 −17.0%로 전체보다 낮았다. 표본이 67개로 작고 1998년·2002~2005년·2009년에 몰려 있어 이것도 국면의 이름표다.
환율이 수익의 부호를 바꾼 때 — 1년과 5년이 다르다
환율 하락 미국주식 투자에서 가장 걱정하는 장면이다. 1년 보유: 333개 표본 중 달러 수익은 플러스지만 원화 수익은 마이너스인 시작 월이 14개(4.2%)였다. 환율 하락 폭이 그 기간의 달러 수익을 상쇄한 경우다. 조건을 식으로 쓰면 환율 변화율 < −달러 수익률 ÷ (1 + 달러 수익률)이고, 고정된 경계는 없다. 2002년 6월은 달러 +0.35%에 환율 −0.75%로 원화 −0.40%였고, 2008년 11월은 달러 +25.2%였는데 환율이 −20.7%라 원화 −0.7%였다. 주가 상승이 작으면 10%보다 훨씬 작은 환율 하락으로도 원화 손실이 난다. 14개 중 9개는 2003년 11월~2004년 7월에 연속으로 몰려 있다. 이 9개 시작 월에서는 달러 수익(+6.1~+13.9%)을 환율 하락(−10.5~−15.1%)이 상쇄했다.
5년 보유: 285개 표본 중 부호가 갈린 27개. 달러 플러스가 원화 마이너스가 된 18개는 1998년 8~10월과 2000년 11월~2002년 3월 매수분으로, 환율이 −10.4~−29.2% 내렸다. 달러 마이너스가 원화 플러스가 된 9개는 2003년 11월~2007년 5월 매수분으로 환율이 +4.5~+27.2% 올랐다. 종료 월이 2008년 11월부터 2012년 5월까지 퍼져 있어 전부 2008년 급등에 귀속할 수는 없지만, 2008년 전후의 환율 상승이 달러 손실을 메운 구간이다.
5년간 환율이 10% 이상 내린 56개 표본만 보면 원화 수익 플러스는 31개(55.4%), 중앙값 +13.4%다. 전체 표본의 80%·+77.1%와 비교하면 분명히 낮다. 환율 하락이 수익을 깎는 것은 사실이고, 이 표본에서 방향까지 바꾼 경우는 그보다 드물었다는 게 정확한 표현이다.
석 달 새 10% 넘게 급락한 뒤 산 아홉 번
| 매수 월 | 환율 (3개월 전→당월) | 1년 원화 | 3년 원화 | 5년 원화 |
|---|---|---|---|---|
| 1998-03 | 1,695→1,386 (−18.2%) | +4.8% | +5.5% | −25.8% |
| 1998-04 | 1,528→1,338 (−12.4%) | +7.7% | +16.0% | −20.1% |
| 1998-05 | 1,635→1,409 (−13.8%) | +1.8% | +8.7% | −18.6% |
| 1998-12 | 1,393→1,206 (−13.4%) | +13.4% | +4.4% | −4.8% |
| 1999-01 | 1,321→1,176 (−11.0%) | +5.6% | +2.5% | −5.2% |
| 2004-12 | 1,152→1,035 (−10.1%) | +2.3% | +15.4% | +14.6% |
| 2009-05 | 1,533→1,249 (−18.5%) | +15.3% | +42.6% | +88.4% |
| 2022-12 | 1,432→1,260 (−12.0%) | +29.3% | +112.6% | — |
| 2023-01 | 1,425→1,232 (−13.5%) | +30.7% | +107.6% | — |
| 2026-09 | 1,549→1,356 (−12.5%) | — | — | — |
표5. 월말 기준 직전 3개월 환율 10% 이상 하락 직후 SPY 매수. 2026-09가 열 번째.
아홉 번 모두 1년과 3년은 플러스였다. 5년은 1998~1999년 다섯 번이 전부 마이너스고 2004·2009년은 플러스다. 1998~1999년 매수분의 5년 뒤는 2003~2004년, 닷컴 붕괴 직후라 S&P 500 자체가 매수가 근처였고 환율은 1,386원→1,252원(1998년 3월→2003년 3월), 1,176원→1,174원(1999년 1월→2004년 1월)으로 제자리이거나 더 내렸다. 2009년 5월 매수분의 5년 뒤는 2014년, 주가는 두 배 넘게 올랐고 환율은 1,249원→1,020원으로 18% 내렸는데도 원화 수익이 +88%다.
이 표가 말하는 건 “급락 뒤 사면 된다”가 아니다. 아홉 번 중 다섯 시작 월이 1998~1999년 같은 국면에 몰려 있고 2022년 12월과 2023년 1월도 연속 월이라, 국면으로 묶으면 대략 네 묶음이며 독립된 사건 수를 뜻하지는 않는다. 열 번째인 2026년 9월의 결과는 앞으로의 주가와 환율이 함께 정한다.
부록 — 나스닥 종합으로 같은 계산을 하면
S&P 500 대신 나스닥 종합지수(가격지수, 배당 제외)로 표1과 표4를 다시 돌렸다. 방향은 같다. 아무 때나 매수한 원화 수익 중앙값은 1년 +13.9%, 3년 +41.5%, 5년 +89.0%, 하위 10%는 −15.0%·−14.5%·−23.9%다. 공통 285개월 9규칙에서 대기가 유리했던 비율은 25.6~36.5%, 대기/즉시 최종자산 − 1의 중앙값은 −3.6%(3%·6개월)에서 −15.6%(10%·24개월)까지로 SPY보다 조금 더 벌어졌다. 이번 나스닥 비교에서는 그랬다는 것이고 변동성이 큰 지수 일반의 법칙으로 쓰지는 않는다. 가격지수라 배당 재투자 총수익지수와는 다르다.
고르기 전에
환율 하락 미국주식 질문에 대해 세 가지만 정리한다. 하나, “환율이 더 내리면 산다”는 규칙은 1998년 이후 아홉 가지 규칙 전부에서 즉시 매수에 뒤진 시작 월이 더 많았고(64~77%), 목표가 크고 상한이 긴 규칙일수록 중앙값 차이가 더 벌어졌다(−2.6%에서 −14.7%). 둘, 환율 하락이 달러 플러스를 원화 마이너스로 바꾼 1년 표본은 14개(4.2%)였다. 달러 수익과 환율 변화를 곱해 반영한 최종 원화 자산이 원금보다 작아진 경우이며, 두 변화율을 단순 비교해서 판단할 수는 없다. 셋, 5년 보유 285개 중 원화와 달러 수익의 부호는 258개(90.5%)가 같았고 27개는 달랐다. 부호가 같더라도 환율은 수익률의 크기를 크게 바꿀 수 있다. 현재 매수분의 결과 역시 앞으로의 주가와 환율이 함께 결정한다.
이 글은 과거 분포를 센 것이지 앞으로의 환율이나 주가를 말하지 않는다. 특정 ETF·환전 시점·환헤지 여부를 권하지 않는다.
같이 보면
- 공포탐욕지수 매수 타이밍, VIX 30 신호 다음 날 샀다면 — 1993년부터 33번의 신호 백테스트
- 나스닥 폭락 역사 55년, 14번의 -20% 이후 팔았을 때·버텼을 때·더 샀을 때
- TQQQ 장기투자, 16년 실물과 27년 합성 데이터
- 커버드콜 ETF 단점, QYLD·XYLD·JEPI·JEPQ 백테스트
자주 묻는 질문
환율 하락 미국주식 매수, 환율이 내릴 때 사면 유리한가?
과거 데이터에서 “매수 직전 3개월 환율이 3~7% 내린 뒤 산” 경우의 5년 원화 수익 중앙값은 +88.7%로 전체(+77.1%)보다 높았다. 그러나 3~7% 오른 뒤 산 경우도 +89.8%로 비슷했다. 이 표본에서는 매수 직전 환율의 방향만으로 5년 결과가 갈리지 않았다.
환율이 더 내릴 때까지 기다리면?
1998년 이후 매월 말 “3·5·10% 더 내리면 사겠다”를 적용하면(공통 285개월) 기다린 쪽이 유리했던 비율은 22.8~35.8%, 대기/즉시 최종자산 − 1의 중앙값은 −2.6%에서 −14.7%였다. 대기 중 현금 수익을 연 4%로 가정해도 유리 비율은 32~44%, 중앙값은 전부 음수였다.
기다려서 이긴 달은 왜 이겼나?
5%·12개월 규칙에서 5% 넘게 앞선 41개 시작 월 중 31개는 기다리는 동안 주가가 떨어졌고(2000~2002년·2007~2008년), 10개는 주가가 올랐지만 환율 하락이 그보다 컸다(1998년 2월, 2004년 상반기, 2008년 11월 등). 승패는 주가 × 환율의 원화 매입단가로 갈렸다.
환율 때문에 손해 본 적은 없나?
있다. 1년 보유에서 달러로는 벌고 원화로는 잃은 경우가 333개월 중 14개월(2003년 11월~2004년 7월에 9개), 5년 보유에서는 1998년 8~10월과 2000년 11월~2002년 3월 매수분 18개가 환율 −10~−29%로 원화 손실을 봤다. 반대로 2003~2007년 매수분 9개는 달러 손실을 환율 상승이 메워 원화로는 이익이었다.
지금(2026년 9월 말, 1,356원)은 과거 어느 때와 비슷한가?
월말 기준 3개월 12.5% 하락은 1998년 이후 열 번째다. 앞선 아홉 번 모두 1·3년 원화 수익은 플러스였고, 5년은 1998~1999년 매수분이 마이너스(닷컴 붕괴 통과), 2004·2009년 매수분이 플러스였다. 다섯 시작 월이 1998~1999년 같은 국면에 몰려 있어, 국면으로 묶으면 대략 네 묶음이며 독립된 사건 수를 뜻하지는 않는다.
환헤지 ETF를 사면 되는 것 아닌가?
이 글은 비헤지 기준이다. 헤지 상품은 헤지 비용(양국 금리차)과 추적 구조가 달라 같은 표로 비교할 수 없다. 별도 글에서 다룬다.
데이터는 어디서 받았고 재현할 수 있나?
환율은 FRED DEXKOUS(연준 H.10, 뉴욕 정오) 월 마지막 유효 관측값, 주가는 Yahoo Finance SPY 수정종가·S&P 500·나스닥 종합 월봉(2026-10-13 수집, 소수 둘째 자리 반올림, 수정종가는 이후 배당으로 과거 값이 재조정될 수 있어 공개 스냅샷을 고정)이다. 계산 코드(backtest_fx.py — 글 하단에 펼침)와 월별 패널 CSV(panel_monthly.csv, 환율 관측일·주식 마지막 거래일 포함)를 첨부했다. 빈 폴더에서 코드와 CSV만으로 표1~5와 부록이 다시 나온다.
재현 코드 backtest_fx.py (펼치기)
# 환율 하락 미국주식 백테스트 — 재현 코드 v2 (2026-10-13)
# 입력: panel_monthly.csv (month, fx_date, krw_usd, sp500, nasdaq, spy_adj)
# - krw_usd: FRED DEXKOUS(연준 H.10, 뉴욕 정오 매입환율)의 각 월 마지막 유효 관측값, fx_date = 그 관측일
# - spy_adj/sp500/nasdaq: Yahoo Finance v8 chart 1mo 월봉 종가(월 마지막 거래일), 2자리 반올림, 수집 2026-10-13
# - 사용 기간 1997-01~2026-09 (1997년은 직전 값 준비용, 매수 시작 1998-01 = 자유변동환율제 이후)
# 실행: python backtest_fx.py panel_monthly.csv > results.md
import csv, statistics as st, sys, io
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
rows=list(csv.DictReader(open(sys.argv[1] if len(sys.argv)>1 else 'panel_monthly.csv',encoding='utf-8-sig')))
FX=[float(r['krw_usd']) for r in rows]; S=[float(r['spy_adj']) for r in rows]; N=[float(r['nasdaq']) for r in rows]; M=[r['month'] for r in rows]
n=len(rows); start=M.index('1998-01')
def won(A,i,j): return (A[j]*FX[j])/(A[i]*FX[i])-1
def p10(v): v=sorted(v); return v[int(0.1*len(v))] # 관측 순서통계량(보간 없음)
def stats(v): v=sorted(v); return dict(n=len(v), med=st.median(v), win=sum(x>0 for x in v)/len(v), p10=p10(v), worst=v[0])
def line(d): return f"{d['n']} | {d['med']*100:+.1f}% | {d['win']*100:.0f}% | {d['p10']*100:+.1f}% | {d['worst']*100:+.1f}% |"
out=[]; P=out.append
P(f"# 결과 (패널 {n}행 {M[0]}~{M[-1]}, 매수 후보 {M[start]}~{M[-1]} = {n-start}개월, 하위 10% = 관측 순서통계량)")
P("\n## 표1 매월 말 매수 원화 vs 달러 vs 환율만 (SPY 수정종가)\n| 보유 | 기준 | n | 중앙값 | 플러스 비율 | 하위 10% | 최악 |\n|---|---|---|---|---|---|---|")
for h in (12,36,60):
idx=range(start,n-h)
P(f"| {h//12}년 | 원화 | "+line(stats([won(S,i,i+h) for i in idx])))
P(f"| {h//12}년 | 달러 | "+line(stats([S[i+h]/S[i]-1 for i in idx])))
P(f"| {h//12}년 | 환율만 | "+line(stats([FX[i+h]/FX[i]-1 for i in idx])))
P("\n## 표2 매수 직전 3개월 환율 변화 구간별 원화 수익 (SPY)\n| 구간 | 보유 | n | 중앙값 | 플러스 비율 | 하위 10% | 최악 |\n|---|---|---|---|---|---|---|")
def b3(i):
c=FX[i]/FX[i-3]-1
return '7% 이상 하락' if c<=-0.07 else '3~7% 하락' if c<=-0.03 else '±3% 이내' if c<0.03 else '3~7% 상승' if c<0.07 else '7% 이상 상승'
for k in ['7% 이상 하락','3~7% 하락','±3% 이내','3~7% 상승','7% 이상 상승']:
for h in (12,36,60):
P(f"| {k} | {h//12}년 | "+line(stats([won(S,i,i+h) for i in range(start,n-h) if b3(i)==k])))
P("7% 이상 하락·5년 표본 월: "+", ".join(M[i] for i in range(start,n-60) if b3(i)=='7% 이상 하락'))
P("\n## 표3 매수 시점 환율 수준별 5년 원화 수익 (SPY)\n| 구간 | n | 중앙값 | 플러스 비율 | 하위 10% | 최악 |\n|---|---|---|---|---|---|")
def lvl(i):
f=FX[i]; return '1,000원 미만' if f<1000 else '1,000~1,100' if f<1100 else '1,100~1,200' if f<1200 else '1,200~1,300' if f<1300 else '1,300~1,400' if f<1400 else '1,400원 이상'
for k in ['1,000원 미만','1,000~1,100','1,100~1,200','1,200~1,300','1,300~1,400','1,400원 이상']:
P(f"| {k} | "+line(stats([won(S,i,i+60) for i in range(start,n-60) if lvl(i)==k])))
P("1,300원 이상 5년 표본 월: "+", ".join(f"{M[i]}({FX[i]:.0f}→{FX[i+60]:.0f}, 원화 {won(S,i,i+60)*100:+.0f}%)" for i in range(start,n-60) if FX[i]>=1300))
# 대기 전략: 대기/즉시 최종자산 − 1 = (P_i F_i)/(P_j F_j) − 1 (평가일 약분). 공통 표본 = 5년 평가 가능 월(1998-01~2021-09, 285개)
def wait(A,X,mw,idx,cash=0.0):
d=[];never=0;waited=[];attr=[]
for i in idx:
j=next((k for k in range(i+1,i+mw+1) if FX[k]<=FX[i]*(1-X)),None)
if j is None: j=i+mw; never+=1
waited.append(j-i)
x=(A[i]*FX[i])/(A[j]*FX[j])*((1+cash)**((j-i)/12))-1
d.append(x); attr.append((M[i],M[j],A[j]/A[i]-1,FX[j]/FX[i]-1,x))
return d,never,waited,attr
P("\n## 표4 '환율 X% 더 내리면 산다' 대기 vs 즉시 매수 — 공통 285개월(1998-01~2021-09), 대기 중 원화 현금 0%, 상한 도달 시 매수. 값 = 대기/즉시 최종자산 − 1 (평가일 무관)\n| 목표 추가 하락 | 대기 상한 | n | 대기가 유리한 비율 | 상대 차이 중앙값 | 목표 미달성 | 평균 대기 |\n|---|---|---|---|---|---|---|")
common=range(start,n-60)
for X in (0.03,0.05,0.10):
for mw in (6,12,24):
d,never,w,_=wait(S,X,mw,common); c=len(d)
P(f"| {X*100:.0f}% | {mw}개월 | {c} | {sum(x>0 for x in d)/c*100:.1f}% | {st.median(d)*100:+.2f}% | {never/c*100:.0f}% | {sum(w)/c:.1f}개월 |")
P("\n### 표4b 3년 평가 가능 월 309개(1998-01~2023-09) 기준 (부록)\n| 목표 | 상한 | n | 대기 유리 | 상대 차이 중앙값 | 목표 미달성 |\n|---|---|---|---|---|---|")
for X in (0.03,0.05,0.10):
for mw in (6,12,24):
d,never,w,_=wait(S,X,mw,range(start,n-36)); c=len(d)
P(f"| {X*100:.0f}% | {mw}개월 | {c} | {sum(x>0 for x in d)/c*100:.1f}% | {st.median(d)*100:+.2f}% | {never/c*100:.0f}% |")
P("\n### 표4c 현금 수익 가정 민감도 (공통 285개월, 가상의 고정 연복리, 역사적 금리 아님)\n| 현금 수익 | 9규칙 대기 유리 범위 | 10%·24개월 중앙 |\n|---|---|---|")
for cash in (0.0,0.02,0.04):
ws=[];m10=None
for X in (0.03,0.05,0.10):
for mw in (6,12,24):
d,_,_,_=wait(S,X,mw,common,cash); ws.append(sum(x>0 for x in d)/len(d)*100)
if X==0.10 and mw==24: m10=st.median(d)*100
P(f"| 연 {cash*100:.0f}% | {min(ws):.1f}~{max(ws):.1f}% | {m10:+.2f}% |")
P("\n### 표4d 대기가 유리했던 달의 귀속 (5%·12개월, 공통 285개월)")
d,_,_,attr=wait(S,0.05,12,common)
winall=[a for a in attr if a[4]>0]; win5=[a for a in attr if a[4]>0.05]
up=[a for a in win5 if a[2]>0]
P(f"대기 유리 전체 {len(winall)}개월, 5% 초과 우위 {len(win5)}개월; 그중 대기 중 SPY 하락 {len(win5)-len(up)}개월, SPY 상승(환율 하락이 상쇄) {len(up)}개월")
P("5% 초과 우위 월(시작→매수, SPY, 환율, 상대차): "+"; ".join(f"{a[0]}→{a[1]} {a[2]*100:+.1f}/{a[3]*100:+.1f}/{a[4]*100:+.1f}" for a in win5))
P("\n### 표4e 직전 3개월 환율 3% 초과 하락 시작 월만 (공통 285개월 중)\n| 목표 | 상한 | n | 대기 유리 | 상대 차이 중앙값 |\n|---|---|---|---|---|")
sub=[i for i in common if FX[i]/FX[i-3]-1 < -0.03]
for X in (0.03,0.05,0.10):
for mw in (6,12,24):
d,_,_,_=wait(S,X,mw,sub); P(f"| {X*100:.0f}% | {mw}개월 | {len(d)} | {sum(x>0 for x in d)/len(d)*100:.1f}% | {st.median(d)*100:+.2f}% |")
P("\n## 표5 3개월 10% 이상 환율 급락 직후 월말 매수 (SPY)\n| 매수 월 | 환율 (3개월 전→당월) | 1년 원화 | 3년 원화 | 5년 원화 |\n|---|---|---|---|---|")
for i in range(3,n):
c3=FX[i]/FX[i-3]-1
if c3<=-0.10:
P(f"| {M[i]} | {FX[i-3]:,.0f}→{FX[i]:,.0f} ({c3*100:+.1f}%) | "+" | ".join(f"{won(S,i,i+h)*100:+.1f}%" if i+h<n else "—" for h in (12,36,60))+" |")
# 분해
usd=[];fx=[];w=[]
for i in range(start,n-60): usd.append(S[i+60]/S[i]-1); fx.append(FX[i+60]/FX[i]-1); w.append(won(S,i,i+60))
same=sum((u>0)==(x>0) for u,x in zip(usd,w))
flipA=[(M[start+k],usd[k],fx[k],w[k]) for k in range(len(w)) if usd[k]>0 and w[k]<0]
flipB=[(M[start+k],usd[k],fx[k],w[k]) for k in range(len(w)) if usd[k]<0 and w[k]>0]
drop=[x for x,f in zip(w,fx) if f<=-0.10]
diff=[x-u for x,u in zip(w,usd)]
P(f"\n## 5년 보유 분해 (n={len(w)}): 원화·달러 수익 부호 일치 {same}/{len(w)} ({same/len(w)*100:.1f}%); 달러+→원화− {len(flipA)}건(환율 {min(f for _,_,f,_ in flipA)*100:.1f}~{max(f for _,_,f,_ in flipA)*100:.1f}%); 달러−→원화+ {len(flipB)}건(환율 {min(f for _,_,f,_ in flipB)*100:+.1f}~{max(f for _,_,f,_ in flipB)*100:+.1f}%); 원화−달러 수익률 차이 {min(diff)*100:+.1f}~{max(diff)*100:+.1f}%p 중앙 {st.median(diff)*100:+.1f}%p; 5년 환율 10% 이상 하락 {len(drop)}건 중 원화 플러스 {sum(x>0 for x in drop)}건({sum(x>0 for x in drop)/len(drop)*100:.1f}%), 중앙 {st.median(drop)*100:+.1f}%")
P("달러+→원화−: "+"; ".join(f"{m} {u*100:+.0f}/{f*100:+.0f}/{x*100:+.0f}" for m,u,f,x in flipA))
P("달러−→원화+: "+"; ".join(f"{m} {u*100:+.0f}/{f*100:+.0f}/{x*100:+.0f}" for m,u,f,x in flipB))
ex=[(M[i],S[i+12]/S[i]-1,FX[i+12]/FX[i]-1,won(S,i,i+12)) for i in range(start,n-12) if S[i+12]/S[i]-1>0 and won(S,i,i+12)<0]
P(f"\n## 1년 보유 달러+·원화− {len(ex)}/{n-12-start}건 (조건: R_FX < −R_USD/(1+R_USD)): "+"; ".join(f"{m} {u*100:+.1f}/{f*100:+.1f}/{x*100:+.1f}" for m,u,f,x in ex))
P("\n## 부록 나스닥 종합(가격지수) 동일 계산\n| 항목 | 값 |\n|---|---|")
for h in (12,36,60):
d=stats([won(N,i,i+h) for i in range(start,n-h)]); P(f"| {h//12}년 원화 중앙/하위10%/플러스 | {d['med']*100:+.1f}% / {d['p10']*100:+.1f}% / {d['win']*100:.0f}% |")
ws=[]
for X in (0.03,0.05,0.10):
for mw in (6,12,24):
d,_,_,_=wait(N,X,mw,common); ws.append((X,mw,sum(x>0 for x in d)/len(d)*100,st.median(d)*100))
P(f"| 대기 9규칙 유리 범위 (공통 285) | {min(x[2] for x in ws):.1f}~{max(x[2] for x in ws):.1f}% |")
for X,mw,wn,md in ws: P(f"| 대기 {X*100:.0f}%·{mw}개월 | 유리 {wn:.1f}% · 중앙 {md:+.2f}% |")
print("\n".join(out))
정보 제공용이며 특정 상품의 매수·매도 권유가 아니다. 과거 분포는 미래 수익을 보장하지 않는다. 최종 확인: 2026-10-13
최종 확인 2026-10-13 · 데이터 FRED DEXKOUS(연준 H.10 뉴욕 정오 매입환율, 각 월 마지막 유효 관측값), Yahoo Finance SPY 수정종가(배당 재투자, 비용 포함 ETF 시계열)·^GSPC·^IXIC 1개월봉(월 마지막 거래일 종가), 사용 기간 1997-01~2026-09, 수집 2026-10-13 · 방법 매월 말 매수, 1·3·5년 보유, 원화 수익 = SPY×환율 비율 − 1, 환전 수수료·세금 0, 대기 중 원화 현금 0%(민감도 연 2·4% 병기), 월말 점검만, 발표 지연·체결 시차 미반영 사후 비교, 중첩 표본, 대기 전략은 상한 도달 시 강제 매수, 하위 10%는 관측 순서통계량 · 출처 fred.stlouisfed.org/series/DEXKOUS, federalreserve.gov/releases/h10, finance.yahoo.com · 재현 코드 backtest_fx.py(하단 펼침) · 데이터 panel_monthly.csv


