본문 바로가기

퀀트(Quant)

5. ETF 기본데이터 추출(주가 및 거래량 합치기)

앞에서 생성한 주가정보 및 거래량정보를 합쳐서 분석하기 위한 자료로 사용합니다.

모든 소스코드는 구글 코랩을 이용하여 테스트 하였습니다.

 

1. import 및 환경설정

import pandas as pd
# pandas 설정 및 메타데이터 세팅 
pd.options.display.float_format = '{:.2f}'.format
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', 30)

display.max_rows  옵션을 이용하여 최대 rows를 30으로 설정하였습니다. (보기에 편하기 위해)

 

2. 파일 불러오기

Closedf  = pd.read_csv('drive/My Drive/ETF/ETFCloseALL_211221.csv')
Volumedf = pd.read_csv('drive/My Drive/ETF/ETFVolumeALL_211221.csv')
Closedf  = Closedf.set_index('Date')
Volumedf = Volumedf.set_index('Date')

앞에서 생성판 종가정보파일 및 거래량파일을 분석을 위해 불러옵니다.

 

3. 주가 및 거래량정보 합치기

import time
import math


ticlist = []
cnt = 0
for ticker in Closedf.columns:
    cnt = cnt + 1
    tic_close  = Closedf[ticker]
    tic_volume = Volumedf[ticker]
    ok  = tic_close.notna()
    tic_close = tic_close[ok]
    ok  = tic_volume.notna()
    tic_volume = tic_volume[ok]
    print(cnt, ticker, tic_close.index[0],  tic_close[0],  tic_volume[0], \
                       tic_close.index[-1], tic_close[-1], tic_volume[-1])
    ticlist.append([ticker, tic_close.index[0],  tic_close[0],  tic_volume[0], \
                            tic_close.index[-1], tic_close[-1], tic_volume[-1]])

주가정보와 거래량정보를 하나로 합치면서 각 티커의 날짜별 data가 없는 경우는 제거

 

4. 마무리

col_name = ['ticker', 'first_day', 'first_close', 'first_volume', 'last_day', 'last_close', 'last_volume']
ticdf = pd.DataFrame(ticlist, columns=col_name)
ticdf.to_csv('drive/My Drive/ETF/ETFSummary_211221.csv')

이상으로 미국ETF 전체 상장종목에 대한 종가데이터 정보를 모았습니다.

추출한 정보는 티커명, 시작일, 시작시점 종가, 시작시점 거래량, 마지막일, 마지막일 종가, 마지막일 거래량 정보입니다. 

 

6. Data예시

일부데이터 추출내용
ETFSummary_211221.csv
0.20MB