본문 바로가기

퀀트투자 A to Z

Simple ML로 퀀트 백테스팅 데이터 중요도 분석하기

반응형

현재 백테스팅에 사용되는 데이터들의 중요도를 대략적으로 확인하고자 한다. Simple ML은 구글시트상의 데이터를 가지고 모델링을 하는 확장 프로그램이다. 검색하면 설치하는법은 많이 나오므로 설치하는 법은 생략한다. Simple ML을 사용하면 머신러닝 모델링이 간단하게 가능하다. 모델에서 사용되는 데이터들의 중요도 또한 확인이 가능하다. 머신러닝 기반이 아니더라도 조건기반 퀀트 모델의 경우에도 어떤데이터를 백테스팅에 사용하면 좋을지 확인할수 있는 방법이라고 생각한다. 기존에 있던 축적하고 있는 백테스팅 데이터 중 일부를 Simple ML에 돌려 본 결과를 공유한다. 사용한 데이터는 2023년 7월8월의 매일의 history 데이터이며 참고로 목적변수는 약 30일 후의 수익률을 약간 변형시킨 값이다.

SimpleMl-실행화면
SImple Ml

 
Simple ML for Sheets를 선택하면 아래와 같은 화면이 나오는데 predict missing values를 선택해주면 된다.

SimpleMl-메뉴선택

데이터 선택

source columns를 선택하고 사용할 데이터 컬럼을 선택해주면 된다.

SimpleMl-변수설정

 

Predict

사용할 데이터를 선택했으면 Predict를 실행시키면 된다.

SimpleMl-예측

모델설명

 predict가 끝나면 다시 Simple ML for Sheets을 실행시켜주고 Understand a model을 클릭해준다
 
 

SimpleMl-모델이해

 

모델정확도(RMSE) 

RMSE 0.39정도가 나온다.

SimpleMl-모델정확도
RMSE

 
 

설명변수 중요도

중요도 순으로 넘버링 되어있다. 중요도가 높을 수록 모델의 정확도를 향상시킨다고 보면 될것 같다.

SimpleMl-변수중요도
설명변수 중요도

어느정도 중요도가 높을것으로 예상했던 변수들이 중요도가 높게나왔다. 상당히 만족스러운 결과다.
 

Export 모델

참고로 작성한 모델은 colab으로 코드를 바로 export할수있으므로 colab에서 실시간으로 예측하는 것도 가능하다. 

SimpleMl-모델추출

코드 확인

code를 복사해서 colab에서 사용하라고 설명하고 있다. 실제로 사용해보면 잘 작동하는것을 알 수 있다. example변수에  새 데이터만 넣어주고 스크립트를 실행시키면 예측 결과가 나온다.

SimpleMl-추출코드

 
중요도가 높게 나온 변수들 중 일부를 포워드 테스팅 AB테스트에 바로 적용할 예정이다. 
신경망모델의 경우에도 중요도를 확인할수 있는 모델 해석 기술 방법은 있는듯하나 굉장히 번거로운 과정을 거쳐야하는것같다. random forest나 GradientBoostingRegressor같은 트리구조의 기계학습을 사용하는 경우에는 중요도를 바로 확인할수있어서 특정 변수가 모델의 예측에 중요한 역할을 한다는 나의 이론이 실제 모델과 일치하는지 여부를 확인할 수 있다는 장점이 있는듯하다.