금융 투자를 하는데 있어 가장 기초가 되는 개념들이 있다
- Return(수익): 개별 자산의 수익률(R_i)을 각 자산의 가중치(x_i)를 곱하여 합하면 포트폴리오 수익률을 구할 수 있다.
- Risk(위험): 개별 자산 수익률 간의 분산-공분산 행렬을 통해 포트폴리오 분산을 구하고 Risk를 도출할 수 있다.
#데이터 불러오기
from pykrx import stock
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# ticker와 list로 코스피 기업목록 가져오기
def return_name(market):
Market = []
for ticker in market:
Value =stock.get_market_ticker_name(ticker)
Market.append([Value,ticker])
df = pd.DataFrame(Market,columns=['회사명','상장번호'])
return df
KOSPI = stock.get_market_ticker_list(market="KOSPI")
db1 = return_name(KOSPI)
# 시가총액 4대 기업 주식정보가져오기
stocks=['삼성전자','SK하이닉스','NAVER','LG화학']
df_res = pd.DataFrame()
for i in stocks:
bun=db1[db1['회사명']==i]
번호=bun.iloc[0,1]
df_res[i] = stock.get_market_ohlcv_by_date("20160104", "20210325", 번호)['종가']
pykrx모듈을 활용하여 주식 데이터를 끌어왔다. 먼저 회사명과 상장번호를 불러와 Market이라는 list에 저장해주는 return_name이라는 함수를 정의했다. 그리고 KOSPI의 ticker 리스트를 불러와 return_name함수를 통해 db1에 데이터 프레임 형태로 저장해 주었다.
그 다음 시가총액 4대 기업인 삼성전자, SK하이닉스, Naver, LG화학의 종가를 2016년 1월 4일부터 2021년 3월 25일 까지 데이터를 불러와 df_res에 저장 하였다.
# 포트폴리오 Return
daily_ret = df_res.pct_change() #pct_change() 일간 수익률 구하기
annual_ret = daily_ret.mean() * 252 #일간수익률 평균에 252를 곱해서 연간 수익률 구하기
# 포트폴리오 Risk
daily_cov = daily_ret.cov() #일간 리스크
annual_cov = daily_cov * 252 #연간 리스크
pct_change()은 전날 수익률 대비 오늘의 수익률을 구해주는 명령어 이다. daily_ret에 각 날의 수익률을 구하고 그 수익률들의 평균을 구해서 연간 개장 일수인 252를 곱해 연간 수익률을 구하였다.
다음으로 cov()명령어를 통해 4개의 주식 수익률(daily_ret)간의 분산-공분산 행렬을 구하고 또한 252를 곱하여 연간 분산-공분산 행렬을 구했다.
annual_ret
각 주식의 연간 수익률을 보여준다.
annual_cov # 각각의 분산표시 ~ 리스크의 제곱값 ~ variance-covariance matrix
대각선에 위치한 값들은 각 주식의 분산 값으로 삼성전자는 7.36%, SK하이닉스는 13.44%, Naver는 11.29%, LG화학은 14.81%라고 생각할 수 있다. 대각선 이외의 값들은 주식 간의 공분산을 나타낸다.
Reference
파이썬증권데이터분석 (김황후, 한빛미디어)
Github
github.com/dudungE/AI_Finance/blob/master/%EA%B8%88%EC%9C%B5%ED%88%AC%EC%9E%90_basic.ipynb
'datascience > Finanace' 카테고리의 다른 글
backtrader 오류(FileNotFoundError) 솔루션 (2) | 2022.03.11 |
---|---|
금융 투자 기본 개념(샤프비율, 효율적 투자선) (0) | 2021.05.08 |
미국 10년물 채권 상승이슈 (0) | 2021.04.21 |
yfinance를 활용한 코스피와 S&P500지수 비교 (0) | 2021.04.16 |
yfinance를 활용한 주식 데이터 불러오기 (0) | 2021.04.11 |