brunch

Day 11. 투자 리포트 대시보드 개발기

Flask와 함께한 데이터 분석 플랫폼 구축 여정

by 채박사

오늘 깃허브에 새로운 것을 PUSH했다.
“1,174개 투자 리포트 기반 웹 대시보드 완성.”
해당 내용은 정말 짧은 시간에 개발을 완료 할 수 있었다. (CursorAI 쵝오!)


시작은 단순했다.

텔레그램 리포트 채널(https://t.me/quick_report)에 하루에도 수십 건 쏟아지는 증권사 리포트를 보며 문득 생각했다.
“이 많은 데이터를 내가 원하는 방식으로 정리해서 보여주는 툴이 있다면 얼마나 좋을까?”

물론 증권사별로 PDF는 넘쳐났지만, 정작 BUY와 SELL이 얼마나 나왔는지,
특정 기업이 최근에 얼마나 주목받았는지,
AI나 2차전지 같은 키워드가 얼마나 자주 언급됐는지는
머릿속에서 감으로만 계산하고 있었다.


그래서 만들기 시작했다.

처음엔 Flask로 간단하게 시작했다.
SQLite로 리포트 메타데이터를 저장하고, Pandas로 분석.
Bootstrap으로 대시보드를 구성했고, Chart.js로 시각화를 더했다.
PDF.js 덕분에 PDF 파일도 브라우저 안에서 바로 볼 수 있었다.

처음 몇 개 페이지를 구성하고 나니, 아이디어가 쏟아졌다.
일간, 주간, 월간, 기간 지정 리포트는 물론이고
“이번 주 가장 많이 언급된 키워드는 뭐지?”
“목표 주가가 상향된 종목만 뽑을 수 없을까?”
“여러 증권사가 동시에 주목한 종목은?”
이 모든 걸 차트 하나로 담아보고 싶었다.


기술적 장애물도 있었다.

SQLite는 가볍고 좋지만, 멀티스레드 환경에서 불안정했다.
Flask 서버에서 요청이 몰리면
“SQLite objects created in a thread can only be used in that same thread”
라는 익숙한 오류가 등장했다.
결국 모든 요청에 대해 새로 연결을 생성하고,
템플릿에서는

.get()

으로 안전하게 속성에 접근하게 했다.

또, UI 흐름도 매끄럽게 정리했다.
일간 → 주간 → 월간 → 기간지정
카드 높이를 자동으로 맞추고, 전체 흐름을 사용자가 자연스럽게 따라갈 수 있도록 조정했다.


데이터를 읽는 눈

가장 흥미로웠던 건, 직접 만든 도구로 매일 시장을 바라보는 감각이었다.
예를 들어, 5월 셋째 주 데이터를 보면 이렇게 나온다.

BUY 비율이 45%,

삼성전자 목표 주가는 13% 상향,

HOT 키워드는 ‘반도체’, ‘AI’, ‘2차전지’…

이런 데이터를 숫자와 도표가 아닌 이야기로 읽을 수 있다는 건,
개발자가 된 이후 투자자로서 새로 얻은 감각이었다.

Screenshot 2025-05-31 at 4.20.39 PM.png 실제 실행한 모습

이 프로젝트가 가진 의미

기술적으로는 간단한 CRUD(Create, Read, Update, Delete) 이상의,
현실 데이터를 읽고 판단하는 도구를 직접 만들었다는 데 의미를 두고 싶다.

단순히 보기 좋은 차트를 만드는 것을 넘어서,
리서치의 흐름, 트렌드의 궤적, 종목에 대한 시장의 시선을
한눈에 보여주는 플랫폼을 만들어냈다.


앞으로의 계획

아직 하고 싶은 게 너무 많다.

API로 분석 데이터를 외부에 제공하고,

즐겨찾기 기능으로 관심 종목을 저장하며,

머신러닝으로 리포트의 내용과 결과를 연결해 보는 것까지.


그다음엔 모바일까지 확장할 생각이다.
물론 그 전에, 이 프로젝트를 사용하는 투자자가 더 많아지길 바란다.

이 글을 읽고 ‘나도 써보고 싶다’는 생각이 들었다면,

한 번 직접 실행해 보시라.
커맨드 하나로 실행되는 Flask 서버 뒤에,
당신의 투자 감각을 돕는 작은 도구 하나가 기다리고 있을지도 모른다.


#텔레그램 #증권리포트 #웹서비스 #대쉬보드


keyword
작가의 이전글DAY 10. RAG를 아시나요?