Yahoo Finance API 와 Airflow를 이용하여 주가 데이터를 가져 옵니다.
2024-02-01
기준 총 1562개 종목을 가져오고 있으며, 지수에 속한 종목을 가져 옵니다.- 수집 목록 : S&P500, Nasdaq100, Dow30, S&P400, S&P600, etc.
- Russell 2000 은 종목 정보를 일관적으로 가져오기 어려운 부분이 있어서 S&P400, S&P600 으로 대체
- Analytics Engineering 역량을 필요 해서 작업 하고 있습니다.
기본적으로 Docker 기반으로 설치를 하고 운영 합니다.
Airflow docker 와 생성한 디렉터리 내 항목들과 volume mount
mkdir -p ./dags ./logs ./plugins ./config ./data
echo -e "AIRFLOW_UID=$(id -u)" > .env
상세 내용
- data 디렉터리 하위에는 각 dag 별로 처리 할 때 생성하는 파일을 잠시 보관하기 위한 디렉터리가 있습니다. -> 제거 예정
- 각종 변수는 Airflow Variable 을 이용하고 관리 하므로 조회하는 리포에는 존재하지 않습니다.
- S3에 데이터를 저장하고 Athena + Glue 를 이용하여 데이터를 관리 및 조회 합니다.
- BI 는 metabase 와 Grafana 를 사용
- exchange_calendars 는 해외주식 거래일의 휴무 여부를 판별하기 위해 사용
- backfill 은 volume mount 를 하지 않습니다.
로컬 환경에서 작업을 할 때는 경로 설정을 해줘야 합니다. Airflow 에서는 다양한 방법을 안내 하고 있는데 아래의 방법으로 처리
# .env
WORKSPACE_FOLDER='your airflow WORKSPACE_FOLDER'
PYTHONPATH=${WORKSPACE_FOLDER}/plugins
** 2024-02-01
이후 한국투자증권 API 는 사용하지 않습니다. 버그가 많이 있으며, 마스터 파일 관리가 되고 있지 않습니다. 현재는 미국 주식 데이터만 조회 하고 있습니다.
- us_market_stock_daily_price_yf.py : 일별로 데이터를 가져와 저장합니다. 1993-01-01을 기준(SPY 상장 시즌)으로 합니다.
- us_market_stock_daily_price_yf_ticker.py : 티커 기준으로 데이터를 가져와서 저장 합니다. 각 종목 별로 가져올 수 있는 최대 기간 데이터를 가져옵니다.
- us_market_stock_mdd.py : 각 종목별로 MDD 를 구합니다. pyfolio 를 이용합니다.
기본 목록
- airflow dags 를 비롯한 전체적인 코드 구조 변경
- S3 Partition 구조 변경 - 코드 변경
- config 와 market open status 분리
- Slack notification 개선
- 에러 처리 코드 및 retry 기능 추가(airflow 기능)
- 파일 관리 시스템 개선 - 진행 중
- 코드 리팩토링 - Airflow **kwargs 분리, Pipeline 간소화
- S3 버킷 이름 Airflow Variable 로 관리
- us market 종목 중 지수 내 속하지 않은 항목, ETF 에 대해 파일로 관리 - 일부 작업 중
- 각 종목별 배당 내역 : Annual Total Return
- Quant : 상대강도지수 구현
- Airflow 코드 리뷰 및 구조 변경
- Athena 쿼리 수정
- Airflow 코드 일관성 유지 - 진행 중
- API 조회 후 파일 처리 방법 수정
추가 목록
- Edgar API : https://www.sec.gov/edgar/sec-api-documentation
- 10-K, 10-Q, IR report, earning call with Gen AI - 학습 중
BI
- Metabase BI 작업
- Grafana BI 작업 - 진행 중
Dev
- AWS Cloud
- Devops - CI/CD
Investing
- Research
Sample Image - Metabase BI
Sample Image 1 | Sample Image 2 |
---|---|
Market Index - Sample Image | AAPL - Sample Image |
---|---|