소개
cluefin은 한국 주식 투자를 위한 오픈소스 분석 도구입니다.
국내 증권사의 Open API와 한국거래소, DART 등의 API를 추상화하여 주식 데이터를 손쉽게 수집하고 분석할 수 있도록 도와줍니다.
CLI 상에서 FA(fundamental Analysis), TA(Technical Analysis) 분석을 지원하며, Python 라이브러리로도 제공되어 데이터 분석 및 머신러닝 모델 개발에 활용할 수 있습니다.
아직은 개발 초기 단계이지만 최근 Python 개발의 트렌드를 확인해 보기에 좋은 프로젝트로 보여서 소개합니다.
기술 스텍
uv
uv는 Astral이라는 회사에서 개발한 Python 패키지 매니저입니다.
node.js의 npm과 유사한 기능을 제공하며, Python 패키지의 설치, 관리, 배포를 간편하게 할 수 있도록 도와줍니다.
pyproject.toml은 package.json과 유사한 역할을 하며, 프로젝트의 메타데이터와 의존성을 정의하는 파일입니다.
최근 Python 생태계에서 자주 언급되는 도구이므로 관심있게 살펴보고 적극적으로 활용해 볼 필요가 있습니다.
ruff
동일한 회사에서 개발하고 있는 lint/formatter 도구입니다.
pydantic
런타임 데이터 검증 및 설정 관리를 위한 Python 라이브러리입니다타.
node.js의 zod와 유사한 기능을 제공합니다.
Open API의 응답을 정의하는데 사용하고 있습니다.
defusedxml
DART API 응답을 파싱하기 위해 사용되는 XML 파서입니다.
click
함수 decorator 기반의 Python CLI(Command Line Interface) 작성 도구입니다.
rich
plottext
터미널에서 그래프를 그릴 수 있는 Python 라이브러리입니다.
주식 종목별 차트를 shell 상에서 시각화하는데 사용하고 있습니다.
lightgbm, TA-Lib
lightgbm과 TA-Lib는 주식 데이터 분석 및 머신러닝 모델 개발에 활용되는 라이브러리입니다.
구조
uv 기반의 monorepo를 사용하고 있습니다.
cluefin-openapi 패키지는 국내 증권사 Open API와 한국거래소, DART 등의 API를 추상화하여 주식 데이터를 수집하는 기능을 제공합니다.
cluefin-openapi를 사용하여 programmatic하게 주식 데이터를 수집할 수 있습니다.
cluefin-cli 패키지는 CLI 상에서 FA, TA 분석을 지원하는 도구입니다.
다음은 삼성전자 주식의 기술적 분석(Technical Analysis)을 수행하는 예시입니다.
cluefin-cli ta 005930 -c