저는 딥러닝에 대해 이곳 갤러분들보다 경험이나 지식이 부족한 아직 초보입니다.
비트코인 단타 거래를 위한 시스템을 만들어 본 경험을 얘기해보려 합니다.
업비트 거래소의 경우 수수료가 0.05% 입니다. 그래서 한 번 사고 팔면 수수료 0.1% 빠집니다.
보통 차트가 출렁일 때, 0.1%의 수수료 벽을 넘어 수익을 낼 수 있는 시점이 하루에 몇 번 발생합니다.
거래가 터지기 시작해서 차트가 순간 올라갈 때나 갑자기 매도가 터저 차트가 내려갈 때 바로 반응해서 단타 거래를 통해 수익을 내도록 시스템을 만들어 봤습니다.
이러한 단타 거래는 짧게는 과거 2~3분간의 거래 데이터의 흐름을 분석하거나 가장 길게는 과거 10~15분 사이 거래 기록을 가지고 트레이닝 합니다. 이보다 더 긴 과거의 데이타는 제 경험상 별 효과가 없었습니다.
PPO를 이용한 강화학습 트레이닝 과정에 대한 경험
1. 에이전트가 수수료의 벽을 넘어 수익을 낼 수 있는 단계까지 훈련하는 과정에서 어느정도 성과가(평균 500만 스텝) 보이더니 결국 포기를 했는지 거래를 안합니다.
매수 매도를 안하고 관망만 합니다.
딥러닝 알고리즘이 암호화폐 거래는 하지 말라고 말하는거 같습니다. 저는 차트 데이터만 넣었는데 세계 경제 흐름까지 보이나 봅니다.
2. 그래서 수수료를 없애고 트레이닝을 해봤습니다.
이넘이 수수료가 없으니 엄청난 수익을 냅니다. 다만 거래가 너무 많이 발생하여 수수료를 제하면 여전히 마이너스 입니다.
예를들어 0.025% 수익을 내는 거래를 한 시간에 수백건 합니다.
3. 그래서 수수료 계산을 정상적으로 한 후, 일정 시간 매수를 안하면 패널티를 줘 봤습니다.
어느정도 트레이닝 후(보통 500만 스텝 이 후) 수익을 내는 거래를 발생시킵니다.
저는 결국 성공한줄 알았습니다. "자신감 뿜뿜"
그런데!!! 정상적으로 작동하던 녀석이 매수 후 갑작스런 하락이 발생하면 패널티가 두려운건지 매도를 하지 않습니다.
손절한 타이밍을 놓칠때가 있는데 이 땐 수익이 -1% 넘어도 손절하지 않습니다. 이녀석한테는 -1% 손절 매도는 야구빠따로 쳐맞는 수준의 패널티 입니다.
이럴 때 마다 이녀석이 갑자기 장기 투자자가 되어버립니다.
"내 돈도 아니고, 패널티를 받으니 매도를 안한다~" 같습니다.
언젠가는 오를 것이다 라는 생각으로 기다리다가 결국 하루 뒤에 수익을 내며 매도를 하기도 하지만 문제는 그 하루 동안 수익을 낼 수 있는 많은 기회를 버리게 되어 오히려 손해가 더 크기도 하고 -1%을 넘어 -5%로 떨어져도 매도를 하지 않는게 문제입니다.
갑작스런 폭락은 사람뿐만 아니라 인공지능도 당황하게 만든다는걸 알게되었습니다.
정리하자면,
RL은 데이타도 중요하지만 리워드를 어떻게 줄지, 리워드에 대한 정책에 따라 어마어마한 차이가 있다는걸 알게되었습니다.
어떤 방식으로 어떤 시점에 보상을 줄지, 어떤 행동에 더 패널티를 줘야 할지에 따라 행동패턴이 달라집니다.
예를들어 순간적인 폭락에 대응해서 -0.5% 시점에 매도를 해 -2%까지 떨어지는걸 막아 결과적으로 옳은 행동을 했지만 -0.5% 수익을 냈으니 리워드는 마이너스로 받게 됩니다. 이런 단순한 보상정책은 훈련을 힘들게 하고 성능을 떨어뜨리게 만든다는걸 알게되었습니다.
[핵심정리]
강화학습으로 암화화폐 거래를 트레이닝 하면 정확하게 개발자가 의도한대로 움직인다. 다만 의도한대로만 움직일 뿐 어떤 마법같은건 기대하지 말자.
그래서~ 강화학습으로 암호화폐 단타거래 시스템을 만드는건 가능하다. 하지만 나는 보상정책에 대해 뭔가 번뜩이는 아이디어를 아직 못찾았다.
결국 사람이나 인공지능이나 다루기 힘든건 마찬가지 같습니다.
당연함. 패턴이 밝혀졌으면 돈 다벌었지 패턴이 없는게 문제. - dc App
제가 테스트해본 경험과 RL에이전트가 게임 "리그오브레전드"를 프로게이머팀보다 잘 하는걸 보고 저는 가능성 있다 봅니다. 지금도 누군가는 RL을 이용해 트레이딩을 하고 있을거라 봅니다. 다만 아직 제가 실력이 부족해 리워드값 하나로 에이전트에게 모든 의도를 함축적으로 전달할 수 밖에 없어. 제가 좀 더 공부가 필요한 것 뿐이라 봅니다.
모든 의도를 함축적으로 스칼라에 담는것자체가 불가능할 수도 있죠. 현실을 mdp에 우겨넣는 데에는 한계가있다고 봅니다
크립토는 너무 랜덤워크 아닌가
학습방법이 문제가아닌 데이터가 문제라생각 - dc App
나중에 데이터피쳐링 다시해서 결과가 좋으면 이곳에 글 올리겠습니다.
재밋게 잘 읽었습니다
개추 - dc App
바이넨스 수수료 0원인데
터틀트레이딩이라는 책 추천 실제 증권사 트레이더들이 사용하는 원칙 정리되어있음
finance전공자인데 finance 주가 데이터엔 패턴이 있을수가 없습니다. 극초단타가 아닌이상
나도 finance 전공자인데 그거 다 가정일 뿐이고 실제적으로 패턴 관측되는거 데이터 까보면 알잖아?
인공지능이 가능한 영역인지 판단하는 기준: 1. 어느 도메인에서 특출안 성과를 내는 사람이 없이 모두 비슷하다 -> 인공지능 영역이 아님, 2. 단 한명이라고 지속적으로 특출난 성과를 내는 사람이 존재한다. (에: 트레이딩 고수) -> 인공지능이 100배는 잘할수 있는 분야임. (아직 구현 방법을 찾지 못했을뿐..)
트레이딩 RL에서 방법을 지정하면 안될 듯. 예를들어 알파고든 뭐든 1회의 타격에 대한 성적을 판단하는 게 아니고, 누적된 최종 결과만 판단함. (승/패) 따라서, 트레이딩 역시 특정 기간동안의 총 수익률을 보상값으로 해야함. 단지 RL 자체가 많은 계산용량과 학습 시간을 요구하는게 문제이고, 누적 총수익률을 보상치 기준으로 했을 때 가격들의 움직임(랜덤워크)들이 과연 학습 가능한가? 라는 문제가 있음. 바둑처럼 무한한 경우의 수들의 나열조차 학습가능하지만, 애시당초 랜덤워크라면 학습이 불가능하거나 예측이 튈 수 밖에 없고 실물투자에서는 이런 작은 약점이 치명적 결과를 낳을 수 있음.
근데 거래 수수료 없는 곳이 없나? 수수료 없는 곳을 찾아서 투자해보면 좋을 듯.