heymingky

그날 몰랐던 정보를 쓰지 않는다는 것 — 미래 참조 편향과 비용 반영

heymingky 홈 화면 "어떻게 만드나" 카드에는 원칙 네 개가 적혀 있다. 그중 "진 것도 남긴다"와 "자동으로 갱신한다"는 앞선 글에서 다뤘다. 남은 둘은 눈에 덜 띄지만, 사실 앞의 둘을 가능하게 하는 전제에 가깝다.

미래를 미리 보지 않습니다. 과거를 계산할 때 그 시점에 알 수 없었던 정보를 쓰지 않습니다. > 비용을 뺍니다. 수수료·세금을 빼지 않은 수익률은 숫자놀음이라 순위가 뒤집힙니다.

실제 계산에서는 언제 사고파는가

월말에 ETF 종가를 확인해 매수 대상을 골랐다고 치자. 월말 종가를 안 뒤에 그날 종가로 샀다고 기록하면 실제로는 불가능한 체결이다. 다음 거래일 시가로 주문해야 시점이 맞는다. 오늘의 ETF 방법 페이지는 이 순서를 설명하고, 백테스트 코드의 `run()`도 신호일을 전날로 잡아 그 다음 거래일 시가로 체결한다. 전략 함수에 전달하는 날짜 역시 신호일이다.

확인할 때는 다음 세 줄을 함께 봐야 한다. 신호를 만든 날짜, 주문에 쓴 시가의 날짜, 전략에 전달한 가격 배열의 끝 날짜다. 첫 두 날짜가 달라도 전략 함수가 다음 날 데이터를 미리 읽는다면 미래 참조 편향은 남는다. 이 글에서 확인한 것은 `run()`이 전달하는 신호일과 체결일이다. 모든 전략 함수와 원천 데이터의 수정 이력까지 독립적으로 감사한 것은 아니다.

비용을 빼니 실제로 순서가 바뀐 한 쌍

"순위가 뒤집힌다"는 말을 실제 저장된 결과로 확인했다. 2026년 8월 17일 생성된 백테스트 기록 발췌의 해외 ETF 비교에서, 같은 2020년 8월~2026년 8월 기간의 연평균 수익률(CAGR)은 다음과 같았다. 이 기록은 당시의 유니버스·시세로 계산한 과거 실험이며 지금 사이트의 실시간 순위를 뜻하지 않는다.

해외 ETF 전략비용 미반영비용 반영
S9 추세필터21.77%19.00%
B2 SPY 사서 보유21.04%19.05%

비용을 무시하면 S9가 B2보다 0.73%포인트 앞선다. 비용을 반영하면 B2가 0.05%포인트 앞선다. 차이가 아주 작아 확정적인 우열이라고 읽어서는 안 되지만, 수수료·슬리피지·세금 가정에 따라 순서 자체가 바뀔 수 있다는 점을 보여준다. S9의 비용 전후 차이는 연 2.77%포인트다.

코드가 쓰는 가정은 매매 편도 수수료 국내 0.015%·해외 0.01%, 슬리피지 0.05%다. 미국 ETF 매매차익에는 연 250만 원 공제 뒤 22%를 모형에 적용한다. 세율은 실제 거래자의 거주지·계좌·신고 조건과 다를 수 있고, 주문마다 달라지는 호가·시장 충격도 고정 슬리피지로 근사한 것이다. 따라서 비용 반영 수익률도 개인이 실제로 받는 수익률은 아니다.

왜 이 두 원칙이 앞선 결과를 뒷받침하는가

오늘의 ETF는 별도의 최신 실험에서 414개 조합 중 409개가 합격 기준에서 떨어졌다고 공개한다. 최종 판정을 통과한 전략·시장 묶음은 없었습니다. 최신 실험의 생성 시각은 2026-10-12 17:59이다. 위 표의 2026년 8월 백테스트와 이 최신 실험은 계산 시점이 다르다. 같은 결과처럼 이어 붙여 순위를 해석하면 안 된다.

성적이 나쁘다는 것만으로 계산이 깨끗하다고 증명되지는 않는다. 결과와 별개로 신호·체결 시점을 확인하고, 같은 전략의 비용 전후 값을 비교해야 한다. 최신 조합별 결과는 원본 실험 파일에서 볼 수 있다.

확인해 둘 것

이 글에서 코드와 비용 전후 결과를 직접 대조한 대상은 오늘의 ETF다. 오늘야구의 승패 채점에는 매매 수수료가 없고, 밍슈의 분석노트의 공고 계산에도 투자 백테스트의 체결 가정을 그대로 적용할 수 없다. 각 서비스의 검증 기준은 방법론 비교 글에서 따로 구분했다.

← 읽을거리 목록