인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

jacob.ha님의 프로필 이미지

작성한 질문수

파이썬 알고리즘 트레이딩 파트2: Interactive Brokers API를 활용한 실시간 알고리즘 트레이딩

sp500 데이타 가져올 때 문제가 있어요

해결된 질문

작성

·

102

1

안녕하세요. 추가 질문 드립니다.

 

sp500 데이타 가져오는 부분에서 오류가 나서 그런지 그래프가 안그려지네요.

아마 강의 당시와 지금(2024.2)과 환경 차이가 있어서 그런지 잘 모르겠습니다.

data_1d 값을 어떠한 예외 처리를 해야 하는지 문의 드립니다.

image.png

 

image.png

 

image.png

감사합니다.

답변 3

0

jacob.ha님의 프로필 이미지
jacob.ha
질문자

네, 이 문제 잘 해결했습니다.
그런데, 그 다음에서도 계속 오류들이 발생하네요. 전반적으로 최초 생성 시와 지금 실행 간의 차이가 좀 있는 듯 합니다.

아무튼, 한단계씩 진행하며 재미를 느낍니다. 감사합니다.

0

다니엘님의 프로필 이미지
다니엘
지식공유자

안녕하세요, jacob님!

답변이 늦어져서 죄송합니다. daily로 run되는 kaggle 노트북의 최근 log 기록을 보니 대략 6일 정도 전부터 문제가 발생된 걸 확인했습니다.

yfinance를 version 지정 없이 가장 최근 버전으로 설치하시면 문제가 해결됩니다.

또한 'Adj Close'가 아닌 'Close' 행을 선택해야 문제 없이 데이터가 필요한 형태로 load되는 것을 확인하였습니다.

원인을 생각해보면 yf api가 접근하는 raw data의 format이 변경이 된 것으로 보이고 기존 yfinance version인 0.2.36은 작동하지 않는 것으로 보입니다.

 

requirements.txt를 수정하시거나 기존 conda 환경에 yfinance를 최근 버전으로 재설치하시는 것을 추천드립니다. 관련해서 강의 자료를 수정하도록 하겠습니다.

 

감사합니다.

다니엘 드림

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

jacob.ha님, S&P 500 데이터를 가져올 때 발생하는 문제에 대해 불편을 드려 죄송합니다. 말씀하신 “Expecting value: line 1 column 1 (char 0)” 오류는 데이터 소스에서 데이터를 가져오지 못할 때 발생할 수 있으며, 여러 가지 원인으로 인해 발생할 수 있습니다. 다음 몇 가지 사항들을 확인해보세요:

  1. 라이브러리 업데이트: 사용하는 yfinance 라이브러리 버전을 확인하고 최신 버전으로 업데이트 해보세요. pip install --upgrade yfinance를 통해 업데이트할 수 있습니다.

  2. 티커 심볼 확인: 사용하는 티커 심볼이 유효한지 확인하세요. 잘못된 티커 심볼은 데이터를 불러오는 데 문제를 일으킬 수 있습니다.

  3. API 제한 사항: API 제공자의 서비스 제한(요청 수 제한 등)을 확인하세요. 많은 양의 데이터를 한 번에 요청할 경우 제한에 막힐 수 있습니다.

  4. 연결 문제: 네트워크 연결 상태가 정상인지 확인하세요. 네트워크 문제로 인해 데이터 요청이 실패할 수 있습니다.

  5. 로그 사용: 데이터 요청 시 발생하는 응답을 잘 로그에 기록하여, 구체적인 오류 메시지를 확보하고 분석하는 데 도움이 될 수 있습니다. try-except 블록을 활용하여 오류 발생 시 메시지를 출력해 보세요.

예외 처리 부분에서는 다음과 같은 구조로 시도할 수 있습니다:

import yfinance as yf

tickers = ["AAPL", "GOOG", "INVALID_TICKER"]  # 예제 티커 리스트

for ticker in tickers:
    try:
        data = yf.download(ticker, period="26mo")
        if data.empty:
            print(f"No data found for {ticker}")
        else:
            print(f"Data for {ticker} downloaded successfully")
    except Exception as e:
        print(f"Error downloading data for {ticker}: {e}")

이 코드 예시는 데이터 다운로드 시 발생할 수 있는 오류를 잡아내고, 접근하는 티커에 대한 정보를 출력하도록 합니다. 이와 같이 오류를 처리하고, 각각의 티커에 대해 문제를 개별적으로 진단해 보시기 바랍니다.

궁금하신 점이 더 있으시다면 언제든지 문의해 주세요. 감사합니다!

imageURLs:
- https://cdn.inflearn.com/public/files/posts/e08cf517-210d-4373-a962-b9bdae35503e/72e2da96-da3e-4016-b751-3a43b406a76f.png
- https://cdn.inflearn.com/public/files/posts/f00ac611-b762-4d8c-bed3-d93f0308033b/a58f05b6-42ba-47fe-8940-f1ccb9b1e80f.png
- https://cdn.inflearn.com/public/files/posts/dea3dda7-5616-4c3d-95a4-40d7e68eb5ed/b8becb5c-5b39-4d86-a6e3-26dc9d83ab10.png

jacob.ha님의 프로필 이미지

작성한 질문수

질문하기