brunch

You can make anything
by writing

C.S.Lewis

by 퀀트대디 Feb 23. 2021

트레이더는 어떤 프로그래밍 언어를 배워야 할까

과거 트레이더들은 피트(Pit)에서 우렁찬 목소리와 우람한 떡대, 빠른 암산으로 트레이딩 업계를 지배했다. 그 당시 샌님들은 이 업계에서는 환영받지 못하는 부류였다. 하지만 오늘날 이 바닥의 모습은 180도 달라졌다. 트레이딩 플로어는 이제 가상의 전자 거래소로 대체되었으며 많은 트레이더들이 블랙박스 알고리즘에 의해 일자리를 잃고 있다. 이제 코딩은 트레이더들의 필수 덕목 중 하나가 되었고, 트레이더가 코딩을 못하면 업계에서 롱런할 확률이 현격하게 떨어지고 있는 것이 사실이다.

이런 모습들은 점점 역사의 뒤안길로...

중요한 것은 트레이더들이 컴퓨터 과학 혹은 프로그래밍에 대해 배워야 한다는 것을 인지는 하고 있으나 어떤 방식으로 해야 할지, 특히 어떤 언어를 우선적으로 습득하여 실제 시장에서 활용을 할지 판단을 하는 것이 쉽지 않다는 것이다. 왜냐하면 어디서부터 시작해야 할 지도 난감할뿐더러 프로그래밍 언어의 종류가 다양하고 관련 지식 및 개념 또한 기존 트레이딩 업계에 종사하는 사람들에게는 매우 생소하기 때문이다. 현직에 종사하고 있는 트레이더들이나 트레이딩 업계로 나아가려는 사람들에게 있어 과연 어떤 언어를 선택하는 것이 현명한 처사일까?

결론부터 말하자면,
어떤 트레이딩 분야에 관심이 있느냐에 따라 프로그래밍 언어에 대한 선택이 달라져야 한다.



# 셀사이드(Sell-Side)

과거(좌측)와 현재(우측) 트레이딩 플로어의 모습

이제는 여기가 알고리즘의 전쟁터라고 해도 과언이 아니다. 볼커룰(Volcker Rule) 덕분에 투자은행의 프랍 트레이딩(Prop Trading; 회사의 자기 자본으로 하는 트레이딩)은 역사 속으로 사라졌고, 셀사이드 트레이더들은 이제 마켓메이킹과 플로우 트레이딩 밖에 수행하지 못한다. 그런데 대부분의 자산군에 대해 현재 비극적이게도 마켓메이킹의 영역은 대부분 자동화가 진행된 상태이다. 특히 표준화되어있는 상품들의 경우는 그 정도가 훨씬 심각하다. 이제 더 이상 예전처럼 많은 수의 트레이더들이 필요하지 않으며, 코딩을 할 수 있는 몇몇 소수 트레이더들만이 자리를 보전하고 있다. 왜냐하면 마켓메이킹은 속도가 생명이며, C++과 Java로 쓰인 매매 알고리즘이 일분일초를 다투는 마켓메이킹 영역에서 인간보다 더 나은 경쟁력을 제공하기 때문이다.

하지만 클라이언트의 커스터마이징된 요청을 프라이싱하고 헤지하는 플로우 데스크(특히 구조화 데스크)에서는 아직까지도 사람이 이러한 모델 작업을 수행한다. 보통 자동화의 정도는 다루는 상품이 얼마나 복잡하냐에  따라 좌우되는데, 예를 들어 복잡한 이색 파생상품이나 구조화의 영역은 아직까지 인간의 손을 거쳐야 하는 곳이다. 고도로 커스터마이징된 상품을 프라이싱할 때 아직까지 엑셀 및 VBA로 작성된 모델들이 사용되고 있다. 여기는 엑셀 및 VBA에 대한 지식과 스킬이 소프트웨어 공학을 전공한 박사 학위보다 '아직까지는' 더 빛을 발하는 곳이다. 물론 고등 언어의 어두운 그림자가 슬슬 드리워지고 있는 건 사실이지만 말이다.



# 바이사이드(Buy-Side)
바이사이드 트레이더들은 보통 1) 퀀트 트레이더(Quantitative Trader), 2) 주문집행 트레이더(Execution Trader), 그리고 3) 고빈도 매매 트레이더(HFT Trader)의 세 부류로 나뉜다.

우선, 퀀트 트레이더나 스트래지스트들은 헤지펀드 혹은 뮤추얼펀드에서 계량 포트폴리오 매니저(Quantitative Portfolio Manager)의 역할을 수행 혹은 보조하는 업무를 담당한다. 그들의 업무는 인간의 개입이 배제된 컴퓨터 모델들을 사용하여 시스템적인 매매를 수행하는 전략들을 개발하는 것이다. 그렇기 때문에 코딩 실력은 그들에게 있어서 필수적이고, 그들은 그러한 스킬을 사용하여 데이터를 처리하고 새로운 전략이나 아이디어를 프로토타입의 형태로 구현해낸다.

파이썬(Python)은 이러한 업무에 굉장히 적합한 프로그래밍 언어이다. 왜냐하면 파이썬은 프로토타입 제작에 안성맞춤인 빠른 속도와 편리함을 제공하고 있으며 굉장히 넓은 범용성이 파이썬 최강의 무기이다. 특히 파이썬은 Scipy, Pandas 등과 같은 수많은 패키지와 라이브러리를 구비하고 있어, 데이터 분석이 매우 용이할 뿐 만 아니라 직관적이고 빠른 구현이 가능하다. 대표적인 통계 언어인 R 또한 파이썬과 더불어 많은 사랑을 받고 있다. R은 많은 대학 수업들에서 사용될 만큼 통계적 분석에서 강점을 가지고 있다. 최근에는 이러한 오픈소스(Open-Source) 기반의 언어들이 각광을 받으면서 MATLAB과 같이 돈을 내고 사용해야 하는 상업적 언어들의 인기는 점점 시들해지고 있다.

두 번째로, 주문집행 트레이더들의 업무는 포트폴리오 매니저나 퀀트 트레이더들의 전략을 프로덕션 레벨(Production Level)로 가져와 실제 매매를 실행시키는 것이다. 보통 하청을 주어 투자은행들의 알고리즘을 가져다 쓰거나, 스스로 매매 알고리즘을 개발, 혹은 손수 인간의 힘으로 트레이딩을 하는 방식을 쓰고 있다. (몇몇 특정 시장에서는 이러한 매뉴얼한 방식의 트레이딩이 알고리즘을 여전히 이기고 있다.) 직접 알고리즘을 개발하는 경우, 주문 집행 데스크에서 필요한 코딩은 마켓 메이킹에서 요구하는 수준과 비슷하다.

마지막으로, 흔히 HFT(High Frequency Trading)라고 알려져 있는 고빈도매매 트레이딩의 경우는 다른 퀀트 트레이더들의 업무와 비슷한 성격을 보이나, 가장 시간간격이 짧고 속도가 빠르다. 왜냐햐면 그들은 보통 틱 데이터(Tick Data)를 가지고 트레이딩을 수행하는 집단이기 때문이다. 그렇기 때문에 그들은 대용량의 데이터를 처리할 수 있는 능력이 필요하고 이는 자연스럽게 하둡(Hadoop)과 같은 대용량 데이터 처리 시스템의 사용을 선호한다. 최근 들어서는 빅데이터를 실시간으로 처리할 수 있는 차세대 언어인 Go와 같은 언어들도 업계에서 점점 저변을 확대해가고 있다.

HFT의 경우 앞서 언급했듯이 틱 단위의 데이터를 다루기 때문에 주문과 체결 간의 대기 시간(Latency)을 최소화하는 것이 중요한 목표이다. 그렇기 때문에 속도가 매우 빠른 고등 언어인 C++이 아직까지는 시장을 리드하고 있는 것이 사실이다. 하지만 HFT 시장에서 좀 더 우위를 확보하기 위해서는 앞으로는 프로그래밍 언어의 영역을 뛰어넘어, 어셈블리어(Assembly Language)나 컴퓨터 네트워크(Computer Network) 및 하드웨어(Hardware)를 이해하고 업계에 활용하는 분야도 빠르게 발전할 것이다.


만약 시간이 충분치 않아서 단 하나의 프로그래밍 언어를 선택한다면 어떤 언어를 선택해야 하는가?
가장 효율적이며 합리적인 선택은 바로 파이썬이 될 것이다.
왜냐하면 파이썬이 주는 방대한 범용성과, 라이브러리 및 패키지의 편리함과 속도, 그리고 오픈소스의 매력은 다른 언어들이 이제까지 제공해주지 못했던 것들이기 때문이다. 또한 빅데이터 시대에 다른 산업군들에서도 파이썬의 활용도는 점점 높아지고 있기 때문에, 플랜 B를 생각해볼 때도 데이터 분석 및 사무자동화의 영역에서 놀라운 효용을 자랑하는 파이썬을 배우는 것은 후회 없는 선택이 될 것이다.





작가의 이전글 금융권에 필요한 파이썬 스킬트리 #3.
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari