Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Query_Premium_Index_Kline
- 프리미엄지수
- 자동매매
- place_active_order
- kline
- open_interest
- Query_Kline
- orderbook
- 머신러닝
- API
- 바이비트
- Public_Trading_Records
- 파이썬
- 파아썬
- 비트코인
- myposition
- bitcoin
- 코인
- 롱숏비율
- Query_Index_Price_Kline
- xgboost
- 데이터불러오기
- 백테스팅
- Bybit
- 모멘텀지표
- 변동성돌파
- Python
- latest_big_deal
- Machine Learning
- 호가창
Archives
- Today
- Total
돈벌고싶다
파이썬을 이용한 주식 포트폴리오 - 2. 비트코인과 코스피&나스닥 상관관계 분석 본문
728x90
반응형
설명
저번 글에 이어, 시세 데이터를 활용하여 비트코인과 코스피, 비트코인과 나스닥 상관관계를 분석하겠습니다.
코드
1. 라이브러리 호출
import yfinance as yf
import pandas as pd
import numpy as np
import datetime
import time
import ccxt
from sklearn.preprocessing import StandardScaler
2. 함수 정의
def get_binance_data(symbol, interval, end_date):
btc_ohlcv = binance.fetch_ohlcv(symbol, interval, limit=1000, params={'endTime':end_date})
df = pd.DataFrame(btc_ohlcv, columns=['datetime', 'open', 'high', 'low', 'close', 'volume'])
df['datetime'] = pd.to_datetime(df['datetime'], unit='ms')
df.set_index('datetime', inplace=True)
return df
def to_mstimestamp(string):
string = datetime.datetime.strptime(string, "%Y-%m-%d %H:%M:%S")
string = datetime.datetime.timestamp(string)
string = int(string) * 1000
return string
3. 데이터 불러오기
data_path = './data/'
binance = ccxt.binance()
bitcoin = get_binance_data('BTC/USDT', '1w', to_mstimestamp("2022-08-25 23:59:59"))
kospi = pd.read_csv(data_path + 'kospi_price.csv')
nasdaq = pd.read_csv(data_path + 'nasdaq_price.csv')
kosqi_price.csv 파일과 nasdaq_price.csv 파일은 저번 포스팅에서 생성하였기 때문에 생성 과정은 스킵하고 불러와 사용하도록 하겠습니다.
4. 데이터 가공
# 코스피 및 나스닥 데이터 인덱스 설정
kospi.set_index('Date', inplace=True)
nasdaq.set_index('Date', inplace=True)
# 비트코인 데이터 인덱스 설정
bitcoin.reset_index(drop=False, inplace=True)
bitcoin['datetime'] = bitcoin['datetime'].astype(str)
bitcoin.columns = ['Date', 'open', 'high', 'low', 'BTC', 'volume']
bitcoin.set_index('Date', inplace=True)
# 데이터 병합
df = pd.concat([kospi, nasdaq, bitcoin['BTC']], axis=1, join='outer')
df = df.sort_index(ascending=True)
df = df.iloc[4310:].copy()
df = df.interpolate()
# 데이터 정규화
scaler = StandardScaler()
scaler.fit(df)
scaled = scaler.transform(df)
df_scaled = pd.DataFrame(data=scaled, columns=df.columns)
df_scaled.index = df.index
5. 상관관계 계산
corr = df_scaled.corr(method = 'pearson')
withcoin = corr[corr['BTC']>0.9].index.tolist()
anticoin = corr[corr['BTC']<0.1].index.tolist()
6. 시각화
for symbol in withcoin:
df_scaled[['BTC', symbol]].plot(figsize=(12, 5))
for symbol in anticoin:
df_scaled[['BTC', symbol]].plot(figsize=(12, 5))
비트코인과 유사한 종목 5개, 안 유사한 종목 5개를 예시로 가져왔습니다. 다음 글에선 분석된 리스트를 바탕으로 기업에 대한 기본적 분석을 진행하여, 투자 종목을 선정해 보겠습니다.
728x90
반응형
'주식 포트폴리오' 카테고리의 다른 글
파이썬을 이용한 주식 포트폴리오 - 3. 안티 비트코인 종목 양적 분석 (1) | 2022.08.31 |
---|---|
파이썬을 이용한 주식 포트폴리오 - 1. 데이터 수집 (0) | 2022.08.31 |
Comments