-
-
Notifications
You must be signed in to change notification settings - Fork 44
과거 투자자별 수급 데이터 호출계약 문의 #65
안녕하세요. 오픈소스들 너무 잘 사용해보고 있습니다.
현재 dartlab.gather("flow", "005930"), getDefaultGather().flow("005930")를 테스트해보니 최근 5거래일 외국인/기관/개인 수급 데이터는 정상적으로 반환됩니다.
제가 확인하고 싶은 것은 과거 백테스트/연구용으로 아래 형태의 일자별 투자자별 수급 데이터를 가져올 수 있는 호출계약입니다.
목표 데이터:
- 종목: 005930, 000660
- 기간: 2021年01月01日 ~ 2025年12月31日
- 컬럼: date, foreignNet, institutionNet, individualNet, foreignHoldingRatio
- 목적: 매매 실행이 아니라 research/backtest용 feature 생성
- 필요 조건: 특정 entry date 이전의 가장 최근 수급값만 사용해서 lookahead 없이 병합하려고 합니다.
예상 호출 예시는 아래처럼 생각하고 있습니다.
dartlab.gather("flow", "005930", start="2021-01-01", end="2025-12-31") # 또는 dartlab.gather("flow_history", "005930", start="2021-01-01", end="2025-12-31") 수급값만 사용해서 lookahead 없이 병합하려고 합니다. 예상 호출 예시는 아래처럼 생각하고 있습니다. ```python dartlab.gather("flow", "005930", start="2021-01-01", end="2025-12-31") # 또는 dartlab.gather("flow_history", "005930", start="2021-01-01", end="2025-12-31") 현재 공개 호출에서는 start/end, period, limit 등을 넣어도 최근 5일만 반환되는 것으로 확인했습니다. Threads에서 "수급은 공식적으로는 하면 안 되고, DartLab에서 스크래핑할 수 있는 호출계약을 추가해드리겠다"고 말씀하신 내용을 보고 Discussion에 남깁니다. 가능하다면 과거 수급 scraping 호출계약 예시와 사용 가능한 기간/제한사항/권장 호출 방식/캐시 방식도 알려주시면 감사하겠습니다.
All reactions
-
👍 1
Replies: 1 comment
안녕하세요.
기존에 짧게만 받던 투자자별 수급은 NaverPay 증권 모바일 JSON 경로로 바꿔서 최근일자까지 자동으로 따라가게 반영했습니다.
사용자는 page, pageSize, bizdate 같은 내부 페이지네이션 값은 신경 안 써도 됩니다.
호출계약은 아래처럼 정리했습니다.
# 최근 5거래일 dartlab.gather("flow", "005930") # 최근 N거래일 dartlab.gather("flow", "005930", limit=30) # 특정 기간 dartlab.gather("flow", "005930", start="2021-01-01", end="2025-12-31") # 시작일부터 최신 거래일까지 dartlab.gather("flow", "005930", start="2021-01-01", sleepSec=1.0) # 가능한 전체 이력 dartlab.gather("flow", "005930", all=True, sleepSec=1.0)
추가로 프록시 옵션이랑 다종목 병렬 호출도 넣었습니다. 공개 계약은 dartlab.gather("flow", ...) 기준으로 보면 됩니다.
dartlab.gather( "flow", ["005930", "000660", "035420"], limit=30, parallel=3, proxy="http://user:pass@host:port", )
레지덴셜 프록시가 있으면 대량 호출 때 parallel을 조금 열 수 있습니다. 그래도 원본이 공개 데이터라 너무 세게 때리는 방식은 권장하지 않습니다. 프록시 없으면 긴 기간은 sleepSec=1.0 정도로 천천히 돌리는 쪽이 낫습니다.
KRX 쪽은 투자자 매매내역 API가 안정적으로 열려 있는 게 아니라서 지금은 공식 수집 계약으로 두지 않았습니다. 몇 가지 우회 스크래핑은 가능한데 자주 막힙니다. 안정화되면 별도 함수로 반영하겠습니다.
notebooks의 gather 예제에도 넣어뒀고, master에는 반영했습니다. PyPI 배포는 아직이고 주말 변경분에 묶어서 나갈 예정입니다.
참고로 gather 편의성도 같이 정리해서 미국 티커는 dartlab.gather("price", "AAPL")처럼 market을 굳이 안 넣어도 되게 맞춰뒀습니다.
All reactions
-
😄 1