
#기본설정
!pip install yfinance pandas_datareader finance-datareader
from pandas_datareader import data as pdr
import yfinance as yf
yf.pdr_override()
import numpy as np
import pandas as pd
import FinanceDataReader as fdr
#삼성전자
df = fdr.DataReader('005930','2018')
df=df[['Close']]
df['ma']=df.rolling(3).mean().shift(1)
df['action']=np.where(df['Close']>df['ma'],'buy','sell')
df['action_temp']=df['action'].shift(1)
df.iloc[-1,-1]='sell'
cond_buy=(df['action']=='buy')&(df['action_temp']=='sell')
cond_sell=(df['action']=='sell')&(df['action_temp']=='buy')
df_buy=df[cond_buy].reset_index()
df_buy.columns=['날짜','사는시점종가','이평값3','행동1','행동2']
df_sell=df[cond_sell].reset_index()
df_sell.columns=['날짜','파는시점종가','이평값3','행동1','행동2']
df_result=pd.concat([df_buy,df_sell],axis=1)
df_result['수익률']=df_result['파는시점종가']/df_result['사는시점종가']
cond=(df_result['파는시점종가']/df_result['사는시점종가'])<1
df_result['수익률']=np.where(cond,df_result['수익률']-1,df_result['수익률']-1)
df_result['수익금']=df_result['사는시점종가']*df_result['수익률']
df_result
질문
전체 수익을 구하기위해서는 수익금을 구해야 한다고 생각해서
위의 코드와 같이 작성하였습니다.
그런데 강의에서는 모든 수익율 값을 누적곱해서 77%정도의 수익을 봤다는 계산을 내놓았는데
수익금을 계산해봤을 때 9880원 정도였습니다.
이는 초기매수비용52120 으로 봤을 때 19%정도의 수익을 낸것인데
누적곱을 했을 때의 수치와 다른 이유와 왜 누적곱을 통해 수익률을 구하는지 궁금합니다.
