오픈 소스

histdata: 과거 데이터 다운로드 도구

histdata.com에서 과거 시장 데이터를 다운로드하고 M1 데이터를 압축 Apache Parquet로 변환하세요. 로컬 연구에 필요한 데이터를 34개 종목 중에서 선택할 수 있습니다.

Python 3.10+Apache ParquetzstdMIT 라이선스34개 종목
GitHub에서 보기
CLI 예제
$ pip install git+https://github.com/StratCraftsAI/histdata.git
$ histdata --pairs EURUSD GBPUSD --year-start 2020 --year-end 2025
출력 예시: 종목별 Parquet 파일 1개
output/EURUSD_M1.parquet
output/GBPUSD_M1.parquet

기능

로컬 시장 데이터셋을 구축하고 정량 분석 전에 데이터 범위를 확인하세요.

34개 종목

외환 통화쌍 23개, 원자재 2개(WTI 및 브렌트유), S&P 500·닛케이·DAX를 포함한 지수 9개를 지원합니다.

Apache Parquet 출력

zstd로 압축된 Parquet 파일을 pandas, Polars, DuckDB 및 기타 Arrow 호환 도구로 읽을 수 있습니다.

CLI 도구

pip로 설치하고 histdata 명령으로 종목과 연도를 선택하세요.

아카이브 선택

M1 다운로드는 요청한 날짜 범위에 맞는 연간 또는 월간 아카이브를 선택하고, 검증된 로컬 아카이브를 재사용합니다.

자료형이 지정된 스키마

OHLCV 열에는 timestamp[ms]와 float64를 사용합니다. 분석 전에 원본 데이터의 시간대와 선택한 CLI 작업 흐름을 확인하세요.

Python 의존성

requests, beautifulsoup4, pyarrow, filelock을 사용합니다. Python 3.10 이상이 필요합니다.

처리 과정

아카이브를 다운로드하고 M1 데이터를 파싱한 뒤 자료형이 지정된 Parquet 파일을 작성합니다.

1
토큰 추출
→
2
ZIP 다운로드
→
3
M1 CSV 파싱
→
4
Parquet 작성
histdata.com → ZIP (CSV) → list[OHLCVRow] → Parquet (zstd)

지원 종목

외환·원자재·글로벌 지수에 걸쳐 34개 종목을 지원합니다. 이용 가능한 과거 데이터 범위는 종목마다 다릅니다.

외환 23

주요 통화쌍

EURUSDGBPUSDUSDJPYUSDCHFUSDCADAUDUSDNZDUSD

교차 통화쌍

EURAUDEURCADEURCHFEURGBPEURNZDGBPAUDGBPCADGBPCHFGBPNZDAUDNZD

엔화 교차 통화쌍

AUDJPYCADJPYCHFJPYEURJPYGBPJPYNZDJPY

원자재 2

BCOUSDBrent Crude Oil
WTIUSDWTI Crude Oil

지수 9

AUXAUDASX 200
FRXEURCAC 40
GRXEURDAX 30
HKXHKDHang Seng
JPXJPYNikkei 225
NSXUSDNASDAQ 100
SPXUSDS&P 500
UDXUSDUS Dollar Index
UKXGBPFTSE 100

출력 스키마

자료형이 지정된 Parquet 열입니다. 데이터셋을 결합하기 전에 타임스탬프와 데이터 품질을 검증하세요.

열자료형설명
timestamptimestamp[ms]봉 시간. 일반 M1 다운로드는 UTC를 사용하고 --skip-download는 원본 EST를 유지합니다
openfloat64시가
highfloat64고가
lowfloat64저가
closefloat64종가
volumefloat64원본 거래량 필드
데이터 출처histdata.com — 세미콜론으로 구분된 일반 ASCII CSV. API 키가 필요하지 않습니다
원본 시간대EST (UTC-5, 서머타임 조정 없음)
형식Apache Parquet + zstd

빠른 시작

GitHub에서 설치하고 필요한 종목과 날짜 범위를 선택하세요.

설치
pip install git+https://github.com/StratCraftsAI/histdata.git
CLI 사용법
# Download EURUSD 2020-2025 and convert to Parquet
histdata --pairs EURUSD --year-start 2020 --year-end 2025

# Multiple pairs
histdata --pairs EURUSD GBPUSD USDJPY --year-start 2015 --year-end 2025

# All 34 instruments
histdata --pairs all --year-start 2020 --year-end 2025
pandas로 읽기
import pandas as pd

df = pd.read_parquet("output/EURUSD_M1.parquet")
print(df.head())
#              timestamp     open     high      low    close  volume
# 0 2023-01-02 17:00:00  1.07045  1.07048  1.07045  1.07048     0.0

CLI 옵션

옵션기본값설명
--pairs외환 (23)다운로드할 종목. "all"을 사용하면 34개 종목 전체를 선택합니다.
--year-start2020다운로드할 시작 연도.
--year-end2025다운로드할 마지막 연도.
--timeframeM1M1은 1분봉을 변환합니다. tick 옵션은 아카이브를 다운로드하지만 틱 파서나 Parquet 출력은 제공하지 않습니다.
--output-dir./outputParquet 출력 파일 디렉터리.
--zip-dir./downloads다운로드한 ZIP 아카이브 디렉터리.
--skip-downloadoff기존 M1 ZIP만 변환하며 원본 EST 타임스탬프를 유지합니다.
-v, --verboseoff디버그 로깅을 활성화합니다.

자주 묻는 질문

API 키가 필요한가요?

API 키는 필요하지 않습니다. 다운로드 전에 histdata.com에서 아카이브 토큰을 가져옵니다.

다운로드에 얼마나 걸리나요?

소요 시간은 이용 가능한 아카이브의 수와 크기, 네트워크, 로컬 처리에 따라 달라집니다. 다운로드 도구가 요청 빈도를 제한하며 완료 시간은 보장되지 않습니다.

출력을 퀀트 연구에 사용할 수 있나요?

M1 Parquet 파일은 pandas 또는 다른 Parquet 호환 도구로 읽을 수 있습니다. 연구 플랫폼에 가져오기 전에 데이터 범위, 품질, 열 매핑 및 시간대 요구 사항을 확인하세요.

타임스탬프는 어떤 시간대를 사용하나요?

원본 CSV는 서머타임 조정 없이 고정 EST(UTC-5)를 사용합니다. 일반 M1 다운로드는 UTC로 변환합니다. --skip-download 경로는 파싱한 원본 EST 값을 유지합니다. Parquet의 timestamp[ms]에는 시간대 메타데이터가 없습니다.

틱 데이터를 지원하나요?

--timeframe tick 옵션으로 틱 아카이브를 다운로드할 수 있지만, 틱 파싱과 Parquet 변환은 구현되지 않았습니다. 문서에 설명된 OHLCV 출력에는 M1을 사용하세요.

시작하기

MIT 라이선스의 오픈 소스 소프트웨어입니다. 사용 범위를 넓히기 전에 소스를 검토하고 작은 데이터셋으로 검증하세요.