프로그램

CashCow

기업 공시(DART·SEC)가 당일 주가를 움직이는지 통계로 확인하려는 로컬 파이프라인. 수집·측정·백테스트·판정을 한 앱에 담았고, 판정 기준은 결과를 보기 전에 동결했다. 지금까지의 결론은 "우위 없음"이며, 그 결론을 지키는 것이 이 프로젝트의 설계 목표다.

2026작업 중AI 활용

스크린샷

3

개요

공시가 뜬 종목이 그날 안에 비용을 넘는 폭으로 움직이는지 확인하려는 검증 파이프라인입니다. 국내 DART 와 미국 SEC 공시를 모으고, 같은 종목의 비공시일을 1:1 대조군으로 뽑아 같은 측정을 돌립니다.

결과부터 적자면, 아직 통과한 전략이 없습니다. 이 항목은 성과의 기록이 아니라 성과가 없다는 것을 어떻게 알아냈는가의 기록입니다.

결론을 지키는 장치

숫자를 보고 나면 기준을 낮추고 싶어집니다. 그래서 그럴 수 없게 만들어 두었습니다.

검정력과 다중검정 보정, 셀 선정 규칙을 go_criteria.json 하나에 모으고 결과가 나오기 전에 고정했습니다. 파일 수정 시각이 결과 파일보다 앞선다는 사실 자체가 감사 증거입니다.

최근 구간은 열람 횟수가 1로 제한됩니다. 보는 순간 소진되고, 사전 조건 6개가 전부 충족되기 전에는 열지 않습니다.

좋아 보이는 시점에 멈추는 것(optional stopping)은 p-해킹입니다. 그래서 판정은 수집 완료 후 1회만 합니다.

주문에는 잠금을 4겹 걸었습니다. 코드 가드, 증권사 하드 차단, 만료형 해제 파일 2종. 기본값은 전부 잠김이고, 설정 파일이 없거나 깨져 있으면 모의 기장(쉐도우)으로 읽습니다. 모르면 주문하지 않습니다.

실제로 배운 것

세 번의 실패가 전부 가설이 아니라 측정 때문이었습니다. 일봉에 시간외가 섞여 있었고, 미국 1분봉을 한국 시간창으로 긁어 야간거래를 정규장으로 착각했고, 소형주 표본을 대형주 지수로 벤치마킹해 초과수익처럼 보이는 규모 팩터를 만들었습니다.

여기서 남은 규칙은 하나입니다. 여러 독립 대상이 동시에 같은 방향으로 이상하면, 그것은 여러 개의 발견이 아니라 하나의 측정 오류다.

또 하나는 기준 자체의 결함이었습니다. 표본 구간이 짧아지면 표준오차가 √로 커지는데 합격선은 그만큼 느슨해지지 않아, 어떤 전략을 넣어도 2단계 검증을 통과할 수 없는 구조였습니다. 발견하고도 고치지 않고 문서로 남겼습니다. 결과를 본 뒤 기준을 바꾸면 그 판정은 증거가 아니라 설명이 되기 때문입니다.

구성

파이썬 58개 모듈(약 2만 줄)과 tkinter 단일 창 GUI. 수집과 정규화, 스코어링, 백테스트, 스윕, 집행이 모두 한 앱 안에 있고, 설정 35종은 JSON 으로 분리해 근거를 _why 주석으로 남깁니다. 판정 보조로는 로컬 LLM(ollama · qwen2.5:7b)을 씁니다. 외부 API 로 종목과 포지션을 내보내지 않기 위해서입니다.