머신러닝 모델에 최적화된 캔들차트 비트맵 이미지 생성

mplfinance의 캔들차트 생성기를 이용해서 캔들차트를 만들다 보니 마음에 안드는 부분이 많았다.



필요한 부분 외에도 상하좌우 에 여백이 너무 많고 각각의 캔들마다 open-close 막대와 high-low 막대의 상대적인 가로위치가 다른점 등, 학습에 적당하지 않고 적합하지 않다는 생각이 드는 부분이 많았다. 이러한 부분들을 일정하게 맞춰 준다고 하더라도 모델의 성능이 더 좋아 질것이라는 보장은 없다. 모델 성능이 향상될것이라는 가정을 가지고 캔들차트를 생성하는 함수를 만들어 보기로 했다.

지금까지 사용했던 캔들차트 생성함수는 mplfinance의 캔들스틱 생성함수를 이용했고 차트의 모양이 정사각형 형태가 되도록 했다. 일반적으로 비트맵이미지를 이용하지만 벡터 이미지를 연구해보는 것도 충분한 가치가 있을 것 같다.

캔들차트를 비트맵 이미지로 만들기 위해서는 고려해야할 사항들을 몇개 추려 보았다.

  1. 차트의 가로, 세로 스케일을 어떻게 결정 할 것인가.
    • 가로 스케일은 임의대로 정해도 큰 문제 없겠지만 문제는 세로 스케일이다. 정해진 시퀀스만큼 기간을 잘라서 그 기간만큼의 캔들차트를 생성하게 될 탠데 각 기간마다 최고점과 최저점의 단차가 다르다. 즉 같은 날짜의 데이터라도 어떤 기간에 포함되어있느냐에 따라서 그 높이가 달라지게 된다. mplfinance 또한 그러한 방법을 사용하고 있다. 이는 학습데이터의 크기가 일정해야하기 떄문에 생긴다. 가로 세로 픽셀의 크기가 작을수록 해당지점의 가격이 정확하게 표시될 수 없다는 허점 또한 있다. 하지만 복잡한 데이터들을 두루뭉실하게 표현하면 데이터의 노이즈가 사라지는 효과또한 생길것이라고 예측했다. 가격데이터의 노이즈는 매우 심하기 때문에 오히려 이점으로 작용할 것이라고 기대했다. 가로길이는 각 캔들사이즈와 시퀀스의 길이에 딱맞게 조정하고 세로 스케일을 여러가지 방법으로 정해서 실험해 보고 스케일을 조정했을 때 진짜 노이즈 제거 효과가 있는지, 만약에 있다면 어떤 원리로 노이즈제거가 되고 스케일을 어떻게 조정했을 때 효과가 극대화 되는지 또한 연구해 볼만 한 가치가 있는것 같다.
  2. 각 캔들을 어떠한 모양으로 만들 것인가.
    • high-low 막대는 너비 1px, open-close 막대 너비를 3px로 해보기로 했다. 일반적인 캔들차트처럼 open-close막대 중간 에 high-low 막대가 있는 형태와 서로 겹치지않고 옆에 있는 형태 모두 시도 해 보기로 했다.
  3. 캔들의 색상은 어떻게 할 것인가.
    • open-close 막대와 high-low 막대의 색을 구분할 것인지 아닌지에 대해서도 차이점을 두어 실험해 보기로 했다.
  4. high-low 막대를 사용할 것인가.
    • high-low 막대를 사용하지 않고 open-close 막대만을 사용했을때의 차이점도 살펴보기로 했다.

일단 시퀀스 길이가 20인 경우만 먼저 고려해 보기로 했다.

Updated: