yahoo finantial의 금융자료 호출
패키지 yfinance를 사용하여 야후금융에서 제공하는 다양한 자료를 호출할 수 있습니다. 다음은 이 패키지의 Ticker()
함수를 적용하여 필라델피아 반도체 지수인 ^sox의 정보를 입수합니다.
import numpy as np import pandas as pd import yfinance as yf
sox=yf.Ticker("^sox") sox_info=sox.info print(sox_info)
{'maxAge': 86400, 'priceHint': 2, 'previousClose': 4742.42, 'open': 4698.784, 'dayLow': 4507.676, 'dayHigh': 4701.0874, 'regularMarketPreviousClose': 4742.42, 'regularMarketOpen': 4698.784, 'regularMarketDayLow': 4507.676, 'regularMarketDayHigh': 4701.0874, 'fiftyTwoWeekLow': 3151.0, 'fiftyTwoWeekHigh': 5931.83, 'fiftyDayAverage': 5177.1367, 'twoHundredDayAverage': 4747.4033, 'currency': 'USD', 'exchange': 'NIM', 'quoteType': 'INDEX', 'symbol': '^SOX', 'underlyingSymbol': '^SOX', 'shortName': 'PHLX Semiconductor', 'longName': 'PHLX Semiconductor', 'firstTradeDateEpochUtc': 768058200, 'timeZoneFullName': 'America/New_York', 'timeZoneShortName': 'EDT', 'uuid': '4908d90d-2df7-3605-98f3-b3d085cf48db', 'messageBoardId': 'finmb_INDEXSOX', 'gmtOffSetMilliseconds': -14400000, 'trailingPegRatio': None}
다음은 download()
함수를 사용하여 지정한 기간내에 dollor index의 자료를 호출합니다.
st=pd.Timestamp(2024,9, 1) et=pd.Timestamp(2024, 9, 8) dollorData=yf.download('DX-Y.NYB', start=st, end=et) dollorData
Price | Adj Close | Close | High | Low | Open | Volume |
---|---|---|---|---|---|---|
Ticker | DX-Y.NYB | DX-Y.NYB | DX-Y.NYB | DX-Y.NYB | DX-Y.NYB | DX-Y.NYB |
Date | ||||||
2024-09-03 00:00:00+00:00 | 101.830002 | 101.830002 | 101.919998 | 101.559998 | 101.660004 | 0 |
2024-09-04 00:00:00+00:00 | 101.360001 | 101.360001 | 101.779999 | 101.239998 | 101.690002 | 0 |
2024-09-05 00:00:00+00:00 | 101.110001 | 101.110001 | 101.370003 | 100.959999 | 101.279999 | 0 |
2024-09-06 00:00:00+00:00 | 101.180000 | 101.180000 | 101.400002 | 100.580002 | 101.059998 | 0 |
호출한 자료의 행인덱스는 밀리초까지 표현되며 열이름은 이중으로 표기되어 다소 복잡합니다. 이러한 형식을 "년-월-일"의 행인덱스, 각 열의 이름만을 표기하도로 변경합니다.
행 인덱스의 자료형은 pd.DatetimeIndex 형이며 속성 .date에 의해 년, 월, 일만을 추출할 수 있습니다. 또한 여러 행으로 이루어진 열이름은 속성 levels
로 호출하며 일부를 추출할 수 있습니다.
dollorData.index[: 3]
DatetimeIndex(['2024-09-03 00:00:00+00:00', '2024-09-04 00:00:00+00:00', '2024-09-05 00:00:00+00:00'], dtype='datetime64[ns, UTC]', name='Date', freq=None)
dollorData.index[: 3].date
array([datetime.date(2024, 9, 3), datetime.date(2024, 9, 4), datetime.date(2024, 9, 5)], dtype=object)
dollorData.columns.levels
FrozenList([['Adj Close', 'Close', 'High', 'Low', 'Open', 'Volume'], ['DX-Y.NYB']])
이 속성을 적용하여 호출한 자료의 형식을 변경할 수 있습니다.
dollorData.columns=dollorData.columns.levels[0] dollorData.index=pd.DatetimeIndex(dollorData.index.date) dollorData
Price | Adj Close | Close | High | Low | Open | Volume |
---|---|---|---|---|---|---|
2024-09-03 | 101.830002 | 101.830002 | 101.919998 | 101.559998 | 101.660004 | 0 |
2024-09-04 | 101.360001 | 101.360001 | 101.779999 | 101.239998 | 101.690002 | 0 |
2024-09-05 | 101.110001 | 101.110001 | 101.370003 | 100.959999 | 101.279999 | 0 |
2024-09-06 | 101.180000 | 101.180000 | 101.400002 | 100.580002 | 101.059998 | 0 |
야후 금융의 자료는 고유한 코드를 사용합니다. 예를 들어 코스피내의 주가 자료의 경우 코드.KS
와 같이 .KS가 첨가됩니다.
sam=yf.download('005930.KS', start=st, end=et) sam
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2024-09-02 | 74500.0 | 74700.0 | 73500.0 | 74400.0 | 74400.0 | 12641376 |
2024-09-03 | 74100.0 | 74300.0 | 72500.0 | 72500.0 | 72500.0 | 16314599 |
2024-09-04 | 69800.0 | 71100.0 | 69800.0 | 70000.0 | 70000.0 | 27366563 |
2024-09-05 | 70100.0 | 71200.0 | 69000.0 | 69000.0 | 69000.0 | 25686769 |
2024-09-06 | 69100.0 | 69700.0 | 68000.0 | 68900.0 | 68900.0 | 19022299 |
다음은 다우지수, 나스닥지수, S&P, 필라델피아반도체지수(^sox), VIX 지수, 달러인덱스(DX-Y.NYB) 등의 자료에서 종가(Close)만으로 구성된 자료를 생성합니다.
st=pd.Timestamp(2010,1, 1) et=pd.Timestamp(2024, 9,8) nme1={"dj":"^DJI", "nasd":"^IXIC", "sp":"^SPX", "sox":"^sox", "vix":"^VIX", "Dindx":'DX-Y.NYB'} Stock={} for i,j in nme1.items(): Stock[i]=yf.download(j, start=st, end=et)['Close']
[*********************100%%**********************] 1 of 1 completed [*********************100%%**********************] 1 of 1 completed [*********************100%%**********************] 1 of 1 completed [*********************100%%**********************] 1 of 1 completed [*********************100%%**********************] 1 of 1 completed [*********************100%%**********************] 1 of 1 completed
pd.DataFrame.from_dict(Stock).tail(3)
dj | nasd | sp | sox | vix | Dindx | |
---|---|---|---|---|---|---|
Date | ||||||
2024-09-04 | 40974.968750 | 17084.300781 | 5520.069824 | 4770.850098 | 21.320000 | 101.360001 |
2024-09-05 | 40755.750000 | 17127.660156 | 5503.410156 | 4742.419922 | 19.900000 | 101.110001 |
2024-09-06 | 40345.410156 | 16690.830078 | 5408.419922 | 4528.220215 | 22.379999 | 101.180000 |
다음은 국내 여러 주가자료를 호출합니다.
nme={'코스피':'^KS11','코스탁':"^KQ11", '삼성전자':'005930.KS','하이닉스':"000660.KS"} stock={} for i, j in nme.items(): d=yf.download(j, start=st, end=et) stock[i]=d.drop(labels='Adj Close', axis=1)
[*********************100%%**********************] 1 of 1 completed [*********************100%%**********************] 1 of 1 completed [*********************100%%**********************] 1 of 1 completed [*********************100%%**********************] 1 of 1 completed
stock['코스피'].tail(2)
Open | High | Low | Close | Volume | |
---|---|---|---|---|---|
Date | |||||
2024-09-05 | 2598.360107 | 2615.800049 | 2560.649902 | 2575.500000 | 379000 |
2024-09-06 | 2576.659912 | 2576.939941 | 2529.310059 | 2544.280029 | 374800 |
댓글
댓글 쓰기