반응형
3. DataReader (가격 데이터 조회)
주식, 지수, 환율, 암호화폐, 원자재 등 시계열 가격 데이터를 가져오는 가장 핵심적인 함수입니다.
1) 기본 사용 구조
| import FinanceDataReader as fdr # 기본 형태 df = fdr.DataReader('심볼', '시작일', '종료일') |
- 시작일과 종료일은 '2026-01-01' 또는 '20260101' 형태의 문자열로 지정합니다.
- 종료일을 생략하면 현재 날짜까지의 데이터를 가져옵니다.
- 결과물은 날짜(Date)가 인덱스(Index)인 Pandas DataFrame 형태로 반환됩니다.
2) 자산군별 세부 심볼 및 수집 데이터
① 국내 주식 (KOSPI, KOSDAQ, KONEX)
- 입력 방법: 거래소 종목코드 6자리 문자열을 입력합니다.
- 예시:
fdr.DataReader('005930', '2025') (삼성전자 2025년부터 현재까지)
fdr.DataReader('066570', '2026-01-01', '2026-06-30') (LG전자) - 반환 열: Open(시가), High(고가), Low(저가), Close(종가), Volume(거래량), Change(전일 대비 등락률)
예제 코드
# -*- coding: utf-8 -*-
import os
import sys
import io
from datetime import date
# Windows 콘솔 UTF-8 한글 깨짐 방지
if os.name == 'nt':
try:
os.system('chcp 65001 > nul')
except Exception:
pass
try:
if hasattr(sys.stdout, 'buffer'):
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace', line_buffering=True)
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace', line_buffering=True)
except Exception:
pass
try:
import FinanceDataReader as fdr
import pandas as pd
except ImportError as e:
print(f"필수 패키지가 누락되었습니다. 설치가 필요합니다: {e}")
sys.exit(1)
def main():
ticker = '225570'
start_date = '2026-04-01'
end_date = date.today().strftime('%Y-%m-%d') # 오늘 날짜 자동 적용
print(f"넥슨게임즈({ticker}) {start_date} ~ {end_date} 데이터 불러오는 중...")
df = fdr.DataReader(ticker, start_date, end_date)
if df.empty:
print("해당 기간의 데이터가 존재하지 않거나 가져오지 못했습니다.")
return
# Pandas 출력 옵션
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', 1000)
# 존재하는 컬럼만 선택 (Change 없는 경우 대비)
wanted_cols = ['Open', 'High', 'Low', 'Close', 'Volume', 'Change']
target_cols = [c for c in wanted_cols if c in df.columns]
missing = set(wanted_cols) - set(target_cols)
if missing:
print(f"※ 다음 컬럼은 데이터에 없어 제외됩니다: {missing}")
print("\n[조회 결과]")
print(df[target_cols])
if __name__ == '__main__':
main()
프로그램 실행 결과

2) 거시경제(Macro) 및 채권 금리 데이터
주식 시장의 방향성을 결정하는 가장 중요한 원동력인 글로벌 경제 지표들을 가져올 수 있습니다. 미국 연방준비제도(FRED)의 방대한 데이터를 기반으로 합니다.
- 국채 금리 (Yield):
- 미국 국채 금리 (연준의 통화정책 기준이 되는 2년물, 10년물, 30년물 등 일별 금리 추이).
- 한국 국채 금리 (1년, 3년, 5년, 10년물 등).
- 주요 경제 지표:
- 미국의 소비자물가지수(CPI), 실업률(Unemployment Rate), 국내총생산(GDP).
- 미국의 기준금리 추이(Fed Funds Rate).
4) 원자재 및 상품(Commodity) 가격
원자재 투자나 인플레이션 헤지 분석을 할 때 필수적인 데이터입니다.
- 에너지: 서부 텍사스산 원유(WTI) 가격, 브렌트유 가격, 천연가스 가격.
- 귀금속: 국제 금(Gold) 가격, 은(Silver) 가격.
5) 환율 및 달러 인덱스 (FX)
전 세계 통화 간의 상대적 가치를 나타내는 환율 데이터를 가져옵니다.
- 주요 환율: 원/달러(USD/KRW), 원/엔(JPY/KRW), 원/유로(EUR/KRW).
- 달러 인덱스 (US Dollar Index): 세계 주요 6개국 통화 대비 달러화의 가치를 지수화한 데이터로, 글로벌 자금의 흐름을 읽을 때 필수적입니다.
구글 sheet를 연결테스트 코드
import os
import sys
import io
import gspread
import pandas as pd
from google.oauth2.service_account import Credentials
# [수정] 윈도우 콘솔창 한글 깨짐 방지 설정
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')
# 실행 중인 스크립트의 실제 폴더 경로 추적
current_dir = os.path.dirname(os.path.abspath(__file__))
KEY_FILE = os.path.join(current_dir, 'credentials.json')
scopes = [
'https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive'
]
try:
credentials = Credentials.from_service_account_file(KEY_FILE, scopes=scopes)
gc = gspread.authorize(credentials)
# 시트 이름 지정
SHEET_NAME = "stock-01"
sh = gc.open(SHEET_NAME)
# TODO: 데이터가 있는 탭 번호 지정 (첫 번째 탭은 0, 두 번째 탭은 1)
worksheet = sh.get_worksheet(0)
# 시트의 전체 데이터를 가져와 변환
data = worksheet.get_all_records()
df = pd.DataFrame(data)
print("=== 구글 시트 데이터 로드 성공 ===")
# 데이터가 비어 있는지 확인
if df.empty:
print("시트는 연결되었으나 가져올 데이터가 없습니다.")
print("첫 번째 행에 '제목(헤더)'이 있고 그 아래에 데이터가 있는지 확인해 주세요.")
print("또는 데이터가 다른 탭에 있다면 코드를 수정해야 합니다.")
else:
print(df.head())
except FileNotFoundError:
print(f"오류: '{KEY_FILE}' 경로에서 파일을 찾을 수 없습니다.")
except gspread.exceptions.SpreadsheetNotFound:
print(f"오류: '{SHEET_NAME}' 이름의 스프레드시트를 찾을 수 없습니다.")
except Exception as e:
print(f"알 수 없는 오류가 발생했습니다: {e}")

반응형
'personal activity > stock' 카테고리의 다른 글
| 투자하면 안돼는 종목] 넥슨게임즈 (1) | 2026.06.12 |
|---|---|
| 주식 종목 데이터를 구글 Sheet로 가져오기 #1 (0) | 2026.06.07 |
| 넥슨 게임즈 - 박용현 경영 평가 (0) | 2026.06.05 |
| 넥슨 게임즈 분석 - 과거 (0) | 2026.06.05 |
| 폴리마켓(Polymarket)의 성장 (0) | 2026.05.30 |