개발팀 [20] · MS 2009 (수정됨) · 쪽지

2018-04-06 14:37:50
조회수 10,347

무브 인공지능 트레이더 개발자의 N차원 코딩 이야기

게시글 주소: https://i.orbi.kr/00016740434

안녕하세요


몇달 전 https://orbi.kr/00013839609, https://orbi.kr/00014196521 두 글을 통해 소개된 인공지능 트레이더의 개발팀에 속해있는 개발자입니다. 오르비에 글로는 처음 인사드리는 것 같네요. 


작년 말 이후로 저희는 지속적인 연구와 모델의 업데이트를 통해 지금까지 트레이딩 봇을 모의/실제 환경에서 거래시키고 있습니다. 아직 해결해야 할 문제들이 많이 남아있고, 저희가 생각하는 이상적인 최종 모델에 도달하기까지는 갈 길이 멀지만, 긍정적인 시그널들과 희망을 바탕으로 한걸음씩 나아가고 있습니다. 2017년 12월 1일 창립 기념일을 맞아 실거래 계정에서 거래를 시작한 뒤로 벌써 만 4개월이 넘게 흘렀습니다. 그간 트레이더는 평균적으로 한달에 한번씩 최신 데이터를 학습한 모델로 변경되었고, 여러가지 흥미로운 결과들을 보여주고 있습니다. 물론 수익을 보는 날도 있고 손해를 보는 날도 있습니다만, 적어도 저희 판단에는 아직 "이 것은 안 되는 일이다" 라는 것은 들어있지 않습니다. 오늘도 저희 회사의 Titan X, Titan V, V100 (셋 다 그래픽카드입니다)은 다양한 변화와 최신의 데이터를 가지고 현재에 더 적합한 모델을 만들어내기 위해 열심히 모델을 훈련시키고 있습니다. 웹 개발만 하던 제가 이걸 하면서 회사에 서버를 다 세팅해보고, 회사에 갑자기 서버실같은 것도 생기고, 참 재밌는 일이 많이 있었네요.


(여기서부터는 기술적인 내용들이 나옵니다. 모르는 용어가 나오면 그냥 클라인병이나 사영평면같은 걸 보고 있다고 생각해주세요)


저희가 거래를 하는 증권사의 API를 활용하기 위해 현재 저희 Trader는 C# 으로 작성한 프로그램을 사용하고 있습니다. 그런데 제가 근본이 없는 개발자여서 파이썬을 주력으로 하고 있던 개발자여서 C# 프로그램을 유지보수하는 데에 꽤 큰 공이 들어가고 있고 결과적으로 전반적인 생산성이 떨어져 이를 파이썬으로 옮겨올 수 있는 방안을 찾아보고 있었습니다. 당초에 쓰려고 했던 라이브러리인 PyQt가 저희가 원하는 자료형을 제대로 지원하지 않는다는 것을 알고 새로운 방법을 찾던 도중 C++과 파이썬을 seamless하게 엮어줄 수 있다는 pybind라는 라이브러리를 찾았습니다. 이제 C#을 C++로 옮기기만 하면 됩... 어라?


이걸 좀 만져보니 재밌는 녀석이더군요. 원래 파이썬에서 C Extension 모듈을 붙여 쓸 수는 있습니다만, 이건 좀 더 편하게 고차원적인 작업을 할 수 있게 해줘서 안 쓸 이유가 없어보이는 녀석이었습니다. 혹시 파이썬의 실행 속도때문에 C계열의 언어로 라이브러리를 만들어 사용하고 싶으신 분이 있다면 꼭 한번 고려해보시길 추천드립니다. 해서 저는 이걸 이용해서 현재 C#으로 되어있는 Trader를 파이썬에서 사용할 수 있게 하는 작업을 시작했습니다. 이게 벌써 한 달쯤 된 일이네요.... 제가 근본이 없어서 C++ 경험이 일천해서.. 꽤 오랜 시간 이 문제로 고생을 하고 있던 차에 "우리는 문제도 공모를 하고 책도 공모를 하고 있는데 프로그램은 공모하지 못할 게 무어냐" 는 생각이 들어 오픈소스 정신으로(틀립니다) 프로그램을 공모하기 위한 시도를 해보기로 했습니다.


(여기서부터는 해당 분야에 대해 알고계신 분만 이해하실만한 내용들이 나옵니다. 관련 지식이 없는데도 읽어보고 싶으신 분들은 머릿속에 N차원 [시]공간을 상상하신 후 내용에 따라 N에 적절한 숫자를 대입해주세요)


위에서 간략하게 언급했듯 현재 오랜 시간 고생하고 있는 문제는 MFC ocx 컨트롤을 파이썬에서 자연스럽게 사용하는 방법을 찾는 것입니다. 현재까지 확인된 가장 가능성이 높은 작업은 pybind11을 이용하는 것이고, 이를 위해서 MFC C++ 경험이 필요하다는 것을 느꼈습니다. ocx 컨트롤이 증권사에서 발생시킨 이벤트를 받아 작업을 처리하는 함수가 있는데, 제가 확인하기로는 이 함수는 MFC Visual Control에만 바인딩할 수 있는 것 같네요. MFC도 AX/OLE도 경험이 없는 저로서는 이 방법이 맞는 방법인지 확인하는데도 너무 많은 삽질을 했습니다. 사실 PyQt를 사용할 수 있다면 가장 좋을 것 같은데(별도의 라이브러리 작성 없이 일을 해결할 수 있으니), 일단 제가 찾아본 바로는 이 방법은 쓸 수 없는 방법인 것 같네요. 앞에서 서술한 인공지능 트레이딩 봇의 코드베이스 이전 문제를 해결해주실 수 있는 분이 있다면 저희와 함께 해주시길 요청드립니다.


  1. 가장 좋은 것은 이 행동을 하는 모듈을 만들어주시는 것입니다. 꼭 Pybind일 필요도 없습니다.
  2. 이 방법이 되는 일이다 / 안 되는 일이다를 판단해주시는 것도 좋습니다.
  3. 본인의 경험을 바탕으로 이 문제에 대해 도움/조언을 주실 수 있다면 이 또한 환영합니다.


이상의 항목에 해당되는 분은 주저없이 dev@move.is로 연락주세요. 말씀드렸다시피 이는 회사에서 안고 있는 과제에 대한 외부 공모로, 문제를 해결하거나 도움을 주신 분에게는 도움의 수준에 합당한 보상을 약속드립니다. (공모를 해보자는 회의를 하던 중 최신 맥북 프로가 언급됐던 건 안비밀)


이와 별도로, 무브에서는 언제나 실력과 가능성, 열정을 가진 사람을 환영합니다. 본인이 3개중에 2개정도 가지고 있다고 생각하시는 개발자분들은 dev+recruit@move.is로 과감하게 자소서랑 이력서랑 포폴이랑 많이많이 보내주세요.


다음에 또 제가 오르비에 글을 쓸 일이 있을 지는 모르겠지만, 그때는 지금보다 더 긍정적이고 재밌는 이야기를 많이 가지고 올 수 있길 바랍니다. 들쭉날쭉 적응하기 어려운 날씨에 건강 유의하세요.




그리고 저는 여러분이 사영평면쯤에서 스크롤을 내렸을 것을 알고 있습니다. 이거라도 읽고 가시죠.


tl;dr

무브에서는 지속적으로 인공지능 주식 트레이딩 봇을 개발해나가고 있습니다.

최근 C#으로 되어 있는 트레이더를 pybind11을 이용해 Python으로 옮기는 작업에 난항을 겪고 있습니다.

핵심 과제는 MFC ocx 컨트롤을 Python에서 자연스럽게 쓸 수 있는 C++ 확장 모듈을 작성하는 일입니다.

이 주제나 문제에 관심이 있거나, 혹은 이를 해결할 수 있는 분은 dev@move.is로 연락주세요.

rare-개발! rare-힘들어하는 라봉이 rare-BIG JUDGE

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.