728x90
반응형
최근 자산배분을 공부하면서 파이썬으로 과거 데이터를 활용하여 여러가지 백테스트를 해보며 과거의 실제 성과를 시뮬레이션 해보는 재미에 빠져서 지내고 있다. 시작한지 얼마되지 않아서 아직은 시행착오를 많이 겪고 있지만 하나씩 차근차근 진전이 되고 있는 중이다.
나는 파이썬을 사용하여 과거의 주가 데이터를 가져오기 위해서 주로 야후 파이낸스에서 제공하는 데이터를 사용하고 있고 구글의 코랩 환경에서 코딩을 하고 있다. 회사에서 사용할 때 불편한 점은 사내의 사설망 환경 때문인지 yfinance 패키지를 사용하여 데이터를 다운로드하려고 하면 SSLCertVerificationError 오류로 실패하고 만다. 우회할 수 있는 방법을 여러가지 시도해 봤지만 실패를 했다.
결국 내가 사용하는 방법은 코랩환경은 태블릿에서도 사용할 수 있으므로 주가데이터를 테블릿에서 받아와서 엑셀로 저장하고 이것을 사내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
반응형
'IT,참고자료' 카테고리의 다른 글
Window환경에서 작업 스케줄러 활용한 작업 예약 (12) | 2023.01.02 |
---|---|
앱시트(Appsheet)를 활용한 나만의 자산관리 어플 (11) | 2022.12.29 |
구글 스프레드 시트를 활용한 나만의 자산관리 (18) | 2022.12.23 |
파이썬 SSLCertVerificationError, CERTIFICATE_VERIFY_FAIL (2) | 2022.12.23 |
DIY 성과분석 패키지 (0) | 2022.12.12 |