for Study & Insight

STAG 프로젝트 진행 현황, 추후 계획

|

2달간의 여정

첫번째 STAG 프로젝트의 개요를 올리고 난지 2달가량이 지났다.

저번에 언급했던 클린 코드& 아키텍처를 모두 읽고난 뒤에 여러가지 코드에 대한 생각을 간추려냈다.

당시 수능공부가 겹쳐있어 굉장히 적은시간동안의 코딩이 허용되었지만 위의 책을 접한 나의 코드 접근법은 완전히 달라졌었다.

먼저 해당 프로젝트의 중요도를 4가지 케이스로 나누어 가장 우선시 되야하고 중요한 요소인 모델링과 학습을 시간을 쪼개 코드를 완성시키는데 성공했다.

단지 아쉬운 점이 있었다면 코드스타일을 정할때 UpperCase로 작성하게되는 이상한 버릇이 들었었다. 과도기라 생각하고 수능이 끝나는대로 리펙토링을 진행할꺼지만, 대체로 여러 언어들의 스타일을 접해본결과 스크립트, C, Java와 같이 C의 색이 묻어나는 언어들같은 경우엔 UpperCase 사용이 대다수이고 파이써닉한 언어가 snake_case 사용, C#이나 소수의 언어가 camelCase를 사용하는것 같다.

UpperCase로 깔끔하게 정리하는 것은 좋으나 파이썬 자체의 문법 생태구조를 면밀히 파악하지 못한 나의 실수라고 생각한다.

본론인 강화학습 모델링 과정을 서술하자면, 전단계 버전에서 코인 트레이딩 성공 확률이 50퍼에 수렴하는 도박모델이 되었는데, 이것은 손절 익절에 대한 자발적인 조작환경이 주어지지 않았기 때문에 발생한 결과였다.

아무래도 코인 트레이딩이란 대상을 강화학습 관점으로 보기엔 어떤 행동을 하면 보상을 줘야할지 제대로 모른 탓이 컸으며, 다시금 현재 유튜브나 영상매체들로 코인이나 주식 고수라 칭하는 사람들의 행동패턴을 정리하여 3가지 조작키를 이용한 강화학습 보상 환경과 에이전트를 구현하는데 성공했다.

이후 저번의 모델링이 단순한 CNN모델을 Transformer를 가미해 PPO를 거치는 과정이었는데, 비교적 논문들의 발전 수준이 2019년도까지가 한계치였다는 것을 발견하고는 새로운 모델을 도입하기로 마음을 먹었다. 딥러닝 계열에선 3년의 기술적 차이가 전체적 수치상으로 30% 이상의 성능적 혁신을 가하기 때문에 새로나온 학회나 컨퍼런스의 논문을 읽어둬야 하기 때문이다.

여러가지 강화학습 모델들을 살펴본 결과 Dreamer라는 구글사의 강화학습 신경망 모델 디자인을 보고 꽤나 흥미롭다 생각하여 앞선 모델에 활용, 코드 가독성이 우수한편인 Pytorch를 개발툴킷으로 정했다.

비교적 강화학습은 AlphaStar 이후로 구글이 관심을 쓰지않아 열화되었고 GPT씨리즈 등장이래 Transformer 기반의 연구가 대세이어서 기대가 되는 고성능의 모델이나 알고리즘이 개발되지 않은 것이 지금의 강화학습계의 상황인데, 본인은 Settings를 기존의 CNN이 아닌 Transformer로 해석하여 강화학습 모델을 돌리면 어떤가란 접근법에 의문을 가지고 있었다.

그러나 현재까지 Transformer를 이용한 강화학습연구는 크게 진행되고 있지 않고, 본인이 직접 개발해본 Transformer 기반의 모델이 Atari가 아닌 코인 트레이딩 환경에서 취약한 모습을 보이는 것을 보고 Transformer는 일단 다음 버전의 모델을 구현할때 차용하기로 하고, 일단 성과를 낼거같은 Dreamer 모델을 사용, 추후에 다음 알고리즘에서 얻은 접근방식을 다음 버전의 모델링에서 사용하기로 결정했다.

비교적 Pytorch 유저들의 적극적인 Tensorflow 코드의 Pytorch 코드 변환을 하는 추세 덕분인지, 내가 모델링에 공을 들이지 않아도 해당 코드를 참조 할 수 있었다. MIT 라이선스를 지원하는 juliusfrost의 작성된 Dreamer 구현 코드를 참조하고 rlpyt 으로 구현된 텐서환경을 본인코드에 맞게 수정했다.

원래의 저작권 인식을 감안하면 코드작성 시간을 늘려서라도 직접 변환코드를 만드는 사안을 채택하려 했으나, MIT 라이선스라는 것을 확인, 또한 의존성을 RLpyt 환경을 벗어나 Pytorch쪽에만 배정한 코드를 작성하고 또 이를 상업적인 이용을 하지 않았기 때문에 애써서 먼 길을 가지 않는 방향을 채택했다.

그리고 해당 코드의 포크 수가 갑자기 5개씩이나 늘어났던것을 보고 해당 프로젝트를 상업적인 용도로 사용하거나 개인이 한방성 투자에 사용해 막대한 손실이 일어날까봐 걱정이 되어 비공개로 전환하였다. 해당 소스코드를 모두 공개하진 않지만 요소의 설명을 위해서 일부 공개할 것이다. 또한 자체 모델의 구조는 인터넷 검색을 통해 용이하게 구할 수 있으니 도전하고 싶다면 해도 좋다.

그 후 직접 다시 10만원가량의 거래 경험, 그리고 고수라 불리는 사람들의 이론이 표현된 지표들을 참고해 차트환경을 만드는 코드를 구현하였다.

다음과 같은 코드들은 TDD를 통해 테스트 코드로 검증되었으며, 아래의 코드는 테스트의 일부다.

테스트 코드예시

TestTradeManager.py

from stag.TradeManager import

def test():
trader = FutureTrader()
try:
trader.CurrentPrice('BTCUSDT')
finally:
print("Checking current price doesn't Work.")

    try:
        trader.CallableUsdt()
    finally:
        print("Account calling doesn't work.")

TestCsvModify.py

from stag.DatasetBuilder import

URL = 'C:/Users/XXXXX/XXXXX/GitHub/STAG/stag/test/BTCUSDT-1.csv'

def test():
try:
BuildCsv(TIME_ONE_HOUR, 'BTCUSDT', URL)
finally:
print("Building Csv Doesn't Work.")

    try:
        TakeCsvData(URL)
    finally:
        print("Taking Csv Data Doesn't Work.")

    try:
        UpdateCsv(TIME_ONE_HOUR,'BTCUSDT', URL)
    finally:
        print("Updating Csv Doesn't Work.")

위를 보면 코드들이 이전 프로젝트 Cryptonalytics에서 보여준 하드한 코드들을 모두 높은 단계의 추상화 코드들로 감싸 구현하여 복잡해 보일수 있는 내부 함수를 보이지 않도록 작성했다.

또한 프로그램 자체의 파이토치 코드와의 분리를 시도하여 프레임워크에 끌려다니는, 의존성 문제를 해결하기 위한 구획 분리를 진행했다.

마치며

아직까지 포트폴리오 작성에 대한 방식을 유보해둔 상황이나, 머지않아 txt 파일이나 csv 파일 두가지 중 하나의 방법을 채택할 것이다.

아직까지 프로젝트가 완벽하게 구현되지 않았고 수능이 머지않아 다가오는 입장에서 일단은 개발 속도를 늦출 수 밖에 없어 아쉬울 따름이다.

임시 연장 기간 추가

현재 괜찮은 프로젝트 아이디어가 떠올라 본 프로젝트의 개발은 임시로 연기하기로 했습니다.

Comment  Read more

STAG 프로젝트 진행 현황, 추후 계획

|

2달간의 여정

첫번째 STAG 프로젝트의 개요를 올리고 난지 2달가량이 지났다.

저번에 언급했던 클린 코드& 아키텍처를 모두 읽고난 뒤에 여러가지 코드에 대한 생각을 간추려냈다.

당시 수능공부가 겹쳐있어 굉장히 적은시간동안의 코딩이 허용되었지만 위의 책을 접한 나의 코드 접근법은 완전히 달라졌었다.

먼저 해당 프로젝트의 중요도를 4가지 케이스로 나누어 가장 우선시 되야하고 중요한 요소인 모델링과 학습을 시간을 쪼개 코드를 완성시키는데 성공했다.

단지 아쉬운 점이 있었다면 코드스타일을 정할때 UpperCase로 작성하게되는 이상한 버릇이 들었었다. 과도기라 생각하고 수능이 끝나는대로 리펙토링을 진행할꺼지만, 대체로 여러 언어들의 스타일을 접해본결과 스크립트, C, Java와 같이 C의 색이 묻어나는 언어들같은 경우엔 UpperCase 사용이 대다수이고 파이써닉한 언어가 snake_case 사용, C#이나 소수의 언어가 camelCase를 사용하는것 같다.

UpperCase로 깔끔하게 정리하는 것은 좋으나 파이썬 자체의 문법 생태구조를 면밀히 파악하지 못한 나의 실수라고 생각한다.

본론인 강화학습 모델링 과정을 서술하자면, 전단계 버전에서 코인 트레이딩 성공 확률이 50퍼에 수렴하는 도박모델이 되었는데, 이것은 손절 익절에 대한 자발적인 조작환경이 주어지지 않았기 때문에 발생한 결과였다.

아무래도 코인 트레이딩이란 대상을 강화학습 관점으로 보기엔 어떤 행동을 하면 보상을 줘야할지 제대로 모른 탓이 컸으며, 다시금 현재 유튜브나 영상매체들로 코인이나 주식 고수라 칭하는 사람들의 행동패턴을 정리하여 3가지 조작키를 이용한 강화학습 보상 환경과 에이전트를 구현하는데 성공했다.

이후 저번의 모델링이 단순한 CNN모델을 Transformer를 가미해 PPO를 거치는 과정이었는데, 비교적 논문들의 발전 수준이 2019년도까지가 한계치였다는 것을 발견하고는 새로운 모델을 도입하기로 마음을 먹었다. 딥러닝 계열에선 3년의 기술적 차이가 전체적 수치상으로 30% 이상의 성능적 혁신을 가하기 때문에 새로나온 학회나 컨퍼런스의 논문을 읽어둬야 하기 때문이다.

여러가지 강화학습 모델들을 살펴본 결과 Dreamer라는 구글사의 강화학습 신경망 모델 디자인을 보고 꽤나 흥미롭다 생각하여 앞선 모델에 활용, 코드 가독성이 우수한편인 Pytorch를 개발툴킷으로 정했다.

비교적 강화학습은 AlphaStar 이후로 구글이 관심을 쓰지않아 열화되었고 GPT씨리즈 등장이래 Transformer 기반의 연구가 대세이어서 기대가 되는 고성능의 모델이나 알고리즘이 개발되지 않은 것이 지금의 강화학습계의 상황인데, 본인은 Settings를 기존의 CNN이 아닌 Transformer로 해석하여 강화학습 모델을 돌리면 어떤가란 접근법에 의문을 가지고 있었다.

그러나 현재까지 Transformer를 이용한 강화학습연구는 크게 진행되고 있지 않고, 본인이 직접 개발해본 Transformer 기반의 모델이 Atari가 아닌 코인 트레이딩 환경에서 취약한 모습을 보이는 것을 보고 Transformer는 일단 다음 버전의 모델을 구현할때 차용하기로 하고, 일단 성과를 낼거같은 Dreamer 모델을 사용, 추후에 다음 알고리즘에서 얻은 접근방식을 다음 버전의 모델링에서 사용하기로 결정했다.

비교적 Pytorch 유저들의 적극적인 Tensorflow 코드의 Pytorch 코드 변환을 하는 추세 덕분인지, 내가 모델링에 공을 들이지 않아도 해당 코드를 참조 할 수 있었다. MIT 라이선스를 지원하는 juliusfrost의 작성된 Dreamer 구현 코드를 참조하고 rlpyt 으로 구현된 텐서환경을 본인코드에 맞게 수정했다.

원래의 저작권 인식을 감안하면 코드작성 시간을 늘려서라도 직접 변환코드를 만드는 사안을 채택하려 했으나, MIT 라이선스라는 것을 확인, 또한 의존성을 RLpyt 환경을 벗어나 Pytorch쪽에만 배정한 코드를 작성하고 또 이를 상업적인 이용을 하지 않았기 때문에 애써서 먼 길을 가지 않는 방향을 채택했다.

그리고 해당 코드의 포크 수가 갑자기 5개씩이나 늘어났던것을 보고 해당 프로젝트를 상업적인 용도로 사용하거나 개인이 한방성 투자에 사용해 막대한 손실이 일어날까봐 걱정이 되어 비공개로 전환하였다. 해당 소스코드를 모두 공개하진 않지만 요소의 설명을 위해서 일부 공개할 것이다. 또한 자체 모델의 구조는 인터넷 검색을 통해 용이하게 구할 수 있으니 도전하고 싶다면 해도 좋다.

그 후 직접 다시 10만원가량의 거래 경험, 그리고 고수라 불리는 사람들의 이론이 표현된 지표들을 참고해 차트환경을 만드는 코드를 구현하였다.

다음과 같은 코드들은 TDD를 통해 테스트 코드로 검증되었으며, 아래의 코드는 테스트의 일부다.

테스트 코드예시

TestTradeManager.py

from stag.TradeManager import

def test():
trader = FutureTrader()
try:
trader.CurrentPrice('BTCUSDT')
finally:
print("Checking current price doesn't Work.")

    try:
        trader.CallableUsdt()
    finally:
        print("Account calling doesn't work.")

TestCsvModify.py

from stag.DatasetBuilder import

URL = 'C:/Users/XXXXX/XXXXX/GitHub/STAG/stag/test/BTCUSDT-1.csv'

def test():
try:
BuildCsv(TIME_ONE_HOUR, 'BTCUSDT', URL)
finally:
print("Building Csv Doesn't Work.")

    try:
        TakeCsvData(URL)
    finally:
        print("Taking Csv Data Doesn't Work.")

    try:
        UpdateCsv(TIME_ONE_HOUR,'BTCUSDT', URL)
    finally:
        print("Updating Csv Doesn't Work.")

위를 보면 코드들이 이전 프로젝트 Cryptonalytics에서 보여준 하드한 코드들을 모두 높은 단계의 추상화 코드들로 감싸 구현하여 복잡해 보일수 있는 내부 함수를 보이지 않도록 작성했다.

또한 프로그램 자체의 파이토치 코드와의 분리를 시도하여 프레임워크에 끌려다니는, 의존성 문제를 해결하기 위한 구획 분리를 진행했다.

마치며

아직까지 포트폴리오 작성에 대한 방식을 유보해둔 상황이나, 머지않아 txt 파일이나 csv 파일 두가지 중 하나의 방법을 채택할 것이다.

아직까지 프로젝트가 완벽하게 구현되지 않았고 수능이 머지않아 다가오는 입장에서 일단은 개발 속도를 늦출 수 밖에 없어 아쉬울 따름이다.

Comment  Read more

STAG 프로젝트의 개요

|

개요

다음은 본인이 기획한 인공신경망 기반의 강화학습 알고리즘을 이용한 자동투자기인 STAG의 개발기록을 담는 첫번째 기록이다.

이 개인 프로그램 개발이 앞서 개발한 프로젝트와 유사하게 실패로 끝날 수도 있지만, 경험치를 쌓기 위해선 끊임없는 도전과 실패에 대한 자기 수복이 앞서야 한다는 사실을 깨달았으며, 개인블로그에 다음과 같은 기록을 남기는데 큰 의의를 둔다.

Cryptonaltics

본인은 이 STAG 프로젝트를 기획하기 전의 인공지능 자동 투자기인 Cryptonalytics를 2개월 18일간 개발을 했던 경험이 있었다.

당시 대학수학능력시험을 다시 봐야한다는 부담감과 4월달의 빅스텝으로 인한 코인 시장의 대규모 변동이 겹쳐지는 상황에서 프로젝트를 기획했는데 인공신경망을 활용한 당시의 설계했던 모델이 실제 포지션예측을 하는데까지엔 이르렀으나,

포지션 종결을 언제 지을지, 또 얼마 만큼의 보상을 할지에 대한 마르코브 연쇄모델을 설계하는데 어려움에 봉착하여 해당 프로젝트를 반 정도에서 그만두게 되었다.

이번 프로젝트인 STAG에선 보상에 대한 Markov-Chain을 직접적인 트레이딩 경험을 통해 결정하는데 성공했고, 목표 기한도 2022년 말까지로 지정하여(11월 16일일날 대학수학능력시험이 있기 때문에 이런 결정을 내렸다.) 인공지능 트레이딩 시스템 구축에 목표를 두기로 하고 이 글을 작성한다.

코드적인 실패의 이유들

핑계없는 무덤이 없다는 관용표현이 어울리게도, 프로그래머에게 있어서 실패를 경험하는 일은 단순히 업무가 바빠서, 개발기간이 촉박해서 와 같은 핑계로 자신의 프로젝트의 실패를 감싸는 행위는 자기발전을 저해하는 나쁜 행위이다.

이전 프로젝트가 실패하고, 본인은 이 프로젝트가 왜 실패했는지에 대해서 지난 2개월간 고민을 하고 이번 프로젝트에서 이를 개선해 더 업그레이드 된 버전의 프로젝트를 만들기로 마음먹었다.

프로젝트 기획에 앞서 이전 프로젝트의 실패 원인을 담은 분석을 한 뒤에 프로그래머들의 바이블과도 같다는 클린코드 를 접하고 나의 코드에 대한 태도들을 정리하고 아래와 같은 실패의 이유 크게 두가지를 적었다.

개발하는 프로젝트의 메커니즘도 파악하지 않은 채 상향식 설계를 했다.

차트만을 이용한 투자를 위해 본인은 유명한 투자자의 투자 철학이나 블로거나 유튜버 등지의 자료를 모아 이를 코드화 하고 실험을 하려 했다.

차트 분석으로 돈좀 벌었다는 사람들이 소개를 하는 여러 인터넷 자료들을 접하면, 기술적 분석이라든지, 상한가 따라잡기 이런 중구난방한 투자 기술들이 수록되어 있는 모습을 볼 수 있다.

해당 자료중 효용성이 있다는 것들을 모두 간추려 조사하고 한 프로젝트안에 녹여내는데 공을 들이느라 라이브러리처럼 상향식 설계 후 개발을 해야겠다고 느꼈고 다음과 같은 판단은 이내 곧 재앙으로 찾아왔다.

볼린저 밴드, 이동평균선, 상대강도지수라 불리는 세가지의 지표들과 Meta Research에서 제공하는 NeuralProphet과 같은 여러 자료들을 적용한 모델을 개발을 하면서 일일이 실험하는 작업을 하니 실험하는 모델의 파이썬 파일의 갯수도 치명적으로 늘어났고 불러오는 모듈의 상속이나 코드의 파일의 경로 같은게 모두 엉키기 시작했다.

이런 노가다 끝에 다음 목차인 알고리즘에 대해 실패한 이유를 말하면서 다음과 같은 지표가 무의미하단 사실을 입증할 수 있었지만 위의 목적에 맞게 코드적인 이유를 서술하자면, 결국 어떤 목표를 가진 프로그램은 기본적인 구성이 하향식 설계다.

상향식 설계로 다양한 코드들을 적용하고 실험하는 과정은 별도의 연구 프로젝트를 두어서 상향식 설계안에서 여러 파일을 두고 실험하거나 테스트 코드 처리를 해 여러 코드들로 테스트 주도 개발을 진행해야했던 것이다.

결국 기꺼이 만들어냈던 GUI의 초기설계와 완전히 다른 결과물이 나와 GUI 코드들을 모두 버려야했던 안타까운 결과를 맞이 했었다.

테스트 주도 개발(TDD)를 하지 않았다.

본인이 다시보는 대학수학능력시험 공부를 준비하느라 테스트 과정을 생략해야겠다고 생각하고 개발을 진행했으나 이것은 큰 오산이었다.

애초에 프로젝트의 목표와 개발과정이 R&D의 형태를 띄어야지만 프로젝트 성과가 나오는 구조였는데, 연구과정을 개발과정의 코드에 그대로 접목시키니 말그대로 N가지의 방식을 연구하면 N가지 이상의 코드가 나오게 되는 구조 였고, 이를 일일이 코드를 갈아업고 다시 코드를 쓰는 과정을 거치니 시간이 2배 이상이 걸리게 되었다.

단순히 연구과정의 파일들을 모두 테스트 파일 안에서 처리하거나 연구용 Repo를 별도로써 연구작업에만 몰두했다면 2주일이면 충분히 연구를 끝내고 1달에 개발을 완수하지 않았으까 생각이 된다.

이외에도 ‘클린코드’란 도서를 읽으면서 본인이 코드내에 직접적으로 저지른 실수들이 넘쳐나나, 그런 디테일을 일일이 적는 것은 이 글의 주제에서 과하게 벗어나기 때문에 생략한다.

알고리즘적인 사유

알고리즘적인 사유에서 내가 서술할 것은 내가 실험과정을 거치면서 얻게된 투자 기법에 대한 사실이나 메커니즘을 적을 것이다.

프로그래머로서의 실수가 아니기에 직접적인 투자를 하는 투자자들한테도 좋은 영감이 되지 않을까 싶다.

지표는 어디까지나 직접적으로 투자 상품의 하락과 상승을 반영하지 않는다.

이내 결국 직접적인 투자경험과 딥러닝 모델의 테스트를 수행하면서 다음과 같은 지표나 예측 자료들은 모두 직접적인 연관도를 갖지 않는다는 사실을 이내 알게 되었다.

본인은 실제 블로그 포스트나 인터넷 강의를 올리는 사람들이 지표를 활용해 기술적 투자를 하는 사람들이 꽤 있다는 사실을 안다.

하지만 본인이 딥러닝의 분야중 강화학습 기법, 또는 CNN의 Classfication을 통한 상승-하락 예측 모델들은 어떤 성능의 CNN모델이나 Transformer를 적용하더라도 49.5 ~ 49.9%의 적중률을 보여주었다.

한마디로 오르거나 내리거나 반반이니까 그냥 재비뽑기한 셈이다.

귀납적인 사유로는 납득을 못할수도 있으니까(니가 모델을 못짜서 그렇겠지)

연역적인 사유를 들어서 대표적으로 이동평균선을 활용한 골든 크로스와 데드크로스 기법을 이야기해보자.

(사진 자료 첨부 필요)

위의 사진과 같은 지표의 매매법은 간단한 사고실험만으로도 엿장수 마음대로라는 사실을 알 수 있다.

예시를 들어서 저 이동평균선의 기한이 짧은 이평선이 7 기한이 긴 이평선이 21의 계수로 이어져 있다고 가정하자.

(사진 자료 첨부 필요 2)

그럴 경우의 이동평균선이 위의 사진과 같은 골든크로스를 가진다 했을 때 오른다쳐도 그래프가 뭉게지면서 다시금 데드크로스로 이렇게 바뀌는 차트가 나오기도 한다!

이런식으로 차트가 바뀐다면 지표 세팅을 (7,21)이 아니라 (5,15) 이렇게 더 좁게 세팅했어야하지 않은가?

만약 반대로 차트가 늘어진다면 또 지표를 늘려서 봐야하지 않는가? 그럼 어떤 상황에는 그래프에 일치하고 어떤 상황에는 그래프와 다르다는 사실을 금세 알아차릴것이다.

이는 결국 기술적 지표가 매수 매도 원리에 직접적인 판단 수단이 결코 될 수 없다는 의미이다.

결국 아무리 이러한 지표 기법을 잘 활용하는 사람이더라도 어디까지나 보조적인 수단에 해당하지 실질적인 가격의 상승과 하락을 예견하는 절대적인 요소가 아니다.

주기성을 이용한 예측은 무의미하다.

본인이 주기성 가설을 듣고 Meta Research 사에서 나온 Neural Prophet 모듈을 적용하려 했을때 이 논문은 당당하게 가상화폐의 주기성에 대해서 논하였다. (영어 울렁증이 심한 독자를 위해 한국어 논문으로 가져왔다.)

https://koreascience.kr/article/JAKO201817971494912.pdf

위 내용은 가상화폐의 상승-하락의 주기성이나 패턴이 존재하는가를 조사한 논문이다.

논문에선 비트코인이란 상품의 주기성 패턴이 존재하지 않는다고 언급하고 있다.

그외에도 다른 논문들의 내용을 요약하자면 주식과 가상화폐을 포함한 대부분의 투자 상품에 오르고 내리는 주기란 있을 수 없으며, 차트 데이터 외에 다른 악재나 호재의 요소들을 분석해야만 예측이 가능한 것이다.

예측할 수 없다면 고수들은 어떻게 버는 건데?

차트만 보고 실제 고수익을 올리는 고수들의 투자법을 요약하자면 극심한 변덕쟁이이다.

오른다는것도 몇번보다 내린다 생각해 공매도(숏)를 올리고, 내린다 생각하는것도 반등이 오는 것을 포착하여 매수를 해 수익을 올리고 유유히 수익을 들고 나온다.

말그대로 오르고 내리고를 수천번의 트레이딩을 거쳐 떨어질지 내릴지에 대한 눈치싸움의 고수가 된 것이다.

근데 그걸 지표와 같은 보조적인 수단을 통해서나 어떤 방식으로든 컨디션을 유지하고 있는 상황인 것이다.

그렇기에 어떤 투자 이론과 방법을 사용하더라도 누군가는 수익을 올리고 누군가는 손실을 겪는다.

본인이 기획하고 있는 프로젝트의 뜻이 투기꾼(Stagger)의 의미를 갖고 있는 것도 강화학습으로 이런 눈치싸움을 시키는데서 아이디어를 착안했으며, 언제든지 눈치싸움에 패배해 손실을 겪을 수 있는걸 전제하기 때문에 이런 프로그램을 만들고 누구나 퍼갈 수 있게 오픈 소스로 개발하는 것이다.

끝말 (소감& 개발에 앞서)

본인도 가상화폐 투자 실험을 하면서 20만원정도의 손실을 겪었으나, 달리 생각하면 남들은 적게는 몇백, 많게는 천에서 억까지 잃는 투자의 중요한 사실들을 드라마틱한 손실없이 이해했기에 어쩌면 본인의 자산관리를 하는데 있어 중요한 교훈을 많이 남긴거 같다. 이 프로젝트도 높은 점수를 기록한다고 절대로 많은 금액을 넣지도 않을 것이며, 하나의 개발 경험(커리어)으로 남기는데 의의를 둘 것이다.

Comment  Read more