IT,참고자료

파이썬으로 주가 데이터 엑셀로 내려받기

unius 2022. 11. 18. 10:44
728x90
반응형

최근 자산배분을 공부하면서 파이썬으로 과거 데이터를 활용하여 여러가지 백테스트를 해보며 과거의 실제 성과를 시뮬레이션 해보는 재미에 빠져서 지내고 있다. 시작한지 얼마되지 않아서 아직은 시행착오를 많이 겪고 있지만 하나씩 차근차근 진전이 되고 있는 중이다.

 

나는 파이썬을 사용하여 과거의 주가 데이터를 가져오기 위해서 주로 야후 파이낸스에서 제공하는 데이터를 사용하고 있고 구글의 코랩 환경에서 코딩을 하고 있다. 회사에서 사용할 때 불편한 점은 사내의 사설망 환경 때문인지 yfinance 패키지를 사용하여 데이터를 다운로드하려고 하면 SSLCertVerificationError 오류로 실패하고 만다. 우회할 수 있는 방법을 여러가지 시도해 봤지만 실패를 했다. 

 

파이썬 SSLCertVerificationError, CERTIFICATE_VERIFY_FAIL

그동안 자산배분에 대해 학습을 시작하고 파이썬으로 실습을 하면서 가장 불편했던 점은 파이썬의 yfinance 나 finance-datareader 같은 패키지를 사용해서 주가 데이터를 읽어올 수가 없었다. 구글링

myportfolio.tistory.com

 

결국 내가 사용하는 방법은 코랩환경은 태블릿에서도 사용할 수 있으므로 주가데이터를 테블릿에서 받아와서 엑셀로 저장하고 이것을 사내PC로 보낸다. 그리고 사내 PC에서는 아나콘다 개발환경에서 엑셀파일을 읽어서 처리하는 방식으로 백테스트를 하고 있다. 그래서 오늘은 간단하게 야후 파이낸스에서 주가 데이터를 받아서 엑셀로 저장하고 이것을 자동으로 로컬PC(태블릿)으로 내려받는 파이썬 코드를 올려본다.

 

import openpyxl
import yfinance as yf
from google.colab import files

tickers = ['SPY','EFA','BIL','AGG']
data = yf.download(tickers, start='1990-01-01', actions=False)
asset_price = data.drop(['Open', 'High', 'Low', 'Volume', 'Close'], inplace=False, axis=1)
print('len \n', len(tickers))
if len(tickers) > 1 :
  asset_price = asset_price.droplevel(0, axis=1)
else :
  asset_price = asset_price.rename(columns={'Adj Close' : tickers[0]})
print('asset_price \n', asset_price)

for i in range(0, len(tickers)) :
    name = tickers[i]+'.csv'
    asset_price[tickers[i]].to_csv(name, encoding='utf-8-sig', index=True, header=True)
    print('[ %s ] \n' % (name), asset_price[tickers[i]])
    files.download(name)

위 코드는 티커로 지정한 종목들을 야후 파이낸스에서 특정 일자 이후의 고거 데이터를 가져와서 코랩 원격머신에 각 종목별로 하나씩 엑셀 파일로 저장하고 로컬PC로 내려받는 코드이다.

728x90
반응형