CHAPTER 03 / SECTION 05
3.5 금융 시계열에 맞춘 GAN
순서와 꼬리, 경로 모양과 불규칙 관측을 다루는 네 가지 GAN을 비교합니다.
생성기와 판별기가 번갈아 학습한다
지우는 과거 시장 기록과 컴퓨터가 만든 시장 기록을 나란히 놓고, 두 자료를 구분하는 프로그램을 훈련한다. 합성 기록에서 두 시장이 매일 똑같이 움직인다면 프로그램은 그 특징을 보고 쉽게 구분할 수 있다. 경로를 만드는 쪽은 그런 단서가 줄도록 학습한다. 이렇게 경로를 만드는 모델과 출처를 가리는 모델을 함께 훈련하는 방식이 Generative Adversarial Network(생성적 적대 신경망, GAN)다.
Generator(생성기)는 무작위 입력을 받아 경로를 만든다. Discriminator(판별기)는 실제 경로와 생성 경로를 받아 출처를 구분하는 방향으로 학습한다. 다음에는 판별기의 평가를 바탕으로 생성기를 바꾼다. 생성기가 비슷한 결과만 반복하는 Mode Collapse(모드 붕괴)가 생길 수 있으므로, 학습 손실 외에 국면별 빈도와 보류 자료의 구조도 확인한다.
다음 날의 흐름과 드문 큰 손실은 서로 다른 목표다
지우의 기록에서는 두 시장이 크게 떨어진 뒤 며칠 더 크게 흔들렸다. 그런데 하루 단위로 그럴듯한 값만 만들면 ‘크게 흔들린 다음 날에도 크게 흔들린다’는 연결이 빠질 수 있다. TimeGAN(시계열 생성적 적대 신경망)은 이 연결을 따로 학습한다.
먼저 여러 시장의 움직임을 적은 수의 숫자로 요약하고, 그 숫자로 원래 값을 복원하는 연습을 한다. 다음으로 오늘의 요약을 보고 내일의 요약을 예상하는 연습을 한다. 마지막에는 원래 값을 얼마나 잘 복원하는지, 다음 날로 자연스럽게 이어지는지, 생성 기록이 실제와 닮았는지를 함께 고려한다.
TimeGAN의 일반적인 구현은 일정한 간격의 자료를 전제로 한다. 출력이 0부터 1까지로 제한된 구현에 음수와 양수가 섞인 수익률을 넣으려면 스케일을 변환하고 되돌리거나 출력층을 바꿔야 한다. 순서 학습을 추가해도 급락 빈도와 자산 간 의존성이 자동으로 맞춰지지는 않는다.
지우가 가상의 일별 손실 100개를 작은 값부터 큰 값까지 정렬한다고 하자. 손실을 양수로 적으면 Value-at-Risk(위험가치, VaR)는 큰 손실 5%가 시작되는 경계를 뜻한다. 경계가 7%라면, 그보다 큰 손실은 드문 쪽에 속한다. 그 경계가 손실의 최대치라는 뜻은 아니다.
Expected Shortfall(기대 초과손실, ES)은 가장 큰 손실 5%가 평균적으로 얼마나 큰지 보여 준다. 손실이 가장 큰 다섯 날이 각각 8%, 9%, 10%, 11%, 12%였다면 그 평균인 10%가 이 예시의 ES다. Tail-GAN(꼬리 위험을 겨냥한 생성적 적대 신경망)은 지우가 고른 포트폴리오에서 이 두 값이 실제 자료와 비슷해지도록 훈련한다.
이 비중에서 수치가 맞아도 국내 주식 비중을 80%로 높이면 꼬리 손실이 달라질 수 있다. 하루 손실 분포가 맞아도 급락이 여러 날 모이는 순서까지 일치한다는 보장도 없다.
같은 종점이라도 지나온 경로와 관측 시각이 중요하다
가격이 100에서 90을 거쳐 다시 100이 된 경로와, 100에서 110을 거쳐 다시 100이 된 경로는 출발점과 도착점이 같다. 하지만 처음 투자한 돈보다 10% 아래로 내려간 적이 있는 경로는 첫 번째뿐이다.
두 시장을 함께 보면 순서의 차이가 더 잘 드러난다. 국내가 먼저 떨어지고 해외가 나중에 떨어진 경로와 그 순서가 뒤집힌 경로는 두 시장의 최종 손실이 같아도 중간 모습이 다르다. Path Signature(경로 서명)는 이런 움직임의 순서와 관계를 숫자로 요약한다. Sig-CWGAN(경로 서명 기반 조건부 생성 모델)은 그 요약을 비교해 실제 경로와 비슷한 순서를 가진 경로를 만들도록 학습한다. 1분 뒤에 떨어졌는지 1시간 뒤에 떨어졌는지도 중요하면 시각을 입력에 따로 넣는다. 자산 수나 요약의 세부 수준이 높아지면 계산량이 빠르게 늘고, 요약이 간단하면 작은 차이가 빠질 수 있다.
GT-GAN(일반 시계열 생성적 적대 신경망)은 거래가 09:00:01, 09:00:02, 09:00:40처럼 일정하지 않은 간격으로 들어올 때 쓸 수 있다. 앞 거래부터 다음 거래까지 1초가 지난 경우와 38초가 지난 경우를 구분해 다룬다. 모델이 시간에 따라 값이 변하는 속도를 학습하면 관측 사이에서도 필요한 시각의 값을 만들 수 있다. 이때 쓰는 변화 규칙을 Neural Ordinary Differential Equation(신경망 상미분방정식)이라고 한다. 판별 과정에도 관측 시각을 전달한다. 시각 간격에 의미가 있는 자료에서 비교할 방법이며, 매일 같은 시간의 종가에는 일정 간격을 전제한 모델이 단순하다. 보간 곡선이 매끄러우면 실제 거래의 급변도 남았는지 확인한다.