업비트 API 를 이용하여 변동성돌파 전략으로 자동 투자시 스팀의 수익률 계산하기

in #kr-dev2 years ago (edited)

안녕하세요 hyokhyok 입니다

이전에 하던걸 이어 가려니..회사 내용들도 있어서 잠시 멈추고 이걸 써봅니다.

업비트 API를 이용하여 다양한 것들을 할 수 있는 것 같아서 혼자 공부하고 있습니다.

자동 투자 기법 중 변동성 돌파 전략을 적용한 코드가 있어서 보다가 이 방법이 스팀에는 적합 했는지를 보기 위하여 테스트 해보았습니다.

변동성 돌파 전략은 다음과 같습니다. 출처

image.png

코드는 매우 심플 합니다

import pyupbit  # upbit api 를 사용할 수 있는 python 라이브러리
import numpy as np


def get_ror(k=0.5):
    df = pyupbit.get_ohlcv("KRW-STEEM", count=365)
    df['range'] = (df['high'] - df['low']) * k
    df['target'] = df['open'] + df['range'].shift(1)

    df['ror'] = np.where(df['high'] > df['target'],
                         df['close'] / df['target'],
                         1)

    ror = df['ror'].cumprod()[-2]
    return ror

maxror=0
for k in np.arange(0.1, 1.0, 0.1):
    ror = get_ror(k)
    print("%.1f %f" % (k, ror))
    if maxror<ror:
        maxror=ror
        best_k = k
print(best_k, maxror)

결과는요?

200 일 결과

200개가 디폴트이며, 그 이상의 데이터는 period 단위로 추출이 되는데 하루 단위로 설정이 안되어 1년치는 다른 방법을 찾아봐야겠다

image.png
image.png

0.1로 설정시 약 1% 손실

30일 결과

image.png

0.1로 설정시 약 16.6% 이득, 0.5~0.7로 설정시 약 손실

7일 결과

image.png

0.1로 설정시 약 7.6% 이득
최근 7일의 경우 분위기가 좋아서 오히려 존버가 더 벌었을 것 같네요

비트와 이더리움의 100일 결과는?

존버 했으면 비트는 15% 손실, 이더는 25% 손실인 하락장이었습니다.

비트

image.png

비트의 경우 강한 돌파 발생시 투자를 하는 것이 좋았던 것 같네요

이더

image.png

이더는 0.3 외에는 모두 손실이네요

그리고 스팀은..

image.png

그냥 손실

해당 코드는 수수료를 제외한 결과이기 때문에 차이가 있을 수 있으며, 기존 결과들을 바탕으로 한 백테스킹 결과이므로 향후 결과는 다를 수 있음을 주의하시길 바랍니다.

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.029
BTC 62871.45
ETH 3479.64
USDT 1.00
SBD 2.53