빅데이터, 데이터분석

파이썬으로 주식 수익률 표시하기

톰이야요 2023. 7. 24. 08:00

지난번에 이어, 삼성전자 주식의 수익률을 표시해보고자 합니다.

조회한 기간 중, 첫 데이터를 기준으로 수익률을 계산하고, 이를 그래프로 표시하는 방법입니다.

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import FinanceDataReader as fdr

#2021년도 부터의 삼성전자 주식데이터 불러오기
df = fdr.DataReader('005930', '2021-06')

#다운샘플링
df_month = df.resample("BM").mean()

print(df_month.head())
print(df_month.tail())

#주식가격을 시각화하기
plt.figure(figsize=(10,6))
sns.lineplot(x=df_month.index, y=df_month['Close'])
plt.title('SAMSUNG ELEC price in 2021-2023')
plt.xlabel('date')
plt.ylabel('price')
plt.show()

#수익률 표시하기
df_month['rtn'] = df_month['Close'].pct_change()
df_month['cumulative_rtn'] = (1 + df_month['rtn']).cumprod()

plt.figure(figsize=(10,6))
sns.lineplot(x=df_month.index, y=df_month['cumulative_rtn'])
plt.title('SAMSUNG ELEC Returns in 2021-2023')
plt.xlabel('date')
plt.ylabel('cumulative returns')
plt.axhline(y=1, color='r', linestyle='--') #첫날 가격을 기준으로 1로 설정된 수평선 추가
plt.show()

 

데이터는 아래와 같이 출력되구요...

                    Open          High           Low         Close  \
Date                                                                 
2021-06-30  81195.454545  81590.909091  80740.909091  81104.545455   
2021-07-30  79645.454545  79963.636364  79250.000000  79577.272727   
2021-08-31  77204.761905  77914.285714  76428.571429  77023.809524   
2021-09-30  76526.315789  76884.210526  75800.000000  76305.263158   
2021-10-29  70852.631579  71373.684211  70157.894737  70563.157895   

                  Volume    Change  
Date                                
2021-06-30  1.514088e+07  0.000147  
2021-07-30  1.254028e+07 -0.001228  
2021-08-31  2.380298e+07 -0.000968  
2021-09-30  1.480175e+07 -0.001751  
2021-10-29  1.579967e+07 -0.003077  
                    Open          High           Low         Close  \
Date                                                                 
2023-03-31  61131.818182  61513.636364  60718.181818  61145.454545   
2023-04-28  64910.000000  65345.000000  64285.000000  64855.000000   
2023-05-31  67035.000000  67375.000000  66450.000000  66900.000000   
2023-06-30  71676.190476  72104.761905  71138.095238  71676.190476   
2023-07-31  71840.000000  72380.000000  71340.000000  71770.000000   

                  Volume    Change  
Date                                
2023-03-31  1.243837e+07  0.002557  
2023-04-28  1.455179e+07  0.001263  
2023-05-31  1.347096e+07  0.004402  
2023-06-30  1.262239e+07  0.000572  
2023-07-31  1.297560e+07  0.001759  

 

그래프로 그리면 아래와 같습니다.