본문 바로가기

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

5-3. 사야하는 날, 파는 날 가격 구하기

데이터를 원하는 형태로 가공해 보겠다.

우선 가장 필요한건 오늘이 사야하는 날인가 아닌가 구분이 되야한다.

사야되는 가격을 알아야 그 가격을 넘으면 사야한다.

 

위 사진에서 보는 것처럼 어제 high 에서 어제 low 를 빼주면 된다.

shift() 를 해서 빼주면 된다.

 

사야하는 가격을 구하는 식은 아래와 같다.

사야하는 가격 = (어제최고가 - 어제 최저가) * k + 오늘 시작가

어제 최고가는 shift(1)을 해주면 다음 날로 넘어가기때문에 어제 최고가가 되는게 맞다. 어제 최저가도 마찬가지이기 때문에 shift(1)을 해서 계산해주고 k는 얼만큼 오르내리는가 퍼센트지를 결정하고, 시작가를 더하면된다.

확인해 보면 위 사진과 같이 나온다. 여기 보면 시작가가 52540원 인데 buy_at 52788.0 이 가격을 넘으면 사자 가 되는거다. 근데 여기서 High을 보면 52560원이다. 따라서 이날은 살 일이 없었다는거다.

 

이제 어떻게 가공해야할까. 바로 실제로 사야되는 액션이 발생하는 날들을 비교하면 된다.

high 와 buy_at을 비교하면 된다.

이제 sell_at도 있어야한다.

이번엔 한칸 땡겨서 적어야한다.

여기서 사서 , 여기서 판거라고 볼 수 있다.

 

 

이제 buy가 일어났던 순간들을 모아서 수익률을 계산하면 된다.

is_buy가 있는 행들만 추려가지고 buy_at과 sell_at을 가지고 수익률을 구하면 된다.

 

우선 buy만 있는것들을 추려냈다. 보면 산가격보다 판가격이 더 내려간 경우도 있다. 이렇게 사고팔고하면 수익률이 더 좋지 않겠는가 하는것변동성 돌파 전략이다.

 

이제 sell_at 을 buy_at으로 나누면 return 값이 나온다.

이제 마지막으로 이 return 들만 가지고 누적 곱을 하고 마지막 값만 확인하면 수익률이 나온다.

여기서 이제 1만빼주면 진짜 수익률이 나온다.

확인하면 200퍼센트 올랐다는 결과가 나온다.

 

이제 이거를 함수로 만들고 최적의 k값을 구할 수 있음 더 좋겠다.

다음에 마저 하겠다.