Skip to content

backtest 전략을 실제 투자에 적용하기 #1

사이드 프로젝트 링크 : https://www.github.com/fromitive/backtest

이제 실전투자에 적용해보자

지난 글까지 쓸만한 전략이 나타나게 되어, 이를 이제는 실전투자에 적용해보는 시간을 가지려고 한다.

실전투자에 사용하기 위해 지금까지 만든 것들을 응용해보는 것이다.

투자 로직 초안 작성

투자를 하기위한 로직을 일단 만든다. 아래의 그림과 같이, 한 개를 구매하면 팔때 까지 나머지 주식을 구매하지 못하게 하려고한다.

테스트를 돌렸을 때, 거래하는 횟수가 그렇게 많지 않았기 때문이다.

Image title

그림 1 - 투자 알고리즘 초안

2개의 쓰레드로 각각 나눠서 실행하여 역할을 분리하도록 설계할 예정이며

BUY 시그널은 거래량이 제일 높은 순서대로 확인하고, 거래에 성공하면, 매수를 진행하지 않도록 변경할 것이다.

고려해야 할 요구사항

초안을 작성하였으면, 다음으로 고려해야 할 사항에 대해 작성해보았다.

요구사항
1. top 5 거래량은 어떻게 추출할 것인지
2. 매수를 하는 API는 어떻게 구현 하는지
3. 매수 할 때의 금액은 어떻게 계산할 것인지
4. 매수 플래그는 어떻게 세팅할 것인지
5. 주문은 했으나, 구매에 성공했는지 안했는지 어떻게 확인할 수 있는지
6. 매수한 코인의 수익율은 어떻게 실시간으로 계산하는지
7. 매수한 코인의 매도에 실패 했을 때, 어떻게 주문을 취소하고 재 매도할 수 있는지

top5 거래량은 어떻게 추출할 것인지

top5 거래량은 다행이도, Bithumb 에서 API로 제공된다. 즉시 top5 거래량 코인 리스트를 추출하는 예제는 아래와 같다.

수정이력

  • [2023-07-18] df로 받을 경우, 비교구문을 사용할 수 없어서 isinstace로 변경되었음
  • [2023-07-18] acc_trade_value가 아닌, acc_trade_value_24H로 받아야 현재 top 5 거래량을 비교할 수 있어서 수정하였음

get_top5_volume_symbol.py
def get_bithumb_market():
    url = "https://api.bithumb.com/public/ticker/ALL_KRW"

    headers = {"accept": "application/json"}

    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        json_data = response.json().get('data')
        del json_data['date']
        df = pd.DataFrame.from_dict(json_data, orient='index')
        df = df.astype(float)
        return df
    else:
        return False

bithumb=get_bithumb_market()
if isistance(bithumb,pd.DataFrame): # 수정
    today_target=bithumb.nlargest(5,'acc_trade_value_24H') # 수정
18 ~ 19줄에서 .nlargest 메소드를 이용해서 거래량 top 5를 추출할 수 있다.

다음은?

몇가지 더 테스트하다가 시간이 지체되어 다음 게시물에서 요구사항을 정리 할 것이다.


Comments