brunch

You can make anything
by writing

C.S.Lewis

by 이기대 May 11. 2022

백테스팅 퀀트 서비스 개발기

with 42 Seoul

공유 가능한 백테스팅 툴을 만들어보자

42 Seoul에 합류하면서 계획했던 일이었습니다.


당시 금융 스타트업에서 의뢰를 받아 시계열 모델링 일을 했는데, 시중에 참고하던 백테스팅 툴이 굉장히 '매니악'하다는 느낌을 받았습니다. 백테스팅을 포함해 여러 유형의 퀀트 툴은 개인이 데이터 기반의 투자를 하고, 합리적인 의사결정을 내릴  있게 합니다. 그리고 이러한 제품들이 마치 데스크톱 엑셀처럼 개인용 도구로만 배포되고 있다는 점은  분야의 특수성으로 느껴졌습니다. 투자 분야에서 만큼은 '나의 투자 전략과 생각을 공유한다' 개념이 약해서일까요? 아니면 남보다 많이, 그리고 빨리 알아야 한다는 정보 우위를 쟁취해야 한다는 생각이 기저에 깔려서일까요?


그러나 유튜브 등에서 활동하는 퀀트 전문가들의 구독자 수, 그리고 그 퀀트 모델을 알고 싶어 하는 시장 규모, 퀀트라는 키워드의 검색 증가 추이를 보면 오히려 모델을 서로 공유할 수 있는 장이 아직까지 제대로 열리지 않은 것이 의아했습니다.


'투자는 제로섬 게임이니 전략은 소수만 아는 것이 좋다'는 생각이 과거의 관성일 수 있다고 생각합니다. 정보는 이미 넘쳐나고, 모든 주가는 뉴스가 나오기도 전에 자리를 잡습니다. 어쩌면, 넘쳐나는 정보의 홍수 속에서 좋은 전략을 서로 공유하는 것이 더 오래, 그리고 안전하게 가는 길이 될 수 있으며 이러한 길을 가고자 하는 합리적인 투자자들에게 좋은 도구를 쥐어주고 싶었습니다.

 

팀 이름이자 프로덕트 타이틀로 설정한 '이코노미쿠스'는 이렇게 퀀트와 숫자에 관심이 많으면서 계량적 합리성을 '다른 사람들과 함께' 추구하는 개인 투자자들을 떠올리며 지었고, 이들이 제가 만든 도구를 활용하여 부의 속도와 크기를 키워나가는 모습을 상상했습니다.


42 Seoul 커뮤니티에서 금융, 퀀트에 관심이 있는 개발자를 모집했습니다. 감사하게도 많은 분들이 지원해주셔서 20명 정도 선에서 마감하게 되었습니다.


열두 명의 선원과  개의 방향

백테스팅용 데이터 수집/저장 파이프라인과 퀀트 지표 검색을 위한 계산 로직을 개발하는 퀀트팀, 퀀트 모델(백테스팅 로직이 저장된)을 업로드할 수 있는 개인 프로필 및 공유 기능을 기발하는 소셜팀으로 구분하였고, 저를 포함해 각 팀 6명으로 팀빌딩을 마감하게 되었습니다.


42 Seoul 카뎃(학생)들의 학습 역량과 속도를 몸소 체감했기 때문에 팀원을 선발할 때에는 경험이 없어도 프로젝트를 진행하면서 충분히 따라올 수 있을 것이라는 확신을 갖고 선발했습니다. 그렇기 때문에 현재 개발 역량과 프로젝트 경험보다는 '퀀트' 및 '금융'에 대한 관심을 주로 봤으며 특히 퀀트팀의 경우 금융 데이터를 한 번이라도 다뤄본 경험과 관심을 물었습니다.


100% 비대면으로 팀을 운영했고, 소통은 슬랙으로, 정기/비정기 미팅은 게더 타운(42 Seoul 제공)으로, 회의록 및 프로젝트 관리는 노션으로 진행했습니다.


흔들리는 배를 바로잡는 

서비스 기획을 단독으로 진행해본 것이 처음이다 보니 여러 가지 고려하지 못한 디테일들이 많았습니다. 버튼 하나, 페이지 전환 하나하나가 충분히 고민되어 있지 않았다는 것이 개발 과정에서 드러났습니다. 그때마다 다시 기획하고, 와이어프레임을 만들고 디자인하는 작업들에 리소스가 많이 소진되었습니다.


개발은 초반에 불붙었을  치고 나가야 차고 넘치는 투지와 의욕을  사용할  있습니다. 기획에 허점이 생기면 불씨는 빠르게 사그라들죠. 기획 개발 사이드를 모두 경험한 입장에서 이것이 얼마나 치명적인가를 온몸으로 느낄  있었습니다.


당시 팀을 이끄는 PM으로서 당장 해야 했던 일은 하루빨리 개발에 집중할  있도록 부실한 기획을 보수 공사하는 것이었습니다. 이코노미쿠스의 코어는 실험실(백테스팅을 하고 퀀트 모델을 만드는 페이지)이었습니다. 따라서  모든 자원은 온전히 퀀트팀으로 향하게 되었습니다.


퀀트팀에 신경과 시간이 집중되면서 소셜팀은 소셜팀 PM Tech Lead에게 온전히 맡기게  꼴이 되었습니다. 충분히 성숙하지 않은 조직에서 주어진 신뢰와 자율은 불씨를 서서히 꺼트렸고, 그렇게 관심 편향팀의 절반을 위기에 빠뜨렸습니다. 소셜팀 6  4명이 결국 각자의 이유로 이탈했습니다.


즉시 2차 팀빌딩을 진행했습니다. 한쪽에서 꺼져가는 불씨를 살리는 대신 잘 타오르는 불씨를 번지게 만들었습니다. 소셜팀의 충원이 아니라 퀀트 팀을 중심으로 단일팀을 구성한 것입니다. 팀 밖에서 인원을 모집할 수도 있었습니다. 그러나 배가 흔들리면 선원을 더 밀어 넣을 게 아니라 키를 제대로 잡는 것이라 생각했습니다. 저는 키가 퀀트팀의 '실험실' 기능이라 판단했고, 키를 더 단단히 잡기로 했습니다.


당장 생존에 필요하지 않은 물건은 배 밖으로 던질 것

2 팀빌딩  2/25 내부 테스트(Alpha)에서  가지 문제를 발견했습니다. 그중 가장  하나는 불안정한 배포 환경, 다른 하나는 소셜(SNS, 타임라인 ) 기능의 개발 지연이었습니다.


배포의 경우 예상보다 데이터 처리 양이 많아 클라우드 서버를 효율적으로 재설계해야 했으나 팀원 모두 클라우드가 익숙하지 않았던 터라 설계에 어려움이 있었고, 소셜  기능의 경우 담당하던  개발자들이 이탈하여 레거시 문제가 있었습니다. 특히 일부 기능은 전혀 개발이 되지 않고 있던 상황이었습니다.


실사용자를 대상으로 하는 2차 테스트(Beta)에는 안정적인 배포 환경과 로그인~모델 생성 및 공유까지의 온전한 사이클을 최소한의 전제로 하기 때문에 두 문제는 반드시 해결해야 했습니다. 먼저, 42 Seoul에서 개인적으로 클라우드 배포 관련 도움을 받았던 분을 팀원으로 모셔와 빠르게 배포 환경을 다시 구축했고, Beta-Test까지의 로드맵을 재구성하여 소셜 쪽 기능을 대폭 덜어냈습니다.


프로덕트의 핵심은 '공유 가능한 퀀트 백테스팅 '입니다. 그러니까 백테스팅을 편하게   있어야 하고, 백테스팅한 모델은 공유가 가능해야 합니다.  가지 조건을 성립하는 최소한의 MVP모델 개발을 2 테스트(Beta) 목표로 수정했습니다. 타임라인 등의 SNS 기능은  단계에서 완전히 덜어내고 '카카오톡 공유하기' 대체했습니다.


항해 중단

2차 테스트의 가이드라인과 개발 가이드라인을 잡고 남은 기간을 바쁘게 달려 나가던 중이었습니다.


목표가 뚜렷해지고, 팀의 금융 데이터에 대한 이해가 높아지면서 회의는  생산적이게 되었습니다. 팀원들  커뮤니케이션이 활발해지면서 개발 역량도 자연스럽게 높아져갔습니다. 파이썬이 처음인 팀원도 능숙하게 데이터를 수집하고, 계산 로직과 api 탄탄하게 개발할 수 있게 되었습니다. 또 팀원의 2/3이 처음 도커를 접했음에도 도커를 통한 협업과 배포가 자연스러운 과정이 되었습니다.


러나 2 테스트(Beta)는 결국 진행하지 못했습니다. 백엔드를 총괄하던 Lead 갑작스러운 부재로 테스트 일정을 2차례 연기했고, 빠른 시일 내에 대체가 어렵다는 판단에 결국 프로젝트를 중단하게 되었습니다. 그가 부재했을  병목이 생길  있다는 것을 미리 인지했음에도 불구하고 대안을 만들지 못했던 것에 원인이 었습니다.


팀원들을 모집할 당시 선호하는 기술 스택과 서비스 구조를 물었고, 최대한 반영하려 했습니다. 생각해둔 틀 내에서 의견을 수렴하면서도 강한 의견을 어필하는 팀원들의 손을 들어줬습니다. 그리고 그것을 시작으로 일종의 레거시가 만들어지고 있었습니다.


당시, 개개인에게 '최선의 효율'을 주는 방법이 의견 수용과 다양성 존중이라 생각했습니다. 하지만 돌이켜보니 모호한 R&R에서 책임과 의사결정을 떠넘긴 것에 불과했습니다. 취업 절벽 시대에 "네가 하고 싶은 일을 해"라는 말이 다양성의 존중보다 무책임함의 성질이 강한 것처럼, 그것이 어떤 결과로 나아갈지 예상하고 판단하지 못한 채 자율을 던진 것은 저의 무책임함에서 비롯했던 것입니다.


그래야만 했던 선택

사이드 프로젝트인데 2차례(2) 연기가 뭐 대수라고 중단하나 할 수 있지만 저는 작은 사이드 프로젝트일수록 반복되는 지연과 일정 연기는 매우 치명적이라 생각합니다. 물질적 보상, 대가 없이 단순 동기와 의욕, 그리고 관심만으로 뭉친 사람들입니다. 이는 반대로 관심과 의욕이 사그라드는 순간 언제든 해체될  있음을 의미합니다. 그러나 열정은 강요하는 것도, 그럴  있는 것도 아니기에 프로젝트를 추진하는 사람과 팀원들 간의 열정의 크기와 속도  격차가 벌어질수록 진동은 커지고, 판이 벌어지게 됩니다.


벌어지는 판을 느꼈을 , 선택지는 여럿 있었습니다. 합류하고 싶다는 분들을 팀원을 충원해서 프로젝트를 어떻게든 끌고 가거나 개인 투자를 추진할  있었습니다. 저를 믿고 지원해주시는 지인분들 협업 제안도 해볼 만했습니다. 2 배포부터는 서버 비용도 점진적으로 발생할 예정이었고, 디자이너 고용도 고려하고 있었기 때문에 외부 협업이나 투자 추진은 사전에 계획된 일이었습니다. 따라서 시기를 조금 당기는 것뿐이었고, 벌어지는 판을 다시 붙여놓는 선택을   있었습니다.


부실한 판을 붙이기보다는 더 튼튼한 목재를 준비할 것

부족했습니다. 재정비가 필요했고, 깊은 회고가 필요했습니다.


스스로 "뛰어난 개발자를 데려와야 하는가? 혹은 뛰어난 기획이 필요한가?" 묻지 않았습니다. "진정으로 사람들이 원하는 것이 무엇인가? 혹은 어떤 가치를 제공하고 싶은가?" 같은 사업적인 마인드를 제고하기 위한 질문도 던지지 않았습니다. 서비스와 사용자에 대한 고민에 앞서 스스로 준비가 되었던가를 회고했을 때, 그렇지 않다는 결론을 내렸습니다.


서비스에 어떤 구성 요소가 필요하고 어떤 방식으로 개발해나갈지, 그러려면 누가 필요하며 어떻게 협업할지 등 크고 작은 논의를 해나가는 과정에서 '더 나은 의사결정'을 하기에는 경험과 역량이 부족함을 느꼈기 때문입니다.


부족한 기획, 개발 프로세스에 대한 부족한 이해, 부족한 매니징은 스스로 충분히 고민하고 배워서 해결할 일이지 결코 팀원들이 채워줄  없습니다. 그러나 지금까지 사업이나 프로젝트는 (인적) 레버리지가 Default라고 생각했습니다. 최고의 팀원을 데려오는 능력, 그리고 그를 온전히 믿고 맡길  있는 능력이 팀장의 축복받은 역량이라 믿었습니다. 그러나 프리랜서로 일하며 많은 프로젝트를 관리하면서, 먼발치에서 회사와 팀을 보면서, 그리고 이번 프로젝트를 진행하면서  말이 사실이 아니라는 생각을 했습니다.


그래서 지금은  많은 공부와 경험으로 스스로를 우고 있습니다. 데이터를 다루고 모델링하는 일뿐만 아니라 안정적인 데이터 파이프라인을 구축할  있는 엔지니어링 스킬, 그리고 금융 산업과 시장,  소비자와 서비스를 날카롭게 이해하는 기획력까지 욕심을 내고  개선하려 합니다.


인적 레버리지는 필수가 아닐 수 있습니다. 때가 되어 레버리지를 쓴다면, 그 레버리지는 제 빈 틈을 대신 채워주는 것이 아니라 저의 역할을 복제하여 규모의 일을 수행하는 것이 될 것입니다. 그리고 그 전제는 당연하게도, "내가 복제당할 정도의 역량을 갖추고 있는가?"이고, 더 중요한 것은 "내가 복제되는 것만으로도 규모의 일을 수행할 수 있는가?" 일 것입니다.


저는 현재 데이터로 고착된 관성을 깨고 비즈니스가 더 나은 방향으로 나아가도록 돕고 있습니다. 이는 매우 중요한 일이라 생각하지만 데이터는 여전히 실무의 관행을 검증하는 데에 쓰이는 곳이 8할은 족히 넘어 보입니다.


투자도 마찬가지입니다. 그저 마음 따라 종목을 매수, 매도하거나 "주식시장은 항상 우상향 한다"와 같은 오래된 관성과 믿음을 검증 없이 따라가는 것은 매우 위험하다고 생각합니다. 정량적으로 검증할 수 있어야 하고 그것을 통해 스스로 시나리오를 세울 수 있어야 합니다.


그렇게 제가 중요한 일이라 믿는 것을 압도적으로 잘하기 위해 애쓰겠습니다. 본질을 더 깊이 이해하고 역할과 도구에 더 능숙해져서 제가 복제되는 것만으로도 규모의 일을 수행할 수 있을 때, 그때는 더 거대한 함선을 끌고 다시 항해에 도전하겠습니다.


도약하며

목적과 방향에 온전히 집중하기 위해 42 Seoul도 더 이상 진행하지 않게 되었습니다. 어디서도 경험할 수 없는 좋은 동료들과 학습 방식, 프로젝트를 겪었고, 감사하게도 값진 계기가 되어 한 걸음 도약했습니다. 마지막으로, 정박하기 전에 기록해둔 일지를 공유드립니다.
*깃허브 이코노미쿠스 페이지

1. 로그인
2. 벤치마크 생성
3. 퀀트 모델링
4. 백테스팅 & 모델 생성
5. 모델 설명 추가
6. 모델 공유하기(카카오톡)


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari