5-5. 요일 표기와 주별 가격 붙이기
자 첫번째로 주가가져오기를 한다.
값이 잘 나오는지 확인한다.
우리가 필요한건 Date 와 Open만 필요하다.
보면 date가 index로 구분되있기 때문에 값을 가져올 수 없다.
그래서 이걸 가져오기 위해선 우선 reset해주면 된다.
확인해주면 date가 값으로 들어온것을 확인 할 수 있다.
이제 date와 open값을 가져올 수 있다.
이제 여기다가 요일을 붙여야한다.
먼저 date가 텍스트 형식으로 들어가 있기 때문에 날짜형식으로 바꾼 다음 pands에서 제공하는 요일로 바꿔주는 함수를 사용한다.
그럼 바뀐게 없어보이지만 형식은 바뀌었다.
그리고 아래 사지처럼 작성 후 결과를 보면
day 항목이 생기고 거기에 요일이 들어간것을 확인 할 수 있다.
저런 dt.day_name() 같은 경우 검색을 하면 다 나온다. 예를 들어 pands date 프레임 날짜를 요일로 이런식으로 검색하면 다 나온다.
이제 월요일과 금요일만 남겨본다.
잘 나오는 것을 확인할 수 있다. 하지만 시작할 땐 monday로 시작하고 friday로 끝나야한다.
우선 금요일이 제일 위에 있으면 이걸 drop 하자. 라는 식으로 코드를 아래와 같이 써주면 결과가 잘 나온것을 확인할 수 있다.
마지막도 같다.
그럼 시작이 월요일, 마지막이 금요일로 됬다.
이제 monday가 연속으로 나오거나 friday가 연속으로 나오는 경우도 있다.
이것들을 먼저 추려내보자.
이렇게 monday만 붙여있는 경우가 있다.
달력에 가서 확인해보면
금요일이 설날이라 값이 없어서 그렇다. 그래서 12일 월요일 ,19일 월요일이 나온거다.
그래서 연속으로 나온 월요일이면 앞에있는 월요일들을 지워줘야 짝이 맞다.
위 사진처럼 작성해주면 된다.
자 만약 월(5일)이 없었을때 금(2일), 금(9일)이 연속으로 나오면 5일과 같은 선상에 있는 금(9일)을 없애고,
금(16일)이 없었을때 월(12일),월(19일)이 연속으로 나오면 16일과 같은 선상에 있는 월(12일)을 없애자는 거다.
이제 수익률을 계산해야한다.
먼저 금요일의 open값을 월요일옆으로 끌여올려야한다.
이제 monday애들만 나오게 하면 된다.
이제 우린 이 date값과 day는 필요없다.
그리고 깔끔하게 알아보기 쉽게 column도 바꿔준다.
이제 수익률 구하기를 하면 된다.
먼저 return 값을 구하면 아래와 같이 나온다.
그리고 df의 return 값만 가져오고 누적곱을 해준다.
여기서 return 값이 inf 라고 써있는데 이건 buy값이 0이어서 그렇다. 이 buy_at값이 0인애들을 싹 없애줘야한다.
이렇게 하면 된다. sell_at이 0이 아닌값과 buy_at이 0이 아닌값만 넣어라.
그럼 infinity는 사라진다.
이제 여기서 마지막 값만 가지고 1을 빼주면 나온다.
마지막으로 이제 함수로 만든다.
값이 잘 나오는지도 확인했다.
이제 월-금 전략이 잘 맞는 종목이 있을 수 있다.
같이한번 다음에 해보겠다.