System Trading

시스템 트레이딩 윈도우서버 공짜로 운영하기

토마스.dev 2020. 12. 12. 18:52

시스템 트레이딩을 위해서는 윈도우 서버를 이용할수 밖에 없는데(몇년 안에 리눅스 REST API가 지원되면 좋겠다. 공인인증서 안녕~)

집에서 간단하게 미니PC를 이용할수도 있지만, 몇가지 단점이 존재한다.

 

- 불안정한 전원, 네트워크 공급: 이게 말이 되냐라고 생각할 수 있지만, 집에 있는한 누가 멀티탭을 끌수도 있고 네트웍이 안될수 있다.

- 노후화: 시간이 지남에 따라 예상치 못하게 뻗을수 있다.

- 해킹취약: 계속 켜놓고, IP가 고정되기 때문에(요건 경우에 따라 달라질 수도 있긴하다) 해킹에 취약해질 수 있다.

 

이에 비해 클라우드로 옮기면 위 단점들을 극복할 수 있다. 클라우드는 기본적으로 SLA(99.xxx %로 가용성을 보장)가 있기 때문에 장애가 거의 없다. IP는 계속 바꿀수 있으므로(껐다 켜면 새로운걸로 바뀐다) 그만큼 안전성을 높일 수 있고, 노후화 걱정을 하지 않아도 된다.

그리고 OTP(MFA)를 사용할수 있어서 2~3중 보안을 추가할 수 있다.

 

+ OTP는 구글 OTP를 사용하면 되는데, 폰을 변경하거나 하면 OTP를 다시 등록해줘야한다. (클라우드 복구 이런거 안됨) 그렇기 때문에 이전하기 전에 반드시 기존 OTP 설정을 해지하고, 새로운 폰에 다시 등록해줘야 한다(OTP QR코드나 키를 어디에 보관해두면 되긴하는데, 그거 자체가 보안문제기 때문에 권장하지 않는다)

 

AWS에 계정을 새로 만들면 프리티어로 1년을 사용할수 있다. 1 Core/1GB 의 SSD(30GB)기반 인스턴스(t2.micro)를 사용할수 있는데, 윈도우 서버도 지원한다.(정확히는 만든 날을 포함한 월말까지이다. 예를 들어 1월 9일에 만들었다면, 내년 1월 말일까지이다. 종료 20~30일 사이에 Expired 메일이 온다. 놓치지 말길 바란다. 기간이 지났는데도 삭제하지 않은 리소스가 있으면 나도 모르게 과금이 된다. 혹시 과금이 됐을 경우 첫 한번 정도는 메일을 보내서 실수를 설명하면 과금을 취소해주기도 한다. "대인배 AWS")

 

물론 성능이 굉장히 후달린다. 필자의 경우는 하루에 4~5번 정도만 잠깐 켜고 차트데이터를 받아서 계산 한후 매매를 한다. 12시에 매매를 한다고 하면 미리 켜놓고 데이터를 받아서 12시 땡되면 바로 매매 API를 호출한다. 

(python app을 돌릴때, t2.micro로 돌렸을때 대략 4~5초정도의 딜레이가 발생한다. 이건 앱에 따라, 로그발생 위치에 따라 달라지만 일단 필자가 비교하기로는 이랬고, t2.large로 했을때는 1~2초로 2~3배 정도 빨라졌다. ark.intel.com/content/www/kr/ko/ark/products/95062/intel-nuc-kit-nuc6cayh.html요 mini pc(8GB RAM, SSD)로 해봤을때는 12~14초 걸렸다. 확실히 메모리보다 싱글코어 자체의 속도가 중요하다.)

+ 매매 직전 미리 스크립트를 실행해서 sleep으로 대기를 걸어두고 해당 시간이 되면 바로 매매를 시작하는 전략을 사용하면 딜레이를 확실히 줄일 수 있다. 필자는 이 방법을 이용해서 4~5초 걸리던걸 1초 이내로 단축할 수 있었다.

 

아래는 AWS윈도우 서버에 대한 요금 정보이다(프리티어일때는 전부 무료이긴하다)

- 요금은 시간단위로 받는다. 한번 켜면 1시간 요금이 나간다. 아래는 서울리전 윈도우서버 인스턴스 1시간당 가격이다.

   30분동안 5번을 껐다켜면 5시간에 대한 요금을 받는다 ㅡㅡ^ 프리티어라 별 문제 없겠지만 한달에 사용가능한 시간(계속 켜두면 전혀 문제가 없다)을 초과하지 않도록 한다.

 

+ t3 타입으로 해도 무료이다. 실제 t3타입으로 인스턴스를 만들때 free tier에 해당되지 않는다고 경고가 뜨지만 무료맞다. 다만 옵션에서 Credit specification을 Unlimited로 해두면 과금이 될수 있다.

+ t3 타입으로 바꾸고나서 서버가 정상적으로 부팅되지 않는 이슈가 발생했다. 처음있는 일이었고 t2로 다시 변경하고나서야 정상부팅되었다. 드문케이스이겠지만서도 t2를 3년 가까이 하면서도 문제가 없었다는 점을 감안했을때 t3보다는 안정적으로 t2로 운영하는게 좋을 듯하다.

 

- EBS(스토리지, SSD)는 별도이다. 스토리지는 인스턴스를 안써도 비용이 부과된다. 한달에 3~4달러 사이이다.

- Outbound 트래픽(인스턴스에서 나가는 트래픽)이 사용하는 모든 서비스합산 월 15GB 이하여야 한다(초과되면 요금부과). 아래는 프리티어가 아닐때의 요금이다.(변동성돌파 등 실시간 트레이딩의 경우 상당한 트래픽이 발생하긴한다)

 

 

 

여기서 한가지 궁금한 점이 있을 것이다. 프리티어는 1년간만 무료이다. 그러면 1년이 지나면 어쩔것인가?

필자는 다른 계정을 1개 더 만들어서 인스턴스를 옮긴다. 카드정보는 지난 계정과 동일해도 상관없다. xxx.2020@gmail.com, xxx.2021@gmail.com 등등으로 만들어서 사용하면 된다. 

인스턴스는 스냅샷을 이용해서 옮긴다. 기존 계정에서 EBS 스냅샷을 뜨고 그걸 새로운 계정에 공유한다. 새로운 계정에서 공유받은 스냅샷으로 EBS를 생성하고 인스턴스를 생성할때 연결하면, 그대로 사용할 수 있다. 물론 이때 스냅샷 비용이 발생한다(1달러 미만)

 

만약 프리티어가 끝나고 계속 운영한다면 한달에 얼마나 들어갈까? EBS비용인 3~4달러를 포함해서 시간당으로 계산하면 된다.

주식거래가 가능한 시간 9시~오후3시반 까지 켠다고 생각하면 7시간*0.019 = 0.133 달러 이다. (t3 인스턴스는 좀더 저렴하다)

현재 환률 1,100원 정도를 적용하면 하루에 150원 정도 발생한다. 거기에 EBS비용을 합산하면 한달 7~8천원정도가 된다. 커피 2~3잔 정도 가격이다.

 

만약 하루에 매매를 특정시간에만 할거라면 람다를 이용하여 자동으로 인스턴스를 켜고 끌수 있다(인스턴스 스펙도 바꿀수 있다).