생각이 담아두는 곳

Introduction to Trading, Machine learning&GCP [4] 본문

CS/ML

Introduction to Trading, Machine learning&GCP [4]

Chang_Tree 2020. 4. 20. 17:54

퀀드 전략을 세우는 절차(Back testing 중심)

 

1. 데이터를 모으고 정제한다. 

 

2. 유효성이 있는 상관관계나 법칙인지 백테스터를 이용해 검증한다. 

 

3. 가장 좋은 것부터 나쁜 것까지 순위를 매기고 제일 괜찮은 것들을 백테스터를 이용해 검증한다. 

 

출처, coursera 강의, 제목 참조

가장 고전적인 백테스팅 방법부터 소개하는데 당연하지만, 머신러닝과 유사하다. 

 

일정 기간을 잡고, 그 기간동안의 데이터를 학습시킨 뒤 어떤 로직을 만들어내고 이를 최신기간동안 테스트해봐서 수익을 내는 지 파악한다. 

 

여기서는 학습시킨 방법이 테스트 기간에 효과를 발휘하지 못하면 다른 전략을 세워보고, 

두 기간 다 통하는 방법을 찾으면 paper trade 를 먼저 하라는데, 우리나라말로 모의투자인 것 같다. 

 

모의투자에서도 원하는 알파값을 달성하면 서서히 자본을 굴려본다.

 

위 방법을 Split window backtesting 이라고 한다.

여기서 좀 더 발전된 방법으로 Sliding window backtesting이 있는데,



 

출처, kaggle

Split window 와 다르게 모든 과거 데이터들을 학습 또는 test 하는데 사용이 가능하다.



여담으로 강의에 나오지는 않았지만.

출처 kaggle

Expanded sliding window back testing 전략으로 이전 데이터를 버리지 않고 학습시키는 방법이 있다.

개인적으로는 주가 데이터로부터 원하는 로직을 생성할 때는 , 확장형은 그닥이라고 생각한다.

 


백테스트의 목적인 퍼포먼스 측정에서 2가지 기준을 사용할 수 있다. 

 

1. Sharp ratio = Return/Risk 

 

2. Calmar Ratio = Return/Max DrawDown

 

2번째 방법을 사용할 때는, 실제 Max DrawDown 이 더 커질 수 있음을 유의하라한다.

 

1번째 방법은 경제학 시간에 배울텐데, Return 은 목표한 수익률 - 무위험 자산 수익률 로 구할 수 있다. Risk는 표준편차

2번째 방법에서 Max DrawDown 이란, 돌리는 기간에서 최대 낙폭. 

 

백테스트를 통해, 여러가지 지표들을 미리 확인 가능하다. (필요한 거래량, transaction cost 등)

 

또한 내 로직을 최적화 하는 것이 가능하다. 


Backtesting을 진행할 때, 주의해야할 점

 

1. 질 나쁜 데이터 

 

2. 내 데이터에서만 성능을 확보한 상관관계에 과도한 의존 

 

3. 실제 매매에서는 다를 수 있는 슬리피지 

 

4. Market impact cost(수수료 등) 특히 작은 시장에서 거래할 때 

 

5. Optimization Bias 

-> 제한된 데이터로 너무 과적합 시키는 것 , 실제 상황에서는 성능을 발휘하지 못할 수도 있음

 

 

6.  Look-ahead Bias 

-> 실수로 과거 데이터를 훈련시키는데 미래나 현재의 데이터가 섞인 경우 

 

7. Survivorship Bias

-> 지금까지 남아 있는 회사들로만 러닝을 돌리면 생길 수 있는 오류 

예를 들면 코스피에서 몇 몇 주식들이 상장폐지를 당했다고 생각해보자. 코스피 종목들 전체를 대상으로 학습을 시킬 때(물론 우리나라의 경우 삼성전자가 압도적인 파이를 차지하고 있어 삼성전자를 제외한 유의미한 결과값을 얻기 힘들지만 가정이니까), 이 상장폐지당한 종목들은 빼고 학습을 돌리는 우를 범하는 것이다. 만약 상장폐지를 당한 종목들 때문에 어느 날 코스피가 하락했다고 하면 우리는 이 관계를 놓칠 수 있는 것이다. 

 

8. Drowdown Tolerance Bias

-> 괜찮은 샤프 ratio값과 수익을 보였지만, 중간에 거대한 낙폭이 몇 번 있다고 하면, 과연 이 낙폭이 온 날, 이 전략을 유지할 수 있는가에 대한 것. 따라서 Calmar ratio도 사용해야 한다. 보통은 펀드를 굴리는 입장으로 보면 투자자들의 압박이나 자금 회수 때문에 문제가 생길 수 있다고 보는 것. 개인적으로 투자하면 끊임없이 자신을 의심하게 될 것 같다. 떨어진 상태에서 유지되면 과연 이 전략이 맞는지...

 

마지막으로 백테스터를 만드는 것은 굉장히 복잡한데 아마 이미 만들어진 모듈을 import해서 쓰지 않을까 싶다. pandas 언급이 있는걸로 봐서.. 

허황된 수익을 보고, 실제 부가비용을 잊지말라고 한다.

 



 

이런 식으로 복잡하다고 한다. 기본적인 내용이라 해석은 하지 않는다. 아마 만들 일은 없지 않을까 싶다. 혹시 또 모르지만.. 

 

Comments