shy3130/tick-stock-panel — TSP自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台 | LLM能力驱使策略定制+个股分析+复盘 | 自由接入第三方数据源与个性化扩展数据 | 个人开源
tick-stock-panel — 자체 호스팅 A주식 선별·모니터링·백테스트 작업대
tick-stock-panel은 중국 A주식을 대상으로 종목 선별, 백테스트, 실시간 모니터링과 복기를 한곳에 모은 오픈소스 양적 분석 도구입니다. 데이터 소스를 기능별로 바꾸는 라우팅 구조와 로컬 Parquet 저장소를 갖추며, Docker로 실행합니다.
- 주제
에디터 노트
데이터 소스를 고정하지 않고 '능력 라우팅'으로 바꾸는 설계가 인상적입니다. 개인 프로젝트가 유료 터미널 흉내가 아니라 데이터 파이프라인의 신뢰성 문제부터 풀고 있다는 점에서, 퀀트 도구로서의 진지함이 느껴집니다. 다만 AI 보조가 매매 지시를 피하도록 설계된 점은 현명하지만, 데이터 공급자 약관과 정확성에 대한 책임이 사용자에게 넘어가 있다는 점은 염두에 둘 필요가 있습니다.
AI 요약
tick-stock-panel은 A주식 분석을 위한 자체 호스팅형 양적 연구 작업대입니다. 종목 선별부터 백테스트, 장중 감시, 종목·시장 분석과 장 마감 후 복기까지 한 애플리케이션에서 다룹니다. 프로젝트는 무료·유료 데이터 소스와 플러그인을 지원하며, Docker 컨테이너 안에서 실행하고 데이터는 로컬에 저장하는 구성을 제시합니다. 개인 개발자가 유지보수하며 학습과 연구 용도로 제공한다고 안내합니다.
데이터 소스와 계산 구조
데이터 소스를 한곳에 고정하지 않고, 데이터셋별로 소스가 제공하는 기능을 확인해 경로를 정하는 ‘능력 라우팅’ 방식을 사용합니다. 같은 데이터셋의 공급자를 바꿔도 지표와 백테스트 기준을 유지하는 것이 설계 목표입니다. TICKFLOW 등급 탐지와 플러그인이 선언한 기능을 기준으로 라우팅하며, 비율 단위처럼 필수 기능을 선언하지 않은 소스는 허용하지 않는 fail-closed 정책을 둡니다. 거래일 확인은 fuyao의 거래일 달력, TickFlow 시세 타임스탬프, 평일 여부 순으로 진행합니다. 휴일에는 실시간 폴링과 분봉 증분 수집을 멈춰 불필요한 요청을 줄입니다.
저장에는 Parquet, DuckDB, 일별 JSON 캐시를 쓰고, 지표 계산은 Polars 파이프라인에서 처리합니다. 저장 단계에는 15개 기초 데이터 열을 두고, enriched 데이터를 읽을 때 지표와 신호 68개 열을 계산한다고 설명합니다. 선택·백테스트·모니터링·복기에는 같은 enriched 데이터 기준을 적용합니다. 재무 데이터는 종목과 보고 기간을 기준으로 소스를 합칩니다. 각 열은 공시일 기준으로 최신 값을 택하고, 공시 전 데이터는 0으로 채우지 않고 비워 둡니다.
전략·요인 분석과 백테스트
종목 선별기는 Polars로 전체 A주식 종목을 스캔하며, 내장 전략 25개와 사용자 신호, AI 생성 전략을 지원합니다. 일봉과 분봉 전략은 하나의 풀에서 실행하고, 전략에 선언한 주기에 맞춰 처리 경로를 고릅니다. 요인 분석은 IC·IR, 구간별 수익률, 롱숏 포트폴리오 등을 제공하며, 사용자는 DSL로 요인을 정의할 수 있습니다. 요인과 전략은 서로 연결해 사용할 수 있습니다.
백테스트에는 요인, 전략, 분봉 전략의 연구 화면이 있습니다. 전략 결과에는 순자산 곡선, 낙폭, 샤프 지수, 승률, 손익비와 몬테카를로 낙폭 등이 포함됩니다. T+1 결제, 수수료, 슬리피지, 손절을 반영하고, 분봉 백테스트는 거래일별 신호를 재생해 체결 내역을 표시합니다. 매개변수 민감도와 롤링 표본 외 검증도 지원합니다. 결과는 CSV로 내보내고 후보로 저장한 뒤 다시 불러와 재검증할 수 있습니다. 백테스트는 별도 spawn worker 프로세스에서 실행하며, 지속되는 run ID로 페이지를 새로고침하거나 이동한 뒤에도 작업에 다시 연결합니다.
요인·전략 발굴은 학습 구간에서 요인 방향을 다시 추정하고, 상관성이 높은 요인을 제거한 뒤 다중 요인 조합을 탐색합니다. 후보는 저장소에 들어가지만 사용자가 확인하기 전에는 공개되지 않으며 자동으로 운영에 투입하지 않는다고 명시합니다.
모니터링과 AI 보조 기능
모니터링 규칙은 전략 신호, 종목 신호, 가격, 이상 움직임 네 종류로 나뉩니다. 장중 팝업과 음성 안내, Feishu 알림을 제공하고 발동 기록을 저장합니다. 이상 움직임 화면은 시초가 경매, 장중 변동, 거래소 기준 편차를 구분합니다. 시장 환경 화면은 연속 상한가 종목 흐름을 바탕으로 시장을 6단계로 분류하고, 업종·테마 순위를 함께 보여줍니다.
AI 대화 도우미는 실제 로컬 데이터에 연결해 종목·시장·관심 목록·전략·요인 정보를 조회하는 구조입니다. 18개 읽기 전용 도구와 토큰 단위 응답, 호출 도구·매개변수·소요 시간·결과를 확인하는 기록 카드를 설명합니다. 다만 저장소의 진행 상황 표에는 이 기능이 개발 중으로 표시되어 있습니다. AI 키가 없거나 도구 호출을 지원하지 않는 공급자를 쓰면 기능을 닫고 설정을 안내합니다. 매매 지시를 제공하지 않으며, 답변에 위험과 데이터 기준 안내를 붙인다고 밝힙니다.
배포와 확장
제공된 GHCR 이미지는 Docker 명령 한 줄로 실행하며, 저장 데이터 디렉터리를 로컬에 연결합니다. 서비스 기본 주소는 localhost:3018이고, TICKFLOW_API_KEY와 AI_API_KEY는 선택 설정입니다. 개발 모드에는 Python 3.11 이상과 Node 20 이상 등이 필요합니다. 백엔드는 FastAPI, 프런트엔드는 React 18을 사용하며, REST와 SSE로 데이터를 전달합니다. 사용자 데이터 소스와 분석 화면은 플러그인 방식으로 추가합니다. 백엔드는 시작할 때 확장 모듈을 찾아 별도 경로를 등록하고, 프런트엔드는 빌드 시 확장 모듈을 화면 슬롯에 연결합니다. 확장 디렉터리를 삭제하면 관련 기능을 제거하는 구조입니다.
원문은 투자 조언이 아니며 백테스트 결과가 미래 수익을 보장하지 않는다고 명시합니다. 데이터 정확성은 각 데이터 공급자의 기준을 따르고, 사용자는 TickFlow와 fuyao 등의 서비스 약관을 확인해야 합니다.
원문: GitHub / 번역·요약: Trawling