갭 실험: 지수의 밤·낮 수익률 계산 재현 버전: 2026-09-13 / Python 3.10 이상 / 추가 패키지 없음 파일 - reproduce.py: 로컬 CSV를 읽는 계산 코드. 네트워크와 계정 인증을 사용하지 않습니다. - sample.csv: 손으로 검산할 수 있는 가상 가격 4행. 실제 시세가 아닙니다. - sample-expected.json: 위 가상 예제로 실행한 결과. 같은 폴더에 내려받은 뒤 실행: python reproduce.py sample.csv python reproduce.py sample.csv --daily-output sample-daily.csv python reproduce.py my-kospi.csv --start 2025-06-04 --end 2026-08-31 my-kospi.csv는 독자가 준비한 파일명입니다. 이 묶음에 과거 실제 시세는 포함하지 않았습니다. 기존 출력 파일을 덮어쓰지 않으므로 sample-daily.csv가 이미 있으면 새 파일명을 지정하세요. 입력 조건 - UTF-8 CSV, Date/Open/Close 열. 날짜는 YYYY-MM-DD, 오름차순, 중복 금지. - 한 파일에는 같은 지수/종목, 같은 가격 단위와 수정주가 기준만 사용합니다. - Open/Close는 유한한 양수여야 합니다. 빈 값이나 누락 행을 0으로 채우지 않습니다. - 첫 분석일의 직전 거래일 종가가 필요합니다. CSV 첫 행은 직전 종가 제공용이며 수익률 표본에서 빠집니다. - 휴장일은 행을 만들지 않습니다. 거래일 누락은 거래소 달력과 대조해 별도로 확인해야 합니다. 이 코드는 달력을 조회하지 않으므로 누락 행이 있으면 여러 거래일의 변화를 하나의 갭으로 셀 수 있습니다. --daily-output의 PreviousDate로 실제 연결된 날짜를 점검하세요. 수익률 계산 (r은 0.01=1%인 소수) gap = 오늘 시가 / 이전 행 종가 - 1 intraday = 오늘 종가 / 오늘 시가 - 1 close_to_close = (1 + gap) * (1 + intraday) - 1 cumulative_log_pct = 100 * sum(log(1 + r)) compound_pct = 100 * (exp(sum(log(1 + r))) - 1) naive_t = mean(r) / (표본표준편차(r) / sqrt(n)) 표본 1개 또는 표준편차 0이면 t값은 null입니다. 자기상관/다중검정을 보정하지 않으므로 t값만으로 가설 채택, 미래 수익성, 투자 판단을 확정할 수 없습니다. 가상 예제의 손 검산 - 수익률 표본 3개. 갭: +10%, 0%, 0%. 장중: 0%, -10%, 0%. - 누적 갭 수익률 +10%, 누적 장중 수익률 -10%, 단순 보유 누적 수익률 -1%. - 10%와 -10%를 더한 0%는 복리 누적 결과가 아닙니다. - 로그수익률(%)은 각각 약 9.531018, -10.536052, -1.005034입니다. 재현 범위 기존 실험 코드의 지수 gap/intraday/close-to-close, 평균, 표본 t값, 상관, 누적 로그수익 및 복리 환산을 재현합니다. 입력 파일 SHA-256을 결과에 기록합니다. 원 글의 304거래일 수치 전체를 그대로 복원하는 원시 자료 묶음은 아닙니다. 야간선물 18일, 종목 판정 390행, ETF 비용 전략, 구간별 표는 별도 원자료/계산이 필요합니다. 원자료의 취득 시점, 수정주가, 결측 처리, 분석 시작일이 다르면 결과도 달라집니다. 시가와 종가만으로는 장중에 전일 종가를 터치했는지 판단할 수 없습니다.