처음으로 파이썬 소스코드를 올려봅니다. 첫번째로 미국ETF 전체종목 약 2500여 종목에 대하여 상장일로부터
현재까지의 주가정보를 추출하는 소스코드중 1번 거래량정보 추출 소스코드입니다.
모든 소스코드는 구글 코랩을 이용하여 테스트 하였습니다.
!pip install yfinance
from pandas_datareader import data as pdr
import pandas as pd
import yfinance as yfin
yfin.pdr_override()
자산배분을 하기위한 기초로 먼저 ETF기본데이터를 추출해 봅니다.
# pandas 설정
pd.options.display.float_format = '{:.4f}'.format
pd.set_option('display.max_columns', None)
start_day = datetime(1900,1,1) # 시작일
end_day = datetime(2021,12,21) # 종료일
조회를 하기위한 기본 환경 설정
# 아래 자료는 etfdb에서 조회하여 편집한 자료
etflist = pd.read_excel('drive/My Drive/ETF/ETF_211209.xlsx', skiprows=1, header=None, thousands=',')
엑셀로 만든 ETF목록 자료를 불러온다.
# dataframe을 300건씩 끊어 처리해야 속도가 안느려짐. sleep()없이 돌리면 계속 메모리 예러 발생
import time
import gc
df_volume = pd.DataFrame()
for idx,row in etflist.iterrows():
cnt = idx + 1
if (cnt % 10) == 0:
now = datetime.now()
print(cnt, row[0], now)
time.sleep(1)
if (cnt % 300) == 0:
mok = cnt // 300
print("save file..", mok)
df_volume.to_csv('drive/My Drive/ETF/ETFVolume_0' + str(mok) + '.csv')
del [[df_volume, tmp_volume]]
gc.collect()
df_volume = pd.DataFrame()
tmp_volume = pd.DataFrame()
ticker = row[0]
try:
tmp_volume[ticker] = pdr.get_data_yahoo(ticker, start_day, end_day)['Volume']
except:
print("skip:", cnt, row[0])
continue
else:
df_volume = pd.concat([df_volume, tmp_volume], axis=1)
df_volume.to_csv('drive/My Drive/ETF/ETFVolume_09.csv')
티커파일:
'퀀트(Quant)' 카테고리의 다른 글
6. ETF 기본데이터 추출(거래대금 상위 데이터) (0) | 2021.12.25 |
---|---|
5. ETF 기본데이터 추출(주가 및 거래량 합치기) (0) | 2021.12.25 |
4. ETF 기본데이터 추출(종가 데이터 합치기) (0) | 2021.12.25 |
3. ETF 기본데이터 추출(거래량 데이터 합치기) (0) | 2021.12.25 |
2. ETF 기본데이터 추출(주가) (0) | 2021.12.25 |