일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Query_Premium_Index_Kline
- myposition
- 데이터불러오기
- orderbook
- 변동성돌파
- 롱숏비율
- 바이비트
- 백테스팅
- Machine Learning
- 파이썬
- place_active_order
- kline
- API
- 파아썬
- 비트코인
- Public_Trading_Records
- 호가창
- Query_Kline
- latest_big_deal
- 자동매매
- open_interest
- 머신러닝
- Python
- Query_Index_Price_Kline
- xgboost
- Bybit
- bitcoin
- 모멘텀지표
- 프리미엄지수
- 코인
- Today
- Total
돈벌고싶다
파이썬을 이용한 주식 포트폴리오 - 1. 데이터 수집 본문
시작
해당 글은 다음 사람들에게 유용합니다.
- 코인 종목에 대해 기술적 분석을 하는 투자자
- 나만의 주식 포트폴리오 생성을 원하는 투자자
1번, 저는 비트코인에 대해 기술적 분석을 통해 알고리즘을 짜고 있습니다. 따라서 주식 포트폴리오를 생성한다면, 코인과는 시세 흐름이 상이한 종목을 찾는 것이 안정성 측면에서 뛰어납니다. 2번, 구글링을 하면 종목 선정은 예시로 해버리고 백테스팅을 통한 안정성 및 수익성에 대한 분석만을 진행하더군요. 저는 데이터를 통한 근거 있는 종목 선정을 하고 싶었습니다. 개인 취향에 따라 코드를 변경해가며 나만의 주식 포트폴리오를 생성하는 것에 도움이 될 듯 합니다.
저는 슬슬 포트폴리오를 구성할 단계가 오고 있습니다. 시스템 트레이딩을 하기 위한 알고리즘은 안정화되었으나, 코인 시장에는 내 투자와는 상관없이 꾸준한 리스크가 존재하고 있습니다. 또한 모든 자산을 하나의 종목에 넣는 것은 수익률은 물론, 안전성 측면에서 위험합니다. 특히 요즘들어 BTCUSDT로 거래하고 있는 개미 입장으로서 스테이블코인 "테더"의 붕괴 의혹은 치명적입니다.
https://m.kmib.co.kr/view.asp?arcid=0017103182
따라서 주식 포트폴리오를 만들 차례가 왔다고 판단하여, 다양한 고민을 해왔고, 저의 고민들을 공유해볼까 합니다. 일단은 데이터를 수집하는 것에서부터 시작하도록 하겠습니다.
코드
1. 라이브러리 호출
import yfinance as yf
import pandas as pd
import numpy as np
import time
2. 함수 정의
def get_data(symbol, interval, start_date, end_date):
ticker = yf.Ticker(symbol)
df = ticker.history(
interval=interval,
start=start_date,
end=end_date,
actions=True,
auto_adjust=True
)
return df
3. 필요 데이터
보시는 분들의 편의도 위할 겸, 제가 이미 수집한 파일을 공유하겠습니다. 해당 데이터는 각각 코스피 상위 100 종목, 나스닥 상위 100 종목에 대한 데이터를 담고 있습니다.
각 데이터의 출처는 다음과 같습니다.
http://data.krx.co.kr/contents/MDC/MAIN/main/index.cmd
https://kr.investing.com/indices/nq-100-components
해당 데이터를 코드가 저장되어있는 파일 안에 "data" 폴더를 생성해주시고, 그 안에 저장해주시기 바랍니다.
4. 시세 데이터 수집
# 변수 설정
interval = '1wk'
start_date = '1975-06-11'
end_date = '2022-08-29'
data_path = './data/'
# 코스피100, 나스닥100 종목 코드 불러오기
kospi = pd.read_csv(data_path + 'KOSPI100.csv', encoding='cp949')
nasdaq = pd.read_csv(data_path + 'NASDAQ100.csv')
# 코스피 종목 코드 수정
kospi['SYMBOL'] = kospi.apply(lambda x: x['SYMBOL'].replace('"', ''), axis=1)
# 코스피100 데이터 수집
data = [[] for n in range(len(kospi))]
for symbol, n in zip(kospi['SYMBOL'], range(len(kospi))):
data[n] = get_data(f'{symbol}.KS', interval, start_date, end_date)
time.sleep(0.2)
df = pd.concat([d['Close'] for d in data], axis=1)
df.columns = kospi['SYMBOL'].tolist()
df.to_csv(data_path + "kospi_price.csv")
# 나스닥100 데이터 수집
data = [[] for n in range(len(nasdaq))]
for symbol, n in zip(nasdaq['SYMBOL'], range(len(nasdaq))):
data[n] = get_data(symbol, interval, start_date, end_date)
time.sleep(0.2)
df = pd.concat([d['Close'] for d in data], axis=1)
df.columns = nasdaq['SYMBOL'].tolist()
df.to_csv(data_path + "nasdaq_price.csv")
모두 진행하고 나면 코스피 100 기업에 대한 시세와 나스닥 100 기업에 대한 시세에 대한 주봉 데이터를 얻을 수 있습니다. 다음 글에서는 데이터를 이용하여 상관관계를 분석하고 시각화해보겠습니다.
'주식 포트폴리오' 카테고리의 다른 글
파이썬을 이용한 주식 포트폴리오 - 3. 안티 비트코인 종목 양적 분석 (1) | 2022.08.31 |
---|---|
파이썬을 이용한 주식 포트폴리오 - 2. 비트코인과 코스피&나스닥 상관관계 분석 (1) | 2022.08.31 |