방명록


라이프로그


Citadel에서 해고된 직원 절도혐의로 기소 High Frequency Trading

HFT 세상에는 재미있는 일들도 많네요.


대충 번역하면 이렇습니다.

해고된 시타델 프로그래머 헤지펀드의 코드를 절도한 혐의로 기소

고빈도매매 코드를 훔친 혐의로 헤지펀드로부터 고발된 시타델 투자그룹 소프트웨어 엔지니어가 기소되었다. Yihao Pu는 범죄 혐의로 시타델에서 해고되었고, 두달 후인 10월에 체포되었다. Pu는 자신의 혐의를 부인하며 시타델이 과민반응했다고 주장했으나, 금요일에 트레이딩 기밀의 절도와 컴퓨터 범죄 혐의로 기소되었다. 그는 금요일에 시카고 연방 법원에서 기소 인정 절차에 들어가게 된다.

그는 체포된 이후 보석으로 풀려났다.

시타델은 8월에 Pu를 "엄청난 양의 극비" 데이터를 "최소한 두개 이상의 개인용 외부 장치"에 다운로드 받은 혐의로 고소했다. 시타델은 또한 Pu가 그의 행동에 대해 거짓 증언을 했고, 전직 시타델 HFT 담당 직원들이 만든 Teza Technology와 지속적으로 접촉한 혐의를 추가했다. Teza Technology 역시 운용 시스템을 절도한 혐의로 고소되었다.

High frequency trader's apology Part 1 High Frequency Trading

이 글은 Chris Stucchio 의 블로그에서 옮겨왔습니다. 무단으로 옮겨와서 번역했습니다. 깊이있는 글이라기 보다 쉽게 설명한 대중적인 글인데요. 저는 이런 초보자용 글들이 어울리는 것 같아요. 중간중간에 번역이 잘 이해가 안가는 부분들이 있을텐데, 원문을 참고하시면 됩니다. 

http://www.chrisstucchio.com/blog/2012/hft_apology.html

==============================

나는 전직 high frequency trader이다. G.H. Hardy의 전통에 따라, 나는 이전 직업에 대한 "apology"를 구해야할 필요를 느낀다. 잘못된 일에 대한 용서를 구하는 의미의 '사과'가 아니라, 해당 분야에 있어 잘못 이해되어진 일들에 대해 지적인 타당성을 만들기 위한 것이다.

이 블로그 포스트에서, 나는 어떻게 고빈도매매가 동작하는지와 왜 트레이더들이 그들의 latency를 줄이기위해 노력하는지에 대해 설명할 것이다. 추후 나는 HFT가 (특정한 환경 하에서) 어떤 사회적인 가치가 있는지를 밝히고, 어떤 환경에서는 그닥 유용하지 않은지에 대해 설명하려고 한다. 궁극적으로 나는 HFT가 사회적으로 가치있는 활동이 될 수 있도록 정책적인 처방을 내리려고 한다.

또한, 당신이 본문을 다 읽었으면 HN Comments를 읽어보기를 권한다. 굉장한 글들이 많다. 특히, 몇가지 정의와 수정은 내가 올린 글들로인해 이루어졌다. 예를 들어, Midpoint Passive Liquidity 주문에 대한 토론은 subpenny rule에 대한 내 글의 부분적인 예외로 인해 이루어졌다.

 
Mechanics of HFT

HFT에 대해 진지하게 토론하기 위해서는 HFT가 어떻게 동작하는 지에 대한 원리를 설명하는 것으로 시작할 필요가 있다. HFT(혹은 일반적으로 거래소에서 거래되는 주식들)의 기본적인 목적은 order book 이다. 만약 Mal이 Blue Sun 주식을 매수한다고 가정하자. 그는 매수하려고 하는 수량과 최대 매수 가격을 생각하고 있을 것이다. 그리고, matching engine(e.g. ARCA, BATS)에서 주문을 낸다.
 
BUY(owner=Mal, max_price=20.00, quantity=100)
 
여기서, Mal은 아직 아무것도 사거나 팔지 않았다. 그는 매수하고자하는 의도를 세상에 알렸을 뿐이다. matching engine은 주문을 접수해 data feed로 다른 모든 트레이더에게 (익명으로) 보여준다.
 
이제 Inara가 200주@$20.10에 매도를 원한다고 하자. 그녀가 주문을 넣으면 다시 (익명으로) 주문이 보이고 저장된다. order book은 다음과 같다.
 
SELL(owner=Inara, min_price=20.10, quantity=200)
------
BUY(owner=Mal, max_price=20.00, quantity=100)
 
여기서 체결은 발생하지 않는다 - Mal은 $20 이하를 줄 수 있고, Inara는 $20.10 이상을 받기를 원한다. 시장은 bid/ask 스프레드로 $0.10 = $20.10 - $20 을 만든다.
 
만약 몇 사람이 주문을 더 넣었다고 하면 - 예를들어 Kaylee가 매도 200주@$20.21, River가 매도 100주@$20.10 인 경우, 이 주문들 역시 저장된다.
 
마지막으로, Simon이 매수 250주@$20.21 에 주문을 넣었다. 그는 Inara, Kaylee 혹은 River 모두가 $20.21 이하로 매도하고 있으므로 체결을 시킬 수 있다. matching engine은 어떤 주문을 체결시킬 것인지를 결정하기 위해 두가지 주된 규칙을 갖고 있다.
 
가격. The best price always wins.
시간. 가격이 같다면 먼저 들어간 주문이 체결된다.
 
 따라서, Simon의 주문이 들어가기 전에, order book은 아래와 같다:
 
 
SELL(owner=Kaylee, min_price=20.21, quantity=200) <- Trades third
SELL(owner=River, min_price=20.10, quantity=100) <- Trades second
SELL(owner=Inara, min_price=20.10, quantity=200) <- Trades first
------
BUY(owner=Mal, max_price=20.00, quantity=100)
 
Simon이 주문을 실행하면, matching engine은 다음과 같이 체결시킨다.
 
Simon이 200주를 Inara에게서 $20.10에 매수한다. Simon은 River보다 먼저 Inara에게서 매수하는데, Inara의 주문 순서가 가장 빠르기 때문이다.
Simon은 50주를 River에게서 $20.10에 매수한다. River가 Kaylee보다 낮은 가격에 매도했기 때문이다.
 
Simon은 그가 원하던대로 이제 250 주를 매수했다.
 
이 과정이 끝나면 order book은 다음과 같이 된다.
 
SELL(owner=Kaylee, min_price=20.21, quantity=200)
SELL(owner=River, min_price=20.10, quantity=50)
------
BUY(owner=Mal, max_price=20.00, quantity=100)
 
Kaylee는 적당한 가격에 매도할 의사가 없기 때문에, 주문이 계속 미체결된 채로 남아있다. 
 
이것이 트레이딩의 기본적인 매카니즘이다.
 
이외에도 상세한 내용들이 많고, 주문유형(order type) 역시 지정가(limit orders) 외에도 다양하게 있다. 그러나 본 포스트에서는 지정가 주문만 대상으로 하더라도 별 문제는 없다.
 
비록 깊이있는 내용들까지는 다루지 않지만, Trading&ExchangesAlgorithmic Trading & DMA (DMA는 Direct Market Access의 약자)를 보면 더 많은 내용을 알 수 있다. 궁극적으로 ARCA나 INET 등과 같은 matching engine과 관련된 문서들을 깊이있게 연구할 필요가 있다.
 
 
Market Making
 
대부분 HFT 는 market making 전략을 실행한다. market making은 테이블의 양쪽 사이드에서 플레이한다 - 그들은 주식 가격의 상승/하락과 관계된 포지션을 갖고 있지 않다. 대신 그들은 주식의 매도와 매수 모두를 제시한다. 만약 당신이 매수를 원하면 그들은 $20.10에 매도할 것이고, 매도를 원한다면 그들은 $20에 매수할 것이다. 그들의 매수/매도 체결이 너무 벗어나지 않는 한, HFT는 $0.10 = $20.10 - 20.00 을 가져간다.
 
물론, market maker는 risk를 갖고 있다 -  그가 $20에 매수해서 대기하고 있다고 할 때, 그가 매도하기 전에 만약 주식이 $15로 떨어지면 그는 $5를 잃는다. 따라서 market maker는 risk와 reward의 균형을 필요로 한다. bid/ask 스프레드를 너무 작게 잡으면 돈을 잃게 되고, 너무 크게 잡으면 아무도 그와 매매하려 하지 않을 것이다.
 
market making은 전혀 새로운 것이 아니다. 주식이 1/8ths 와 1/16ths 에서 거래될 때부터, market making은 pit 안에서 사람에 의해 이루어 졌다. 트레이더는 종종 큰 거래량을 갖고 있는 대형 주식에 대해 market making 실행했다. 점차 1980년대에서 2000년대 초반에는 daytrader 들이 이런 전략을 많이 사용했고, 지금도 조금씩 쓰고 있다.
 
자동 매매 시스템은 human market maker들을 대체했는데, 가장 큰 이유는 cost 이다. 하나의 전략(이 전략은 단지 소수의 주식 종목만 매매할 수있다. 인간은 수백 종목을 매매할 수 없다)이 금융 전문가의 시간과 노력을 들일 가치가 있으려면, 매년 $20~200k(2만~20만불)의 수익이 있어야 한다(인간이 day trade를 통해 $20k/year의 수익을 올릴 수 있을 정도로 충분히 smart하다고 가정). 반대로 데이터 센터에 있는 single server는 수백개의 전략을 $50k/year의 비용으로 실행하면서 인간보다 더 빠르고 더 정확하다.
 
알고리즘 트레이딩의 등장은 단지 기계가 인간을 대체하는 상황의 특수한 경우일 뿐이다. 트레이더들은 공장의 노동자들보다 이런 상황에 대해 영향을 덜 받고있을 뿐이다.
 
 
Latency and Order Flow
 
market maker들에 있어 game의 이름은 order flow 이다. 매수와 매도가 잘 체결되는 한(즉, 매번 매수할 때마다 매도한다) 이익은 아래와 같이 비례적이다.
 
(# of shares traded) x (ASK PRICE - BID PRICE)
 
비례 상수는 고빈도 트레이더가 리스크를 평가하는 기술에 따라 달라진다.
 
기본적으로 더 많은 매매를 할수록 더 많은 돈을 벌 수 있다. 그러면 어떻게 market maker는 더 많이 매매할 수 있을까?
 
그 대답은, market maker가 order book의 top의 가까이에 위치할 필요가 있다는 것이다. 앞의 예제에서 봤듯이, Inara는 River보다 더 많이 매매했고, River는 Kaylee보다 더 많이 매매했다. order book의 제일 꼭대기에 갈 수 있는 가장 단순한 방법은 가장 좋은 가격을 제시하는 것이다. 만약 Jayne가 매수쪽 큐의 가장 꼭대기에 가고싶다면, Mal 보다 더 좋은 가격을 제시해야 한다.
 
SELL(owner=Kaylee, min_price=20.21, quantity=200)
SELL(owner=River, min_price=20.10, quantity=50)
------
BUY(owner=Jayne, max_price=20.05, quantity=100) <- Jayne은 Mal보다 더 좋은 가격을 제시했고,
BUY(owner=Mal, min_price=20.00, quantity=100)         Mal 보다 먼저 매매가 된다.
 
물론, 이익과 위험의 균형에 대해 신경써야 한다. Jayne는 $0.05/share 만 벌 수 있기 때문에, 이 정도 이익이 risk를 초과하는지 확인해야 한다. 만약, 기대수익과 손실의 경계가 $20.05 - 즉, 시장에 $20.05 이상의 가격을 제시해서는 이익을 얻을 수 있다고 생각하는 참가자가 전혀 없다고 가정해보자. 이경우 Jayne는 항상 첫번째로 매매할 수 있을 것이다.

이를 통해 왜 속도가 중요한지 알 수 있다. 만약 정확히 10:31:30.000 AM에 새로운 정보가 발생해서 $20.07에 매수 주문을 넣으면 이익이 된다는 것이 알려졌다고 하자. (보도자료를 통해 가격이 상승할 것이라는 것을 알게되거나, 연관된 주식의 가격이 올랐다고 생각해볼 수 있다). Mal과 Jayne 모두 가격을 $20.07로 정정할 것이고, 속도가 가장 빠른 사람이 order book의 제일 위에 올라갈 것이다.

SELL(owner=Kaylee, min_price=20.21, quantity=200)
SELL(owner=River, min_price=20.10, quantity=50)
------
BUY(owner=Mal, max_price=20.07, quantity=100) <- Received at 10:31:30:427
BUY(owner=Jayne, min_price=20.07, quantity=100) <- Received at 10:31:30:639, 212ms 늦음
 
이를 통해 왜 automated market making이 high frequency trading이 되는지, 왜 그렇게 low latency 시스템을 만들기 위해 노력을 하는지 알 수 있을 것이다. 누구든 첫번째 위치에 주문을 넣게 되면 체결 가능성이 가장 높다.
 
속도가 중요한 두번째 이유는 시장이 움직일 때 트레이더들은 주문을 취소하기를 원하기 때문이다. 10:31:30:000 에 주식이 오를 것이라는 event가 발생했으면, River는 20.10의 매도주문을 취소하고, $20.20으로 가격을 올리는 것이 이익일 수 있다. 반대로, 이벤트가 발생한 후에 또다른 트레이더(Wash라고 한다면)가 $20.10에 매도 주문을 넣어 이익을 발생시키려 할 때, River가 빠르게 시장에서 주문을 움직일 능력이 있다면 보다 경쟁력있게 매도 주문을 제시할 수 있다. 시장이 움직여 Wash가 덤벼들었을 때, River는 보수적으로 움직여 $20.15에 주문을 넣을 수 있다. 
 
 
Why does everyone pile on at the same price? (왜 모두 같은 가격에 주문을 올리나?)
 
눈치가 빠른 독자들은 단도직입적으로 왜 Mal과 Jayne가 모두 가장 유리한 가격으로 $20.07에 동의하는지 질문할 수 있다. Jayne는 $20.075이고, Mal은 $20.071 로 계산하는 것도 가능하지 않은가? 물론 Mal과 Jayne가 서로 다른 가격으로 계산하는 것이 가능하고, 오히려 그들의 컴퓨터 프로그램이나 전략이 소숫점까지 동일한 값을 낼 가능성은 거의 없다.
 
그러나, 그들의 전략과는 무관하게 SEC Rule 612에 의하면 subpenny 단위로 주문을 넣을 수 없게 되어있다. 즉, 매수 100주@$20.07은 가능하지만 매수 100주@20.075는 허용되지 않는다. 이를 Subpenny rule이라 부른다. 2001년 이전에는 $1/16, 혹은 $0.0625 단위였다.
 
위의 예와는 달리 4~5명 이상이 참가하는 실제 시장에서는 많은 주문들이 order book의 제일 위(가장 높은 매수 가격)보다 아래로, 예를 들어 $20.06 이나 $20.05 등에도 주문이 놓여있다. 그러나, 많은 사람들이 book의 제일 위에 주문을 넣기위해 노력하는 것은 동일하다.


More to come

이 글에서 나는 HFT의 기본적인 동작 방식에 대해 설명했다. 다음에는 HFT의 사회적인 효용과 비용에 대해 얘기해보자.

 

알고리즘 트레이딩 포럼 준비모임 내용

어제 4월18일 무사히 준비모임을 마쳤습니다. 준비모임 답지않게 너무 많은 분들이 와주셔서 준비모임 준비에 미흡함이 크게 도드라져 보였던 것 같습니다. 와주신 분들 모두께 감사드립니다.

[거창해 보이지만.. PPT 겨우 다섯장짜리 모임.. 부끄럽구요..]

아래는 참석하신 분들의 의견을 옮겨봅니다.
  • 포럼을 너무 거창하게 준비하려 하지말고 할 수 있는 일들을 꾸준히 하도록 해야.
  • 엑스쳐+로 인해 발생할 시장의 변화 등에 대해 논의했으면.
  • ALGO, HFT 등에 대한 주제로 세미나.
  • 해외시장의 기술 동향 등에 대한 정보 공유.
  • ALGO 관련한 제도와 규정 / IT 신기술, 어플리케이션등 소개 / 트레이딩 기법과 아이디어 공유.
  • 기반 플랫폼에 대한 기술 공유로 새로 시작하는 사람들에 대한 진입 장벽이 낮아지도록.
  • 해외의 알고리즘, 트레이딩 기법, 동향 등.
  • 개인 투자자의 입장에서 API -> ALGO -> HFT 등으로 가는 체계적인 정보를 접할 기회가 없음.
  • 소규모 그룹 활동을 통해 지식을 생성하고 전달하는 것은 어떨지.
  • 국내와 해외의 기술/환경 등의 차이에 대해 정보 전달.
  • 벤더의 정보가 많이 필요함.
  • 세미나 중심의 모임도 좋지만, 일상적으로 지식을 공유할 수 있는 자리가 마련되어야.(윌맛 포럼 등 벤치마크)
  • ALGO가 활성화되기 위해서는 거래비용분석 등에 대한 논의가 커져야.
  • 인맥을 쌓는 일도 중요하니, 점심모임 등 자주 얼굴을 볼 수 있었으면.
  • 개인과 기관, ALGO와 HFT 등 관심사가 다를 수 있으므로 잘 분류하는 것이 필요.

이상입니다. 첫 술에 배부를 수는 없으나, 항상 맘만은 대박을 꿈꾸면서... 앞으로 진행 상황들은 세세히 알려드리겠습니다. 참석해주신 분들, 못오셨지만 관심가져주신 분들께 감사드립니다.



한국 알고리즘트레이딩포럼 준비모임

그간 업데이트가 늦었습니다. 3월 KRX 신정보시스템 가동과 관련해서 엄청 바빴고, 개인적으로 무릎을 좀 다쳐서 살짝 쉬기도 했습니다. 확실히 이제는 예전처럼 몸을 함부로 굴리면 어딘가 탈이 나네요... ㅠㅡㅠ

따뜻한 봄날이 오고있으니, 한국 알고리즘트레이딩 포럼(가칭), 일명 KAF 준비모임을 가져야할 시기가 왔습니다.
모임 이름도 확정하고, 준비위원도 정하고, 활동방법, 미션 등등등.. 하나씩 정리해야 할 것 같네요.
제맘대로 일정 잡습니다. 필참인 분들은... 아시죠...? ^^
  • 일시 : 2012년 4월 18일(수) 오후 5시
  • 장소 : 코스콤(한국거래소 별관) 14층
  • 참가신청 : dolppi@gmail.com  (덧글로 주셔도 됩니다)
  • 내용 :     
  •       1. 모임이름 확정하구요,
  •       2. 준비위원 확정
  •       3. 모임의 미션/참가자격/활동방법
  •       4. 저녁 식사

원활한 모임을 위한 예시.
===================================================
[미션]
"한국 알고리즘트레이딩 포럼은 알고리즘트레이딩에 대한 지식을 생산하고 정보를 공유하여 국내 금융산업의 발전에 기여하는 것을 그 목적으로 한다. 또한, 증권, 금융과 IT 및 기반기술 관련 종사자들이 자신의 지식을 전달하고 다양한 의견을 나눌 수 있는 장을 마련하여 융합과 통섭을 통한 발전 방향을 제시하도록 노력한다."

[참가자격]
누구나..

[활동방법]
- TED 형식의 강의 동영상 제작
- 분기별 1회 세미나
- 년 1회 컨퍼런스
===================================================


이상입니다.
의견 있으신 분들은 댓글이나 메일로 주시구요. 일정은 언제나 변경가능하오니, 핵심인물중에 시간 안되시는 분들은 꼭 알려주세요. ^^

그럼.. 담주에 뵙겠습니다..



KRX 신정보시스템 가동(3월26일)

3월26일에 KRX의 신정보시스템(시세데이터 분배 시스템)이 가동됩니다. 이 시스템은 증권사와 거래소간 네트워크를 통해 증권사로 시세 데이터를 전송해주게 됩니다. 최종 소비자가 보게되는 시세는 증권사 내부에서 다양한 경로를 갖게 되겠구요.

가장 큰 변화는 초당 시세 전송 건수가 늘어난다는 점입니다.

회선구분

초당최대목표전송건수

내용

상향 전

상향 후

유가증권

시세

500

1000

호가

150

400

ELW

시세

500

600

호가

400

400

코스닥

시세

500

1000

호가

150

400

지수선물

시세/호가

150

400

지수옵션

시세/호가

1200

1500

시세/호가

1200

1500



1 2 3 4 5 6 7 8 9 10 다음



트위터위젯

google analytics