데이터를 원하는 형태로 가공해 보겠다.
우선 가장 필요한건 오늘이 사야하는 날인가 아닌가 구분이 되야한다.
사야되는 가격을 알아야 그 가격을 넘으면 사야한다.
위 사진에서 보는 것처럼 어제 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값을 구할 수 있음 더 좋겠다.
다음에 마저 하겠다.
'파이썬 공부(ft. sparta) > 5주차' 카테고리의 다른 글
5-5. 요일 표기와 주별 가격 붙이기 (0) | 2023.04.25 |
---|---|
5-4. 최적의 k 구하고 나만의 전략 구현하기 (0) | 2023.04.25 |
5-2. 주가 가져오기 (0) | 2023.04.24 |
5-1. 변동성 돌파 전략 - 설명 (0) | 2023.04.24 |
5w_좀 다른 백테스팅 연습 (0) | 2023.04.24 |