시스템트레이딩

StockShip2 신기능, 파라메터 최적화(젠포트 짝퉁, 짭포트, 이베스트, 시스템트레이딩,자동거래)

양마에 2021. 7. 4. 09:43

StockShip2은 조건을 통해서 매매할 종목을 선택할 수 있다.

가령 변화율({종가},1) >= 3 라는 수식을 조건에 넣으면 종가 1일 변화율, 즉 등락률이 이 3%이상인 종목을 "매수우선순위" 에 따라서 매수등록 하게 된다.

여러 매수, 매도 조건을 통해서 전략을 만들고 나면

마지막으로 매수기준가, 매도기준가, 만기매도기준가 3가지 매매타점을 설정해서 실제 매수가, 매도가에 등록을 하게된다.

매도기준가와 만기매도 기준가는 아래와 같은 차이가 있다.

- 매도기준가: 매도조건에 의해 매도대상을 어제 기준가대비 몇%가격에 매도등록할지 정하는 파라메터
- 만기매도기준가: 최대보유일을 이상 보유한 후, 어제 기준가대비 몇%가격에 매도등록할지 정하는 파라메터
(최대보유일이1 일경우 매수한 다음날 매도등록 함)

만약 매도조건이 아니더라도, 보유일을 초과했을때 매도할 수 있도록 만든기능이다.


같은 전략이라도, 매수기준가, 매도기준가, 만기매도기준가에 따라서 수익률이 천차 만별인데.

일일이 사람이 직접 최적화된 매매가를 테스트하는거는 거의 불가능에 가깝다.

그래서 만든것이 파라메터 최적화 기능이다.

매매기준가는 피봇1차저항, 피봇2차저항, 전일종가, 피봇가, 피봇1차지지, 피봇2차지지, 전일저가, 전일고가 등 총 8개의 기준을 정할 수 있도록 해두었는데

그래서 총 8 * 8 * 8 = 512개의 경우의 수로 매수기준을 정할 수 있고, 기준대비 몇%가에 매매를 하는게 최적인지는 사람손으로 절대 알아낼 수 없다.

가장 무식하게 최적 파라메터를 찾는 법은 모든 값을 넣어보고 백테스트를 다 돌려보는 방법이 있다.

하지만 모든 경우의 수를 다 테스트 한다면 전략 1개의 최적 값을 찾는데, 몇달이 걸려도 못찾을 판이다.


그래서 파라메터를 찾는 것은 결국 최적화문제로 귀결된다.

우선 현재 만든 버전은 경사하강법(傾斜下降法, Gradient descent)을 이용해서 최적화된 파라메터를 찾도록 구성했다.

덕분에 직접하면 평생걸려도 못구할 최적 파라메터를, 10시간이내에 찾을 수 있게되었다.

물론 이것도 엄청난 컴퓨팅파워가 필요한데, 평소에 실험용 워크스테이션으로 병렬처리를 한 덕분에 시간을 많이 단축 할 수 있었다.

처음엔 젠포트 백테스트에 들어가는 돈을 아끼기 위해 시작한 StockShip2 프로젝트인데, 파라메터 최적화 까지 만들고 나니

만들길 정말 잘했다는 생각이 든다.

파라메터 최적화는 어마어마한 컴퓨팅 파워가 필요하기 때문에, 아직 정식 이용은 불가능하다. 나중에 최적화 알고리즘을 더욱 발전시키고, 시스템이 안정화 되었을때, 대중에게도 공개할 수 있도록 하려고한다.

StockShip2 다운로드 링크

주의사항: 백신이 잡을경우 예외로 등록해줘야합니다.
프로그램을 보호기법을 넣었더니 백신이 바이러스로 착각하네요 ㅠ

StockShip2사용법(1) 링크