무브 인공지능 트레이더 개발자의 N차원 코딩 이야기
게시글 주소: https://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를 사용할 수 있다면 가장 좋을 것 같은데(별도의 라이브러리 작성 없이 일을 해결할 수 있으니), 일단 제가 찾아본 바로는 이 방법은 쓸 수 없는 방법인 것 같네요. 앞에서 서술한 인공지능 트레이딩 봇의 코드베이스 이전 문제를 해결해주실 수 있는 분이 있다면 저희와 함께 해주시길 요청드립니다.
- 가장 좋은 것은 이 행동을 하는 모듈을 만들어주시는 것입니다. 꼭 Pybind일 필요도 없습니다.
- 이 방법이 되는 일이다 / 안 되는 일이다를 판단해주시는 것도 좋습니다.
- 본인의 경험을 바탕으로 이 문제에 대해 도움/조언을 주실 수 있다면 이 또한 환영합니다.
이상의 항목에 해당되는 분은 주저없이 dev@move.is로 연락주세요. 말씀드렸다시피 이는 회사에서 안고 있는 과제에 대한 외부 공모로, 문제를 해결하거나 도움을 주신 분에게는 도움의 수준에 합당한 보상을 약속드립니다. (공모를 해보자는 회의를 하던 중 최신 맥북 프로가 언급됐던 건 안비밀)
이와 별도로, 무브에서는 언제나 실력과 가능성, 열정을 가진 사람을 환영합니다. 본인이 3개중에 2개정도 가지고 있다고 생각하시는 개발자분들은 dev+recruit@move.is로 과감하게 자소서랑 이력서랑 포폴이랑 많이많이 보내주세요.
다음에 또 제가 오르비에 글을 쓸 일이 있을 지는 모르겠지만, 그때는 지금보다 더 긍정적이고 재밌는 이야기를 많이 가지고 올 수 있길 바랍니다. 들쭉날쭉 적응하기 어려운 날씨에 건강 유의하세요.
그리고 저는 여러분이 사영평면쯤에서 스크롤을 내렸을 것을 알고 있습니다. 이거라도 읽고 가시죠.
무브에서는 지속적으로 인공지능 주식 트레이딩 봇을 개발해나가고 있습니다.
최근 C#으로 되어 있는 트레이더를 pybind11을 이용해 Python으로 옮기는 작업에 난항을 겪고 있습니다.
핵심 과제는 MFC ocx 컨트롤을 Python에서 자연스럽게 쓸 수 있는 C++ 확장 모듈을 작성하는 일입니다.
이 주제나 문제에 관심이 있거나, 혹은 이를 해결할 수 있는 분은 dev@move.is로 연락주세요.
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
궁금한게있는데
그런용도로쓰는 그래픽카드에도 수냉쿨러같은 사제쿨러를 달아주나요?
보통 정품 그래픽카드는 쿨러가 달려서 나오기 때문에 사제 수냉쿨러를 달려면 직접 쿨러를 뜯고 달아줘야 합니다. 그런데 V100은 소비자가격이 천만원쯤 되기 때문에 이런건 사제쿨러 업체 가져가도 안해주지 않을까요 ㅋㅋㅋ
위에 기술된 그래픽카드 중 타이탄은 방열판과 쿨링팬이 달려있고, V100은 서버용이라 방열판만 있습니다. 그래서 서버급 장비에 꽂아 충분한 공기를 흘려주지 않으면 사용할 수 없습니다.
돈이 매우 많다면 NVidia에서 억단위 완제품을 사는 방법도 있죠. 거기엔 수냉쿨러가 달려있습니다.
저런작업은 보통 풀로드로 돌린다던데
그걸 기본공랭으로 커버가되나보네요 ㄷㄷ
서버장비 공냉은 차원이 다른 공냉입니다 풀로드시 팬소리 100데시벨 넘어요
개-추
어허~ 그런 냉동인간 앙대~
프본?
소혜
문리둥절...
사쿠라코님 해석좀 해주세요
뱃지 ㄷㄷ 운영진의 특권인가여 ㅋㅋㅋㅋ ㅋㅋㅋ ㅋ
무슨소린지 해석좀
저 컴퓨터로 메이플돌리면 풀옵 가능?
저분들이 쓰는 그래픽 카드 하나의 가격
cpu가 셀러론이 아니라면 ㅆㄱㄴ
다른 것은 모르겠고.....
[인공지능 주식 트레이딩 봇]-->이걸로 투자자 모집 할 건가요????
(주식에 실패중인 1人이....)
목표는 그러합니다.
저번에 게임과 관련된 인공지능 논문 공모한 것도 답을 내놓으신 분 있었나요? 맥북 거는거 봤었는데 흠흠
오르비에 필요한 사람이 될려면 도대체 어디서 공부를 해야하는건짘ㅋㅋㅋ
카대 박사과정중이신 분이 몇달 와서 일하셨습니다.
능력자 나와라 얍!
뭐래는겨
나무위키 하시는 분이신가
뭐라는지 1도 모르겠샤~ 근데 개발팀 전부 다 소혜 좋아하샤?
전 연예인/아이돌에 전혀 관심이 없어서 소혜가 누군지 모릅니다...
^^a.....문리둥절,.....,,,
오 친구 아버지가 이걸로 돈버시는데
인공지능 트레이딩으로 돈 얼마나 땄어요 진짜 궁금함
와 타이탄을 시리즈로...
컴공 1학년인데 빅데이터로 먹고 살고 싶습니다. 그래서 컴공+통계 복수전공, 미국대학 온라인 강의 수강하려 합니다. 괜찮은가요?
몇가지 옵션
1. C# 프레임워크 버젼을 4.5 이상으로 올려서 재작성한다. (아마도 기존 프로그램이 2.x 일 것 같은데 C같은 C#일듯하니 C#같은 C#으로 바꿔보시길. 아마도 생산성 문제가 해결될겁니다)
2. 여전히 Python을 사용하고자 한다면 IronPython으로 대체해봅니다. .net Framework 위에서 만들어진 Python이라 C#프로그램 옮기기 쉬울 것 같군요.
3. 지금하는 방식을 고수하겠다면 C++로 COM으로 된 OCX wrapper를 만들어서 Python이랑 연동해봅니다. (https://www.codeproject.com/Articles/73880/Using-COM-Objects-in-sc/2ing-Languages-Part-Py)
OCX(ms꺼) -> COM(MS꺼) 라서 연동 될거고, COM -> Python은 위 자료 참고해서 작업하면 되겠죠.
공부량이 좀 되긴 하겠지만 개인적으로 1번 추천합니다.
다른 언어들을 알아야 프로그램 보는 눈이 넓어집니다.
특히 금용쪽에서는 python으로 된 legacy는 없다고 보면 되요.
도움말씀 감사드립니다. 저도 이쪽 분야에서는 파이썬이 대접받지 못하는 것을 알고 있고, 따라서 자료를 구하는 것도, 없는 배려를 뚫고 구현하는 것도 쉽지 않다는 것을 알고 있습니다.
1. .NET 프레임워크는 현재도 최신 버전을 사용하고 있습니다. 생산성 문제는 닷넷 프레임워크 버전의 문제가 아니라 제가 C#이라는 녀석을 처음 써보기 때문에 발생합니다.
2. IronPython은 최신 파이썬 3.x 버전을 제대로 지원하지 않아 사용할 수 없습니다. 요새의 움직임으로 봐서는 개발되지 않는 것 같은 느낌도 받았기 때문에 고려하지 않았습니다.
3. 위에 링크해주신 자료는 Tk를 사용하네요. 이건 고려해본 적이 없는데, 어쩌면 이게 의외로 해법이 될 수도 있겠네요. 이건 한번 시도해보도록 하겠습니다.
다른 언어를 알아야 눈이 넓어진다는 말씀은 매우 공감합니다. 지금도 필요에 따라서 서너개의 언어를 사용하고 있습니다.
좋은결과 있길 바랍니다.
참조사이트가 part1, part2 인데part1 이 tcl/tk연동, part2 가 python 연동방법입니다. 제가 잘못 링크한 것 같은데 구글검색하면 part2 가 있습니다. 그것 참조하시면 될 것 같네요.