곱버스 · 인버스 · 코스피 하락 베팅 · 실측 재현 페이지
코스피 하락에 1,000만원을 걸 때 두 가지를 견줬습니다. 인버스 다 = KODEX 인버스(114800) 1,000만원, 곱버스 반 = KODEX 200선물인버스2X(252670) 500만원 + KODEX 단기채권(153130) 500만원. 처음에 사서 끝에 팔고 중간에 조정하지 않습니다. 한국에 실제로 상장된 ETF 종가만 썼습니다(2016-09-22 ~ 2026-11-02, 합성 없음).
| 순서 | 할 일 |
|---|---|
| 1 | 하락에 걸 돈을 먼저 정한다 (예: 1,000만원) |
| 2 | 그 반으로 곱버스(KODEX 200선물인버스2X), 나머지 반으로 단기채 ETF(예: KODEX 단기채권)를 산다 |
| 3 | 팔 때까지 둘 다 그대로 둔다 — 곱버스 값이 떨어져도 단기채를 팔아 곱버스를 더 사지 않는다 |
2017 코스피200 +26.7% 인버스 다 793 곱버스 반 817 차이(곱버스 반 − 인버스 다) +24만원 2018 코스피200 -17.7% 인버스 다 1,219 곱버스 반 1,225 차이(곱버스 반 − 인버스 다) +6만원 2019 코스피200 +15.8% 인버스 다 867 곱버스 반 869 차이(곱버스 반 − 인버스 다) +2만원 2020 코스피200 +37.0% 인버스 다 662 곱버스 반 705 차이(곱버스 반 − 인버스 다) +43만원 2021 코스피200 +0.3% 인버스 다 966 곱버스 반 956 차이(곱버스 반 − 인버스 다) -10만원 2022 코스피200 -24.2% 인버스 다 1,300 곱버스 반 1,307 차이(곱버스 반 − 인버스 다) +7만원 2023 코스피200 +25.3% 인버스 다 814 곱버스 반 832 차이(곱버스 반 − 인버스 다) +18만원 2024 코스피200 -9.9% 인버스 다 1,134 곱버스 반 1,113 차이(곱버스 반 − 인버스 다) -21만원 2025 코스피200 +94.7% 인버스 다 506 곱버스 반 631 차이(곱버스 반 − 인버스 다) +125만원
코스피가 내린 3해의 차이는 +6 · +7 · -21만원 — 많아야 21만원입니다. 2025년의 +125만원은 9년 중 가장 큰 차이입니다.
돌리는 법: zip 을 풀고 python run_gopbus.py
자료: 2016-09-22 ~ 2026-11-02 · 거래일 2,446일 · 1,000만원 ■ 2025년 한 해 (코스피 하락에 건 두 사람 — 틀린 해) 2025-01-02 → 2025-12-30 · 코스피200(KODEX 200) +94.7% 인버스 다 506만원 · 곱버스 반 631만원 (곱버스 118만원 + 단기채 512만원) 곱버스 반이 덜 잃은 돈 125만원 ■ 해마다 (1월 첫 거래일에 사서 12월 마지막 거래일에 판다) 2017 코스피200 +26.7% 인버스 다 793 곱버스 반 817 차이(곱버스 반 − 인버스 다) +24만원 2018 코스피200 -17.7% 인버스 다 1,219 곱버스 반 1,225 차이(곱버스 반 − 인버스 다) +6만원 2019 코스피200 +15.8% 인버스 다 867 곱버스 반 869 차이(곱버스 반 − 인버스 다) +2만원 2020 코스피200 +37.0% 인버스 다 662 곱버스 반 705 차이(곱버스 반 − 인버스 다) +43만원 2021 코스피200 +0.3% 인버스 다 966 곱버스 반 956 차이(곱버스 반 − 인버스 다) -10만원 2022 코스피200 -24.2% 인버스 다 1,300 곱버스 반 1,307 차이(곱버스 반 − 인버스 다) +7만원 2023 코스피200 +25.3% 인버스 다 814 곱버스 반 832 차이(곱버스 반 − 인버스 다) +18만원 2024 코스피200 -9.9% 인버스 다 1,134 곱버스 반 1,113 차이(곱버스 반 − 인버스 다) -21만원 2025 코스피200 +94.7% 인버스 다 506 곱버스 반 631 차이(곱버스 반 − 인버스 다) +125만원 코스피가 내린 해 3번 · 차이 +6 · +7 · -21만원 · 가장 큰 차이 21만원 · 곱버스 반이 더 많았던 해 2번 ■ 올해 5월부터 (코스피가 내렸는데 크게 오르내린 구간) 2026-05-04 → 2026-11-02 · 코스피200 -11.4% · 인버스 다 901만원 · 곱버스 반 812만원 · 차이 -88만원 ■ 올해 1월부터 2026-01-02 → 2026-11-02 · 코스피200 +49.7% · 인버스 다 488만원 · 곱버스 반 590만원 ■ 모든 거래일에 시작한 1년(250거래일) 2,196번 가장 나빴을 때: 인버스 다 211만원 · 곱버스 반 529만원 500만원 아래로 줄어든 경우: 인버스 다 9.7% · 곱버스 반 0.0% 곱버스 반이 더 남은 경우 48.5% 코스피가 내린 799번: 차이 10%/50%/90% 지점 -22 / -8 / +10만원 코스피가 오른 1,397번: 차이 10%/50%/90% 지점 -12 / +8 / +194만원 ■ 모든 거래일에 시작한 반년(120거래일) 2,326번 가장 나빴을 때: 인버스 다 328만원 · 곱버스 반 550만원 500만원 아래로 줄어든 경우: 인버스 다 2.7% · 곱버스 반 0.0% 곱버스 반이 더 남은 경우 48.9% 코스피가 내린 918번: 차이 10%/50%/90% 지점 -13 / -4 / +5만원 코스피가 오른 1,408번: 차이 10%/50%/90% 지점 -7 / +5 / +78만원 끝.
# -*- coding: utf-8 -*-
"""곱버스 반만 — 코스피 하락에 1,000만원을 걸 때
인버스 다 = KODEX 인버스(114800) 1,000만원
곱버스 반 = KODEX 200선물인버스2X(252670) 500만원 + KODEX 단기채권(153130) 500만원
처음에 사서 끝에 판다(중간 조정 없음). 실제 종가(야후, 분배금 미반영) · 기준일 ASOF 고정.
두 방법 모두 한 번 사고 한 번 팔아 매매 수수료는 같다고 보고 넣지 않았다.
세금(국내 ETF 매매차익 15.4%, 종목마다)도 넣지 않았다 — 곱버스가 잃고 단기채만 번 해엔 곱버스 반 쪽에 조금 불리한 몫이 빠져 있다.
표준 라이브러리만 쓴다: python run_gopbus.py
"""
import csv, os, sys
sys.stdout.reconfigure(encoding="utf-8")
ASOF = "2026-11-02"
HERE = os.path.dirname(os.path.abspath(__file__))
def load(name):
with open(os.path.join(HERE, "data", name + ".csv"), encoding="utf-8") as f:
return {r["date"]: float(r["close"]) for r in csv.DictReader(f) if r["date"] <= ASOF and float(r["close"]) > 0}
IX, I1, I2, C = (load(n) for n in ("KODEX200", "KODEX_INVERSE", "KODEX_INVERSE2X", "KODEX_SHORTBOND"))
D = sorted(set(IX) & set(I1) & set(I2) & set(C))
P = 1000.0 # 만원
def at(i0, i1):
a, b = D[i0], D[i1]
inv = P * I1[b] / I1[a]
gop = P / 2 * I2[b] / I2[a]
bond = P / 2 * C[b] / C[a]
return {"산날": a, "판날": b, "코스피200": (IX[b] / IX[a] - 1) * 100, "인버스다": inv, "곱버스": gop, "단기채": bond, "곱버스반": gop + bond}
def seg(t0, t1):
i0 = next(i for i, d in enumerate(D) if d >= t0)
i1 = max(i for i, d in enumerate(D) if d <= t1)
return at(i0, i1)
def m(x):
return f"{x:,.0f}만원"
print(f"자료: {D[0]} ~ {D[-1]} · 거래일 {len(D):,}일 · 1,000만원\n")
print("■ 2025년 한 해 (코스피 하락에 건 두 사람 — 틀린 해)")
r = seg("2025-01-01", "2025-12-31")
print(f" {r['산날']} → {r['판날']} · 코스피200(KODEX 200) {r['코스피200']:+.1f}%")
print(f" 인버스 다 {m(r['인버스다'])} · 곱버스 반 {m(r['곱버스반'])} (곱버스 {m(r['곱버스'])} + 단기채 {m(r['단기채'])})")
print(f" 곱버스 반이 덜 잃은 돈 {m(r['곱버스반'] - r['인버스다'])}\n")
print("■ 해마다 (1월 첫 거래일에 사서 12월 마지막 거래일에 판다)")
down = []
for y in range(2017, 2026):
r = seg(f"{y}-01-01", f"{y}-12-31")
d = r["곱버스반"] - r["인버스다"]
if r["코스피200"] < 0:
down.append(d)
print(f" {y} 코스피200 {r['코스피200']:+6.1f}% 인버스 다 {r['인버스다']:7,.0f} 곱버스 반 {r['곱버스반']:7,.0f} 차이(곱버스 반 − 인버스 다) {d:+6,.0f}만원")
print(f" 코스피가 내린 해 {len(down)}번 · 차이 " + " · ".join(f"{x:+.0f}" for x in down) + f"만원 · 가장 큰 차이 {max(abs(x) for x in down):.0f}만원"
+ f" · 곱버스 반이 더 많았던 해 {sum(x > 0 for x in down)}번\n")
print("■ 올해 5월부터 (코스피가 내렸는데 크게 오르내린 구간)")
r = seg("2026-05-01", ASOF)
print(f" {r['산날']} → {r['판날']} · 코스피200 {r['코스피200']:+.1f}% · 인버스 다 {m(r['인버스다'])} · 곱버스 반 {m(r['곱버스반'])} · 차이 {m(r['곱버스반'] - r['인버스다'])}\n")
print("■ 올해 1월부터")
r = seg("2026-01-01", ASOF)
print(f" {r['산날']} → {r['판날']} · 코스피200 {r['코스피200']:+.1f}% · 인버스 다 {m(r['인버스다'])} · 곱버스 반 {m(r['곱버스반'])}\n")
for H, name in ((250, "1년"), (120, "반년")):
rs = [at(i, i + H) for i in range(len(D) - H)]
A = [x["인버스다"] for x in rs]; B = [x["곱버스반"] for x in rs]
dn = [x["곱버스반"] - x["인버스다"] for x in rs if x["코스피200"] < 0]
up = [x["곱버스반"] - x["인버스다"] for x in rs if x["코스피200"] > 0]
def q(v, p):
v = sorted(v); k = (len(v) - 1) * p; f = int(k); c = min(f + 1, len(v) - 1)
return v[f] + (v[c] - v[f]) * (k - f)
print(f"■ 모든 거래일에 시작한 {name}({H}거래일) {len(rs):,}번")
print(f" 가장 나빴을 때: 인버스 다 {m(min(A))} · 곱버스 반 {m(min(B))}")
print(f" 500만원 아래로 줄어든 경우: 인버스 다 {sum(a < 500 for a in A) / len(A) * 100:.1f}% · 곱버스 반 {sum(b < 500 for b in B) / len(B) * 100:.1f}%")
print(f" 곱버스 반이 더 남은 경우 {sum(b > a for a, b in zip(A, B)) / len(A) * 100:.1f}%")
print(f" 코스피가 내린 {len(dn):,}번: 차이 10%/50%/90% 지점 {q(dn, .1):+.0f} / {q(dn, .5):+.0f} / {q(dn, .9):+.0f}만원")
print(f" 코스피가 오른 {len(up):,}번: 차이 10%/50%/90% 지점 {q(up, .1):+.0f} / {q(up, .5):+.0f} / {q(up, .9):+.0f}만원\n")
print("끝.")
알고랩 Strategy Lab — 전략을 검증하고, 검증한 것만 자동매매로 옮깁니다. 정한 비율대로 사고 그대로 두는 일은 사람보다 프로그램이 잘 지킵니다. 알고랩 자동매매 살펴보기 · 전략 검증 전체 보기
과거 데이터를 돌려 본 결과이며 미래 수익을 보장하지 않습니다. 투자 판단과 책임은 본인에게 있습니다.