본문 바로가기
info : 유용한 정보, 체험기

무료로 미국 주가 정보 데이터 구하는 법 (5분단위)

by 퇴근길에 삼남매가 알려드림 2022. 10. 24.

미국 주가 정보를 알고자 하는 이유는 미국 주식 시장에 투자할 때 참고하기 위해서 일 것이다. 

주식 시장의 수학적 지표를 이용해서 패턴을 찾고, 이를 통해서 시장에서 수익을 내고자 하는 노력은 많은 곳에서 이루어져 왔다. 

 

본 글에서 무료로 짧은 기간이나마 분 단위의 주가 정보를 구할 수 있는 곳을 소개하고 데이터 저장 방법을 소개한다.

모든 데이터는 공유가 불가능하다. 인터넷에 공개된 자료라도 직접 다운로드하여야 한다. 

또한 자료 신뢰도와 사이트 신뢰도에 본 필자는 책임이 없다는 점을 미리 밝힌다. 열심히 인터넷 찾아봐서 알아낸 정보를 공유하는 것뿐! 

언제가 위험 부담은 본인이 - take at your own risk.


미국 주가 정보

 

해외 주식 투자에 대한 장벽이 많이 낮아지면서 미국 주식에 투자하는 사람들이 많이 늘었다. 

미국 시장은 한국보다 자본 규모도 크고 30% 라는 주가 변동폭 제한이 없다. 

5분 단위가 아니라 매일의 주가 정보는 야후나 구글에서 쉽게 다운로드할 수 있다. 

미국 시장에서 소위 말하는 하루보다 짧은 단위인 intraday 데이터를 확보하려면 보통 돈을 내야 한다. 

각 증권 거래소마다 과거의 자세한 매매 정보들을 팔고 있으며, 그 외에도 다양한 회사들이 분, 틱 데이터를 팔고 있다. 

한국 주가 정보는 어떻게 구하는지 다음에 시간이 되면 알아보도록 하고, 이제 미국 주가 정보를 구하는 법을 알아보자.

 

폴란드 증권 거래사 사이트

Stooq :

폴란드의 증권 거래사는 1~3달 사이의 미국과 해외 시장의 주가 정보 (1분, 5분 단위) 시가(open), 고가(high), 저가(low), 종가(close) , 거래량 (volume)을 제공한다.  

하지만 데이터를 살펴보면 일부 시간만 제공하고 있는 듯하다. 

주소 : https://stooq.com/db/h/

 

폴란드 증권 거래사 사이트

위 데이터를 파이썬 판다스 라이브러리 python pandas를 이용해서 pickle 피클 파일로 저장하는 법은 다른 글에서 다루도록 한다.

 


 

싱가포르 기반 증권 정보 제공 사이트 

Twelve data:

https://twelvedata.com

Twelve data  등에서는 앞서 말한 대로 시장 정보를 유료로 제공한다. 하지만 제한된 정보를 무료로 구할 수 있는 플랜도 있다.

Twelve data 가 유일한 회사는 아니다. 알파카 같은 다른 회사도 비슷한 서비스를 제공한다.

다른 회사에 대한 정보는 다음에 다루도록 하겠다.

찾아보니 이곳은 싱가포르에 있는 회사이다. 증권 정보를 제공하는 것이 주요 수익 모델인 회사이다. 

 

아래 그림과 같이 Twelvedata의 무료 계정은, 'historical data'를 구할 수 있고, 그 외 다양한 정보를 구할 수 있다고 한다.

 

싱가포르 기반 증권 정보 제공 사이트

 

이때 여러 제한이 있는데, 예를 들어 다음과 같은 것들이 있다

  •  하루에 800 API 만 이용 가능하다. 즉, 정보를 불러올 때 하루에 800번 만 불러올 수 있다.
  • 한 번에 불러올 수 있는 정보의 양이 5000 행이다.
    • 5000행은 한 종목을 기준으로 5분 단위 주가 정보 ( 시가(open), 고가(high), 저가(low), 종가(close) , 거래량 (volume) )의 약 3 달 간의 정보를 한 번에 불러올 수 있다. 
  • 주가라면, 시장이 열리는 뉴욕 시간 기준 9:30~16:00의 정보만 얻을 수 있다. 즉 , pre-market trading 정보는 무료 버전에서 얻을 수 없는 듯하다.
  • 2022년 8월 14일 기준, 2020년 2월 25일의 정보부터만 얻을 수 있는 듯하다.  각 정보 종류마다 얻을 수 있는 기간이 다르다.

 

API를 이용해서 미국 주가 정보를 구하는 법 - 파이썬 코드 스텝 바이 스텝 

무료 계정으로 회원가입을 하고, Twelve data에서 마켓 데이터를 얻는 방법은 다음과 같다.

자세한 정보는 회사 홈페이지인 https://twelvedata.com/docs#getting-started 에 잘 설명이 되어 있다.

내가 원하는 intraday 5 min 데이터는 Core Data의 Time Series에서 어떤 정보를 어떻게 얻을 수 있는지 안내가 되어 있다.. 

아래 사진과 같이 time series라고 검색해도 관련 정보를 찾을 수 있다.  

마켓 데이터 외에도 다양한 정보를 (제한적으로) 얻을 수 있다. 물론 돈을 내면 더 얻을 수 있다.

 

API를 이용해서 미국 주가 정보를 구하는 법

이제 API로 데이터를 받아와야 하는데, 로컬 머신에서 구할 수도 있지만  구글 Colab을 이용해서 데이터를 얻을 수도 있다.

나는 따로 뭘 설치하기 싫어서 구글 코랩을 이용했다.

 

일단,  회원가입 후 로그인을 하면 "API keys"가 보인다. 여기서 Reveal을 누르면 API key를 복사할 수 있다(비밀번호라고 생각하면 된다)

 

 

API를 이용해서 미국 주가 정보를 구하는 법

 

이제 구글에서 colab notebook을 새로 생성한다.

requests와 pandas를 import 한다. 

  • api_key에 홈페이지에서 복사한 값을 붙여 넣어준다.
  • ticker는 원하는 종목코드를 넣어준다.
    • 위 보기에서는 SPX를 이용했다. ticker 는 야후 파이낸스 등을 찾아도 되고, twelvedata를 이용해도 된다.
  • interval 은 원하는 단위를 넣어준다. 나는 5분 단위를 원해서 '5 min'이라고 넣었다. 
    • 1 min, 5 min, 15 min, 30 min, 45 min, 1h, 2h, 4h, 8h, 1 day, 1 week, 1 month 가 가능하다. 
  • end_date는 내가 데이터를 얻을 '가장 나중의 날짜' 바로 다음날이다. 
    • 즉 아래에서 end_date를 2020-11-21으로 입력했더니, 내가 얻는 결괏값은 2020-11-20의 마지막 데이터부터, 5000열의 정보를 얻을 수 있었다.
    • 만약 end_date를 넣지 않으면 가장 최근의 데이터를 기준으로 데이터를 얻는다.
  • api_url 은 아래와 같다. 앞서 말한 변수들이 들어가 있다. outputsize = 5000 은 가장 많은 얻을 수 있는 5000의 데이터를 출력하라는 뜻이다. 더 적은 수를 원하면 5000을 바꾸어 주면 된다.
    • f'https://api.twelvedata.com/time_series?symbol={ticker}&end_date={end_date}&interval={interval}&outputsize=5000&apikey={api_key}'

API를 이용해서 미국 주가 정보를 구하는 법

위에서 데이터를 pandas data frame으로 보기 좋게! 표로 출력했다. 

만약, 위의 데이터를 "spx_5 min_twelvedata_1"라는 이름의 피클(. pkl) 파일로 저장하고 싶으면

df.to_pickle("./spx_5min_twelvedata_1.pkl") 

를 이용하면, 코랩 폴더에 저장된다.

 

즉, df.to_pickle("저장위치및파일이름.pkl"

API를 이용해서 미국 주가 정보를 구하는 법

 

코랩 폴더에 가면, 저장한 피클 파일이 보인다. 파일 이름 옆에 점 세 개를 누르면 파일을 다운로드할 수 있다.

 

사족: Twelvedata에서 미국 종목 코드 (ticker)를 회사 이름으로 찾는 방법

api_url = f'https://api.twelvedata.com/stocks'
data=requests.get(api_url).json()
df2=pd.DataFrame.from_dict(data['data'])

def us_stock (company_name,input_df=df2):
  # example: company_name = '= 'Apple'
  idx_list =[]
  for i in range (len(input_df)):
    name_val = input_df['name'][i]
  #print(name_val)
    if (company_name in name_val) and (input_df['country'][i]== 'United States'):
      idx_list.append(i)
    
  return input_df.iloc[idx_list][['symbol','name','country','exchange','type']]
output=us_stock('Apple')
output

Twelvedata에서 미국 종목 코드 (ticker)를 회사 이름으로 찾는 방법


 

만약, 여러 데이터를 따로 pickle 파일로 받았다면 아래와 같은 방법으로 하나의 데이터 프레임으로 합쳐주고, 저장해준다.

간단한 코드이지만, 파이썬 판다스 라이브러리 python pandas를 연습하기에 좋다.

위 코드에 대한 해석은 다른 글에서 다루도록 한다. 

 

 

마무리

이렇게 미국 증권 정보를 얻는 방법에 대해서 알아보았다.  아쉬운 점이 많긴 하다.

연구용이라면, 블룸버그 등에서 돈을 내고 사는 게 나을 것이고.. 개인 투자자의 경우에는 짧은 기간의 패턴이 필요한 경우에는 그래도 유용할 수도 있겠다. 

 

모든 포스트 내 사진과 글은 무단도용, 영리목적의 사용, 저작물의 변경 등을 허용하지 않습니다

 

퇴근길 저작권 표시

 

728x90
반응형

댓글


TOP