Portfolio

직접 기획하고 운영하는 프로젝트를 정리합니다.

Finsight

시세, 투자자 수급, 공시, 경제지표, 중앙은행 보고서, 뉴스를 매일 자동으로 모으고, 스스로 검증하고, 장이 끝나면 AI가 시황을 씁니다.

Finsight 한국·미국 주식 시세, 투자자 수급, 공시, 경제지표, 뉴스와 AI 일일 시황을 한곳에서 보는 금융 데이터 서비스 https://finsight2.duckdns.org
기간
2026-02-15 첫 커밋 ~ 현재 (8개월째 운영, 커밋 406개)
역할
1인. 기획, 데이터 설계, 판단, 검증, 배포, 운영. 코드는 AI 코딩 에이전트(Claude Code)와 함께 작성
기술
Python, FastAPI, PostgreSQL + TimescaleDB, React 19, Vite, Tailwind, lightweight-charts, cron, nginx, systemd, Docker
데이터
한국투자증권 Open API, 금융감독원 DART, 미 연준 FRED, 한국은행, Fed·ECB·BIS, Yahoo Finance, 네이버 증권, Binance·CoinGecko, 뉴스 RSS
운영
Oracle Cloud 서버 1대에서 HTTPS·systemd로 상시 운영. 커밋 전 비밀키 자동 차단, 자체 보안 점검 후 보강
Finsight Home 화면. 코스피·코스닥·원달러·S&P500 등 주요 지표 카드와 시장 폭, 오늘의 수급
Home. 한·미 지수, 환율, 원자재, 비트코인과 오늘의 수급을 한 화면에. 등락 색은 한국식(상승 빨강, 하락 파랑)입니다.

규모

자동 작업
28개

수집 21개 + 검증·AI 시황·알림 등. 정해진 시각에 자동 실행

한·미 주식 일봉
931만행

한국 2000년~ 4,002종목, 미국 2007년~ 532종목

매일 자동 검증
25개 테이블

최신성, 수집기 멈춤, 규칙, 교차검증 4종

AI 일일 시황
101일치

한국장 52일, 미국장 49일. 사람 손 없이 게시

시장 이벤트
2,178건

증자, 상장폐지, 지수 편입 등 자동 기록

중앙은행 보고서
1,755건

한국은행 8종, Fed, ECB, BIS. 경제지표는 FRED 20종

숫자는 2026-09-27에 서버 DB와 git 이력을 직접 조회한 값입니다.

어떻게 돌아가나

  1. 수집

    수집 프로그램이 증권사 API, DART 공시, FRED 지표, 중앙은행 자료, 뉴스, 코인 거래소에서 데이터를 가져와 시계열 DB에 쌓습니다.

  2. 검증

    매일 아침 25개 테이블을 네 가지 방식으로 점검하고, 결과를 기록해 Discord로 알립니다.

  3. 해설

    장이 끝나면 지수 흐름, 수급, 업종, 뉴스를 조립해 AI가 시황을 씁니다. 숫자는 DB 원본을 그대로 쓰고, AI는 해설 문장만 씁니다.

  4. 시각화

    10개 화면을 PC, 모바일, 설치형 앱(PWA)으로 제공합니다. 장중엔 실시간 시세, 실패하거나 장이 끝나면 DB 값으로 대체하고 출처를 표시합니다.

Finsight의 하루

평일 기준, 한국 시간입니다. 밤사이 끝난 미국장을 아침에 정리하고, 한국장이 끝나면 그날 데이터를 모아 시황을 냅니다.

  1. 밤사이 미국장 정리
  2. AI 모델 상태 점검
  3. 미국 주식·지수 일봉 수집
  4. AI 미국장 아침 요약 게시 오늘 한국장 관전 포인트 포함
  5. 미국 경제지표 (FRED 20종)
  6. 데이터 품질 검증 25개 테이블 × 4종, 결과를 Discord로
  7. 한국장
  8. 개장. 장중엔 Home과 관심종목이 실시간 시세 사용
  9. 마감
  10. 장 마감 후
  11. 한국 주식 일봉 (수정주가 + 원주가), 과거 종가 변화 감지
  12. 투자자별 수급 (시장별, 종목별 외국인·기관)
  13. 시장 이벤트 감지 신규상장·상장폐지, DART 증자·감자, KOSPI200 편입·편출
  14. 지수 5분봉, 환율, 유가, 금, VIX
  15. AI 한국장 시황 게시

그 밖에 뉴스와 코인 시세는 30분마다, 기관 보고서는 1시간마다 모으고, 일요일 새벽에는 전 종목 수정주가를 다시 점검합니다.

화면 10개

Home
주요 지수·환율·원자재, 오늘의 수급, 시장 폭, 업종 등락
Flow
투자자별 매매동향 추이 (1개월~1년)
Map
S&P500·나스닥·크립토 히트맵
Chart
한·미 종목 캔들, 누적수익률, 경제지표 겹쳐 보기
News
한·미 금융 뉴스 (비금융 기사 섞인 소스는 제거)
Timeline
날짜별 AI 시황 카드 (한국장 / 미국장)
Report
한국은행 결정문·의사록·보고서, Fed·ECB·BIS
Crypto
도미넌스, 공포·탐욕 지수, 김치 프리미엄, 펀딩비
Calendar
CPI·고용·GDP, FOMC·금통위, 선물옵션 만기, 실적 발표
Events
기업 행위·시장 이벤트, 투자경고 등 지정 종목
모바일 Home 화면. 지표 카드가 두 줄로 배치됨
모바일 화면.

핵심 경험

숫자를 믿을 수 있게: 데이터 자동 검증

상황
수집기가 30개를 넘자, 에러 없이 조용히 멈춘 수집기나 단위가 틀린 값이 아무도 모르게 화면에 나갈 위험이 커졌습니다.
한 일

25개 테이블의 출처, 수집 주기, 검증 규칙을 데이터 카탈로그 한 파일로 정의했습니다. 매일 08:30 네 가지를 점검해 DB에 기록하고 알립니다.

  • 최신성: 데이터가 제때 들어왔나
  • 하트비트: 수집기가 조용히 멈추지 않았나
  • 규칙: 고가 ≥ 저가, 단위 이상치
  • 교차검증: 네이버 증권 값과 표본 대조
결과
  • 외부 라이브러리의 수정주가 오류로 부풀려진 4,185행(7종목)을 찾아 백업 후 삭제
  • 재무제표 금액이 100만 배 부풀려진 단위 이상치, 등락률이 전부 0으로 나오던 정수 나눗셈 버그, 9시간 미래로 저장된 뉴스 시각 499건을 정정

기업 행위와 수정주가 관리

상황
유상증자나 액면분할이 생기면 과거 주가가 전부 다시 계산됩니다. 이걸 놓치면 차트와 수익률이 틀어지고 백테스트가 오염됩니다.
한 일
  • 종목 목록 비교(신규상장·상장폐지·개명), DART 주요사항보고서(증자·감자·분할), KOSPI200 구성종목 비교(편입·편출)를 하나의 이벤트 기록부로 통합. 여러 번 돌려도 중복이 생기지 않게 설계
  • 수정주가와 원주가를 함께 저장하고, 매일 “DB의 과거 종가가 바뀌었나”를 비교해 바뀐 종목은 전체 재적재. 주 1회 전 종목 점검(첫 점검에서 238종목 보정)
결과
  • 시장 이벤트 2,178건 자동 기록 (유상증자 772, 수정주가 576, 상장폐지 428, 지수 편입 204 등)

AI 일일 시황: 숫자는 DB 원본에서, AI는 해설만

상황
장 마감 후 지수, 수급, 업종, 뉴스를 모아 시황을 정리하는 일은 사람이 하면 매일 30분 이상 걸립니다. 그렇다고 AI에게 숫자까지 맡기면 틀린 숫자를 지어낼 수 있습니다.
한 일
  • 데이터 조립 → AI 작성 → 검증 → 게시를 매일 자동 실행 (한국장 17시대, 미국장 다음 날 07:40)
  • 화면의 지수·수급 숫자는 DB 값을 그대로 쓰고 AI 문장은 해설로만 사용. AI가 실패해도 숫자 패널은 먼저 저장해 화면이 비지 않게 함
결과

한국장 52일, 미국장 49일치를 사람 손 없이 생성·게시했습니다.

“추석 연휴를 앞두고 외국인·개인이 1.9조원 넘게 팔았지만 기관 매수와 반도체 강세로 코스피가 7,080선을 지키며 4거래일 연속 올랐다” 2026-09-23 한국장
“10년물 미 국채금리가 19년 만의 고점에 오르며…” 2026-09-24 미국장. DB 대조 결과 미 10년물 5.18%, 2007년 7월 이후 최고치로 사실 확인

외부 데이터 소스 장애 대응

상황
증권사(한국투자증권) API에는 초당 호출 한도가 있습니다. 한도를 넘으면 오류가 나는데 재시도가 없어, 수집 중에 그 종목 데이터를 건너뛰고 있었습니다.
한 일
  • 웹 백엔드의 증권사 API 호출을 동시 2건, 60ms 간격으로 제한
  • 로그를 추적해 원인을 찾음: 수집기와 웹 백엔드가 서로를 모른 채 같은 API 키를 쓰고 있었고, 홈 화면이 열려 있던 수집일은 오류가 15배 많았음
  • 한도 오류가 나면 0.5·1·2초 기다렸다 다시 시도 (수집기·백엔드 공통)
  • 수집기가 잡는 공유 잠금을 웹이 감지해, 수집 중에는 증권사 API를 부르지 않고 수집 직전 값을 보여주며 화면에 ‘수집 중’ 표시
결과
  • 웹 백엔드의 호출 한도 초과 하루 22회 → 0회
  • 수집 상황을 흉내 낸 시험(잠금 50초)에서 웹의 증권사 API 호출 0건, 화면 값 유지, ‘수집 중’ 표시 확인

AI 코딩 에이전트를 통제 가능하게 쓰기

상황
코드 대부분을 AI 코딩 에이전트가 작성합니다. 초기에 AI에게 전부 맡겼더니 빨랐지만, 결과물이 기존 규칙과 어긋나 나중에 크게 정리해야 했습니다. 세션이 바뀌면 AI가 이전 맥락과 함정을 잊는 문제도 있었습니다.
한 일
  • 순서: 설계서 → 구현 계획 → 작업 단위 실행 → 작업별 리뷰. 설계와 계획은 사람이 승인해야 코드 작성이 시작됨
  • 규칙: 규칙 문서(CLAUDE.md)에 한국식 등락 색, 공용 부품 재사용을 정하고, AI가 실제로 반복한 실수와 올바른 방법을 대조표로 관리. “완료” 전에 자기 변경분의 규칙 위반을 스스로 찾게 함
  • 지도: 화면 요소 → API → 테이블 → 출처를 잇는 기능 지도와, 테이블별 출처·주기·검증 규칙을 적은 데이터 카탈로그. 카탈로그는 매일 데이터 검증의 설정 파일로도 쓰임
  • 기억: 한 번 겪은 함정을 장기 메모리에 남기고, 세션마다 인수인계 문서로 이어서 작업
  • 검증: API 응답 구조 기준본 대조, 테스트, 다른 에이전트의 반박 리뷰, 화면 스크린샷 직접 확인
결과
  • 커밋 406개 중 289개를 AI 에이전트와 함께 작성
  • 반박 리뷰로 시간대 경계 버그 4건, 캘린더 버그 8건 확정·수정
  • 이틀간 리팩토링 (2026-07-08~09, 커밋 107개, 실서비스 배포 6회 무사고)
지표전후
백엔드 메인 파일6,390줄108줄
첫 화면 JS (압축)683KB85KB
동시 요청 시 서버 멈춤93~110ms1.8ms
자동 테스트프론트 0개프론트 28 + 백엔드 9
API 동작62개62개 그대로 (자동 대조)

발전 과정

  1. 프로젝트 시작

  2. 실시간 히트맵, 뉴스 수집, 경제 캘린더, 업종·랭킹

  3. 크립토 화면 재작성, 시장 이벤트 자동화

  4. 데이터 자동 검증 체계, 수정주가·원주가 함께 저장, 설치형 앱

  5. AI 한국장 시황, 이틀간 리팩토링, 실적 캘린더·금통위 일정 자동화, 미국장 아침 요약

  6. AI 장애 복구, 한국거래소 차단 대응, 수급에 기타법인 추가

  7. 효과가 낮은 AI 뉴스 평가와 쓰지 않는 화면들을 걷어내고, 데이터 경보·누락을 정리

2~7월은 기능을 빠르게 더하는 단계였고, 8~9월은 쓰지 않거나 믿기 어려운 기능을 빼고 다듬는 단계였습니다.