주가나 비트코인 차트를 모델에 넣고 다음 캔들을 예측해보려 한 사람은 거의 다 같은 벽을 만난다. LSTM·Transformer를 처음부터 학습시키자니 데이터·자원이 부족하고, TimesFM 같은 일반 시계열 파운데이션 모델은 가격·변동성·거래량을 따로 다루지 못한다.
shiyu-coder/Kronos는 그 빈 칸을 노린 모델이다. OHLCV(시가·고가·저가·종가·거래량) 캔들을 통째로 토큰화해 "금융 언어 모델"처럼 학습했고, Hugging Face NeoQuasar 컬렉션에서 가중치를 받아 코스피·암호화폐 캔들을 곧장 입력할 수 있다. 퀀트·시계열 모델을 다뤄본 입장에서 이 접근이 왜 자연스러운지, 그리고 한국 시장에 적용할 때 어떤 함정이 있는지 단계별로 정리한다.
📌 핵심 3줄 요약
- Kronos는 OHLCV 캔들을 BPE 유사 방식으로 토큰화해 학습한 금융 도메인 특화 파운데이션 모델로, GitHub Python 트렌딩에 막 진입했다.
- Hugging Face
NeoQuasar컬렉션에서 가중치 3종(mini·small·base)을 받아PyKRX·CCXT데이터를 그대로 forecast 가능하다. - 본 글은 백테스트·연구용 도구로서의 사용법을 다루며, 매매 신호나 투자 권유와는 무관하다.
1. Kronos가 풀려는 문제 — 금융 시계열 파운데이션 모델
지난 1년 사이 시계열 분야에도 파운데이션 모델 흐름이 본격화됐다. Google TimesFM, Amazon Chronos, Salesforce Moirai 등이 줄지어 공개됐고, 학습 분포 밖 시계열에도 제로샷 추론이 가능하다는 점이 핵심이다. 다만 이들은 모두 일반 시계열을 가정한다 — 단일 값(univariate) 또는 다변량이라도 변수 간 의미를 모른 채 다룬다.
금융 데이터는 결이 다르다. 한 캔들은 시가·고가·저가·종가·거래량이라는 5개 값이 묶여 있고, 이 5개는 서로 강한 제약(저가 ≤ 시가/종가 ≤ 고가)을 갖는다. 거래량은 가격 변동성과 비대칭 상관을 가진다. 일반 시계열 모델에 OHLCV를 5개 채널로 그냥 넣으면 이 구조가 깨진다.
Kronos는 이 점을 노렸다. 캔들 한 묶음을 BPE 유사 방식으로 이산 토큰으로 변환한 뒤, 자기회귀 Transformer로 다음 토큰(즉 다음 캔들)을 예측한다. 자연어 LLM이 단어를 다루듯, Kronos는 캔들을 다룬다.
2. 모델 아키텍처 — OHLCV 토큰화의 핵심
Kronos의 핵심은 두 모듈이다. 캔들을 토큰으로 바꾸는 Tokenizer와 토큰 시퀀스를 학습·생성하는 디코더 Transformer다.
💡 핵심 한 줄
연속값 OHLCV를 그대로 다루지 않고 이산 토큰으로 양자화해서 자연어 LLM과 같은 학습 구조를 그대로 끌어다 쓴다. 가격 단위·종목별 스케일 차이가 토큰 공간에서 정규화되는 효과가 있다.
가중치는 Hugging Face NeoQuasar 조직 아래에 묶여 있으며 mini·small·base 3단계로 공개됐다(2026-05 기준). 파라미터 규모는 mini ≈ 4M, small ≈ 25M, base ≈ 100M으로 발표돼 있다. 추론용으로는 mini나 small이 GPU 없이도 돌아가서 백테스트 반복에 적합하다. 학습 데이터는 글로벌 45개 거래소의 주식·암호화폐 OHLCV로, 페이퍼는 일반 시계열 파운데이션 모델 대비 가격 예측 RankIC 93% 향상을 보고한다.
- 입력 컨텍스트: 최대 512개 캔들(일봉 기준 약 2년)
- 출력: 다음 N개 캔들의 OHLCV 분포 — Top-k 샘플링으로 시나리오 여러 개 생성
- 지원 봉 단위: 일봉, 1시간봉, 15분봉(전처리에서 통일)
3. Kronos vs TimesFM — 금융 특화 vs 일반 시계열 비교
가장 자주 받는 질문이다. 둘 다 시계열 파운데이션 모델이지만 설계 목표와 적합 시나리오가 분리되어 있다.
| 항목 | Kronos | TimesFM |
|---|---|---|
| 설계 대상 | 금융 OHLCV 전용 | 범용 시계열(전력·수요·매출 등) |
| 입력 구조 | 5채널 캔들을 토큰 1개로 합성 | 단일/다변량 연속값 패치 |
| 변동성·거래량 | 동시 모델링 | 별도 시계열로 따로 다뤄야 함 |
| 학습 데이터 | 글로벌 45개 거래소 OHLCV | 100B+ 시점, 도메인 광범위 |
| 샘플링 | Top-k 다중 시나리오 | 확률 분위(quantile) 출력 |
| 적합 용도 | 캔들 패턴 백테스트·시나리오 생성 | 수요 예측·이상 탐지 |
요점은 단순하다. 매출·전력 같은 일반 시계열이라면 TimesFM이 더 안전한 출발점이고, 캔들 패턴·거래량 동조성 같은 금융 고유 구조를 보고 싶다면 Kronos가 답이다.
4. 설치와 가중치 다운로드
의존성은 PyTorch·Transformers·NumPy·Pandas 기본 스택이다. 금융 데이터 수집기로는 한국 주식에 PyKRX, 해외 주식에 yfinance, 암호화폐에 CCXT를 함께 깐다.
가중치는 Hugging Face에서 받는다. huggingface_hub의 snapshot_download로 한 번에 캐시한 뒤, 레포 안의 Kronos.from_pretrained로 로드한다.
처음 받을 때 small은 약 100MB, base는 400MB 안팎이다. 노트북에서 백테스트를 빠르게 돌리려면 mini 또는 small이 현실적이고, base는 단일 종목 시나리오 분석용으로 분리해 쓰는 편이 효율적이었다.
5. PyKRX로 코스피 일봉 입력 만들기
한국 주식 OHLCV는 PyKRX가 가장 간편하다. 별도 키 없이 KRX 일봉을 받을 수 있고 결측·휴장일도 거의 그대로 정리되어 나온다. 아래는 코스피200 ETF(069500) 일봉 1년치를 받아 Kronos 입력 포맷으로 정리하는 코드다.
주의할 부분이 두 개 있다. 첫째, PyKRX는 KRX 공식 데이터를 끌어오기 때문에 거래정지일·휴장일은 자동으로 빠진다. 즉 시간 축이 균일하지 않다는 점을 기억해야 한다. 둘째, 신주 상장·감자·액면분할은 수정 종가가 반영된 시리즈를 따로 받아야 한다 — stock.get_market_ohlcv(... , adjusted=True)를 명시한다.
6. forecast 호출과 결과 시각화
입력이 준비됐으면 KronosPredictor에 시퀀스를 넣어 다음 N개 캔들을 받는다. Top-k 샘플링이 기본이라 한 번 호출에서 여러 시나리오를 뽑을 수 있다.
샘플링 16개를 띄워보면 부채꼴 모양으로 미래 분포가 펼쳐진다. 평균만 보지 말고 분위(quantile)를 함께 보는 편이 안전하다. 코스피200 ETF 1년치를 넣고 돌렸을 때 직전 추세를 비교적 잘 따라가되, 외부 충격(FOMC 발표, 어닝 서프라이즈) 시점은 당연히 예측 범위 밖이었다. 가격 시계열만 보는 모델의 본질적 한계다.
📘 알아두기
Top-k·top-p·T(온도)는 LLM 생성과 같은 파라미터다. T를 0.6 정도로 낮추면 시나리오가 좁아지고, 1.2로 올리면 변동성 큰 시나리오가 다양하게 나온다. 백테스트 목적엔 0.8~1.0이 안정적이었다.
7. ⚠️ 한국 시장 적용 시 주의점 — 거래정지·휴장·환율
해외 모델을 KRX 데이터에 그대로 쓰는 순간 잘 보이지 않는 함정이 몇 개 튀어나온다. 백테스트가 그럴듯해 보여도 아래를 잡지 않으면 결과를 신뢰하기 어렵다.
- 휴장일·거래정지: PyKRX는 자동으로 결측을 빼지만 모델 입장에선 "어제와 오늘 사이 며칠이 비었는지"를 모른다.
x_timestamp를 함께 넘겨 시간 간격을 알려주거나, 영업일 보정 후 정렬해야 한다. - 분봉 데이터 라이선스: 1분·5분봉은 KRX 정보 데이터 상품(유료)이거나 증권사 API(키움·이베스트·한투 등) 인증이 필요하다. 무료 소스로 모은 분봉은 빈 캔들·중복이 흔하므로 검증 로직이 따로 필요하다.
- 환율·해외 동조성: 코스피는 야간 미국장·USD/KRW에 강하게 동조되지만 Kronos는 단일 종목 캔들만 본다. 거시 변수 영향이 큰 구간은 별도 피처로 보강하는 편이 낫다.
- 학습 분포 밖 종목: 소형주·신규 상장주는 학습 시계열 분포 밖일 가능성이 크다. 시가총액·상장 경과일 기준으로 적용 범위를 좁히는 게 현실적이다.
⚠️ 단점과 주의할 점
- 가격 시계열만 입력으로 받으므로 거시 충격(금리, 지정학, 어닝)은 구조적으로 반영되지 않는다.
- 분봉 단위 추론은 GPU가 사실상 필요하며 base 모델은 CPU에서 한 호출에 분 단위가 걸린다.
- 본 글의 코드·결과는 모델 사용법 시연이며 매매 의사결정 근거가 아니다. 실거래 적용은 슬리피지·체결비용·세금까지 포함한 별도 검증이 필요하다.
🚀 지금 바로 할 일
NeoQuasar/Kronos-small가중치를 받아 위 6번 코드를 그대로 코스피200 ETF 1년치에 적용해본다.- 가중치를 mini ↔ base로 바꿔가며 같은 입력에 대한 시나리오 분포가 어떻게 달라지는지 비교한다.
- CCXT로 BTC/USDT 1시간봉을 받아 동일 파이프라인을 돌려보고, 일봉과 분봉에서 모델 거동이 어떻게 다른지 기록한다.
✅ 핵심 정리
- Kronos는 OHLCV 캔들을 토큰으로 다뤄 가격·변동성·거래량을 함께 학습하는 금융 특화 시계열 모델이다.
- TimesFM이 범용 시계열을 노린다면 Kronos는 캔들 패턴·다중 시나리오 생성에 특화되어 있다.
- 한국 시장에 적용할 때는 휴장·거래정지·분봉 라이선스·거시 변수 한계를 반드시 고려한다.
참고 자료
- shiyu-coder/Kronos GitHub — https://github.com/shiyu-coder/Kronos
- Hugging Face NeoQuasar 컬렉션 — https://huggingface.co/NeoQuasar
- PyKRX — https://github.com/sharebook-kr/pykrx
- CCXT — https://github.com/ccxt/ccxt
- Google TimesFM (비교 대상) — https://github.com/google-research/timesfm
💬 의견
처음 Kronos에 넣어보고 싶은 종목·지수가 있다면 댓글에 남겨주시면 좋겠다. 일봉과 분봉 중 어느 쪽 시나리오 분포가 더 흥미로운지 비교해보는 글을 별도로 정리할 예정이다.
작성자: 퀀트 리서치·시계열 모델 백테스트 파이프라인을 직접 굴려본 ML 엔지니어. 본 글의 코드는 Kronos 레포 README와 NeoQuasar 카드에 공개된 인터페이스를 기준으로 정리했으며, 가중치 버전에 따라 클래스 이름·파라미터가 일부 달라질 수 있다. 실제 매매 의사결정과는 무관한 모델 사용법·연구 자료다.
'AI 개발 도구' 카테고리의 다른 글
| Microsoft MarkItDown 완벽 가이드: PDF 4개 도구 비교 표 포함 (2026) (0) | 2026.06.04 |
|---|---|
| Vercel agent-skills 사용법 정리 — v0·AI SDK·Claude Code에 적용해 Next.js 빌드 자동화하기 (2026) (0) | 2026.05.31 |
| MarkItDown 사용법: PDF·DOCX를 LLM용 마크다운으로 변환하는 실전 가이드 (2026) (0) | 2026.05.22 |
| Google ADK Samples 시작하기: 30분 안에 첫 AI 에이전트 띄우는 법 (2026) (0) | 2026.05.22 |
| Claude Code 공식 플러그인 설치와 자체 제작 가이드 (2026) (0) | 2026.05.20 |