본문 바로가기

파이썬 공부(ft. sparta)/4주차

4-4. 수익률 구하기(1)

buy -> buy -> buy는 사는것이아닌 가지고 있는것이고, 마찬가지로 sell -> sell -> sell 도 파는것이아니다.

그렇기 때문에 sell ->buy 로 바뀔 때 사는거고 , buy -> sell 로 바뀔 땐 파는거다.

이걸 어떻게 가져오나가 중요하다.

어디가 sell이고 buy인지 확인하고 가는게 좋다.

 

컨디션을 아래와 같이 작성을 하면,

cond = (df['action'] == 'buy') & (df['action'].shift(1)=='sell')  #컨디션이 buy이고 action.shift(1)이 sell 일때 

df['real_buy'] = np.where(cond,'buy','') #real_buy에 컨디션이 buy일 때만 써주고 아니면 비워줘라.

이 컨디션에 해당하는 buy 들만 모은다면 사는 시점이 되고, 반대로 sell들만 모은다면 파는 시점이 된다.

아래 사진과 같이 확인해보면

cond1은 사는 시점을 확인할 수있고, cond2는 파는 시점을 확인 할 수 있다.

사는 시점
파는 시점

아래 사진처럼 하면 buy 와 sell 을 각각 한데 모아놓았다.

마지막은 어떻게 해야할까?

마지막은 무조건 다 팔아야한다. 그래야 수익률을 측정 할 수 있기 때문이다.

buy가 잘 나오는 지 확인

위에 체크된 코드를 작성해 주면 된다.

sell이 잘 나오는지 확인

 

이번에는 사고파는 것을 붙일 꺼다.

우리가 concat을 할 때 위아래로 붙여왔는데, 이번엔 좌우로 붙여보겠다.

그리고 30개만 확인해보면 아래 사진과 같이 나온다.

빨간색 표시된 가격으로 사고 , 파란색 표시된 가격으로 팔았다는 결과가 나온다.

근데 마찬가지로 sell 줄이 한칸 밑으로 내려와 있기 때문에 줄을 맞춰줘야한다.

 

아래 사진과 같이 작성해주면 같이 붙어서 나오는 것을 볼 수 있다.

위 사진을 보면 5일에 사서 9일에 팔고 15일에 사서 19일에 파는 것을 확인 가능하다.

 

우리가 필요한건 앞 close와 뒤 close다. 근데 두이름이 같으니 먼저 이름을 변경해준다.

이렇게 작성해주면 colums값이 변경된것을 확인할 수 있다.

이제 우리가 필요한 종가(buy) 종가(sell)을 가져다 쓰면 된다.

수익률을 확인하려면 sell / buy 하면 된다.

첫번째는 돈을 잃었는데 수익률이 왜 0.966~~ 으로 나오냐면 아직 1을 빼지 않았기 때문이다.

일단 놨두고, 이제 모든 수익률을 구해야한다.

어떻게 구해야하냐면 쭉 곱해야한다.

 

일단 먼저 수익률만 먼저 가져온다.

이렇게 수익률이 나오는데 이거 전체를 곱하면 된다.

이 cumprod가 누적곱을 해준다는 것이다.

결과를 보면 누적해서 나온 곱들을 보여주는거다.

 

제일 마지막 곱만 나오면 되기 때문에 아래 사진과 같이 작성해주고 확인하면 나온다.

하지만 우린 여기서 1을 빼야하기 때문에 1을 빼주면 아래와 같다.

이렇게 삼성전자를 2018년도부터 3일 이평선을 가지고 하면 이렇게 나온다는것을 확인했다.

 

이것도 마찬가지로 함수로 만들 수 있다. 무척 쉽다.

이렇게 하면 '005930'은 삼성전자이고 3일 이평선으로 확인하고 수익률을 보고, 그다음 코드는 '066570'은 엘지전자이고 3일 이평선으로 확인하고 수익률을는 거다.

 

 

이제 우리가 할 일이 더 있는데 그건 이평선 하나가지고 하는게 아니고 단기 이평선과 장기 이평선을 가지고 해야된다는 거다. 

다음에 이어서 하겠다.

'파이썬 공부(ft. sparta) > 4주차' 카테고리의 다른 글

4주차 끝 숙제  (0) 2023.04.24
4-5. 단기/장기 이평선 적용하기  (0) 2023.04.24
4-3. buy & sell 표기  (0) 2023.04.17
4-2. 이동평균값 만들기(3일)  (0) 2023.04.17
4-1. 간단한 그래프 그려보기  (0) 2023.04.17