ISA · KODEX200 · 만기 · 실측 재현 페이지
ISA 에 매달 100만원씩 3년 동안 KODEX200(069500) 을 샀다고 치고, 2002년 10월부터 시작 달을 한 달씩 바꿔 계좌 241개를 만들었습니다. 만기 날 계좌가 넣은 돈(3,600만원)보다 적었던 때만 골라 두 갈래를 견줍니다. ① 빼서 예금 — 만기 날 다 팔아 1년 예금(한국 3개월 금리 실제값 · 이자소득세 15.4%) ② 1년 더 — 만기를 늘리고 같은 ETF 를 1년 더 들고 있다가 판다
| 만기 날 계좌 | 할 일 |
|---|---|
| 넣은 돈보다 적다(마이너스) | 해지하지 말고 만기를 1년 늘린다 — 연장 신청은 만기 날보다 먼저(증권사 앱) |
| 넣은 돈 이상(플러스) | 이 페이지의 질문이 아닙니다 — 아래 대조 줄(178번 중 80번)은 참고만 |
| 확인할 것 | 늘릴 수 있는 기간·세금 규정은 2026년 세제 개편 논의 중 — 신청할 때 증권사에서 확인 |
| 시작 | 만기 날 | 만기 평가 | 빼서 예금 1년 | 1년 더 |
|---|---|---|---|---|
| 2020-03 | 2023-03-02 | 3,496만원 | 3,607만원 | 4,052만원 |
| 2021-02 | 2024-02-01 | 3,599만원 | 3,707만원 | 3,481만원 |
2020년 3월 사례의 1년 더 ÷ 예금(1.123)은 마이너스 만기 63번의 가운데 값과 같습니다 — 고른 사례가 아니라 가운데 사례입니다. 1년 더가 진 만기: 2014-02 · 2014-10 · 2014-12 · 2015-01 · 2015-02 · 2023-12 · 2024-02. 만기 날 플러스였던 178번에서는 1년 더가 더 남은 것이 80번이었습니다.
| 시작 | 만기 날 | 만기 평가 | 빼서 예금 1년 | 1년 더 | 더 남은 쪽 |
|---|---|---|---|---|---|
| 2005-09 | 2008-09-01 | 3,526만원 | 3,634만원 | 4,160만원 | 1년 더 |
| 2005-10 | 2008-10-01 | 3,549만원 | 3,649만원 | 4,199만원 | 1년 더 |
| 2005-11 | 2008-11-03 | 2,819만원 | 2,892만원 | 3,949만원 | 1년 더 |
| 2005-12 | 2008-12-01 | 2,636만원 | 2,698만원 | 3,996만원 | 1년 더 |
| 2006-01 | 2009-01-02 | 2,909만원 | 2,974만원 | 4,362만원 | 1년 더 |
| 2006-02 | 2009-02-02 | 2,878만원 | 2,942만원 | 4,137만원 | 1년 더 |
| 2006-03 | 2009-03-02 | 2,593만원 | 2,651만원 | 4,169만원 | 1년 더 |
| 2006-04 | 2009-04-01 | 3,137만원 | 3,208만원 | 4,471만원 | 1년 더 |
| 2006-05 | 2009-05-04 | 3,508만원 | 3,588만원 | 4,467만원 | 1년 더 |
| 2006-06 | 2009-06-01 | 3,540만원 | 3,620만원 | 4,234만원 | 1년 더 |
| 2006-07 | 2009-07-01 | 3,547만원 | 3,628만원 | 4,321만원 | 1년 더 |
| 2010-07 | 2013-07-01 | 3,440만원 | 3,518만원 | 3,733만원 | 1년 더 |
| 2010-08 | 2013-08-01 | 3,522만원 | 3,602만원 | 3,853만원 | 1년 더 |
| 2010-09 | 2013-09-02 | 3,547만원 | 3,627만원 | 3,779만원 | 1년 더 |
| 2011-02 | 2014-02-03 | 3,529만원 | 3,603만원 | 3,576만원 | 예금 |
| 2011-10 | 2014-10-01 | 3,593만원 | 3,651만원 | 3,440만원 | 예금 |
| 2011-11 | 2014-11-03 | 3,512만원 | 3,567만원 | 3,584만원 | 1년 더 |
| 2011-12 | 2014-12-01 | 3,547만원 | 3,601만원 | 3,558만원 | 예금 |
| 2012-01 | 2015-01-02 | 3,496만원 | 3,548만원 | 3,413만원 | 예금 |
| 2012-02 | 2015-02-02 | 3,571만원 | 3,624만원 | 3,386만원 | 예금 |
| 2012-08 | 2015-08-03 | 3,442만원 | 3,488만원 | 3,673만원 | 1년 더 |
| 2012-09 | 2015-09-01 | 3,265만원 | 3,309만원 | 3,703만원 | 1년 더 |
| 2012-10 | 2015-10-01 | 3,410만원 | 3,454만원 | 3,752만원 | 1년 더 |
| 2012-11 | 2015-11-02 | 3,575만원 | 3,622만원 | 3,719만원 | 1년 더 |
| 2012-12 | 2015-12-01 | 3,548만원 | 3,593만원 | 3,699만원 | 1년 더 |
| 2013-01 | 2016-01-04 | 3,405만원 | 3,448만원 | 3,842만원 | 1년 더 |
| 2013-02 | 2016-02-01 | 3,392만원 | 3,435만원 | 3,985만원 | 1년 더 |
| 2013-03 | 2016-03-02 | 3,484만원 | 3,528만원 | 4,036만원 | 1년 더 |
| 2013-04 | 2016-04-01 | 3,535만원 | 3,579만원 | 4,188만원 | 1년 더 |
| 2013-05 | 2016-05-02 | 3,555만원 | 3,599만원 | 4,316만원 | 1년 더 |
| 2013-06 | 2016-06-01 | 3,563만원 | 3,606만원 | 4,545만원 | 1년 더 |
| 2015-11 | 2018-11-01 | 3,484만원 | 3,535만원 | 3,774만원 | 1년 더 |
| 2016-01 | 2019-01-02 | 3,454만원 | 3,504만원 | 3,957만원 | 1년 더 |
| 2016-06 | 2019-06-03 | 3,468만원 | 3,510만원 | 3,615만원 | 1년 더 |
| 2016-07 | 2019-07-01 | 3,583만원 | 3,624만원 | 3,700만원 | 1년 더 |
| 2016-08 | 2019-08-01 | 3,419만원 | 3,456만원 | 3,929만원 | 1년 더 |
| 2016-09 | 2019-09-02 | 3,316만원 | 3,350만원 | 4,054만원 | 1년 더 |
| 2016-10 | 2019-10-01 | 3,509만원 | 3,543만원 | 4,102만원 | 1년 더 |
| 2016-11 | 2019-11-01 | 3,553만원 | 3,585만원 | 3,986만원 | 1년 더 |
| 2016-12 | 2019-12-02 | 3,526만원 | 3,556만원 | 4,569만원 | 1년 더 |
| 2017-03 | 2020-03-02 | 3,444만원 | 3,467만원 | 5,404만원 | 1년 더 |
| 2017-04 | 2020-04-01 | 2,875만원 | 2,894만원 | 5,446만원 | 1년 더 |
| 2017-05 | 2020-05-04 | 3,204만원 | 3,224만원 | 5,488만원 | 1년 더 |
| 2017-06 | 2020-06-01 | 3,503만원 | 3,524만원 | 5,630만원 | 1년 더 |
| 2019-07 | 2022-07-01 | 3,460만원 | 3,563만원 | 3,854만원 | 1년 더 |
| 2019-09 | 2022-09-01 | 3,521만원 | 3,632만원 | 3,876만원 | 1년 더 |
| 2019-10 | 2022-10-04 | 3,210만원 | 3,313만원 | 3,628만원 | 1년 더 |
| 2019-11 | 2022-11-01 | 3,381만원 | 3,490만원 | 3,522만원 | 1년 더 |
| 2019-12 | 2022-12-01 | 3,569만원 | 3,683만원 | 3,785만원 | 1년 더 |
| 2020-01 | 2023-01-02 | 3,233만원 | 3,336만원 | 4,076만원 | 1년 더 |
| 2020-02 | 2023-02-01 | 3,573만원 | 3,686만원 | 3,857만원 | 1년 더 |
| 2020-03 | 2023-03-02 | 3,496만원 | 3,607만원 | 4,052만원 | 1년 더 |
| 2020-04 | 2023-04-03 | 3,530만원 | 3,643만원 | 4,203만원 | 1년 더 |
| 2020-05 | 2023-05-02 | 3,576만원 | 3,691만원 | 4,032만원 | 1년 더 |
| 2020-07 | 2023-07-07 | 3,538만원 | 3,651만원 | 4,180만원 | 1년 더 |
| 2020-09 | 2023-09-01 | 3,556만원 | 3,669만원 | 3,888만원 | 1년 더 |
| 2020-10 | 2023-10-04 | 3,341만원 | 3,446만원 | 3,667만원 | 1년 더 |
| 2020-11 | 2023-11-01 | 3,248만원 | 3,349만원 | 3,616만원 | 1년 더 |
| 2020-12 | 2023-12-01 | 3,499만원 | 3,607만원 | 3,485만원 | 예금 |
| 2021-02 | 2024-02-01 | 3,599만원 | 3,707만원 | 3,481만원 | 예금 |
| 2021-12 | 2024-12-02 | 3,558만원 | 3,642만원 | 6,185만원 | 1년 더 |
| 2022-01 | 2025-01-02 | 3,490만원 | 3,571만원 | 6,991만원 | 1년 더 |
| 2022-02 | 2025-02-03 | 3,575만원 | 3,657만원 | 8,153만원 | 1년 더 |
시작 달이 한 달씩 다른 계좌라 서로 많이 겹칩니다. 따로 떨어진 사건으로 세면 15번이고, 그중 1년 더가 과반 이긴 사건은 12번입니다.
SPY 수정종가 × 원/달러(환헤지 없음) · 같은 판: 만기 358번 중 마이너스 44번 → 1년 더가 더 남은 것 32번. 1년 뒤 넣은 돈 이상은 20번뿐(24번은 그대로 마이너스) — 2001~2003년 사건이 길었습니다. 2010년 이후 만기에는 마이너스가 한 번도 없었습니다.
돌리는 법: zip 을 풀고 python run_isa.py
== KODEX200 · 만기 241번 (2005-10 ~ 2025-10)
만기 날 마이너스 63번 → 1년 더가 빼서 예금보다 더 남은 것 56번
1년 뒤 넣은 돈 이상 54번 · 넣은 돈보다 적었던 것 9번
(대조) 만기 날 플러스 178번 → 1년 더가 더 남은 것 80번
세금(비과세 일반형 200만원 넘는 이익에 9.9%)을 1년 더 쪽에 물려도: 56번
세금(비과세 서민형 400만원 넘는 이익에 9.9%)을 1년 더 쪽에 물려도: 56번
1년 더 ÷ 예금 가운데 값 1.123
1년 더가 진 만기: 2014-02 · 2014-10 · 2014-12 · 2015-01 · 2015-02 · 2023-12 · 2024-02
따로 떨어진 마이너스 사건 15번 · 그중 1년 더가 과반 이긴 사건 12번
2010년 이후 만기 중 마이너스 52번
[마이너스 만기 전부] 시작 → 만기 날 · 만기 평가 · 빼서 예금 1년 · 1년 더
2005-09 → 2008-09-01 · 3,526만원 · 3,634만원 · 4,160만원 · 1년 더 승
2005-10 → 2008-10-01 · 3,549만원 · 3,649만원 · 4,199만원 · 1년 더 승
2005-11 → 2008-11-03 · 2,819만원 · 2,892만원 · 3,949만원 · 1년 더 승
2005-12 → 2008-12-01 · 2,636만원 · 2,698만원 · 3,996만원 · 1년 더 승
2006-01 → 2009-01-02 · 2,909만원 · 2,974만원 · 4,362만원 · 1년 더 승
2006-02 → 2009-02-02 · 2,878만원 · 2,942만원 · 4,137만원 · 1년 더 승
2006-03 → 2009-03-02 · 2,593만원 · 2,651만원 · 4,169만원 · 1년 더 승
2006-04 → 2009-04-01 · 3,137만원 · 3,208만원 · 4,471만원 · 1년 더 승
2006-05 → 2009-05-04 · 3,508만원 · 3,588만원 · 4,467만원 · 1년 더 승
2006-06 → 2009-06-01 · 3,540만원 · 3,620만원 · 4,234만원 · 1년 더 승
2006-07 → 2009-07-01 · 3,547만원 · 3,628만원 · 4,321만원 · 1년 더 승
2010-07 → 2013-07-01 · 3,440만원 · 3,518만원 · 3,733만원 · 1년 더 승
2010-08 → 2013-08-01 · 3,522만원 · 3,602만원 · 3,853만원 · 1년 더 승
2010-09 → 2013-09-02 · 3,547만원 · 3,627만원 · 3,779만원 · 1년 더 승
2011-02 → 2014-02-03 · 3,529만원 · 3,603만원 · 3,576만원 · 예금 승
2011-10 → 2014-10-01 · 3,593만원 · 3,651만원 · 3,440만원 · 예금 승
2011-11 → 2014-11-03 · 3,512만원 · 3,567만원 · 3,584만원 · 1년 더 승
2011-12 → 2014-12-01 · 3,547만원 · 3,601만원 · 3,558만원 · 예금 승
2012-01 → 2015-01-02 · 3,496만원 · 3,548만원 · 3,413만원 · 예금 승
2012-02 → 2015-02-02 · 3,571만원 · 3,624만원 · 3,386만원 · 예금 승
2012-08 → 2015-08-03 · 3,442만원 · 3,488만원 · 3,673만원 · 1년 더 승
2012-09 → 2015-09-01 · 3,265만원 · 3,309만원 · 3,703만원 · 1년 더 승
2012-10 → 2015-10-01 · 3,410만원 · 3,454만원 · 3,752만원 · 1년 더 승
2012-11 → 2015-11-02 · 3,575만원 · 3,622만원 · 3,719만원 · 1년 더 승
2012-12 → 2015-12-01 · 3,548만원 · 3,593만원 · 3,699만원 · 1년 더 승
2013-01 → 2016-01-04 · 3,405만원 · 3,448만원 · 3,842만원 · 1년 더 승
2013-02 → 2016-02-01 · 3,392만원 · 3,435만원 · 3,985만원 · 1년 더 승
2013-03 → 2016-03-02 · 3,484만원 · 3,528만원 · 4,036만원 · 1년 더 승
2013-04 → 2016-04-01 · 3,535만원 · 3,579만원 · 4,188만원 · 1년 더 승
2013-05 → 2016-05-02 · 3,555만원 · 3,599만원 · 4,316만원 · 1년 더 승
2013-06 → 2016-06-01 · 3,563만원 · 3,606만원 · 4,545만원 · 1년 더 승
2015-11 → 2018-11-01 · 3,484만원 · 3,535만원 · 3,774만원 · 1년 더 승
2016-01 → 2019-01-02 · 3,454만원 · 3,504만원 · 3,957만원 · 1년 더 승
2016-06 → 2019-06-03 · 3,468만원 · 3,510만원 · 3,615만원 · 1년 더 승
2016-07 → 2019-07-01 · 3,583만원 · 3,624만원 · 3,700만원 · 1년 더 승
2016-08 → 2019-08-01 · 3,419만원 · 3,456만원 · 3,929만원 · 1년 더 승
2016-09 → 2019-09-02 · 3,316만원 · 3,350만원 · 4,054만원 · 1년 더 승
2016-10 → 2019-10-01 · 3,509만원 · 3,543만원 · 4,102만원 · 1년 더 승
2016-11 → 2019-11-01 · 3,553만원 · 3,585만원 · 3,986만원 · 1년 더 승
2016-12 → 2019-12-02 · 3,526만원 · 3,556만원 · 4,569만원 · 1년 더 승
2017-03 → 2020-03-02 · 3,444만원 · 3,467만원 · 5,404만원 · 1년 더 승
2017-04 → 2020-04-01 · 2,875만원 · 2,894만원 · 5,446만원 · 1년 더 승
2017-05 → 2020-05-04 · 3,204만원 · 3,224만원 · 5,488만원 · 1년 더 승
2017-06 → 2020-06-01 · 3,503만원 · 3,524만원 · 5,630만원 · 1년 더 승
2019-07 → 2022-07-01 · 3,460만원 · 3,563만원 · 3,854만원 · 1년 더 승
2019-09 → 2022-09-01 · 3,521만원 · 3,632만원 · 3,876만원 · 1년 더 승
2019-10 → 2022-10-04 · 3,210만원 · 3,313만원 · 3,628만원 · 1년 더 승
2019-11 → 2022-11-01 · 3,381만원 · 3,490만원 · 3,522만원 · 1년 더 승
2019-12 → 2022-12-01 · 3,569만원 · 3,683만원 · 3,785만원 · 1년 더 승
2020-01 → 2023-01-02 · 3,233만원 · 3,336만원 · 4,076만원 · 1년 더 승
2020-02 → 2023-02-01 · 3,573만원 · 3,686만원 · 3,857만원 · 1년 더 승
2020-03 → 2023-03-02 · 3,496만원 · 3,607만원 · 4,052만원 · 1년 더 승
2020-04 → 2023-04-03 · 3,530만원 · 3,643만원 · 4,203만원 · 1년 더 승
2020-05 → 2023-05-02 · 3,576만원 · 3,691만원 · 4,032만원 · 1년 더 승
2020-07 → 2023-07-07 · 3,538만원 · 3,651만원 · 4,180만원 · 1년 더 승
2020-09 → 2023-09-01 · 3,556만원 · 3,669만원 · 3,888만원 · 1년 더 승
2020-10 → 2023-10-04 · 3,341만원 · 3,446만원 · 3,667만원 · 1년 더 승
2020-11 → 2023-11-01 · 3,248만원 · 3,349만원 · 3,616만원 · 1년 더 승
2020-12 → 2023-12-01 · 3,499만원 · 3,607만원 · 3,485만원 · 예금 승
2021-02 → 2024-02-01 · 3,599만원 · 3,707만원 · 3,481만원 · 예금 승
2021-12 → 2024-12-02 · 3,558만원 · 3,642만원 · 6,185만원 · 1년 더 승
2022-01 → 2025-01-02 · 3,490만원 · 3,571만원 · 6,991만원 · 1년 더 승
2022-02 → 2025-02-03 · 3,575만원 · 3,657만원 · 8,153만원 · 1년 더 승
[사례] 2020-03 시작 · 만기 2023-03-02 · 넣은 돈 3,600만원 · 만기 날 3,496만원 → 빼서 예금 1년 3,607만원 / 1년 더 4,052만원
[사례] 2021-02 시작 · 만기 2024-02-01 · 넣은 돈 3,600만원 · 만기 날 3,599만원 → 빼서 예금 1년 3,707만원 / 1년 더 3,481만원
== KODEX200 · 2009-05 이후 시작만 · 만기 162번 (2012-05 ~ 2025-10)
만기 날 마이너스 52번 → 1년 더가 빼서 예금보다 더 남은 것 45번
1년 뒤 넣은 돈 이상 43번 · 넣은 돈보다 적었던 것 9번
(대조) 만기 날 플러스 110번 → 1년 더가 더 남은 것 42번
세금(비과세 일반형 200만원 넘는 이익에 9.9%)을 1년 더 쪽에 물려도: 45번
세금(비과세 서민형 400만원 넘는 이익에 9.9%)을 1년 더 쪽에 물려도: 45번
1년 더 ÷ 예금 가운데 값 1.089
1년 더가 진 만기: 2014-02 · 2014-10 · 2014-12 · 2015-01 · 2015-02 · 2023-12 · 2024-02
따로 떨어진 마이너스 사건 14번 · 그중 1년 더가 과반 이긴 사건 11번
2010년 이후 만기 중 마이너스 52번
== S&P500 원화(SPY 수정종가 × 원/달러) · 만기 358번 (1996-01 ~ 2025-10)
만기 날 마이너스 44번 → 1년 더가 빼서 예금보다 더 남은 것 32번
1년 뒤 넣은 돈 이상 20번 · 넣은 돈보다 적었던 것 24번
(대조) 만기 날 플러스 314번 → 1년 더가 더 남은 것 232번
세금(비과세 일반형 200만원 넘는 이익에 9.9%)을 1년 더 쪽에 물려도: 32번
세금(비과세 서민형 400만원 넘는 이익에 9.9%)을 1년 더 쪽에 물려도: 32번
1년 더 ÷ 예금 가운데 값 1.088
1년 더가 진 만기: 2001-09 · 2001-10 · 2001-11 · 2001-12 · 2002-01 · 2002-02 · 2002-03 · 2002-04 · 2002-05 · 2002-06 · 2002-07 · 2003-11
따로 떨어진 마이너스 사건 4번 · 그중 1년 더가 과반 이긴 사건 4번
2010년 이후 만기 중 마이너스 0번
== 일본 닛케이 원화(가격지수 × 원/엔) · 만기 418번 (1991-01 ~ 2025-10)
만기 날 마이너스 125번 → 1년 더가 빼서 예금보다 더 남은 것 73번
1년 뒤 넣은 돈 이상 61번 · 넣은 돈보다 적었던 것 64번
(대조) 만기 날 플러스 293번 → 1년 더가 더 남은 것 142번
세금(비과세 일반형 200만원 넘는 이익에 9.9%)을 1년 더 쪽에 물려도: 73번
세금(비과세 서민형 400만원 넘는 이익에 9.9%)을 1년 더 쪽에 물려도: 73번
1년 더 ÷ 예금 가운데 값 1.047
1년 더가 진 만기: 1991-01 · 1991-02 · 1991-03 · 1991-04 · 1991-05 · 1991-06 · 1991-07 · 1991-08 · 1991-09 · 1991-10 · 1991-11 · 1991-12 · 1992-02 · 1992-03 · 1997-09 · 1997-10 · 2000-08 · 2000-10 · 2000-11 · 2000-12 · 2001-01 · 2001-02 · 2001-03 · 2001-04 · 2001-05 · 2001-06 · 2001-07 · 2001-08 · 2001-09 · 2001-10 · 2001-11 · 2001-12 · 2002-01 · 2002-02 · 2002-03 · 2002-04 · 2002-05 · 2002-06 · 2002-07 · 2002-08 · 2008-02 · 2008-03 · 2008-04 · 2008-10 · 2008-12 · 2009-11 · 2010-09 · 2010-11 · 2011-09 · 2011-11 · 2011-12 · 2012-01
따로 떨어진 마이너스 사건 23번 · 그중 1년 더가 과반 이긴 사건 14번
2010년 이후 만기 중 마이너스 26번
끝.
# -*- coding: utf-8 -*-
"""ISA 만기 날 계좌가 마이너스면 — 빼서 예금에 둘까, 1년 더 둘까 (AlgoLab 재현 코드 · 표준 라이브러리만)
판
· 매달 첫 거래일 100만원 × 36번(넣은 돈 3,600만원) · 사고팔 때 편도 0.1%
· 만기 = 첫 납입 36개월 뒤 첫 거래일 · 만기 평가액 = 그날 다 팔았을 때(수수료 뺌)
· 빼서 예금 = 만기 평가액을 12개월 예금(한국 3개월 금리 IR3TIB01KRM156N 월별 · 이자소득세 15.4%)
· 1년 더 = 같은 ETF 를 12개월 더 들고 그날 판다(추가 납입 없음)
자료(data_isa/ · 2026-10-02 까지 얼림)
· kodex200_splice.csv : KODEX200(069500) — 2009-04-17 전 네이버 종가(분배금 미반영) · 이후 야후 수정종가
· SPY.csv(야후 adjclose) · DEXKOUS.csv(원/달러) · IR3TIB01KRM156N.csv(FRED)
· N225.csv(야후 닛케이 가격지수 · 배당 미반영) · DEXJPUS.csv(엔/달러 · FRED)
돌리는 법: python run_isa.py
"""
import csv
import os
import statistics
import sys
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
HERE = os.path.dirname(os.path.abspath(__file__))
D = os.path.join(HERE, "data_isa")
COST, TAX, MON = 0.001, 0.154, 100.0
def read(name, col):
out = []
with open(os.path.join(D, name), encoding="utf-8") as f:
for r in csv.DictReader(f):
v = float(r[col])
if v > 0:
out.append((r["date"], v))
return out
def monthly_first(rows):
m = {}
for d, v in rows:
k = d[:7]
if k not in m:
m[k] = (d, v)
keys = sorted(m)
for a, b in zip(keys, keys[1:]): # 달이 비면 안 된다
ya, ma = int(a[:4]), int(a[5:])
assert (ya * 12 + ma) + 1 == int(b[:4]) * 12 + int(b[5:]), ("월 구멍", a, b)
return keys, [m[k][0] for k in keys], [m[k][1] for k in keys]
RATE = {d[:7]: v for d, v in read("IR3TIB01KRM156N.csv", "IR3TIB01KRM156N")}
def rate_of(ym):
ks = [k for k in RATE if k <= ym]
return RATE[max(ks)] if ks else None # 금리 자료 앞의 만기는 뺀다
def run(rows):
keys, days, px = monthly_first(rows)
out = []
for i0 in range(0, len(px) - 48):
sh = sum(MON * (1 - COST) / px[i0 + k] for k in range(36))
paid = MON * 36
im = i0 + 36
vm = sh * px[im] * (1 - COST)
w = vm
rs = [rate_of(keys[im + j]) for j in range(12)]
if None in rs:
continue
for rr in rs:
w *= 1 + (rr / 100 / 12) * (1 - TAX)
h = sh * px[im + 12] * (1 - COST)
out.append(dict(start=keys[i0], mat=keys[im], matday=days[im], paid=paid, vm=vm, w=w, h=h))
return out
def man(x):
return f"{round(x):,}만원"
def report(name, rows):
loss = [r for r in rows if r["vm"] < r["paid"]]
gain = [r for r in rows if r["vm"] >= r["paid"]]
win = [r for r in loss if r["h"] > r["w"]]
rec = [r for r in loss if r["h"] >= r["paid"]]
print(f"\n== {name} · 만기 {len(rows)}번 ({rows[0]['mat']} ~ {rows[-1]['mat']})")
print(f" 만기 날 마이너스 {len(loss)}번 → 1년 더가 빼서 예금보다 더 남은 것 {len(win)}번")
print(f" 1년 뒤 넣은 돈 이상 {len(rec)}번 · 넣은 돈보다 적었던 것 {len(loss) - len(rec)}번")
print(f" (대조) 만기 날 플러스 {len(gain)}번 → 1년 더가 더 남은 것 {sum(r['h'] > r['w'] for r in gain)}번")
for lim, lab in ((200, "일반형 200만원"), (400, "서민형 400만원")):
k = sum((r["h"] - max(0.0, r["h"] - r["paid"] - lim) * 0.099) > r["w"] for r in loss)
print(f" 세금(비과세 {lab} 넘는 이익에 9.9%)을 1년 더 쪽에 물려도: {k}번")
if loss:
print(f" 1년 더 ÷ 예금 가운데 값 {statistics.median(r['h'] / r['w'] for r in loss):.3f}")
print(" 1년 더가 진 만기: " + " · ".join(r["mat"] for r in loss if r["h"] <= r["w"]))
eps, cur = [], []
for r in rows:
if r["vm"] < r["paid"]:
cur.append(r)
elif cur:
eps.append(cur); cur = []
if cur:
eps.append(cur)
maj = sum(1 for e in eps if 2 * sum(r["h"] > r["w"] for r in e) > len(e))
print(f" 따로 떨어진 마이너스 사건 {len(eps)}번 · 그중 1년 더가 과반 이긴 사건 {maj}번")
n10 = sum(1 for r in loss if r["mat"] >= "2010-01")
print(f" 2010년 이후 만기 중 마이너스 {n10}번")
return loss
def main():
k = read("kodex200_splice.csv", "close")
rows = run(k)
loss = report("KODEX200", rows)
print("\n [마이너스 만기 전부] 시작 → 만기 날 · 만기 평가 · 빼서 예금 1년 · 1년 더")
for r in loss:
mark = "1년 더 승" if r["h"] > r["w"] else "예금 승"
print(f" {r['start']} → {r['matday']} · {man(r['vm'])} · {man(r['w'])} · {man(r['h'])} · {mark}")
for s in ("2020-03", "2021-02"):
r = next(x for x in rows if x["start"] == s)
print(f"\n[사례] {s} 시작 · 만기 {r['matday']} · 넣은 돈 {man(r['paid'])} · 만기 날 {man(r['vm'])}"
f" → 빼서 예금 1년 {man(r['w'])} / 1년 더 {man(r['h'])}")
report("KODEX200 · 2009-05 이후 시작만", [r for r in rows if r["start"] >= "2009-05"])
spy = read("SPY.csv", "adjclose")
fx = read("DEXKOUS.csv", "DEXKOUS")
fxd = dict(fx)
fxs = sorted(fxd)
j, last, sp = 0, None, []
for d, v in spy:
while j < len(fxs) and fxs[j] <= d:
last = fxd[fxs[j]]; j += 1
if last:
sp.append((d, v * last))
report("S&P500 원화(SPY 수정종가 × 원/달러)", run(sp))
# 일본 닛케이(가격지수 · 원화) — 원/엔 = 원/달러 ÷ 엔/달러
jp = dict(read("DEXJPUS.csv", "DEXJPUS"))
jk = sorted((d, fxd[d] / jp[d]) for d in fxd if d in jp)
nk = read("N225.csv", "close")
j, last, nkk = 0, None, []
for d, v in nk:
while j < len(jk) and jk[j][0] <= d:
last = jk[j][1]; j += 1
if last:
nkk.append((d, v * last))
report("일본 닛케이 원화(가격지수 × 원/엔)", run(nkk))
print("\n끝.")
if __name__ == "__main__":
main()
알고랩 Strategy Lab — 전략을 검증하고, 검증한 것만 자동매매로 옮깁니다. 마이너스 계좌를 보고도 정해 둔 규칙대로 움직이는 일은 사람보다 규칙이 잘합니다. 알고랩 자동매매 살펴보기 · 전략 검증 전체 보기
과거 데이터를 돌려 본 결과이며 미래 수익을 보장하지 않습니다. 투자 판단과 책임은 본인에게 있습니다.