FinanceDataReader를 이용해서 주가를 확인하고 샤프지수를 계산해보겠습니다.
FinanceDataReader의 설치 및 기본 사용법이 필요하신 분은 1번 참조 부탁드립니다.
1. FinanceDataReader 설치 및 주가정보 확인(Skip가능)
2. 주가 수집
3. 샤프 비율 계산
4. 2022년 코스피의 샤프 지수 상위 Top 20
1. FinanceDataReader 설치(Skip가능)
2. 주가 수집
필요 라이브러리 import 하고 거래소 전체 회사 리스트를 저장합니다.
import FinanceDataReader as fdr
from datetime import datetime, timedelta
df_list=fdr.StockListing('KRX')
삼성전자의 주가를 2010-01-01부터 불러오겠습니다.
name='삼성전자'
df_filter=df_list.loc[df_list['Name']==name]
code=df_filter['Code'].values[0]
startdate='2010-01-01'
enddate=(datetime.now() + timedelta(days=-1)).strftime('%Y-%m-%d')
samsung=fdr.DataReader(code,startdate,enddate)
samsung
삼성전자의 일별 누적 수익률을 계산하겠습니다.
samsung['누적수익률']=((samsung['Change'] + 1).cumprod()-1)
samsung
삼성전자와 마찬가지로 KOSPI 정보를 2010-01-01부터 불러오고 수익률을 계산하겠습니다.
kospi=fdr.DataReader('KS11',startdate,enddate)
kospi['Change']=kospi['Close'].pct_change()
kospi['누적수익률']=((kospi['Change'] + 1).cumprod()-1)
kospi
3. 샤프 비율 계산
샤프 비율은 아래와 같이 계산됩니다.(출처 : fnwiki http://fnwiki.org/sharpe_ratio/)
Rp는 오늘 예제에서는 삼성전자의 주가를 사용하고, Rf는 코스피 지수를 기준으로 계산해보겠습니다.
계산을 위해서는 Rp의 표준편차가 필요합니다.
samstd=samsung['Change'].std()
삼성전자와 코스피의 수익률을 각각 저장합니다.
sam=samsung.loc[samsung.index=='2022-12-01','누적수익률'].values[0]
kos=kospi.loc[kospi.index=='2022-12-01','누적수익률'].values[0]
마지막으로 샤프 비율을 계산하겠습니다.
(sam/100-kos/100)/samstd
1.45라는 수치가 나왔네요
4. 2022년 코스피의 샤프 지수 상위 Top 20
코스피 전체 회사 리스트를 저장합니다.
kospi_list=df_list.loc[df_list['Market']=='KOSPI']
2022-01-01~2022-12-02의 코스피 지수의 누적 수익률을 구하고
2022-12-01의 데이터를 kos에 저장합니다.
연초 대비 -17%가 계산이 됩니다.
startdate='2022-01-01'
enddate='2022-12-02'
kospi=fdr.DataReader('KS11',startdate,enddate)
kospi['Change']=kospi['Close'].pct_change()
kospi['누적수익률']=((kospi['Change'] + 1).cumprod()-1)
kos=kospi.loc[kospi.index=='2022-12-01','누적수익률'].values[0]
kos
그다음으로는 코스피의 각 회사별로 2022년의 주가를 불러와서
누적 수익률 및 표준편차를 구합니다.
결과를 result_all에 저장합니다.
import pandas as pd
df=pd.DataFrame(result_all)
df
상위 20개 회사만 구해보겠습니다.
top20=df.loc[df['누적수익률']!=0].sort_values('샤프지수',ascending=False).iloc[:20,:]
top20
삼천리 및 대성홀딩스 금양 등의 회사의 소르티노 지수가 높은 것을 알 수 있습니다.
그래프로 확인하겠습니다.
import plotly.express as px
top20_1=top20.sort_values('샤프지수')
fig=px.bar(x=top20_1['샤프지수'], y=top20_1['name'])
fig.show()
이상으로 샤프지수를 계산하고 2022년 샤프지수 상위 회사를 알아봤습니다.
'API' 카테고리의 다른 글
[FinanceDataReader] CAGR, MDD, 샤프지수,소르티노지수 계산 및 코스피 회사에 대한 결과 시각화 (4) | 2022.12.09 |
---|---|
[FinanceDataReader] 주가 및 소르티노비율 소르티노지수(sortino) 계산 (4) | 2022.12.07 |
[Fred API] 달러 인덱스와 금, 은, 구리 비교 그래프 (11) | 2022.12.05 |
[Fred API] 원달러 환율, 달러 인덱스 비교 그래프 (4) | 2022.12.02 |
[Fred API] CPI(소비자물가지수), CoreCPI 데이터 수집 (7) | 2022.12.01 |