전체 글(199)
-
CBOE 데이터는 왜 두 파일에 나뉘어 있나
데이터 수집 계층 · 옵션 시장CBOE 데이터는 왜 두 파일에 나뉘어 있나출처가 같아도 깨지는 방식이 다르면 같이 두지 않는다 — 스크래핑 1개와 시세 API 5개의 분리시카고옵션거래소(CBOE)에서 오는 값은 이 프로젝트에 두 갈래로 들어옵니다. 하나는 Total Put/Call 비율, 하나는 변동성 지수 5종(VIX · VIX3M · VIX9D · VVIX · SKEW)입니다. 출처는 같지만 같은 파일에 있지 않습니다. 들어오는 경로가 다르고, 깨지는 방식이 다르고, 쓰이는 곳이 다르기 때문입니다.무엇경로최종 소비처파일Total Put/Call 비율HTML 스크래핑마켓 브리핑 "옵션 심리" · 매크로 시계열collector/fear_greed.pyVIX · VIX3M · VIX9D · VVIX · S..
2026.09.19 -
계산하지 않는 API — 라우터 37개를 읽기 전용으로 유지하는 법
화면 뒤의 데이터 판단 · 서빙 계층계산하지 않는 API — 라우터 37개를 읽기 전용으로 유지하는 법DB가 한 번 멈춘 뒤 정한 규칙: 사용자 요청이 도착한 다음에는 아무것도 계산하지 않는다API 서버를 만들 때 가장 자연스러운 구조는 "요청이 오면 DB를 조회해 계산하고 응답한다"입니다. 코드가 단순하고 데이터가 항상 최신입니다. 이 서비스도 그렇게 시작했습니다.그러다 데이터베이스가 통째로 멈추는 일을 겪었습니다. CPU도 메모리도 여유가 있었는데 디스크 입출력 예산이 먼저 바닥났습니다. 조건 없는 전체 조회가 요청 경로에 있으면 사용자가 새로고침할 때마다 같은 스캔이 반복됩니다. 예산이 소진되자 통계 화면뿐 아니라 앱의 모든 화면이 무한 로딩이 됐습니다. 인덱스로는 막히지 않는 종류의 문제였습니다...
2026.09.18 -
11. 학습 표본과 운영 표본의 불일치 — 수익률 필터가 만든 사후 선택
화면 뒤의 데이터 판단 · 방향 신호학습 표본과 운영 표본의 불일치 — 수익률 필터가 만든 사후 선택0.5262 → 0.5166. 누수는 없었지만, 지금까지의 수치는 전부 사후 선택된 표본 위의 값이었다모델 평가에서 가장 먼저 의심하는 것은 누수입니다. 미래 정보가 학습에 섞였는지를 봅니다. 그런데 누수가 하나도 없는데 성적이 부풀려지는 경로가 따로 있습니다. 학습·평가에 쓴 표본이 운영에서 만나는 표본과 다를 때입니다.방향 신호 모델에서 그 경우를 만났습니다. 표본을 모으는 함수에 필터가 한 줄 있었습니다.# 5봉 방향 학습 표본 — 움직임이 작은 날은 부호가 노이즈라고 보고 걸렀다.# 학습에도 평가에도 같은 필터가 걸리므로 '누수'는 아니다.mask = np.abs(fwd5) >= 0.02 ..
2026.09.13 -
09.방향 예측 라벨 설계 — 부호 대신 초과수익을 맞히면 무엇이 달라지나
화면 뒤의 데이터 판단 · 방향 신호방향 예측 라벨 설계 — 부호 대신 초과수익을 맞히면 무엇이 달라지나기저 62.0% → 53.2%, 성적은 41~47 → 45~50. 그래도 무작위선을 넘지 못했다주가가 오를지 내릴지를 학습시키려면 정답표(라벨)가 필요합니다. 가장 단순한 정의는 "5영업일 뒤 수익률이 0보다 크면 1"입니다. 문제는 이 정답표가 한쪽으로 쏠려 있다는 점입니다.미국 지수는 20일 기준 기저 상승률(전체 표본 중 상승이 차지하는 비율)이 65~70%입니다. 정답의 3분의 2가 "상승"이면, 모델은 아무것도 배우지 않고 항상 상승만 외쳐도 절반을 훌쩍 넘깁니다. 실제로 방향신호 실험 52건에서 하락 적중은 19~35%로 무너졌습니다.1. 같은 가격, 두 개의 정답표쏠림을 없애는 표준 처방은..
2026.09.12 -
08.스펙 선언 하나로 화면과 자동 복구를 동시에 움직이기
화면 뒤의 데이터 판단 · 신선도 검증스펙 선언 하나로 화면과 자동 복구를 동시에 움직이기지연을 발견하는 것과 되살리는 것은 다른 일이다 — 그리고 못 되살리는 것도 있다앞 글에서 "무엇을 언제까지 받아야 정상인가"를 선언 테이블로 뺐습니다. 이 글은 그 선언이 실제로 무엇을 굴리는지에 대한 이야기입니다.선언을 읽는 곳은 둘입니다. 화면(데이터 업데이트 현황)과 배치(자동 복구 잡). 둘이 각자 판정 로직을 갖고 있으면 반드시 어긋납니다 — 화면은 초록인데 복구가 계속 돌거나, 그 반대가 됩니다.그래서 판정 함수를 외부 호출이 하나도 없는 순수 함수로 만들어 한 파일에 모았습니다. 화면도 배치도 그 함수만 부릅니다.# 데이터셋 하나의 상태와 사유를 돌려준다. 값만 받아 값만 낸다(DB·API 접근 없음)..
2026.09.07 -
07.갱신 주기가 다른 소스를 한 스냅샷으로 정렬하기
화면 뒤의 데이터 판단 · 데이터 수집갱신 주기가 다른 소스를 한 스냅샷으로 정렬하기DART · ECOS · KRX · FRED · SEC — 어떤 건 하루마다, 어떤 건 넉 달 전 것이다화면 하나에 여러 소스의 숫자가 나란히 놓입니다. 사용자는 그것들이 모두 오늘 값이라고 읽습니다.실제로는 갱신 주기가 열 배 넘게 벌어집니다.소스주기기준일이 뒤처지는 정도yfinance · FRED일간당일 ~ 1영업일KOFIA — 신용공여일간, T+1 공시1 ~ 2영업일ECOS — 한국은행월간1 ~ 2개월DART — 재무제표분기 공시1 ~ 3개월SEC N-PORT — ETF 보유분기 + 60일 유예3 ~ 5개월맨 아래가 극단입니다. IVV 의 공시일은 2026-07-13 인데 대상 기간 종료는 2026-03-31 입니다..
2026.09.02