[이상] 전략 시뮬레이터
자동매매를 위한 멋진 전략이 생각이 났다고 합시다. 과연 이 전략이 수익이 나는 전략인지 아닌지는 백테스트를 해보아야 합니다. 백테스트란 시스템 트레이딩할 때 과거 데이터로 새로운 전략의 수익률을 확인하는 과정입니다.
백테스트를 할 때 가장 중요한 것은 과거 거래 데이터를 확보하는 것입니다. 그 다음으로는 적당한 시뮬레이터를 골라야하는데요. 파이썬 패키지 중에 몇 가지 있기는 하지만 제가 생각한 것과는 조금 틀리더군요. 이런 패키지는 정말 백테스트를 위한 것이더군요. 제가 원하는 것은 매매 로직을 수정하지 않고 바로 시뮬레이션 해보는 것입니다.
그래서 직접 만들었습니다.
이번에 만든 클래스는 TR_SIMULATOR라는 base class를 입니다. 이를 바탕으로 시뮬레이션 하고자 하는 데이타에 따라 별도로 파생 class를 만들어서 적용하면 됩니다.
우선 거래 과정을 간단하게 도표로 그려보겠습니다.
증권사에서 전송해주는 실시간 시세를 받아서 본인이 만든 매매로직에서 매수/매도 여부를 판단하고 주문을 내는 형태입니다. 아래 그림에서와 같이 simulator가 파일에서 읽어서 시세를 전달해주고, 주문하는 함수를 가로채면 로직은 정상적으로 동작하게 됩니다.
사용법은 간단합니다. simulator 를 사용하는 경우에는 TR_STOCK_SIM()를 생성한 후 증권사 실거래 데이터를 처리하는 함수를 등록합니다. 그 후 do_simulator 함수를 호출하면 끝입니다.
sim = TR_STOCK_SIM()
sim.set_callback_func(tr_main.do_sise_stock) # simulator에서 부를 함수.
sim.do_simulation()
do_simulation() 함수는 아래와 같습니다. convert_sise_data()에서 증권사에서 보내주는 것과 같은 형태로 만들어서 줍니다. 이렇게 되면 기존 코드 변경없이 전략 test가 가능합니다.
이제 데이터를 모으러 가야겠습니다.
@tradingideas transfered 8 KRWP to @krwp.burn. voting percent : 31.79%, voting power : 78.91%, steem power : 1817078.27, STU KRW : 1200.
@tradingideas staking status : 4000 KRWP
@tradingideas limit for KRWP voting service : 8 KRWP (rate : 0.002)
What you sent : 8 KRWP [44358885 - 64100960103f3d6f7b19fd8233fd81b59f0bde00]
요즘도 열 개발 중이시군요. 멋집니다!
일본 친구보고 BNF 따라가기 해보려고 시작했는데, 이게 할 일이 엄청 많네요. 하나하나 개발 중입니다.