양적 필수: 틱 데이터란 무엇인가? 신뢰할 수 있는 거래 데이터를 찾는 것이 왜 어려운가?

저자:작은 꿈, 2016-11-02 19:33:56, 2016-11-02 19:48:20에서 업데이트되었습니다.

  • 첫째, 틱 데이터란 무엇인가요?

틱 데이터 자체는 신비롭지 않습니다. 거래소는 모든 주식 (또는 미래 옵션) 의 활성 주문 책 (즉, 당신의 주문이 거래소 내에 존재하지만 합성되지 않은) 의 구매 또는 판매 주문 상황을 당신에게 전송합니다.

**举例说明:**
  某天的市场一开始的时候苹果股票的order book(委托挂单)清空(这里不进行auction period的探讨):
  1. 接着来了第一个卖家:1000@100 :
  这时候交易所会发给你一个message,告诉你是苹果股票有人想以100块钱卖出1000股,
  那么这个order就先挂在了order book上,成为卖一。

  卖:1000@100


  2. 第二个卖家来了,他想卖得更高: 1000@101:
  这时候交易所会发给你另一个message,告诉你是苹果股票有人卖的价格比你差,于是排序在更上面,卖二。

  卖:1000@101

  1000@100


  3. 刚才的第一个卖家后悔了,cancel了他的order:1000@100撤消了,那么交易所会有message告诉你,
  现在只剩一个1000@101(卖一)。但是你可能需要自己编程处理这种remove掉一个tick的情况。

  卖:1000@101


  4. 终于有买家来了... 500@90 , 这个价格是不会成交的,因为买家低于现在的最佳卖价:101,
  那么order book里面会继续存着这个order,同时会发送一个tick告诉市场上的其他人,有买单了:

  卖:1000@101

  买:500@90


  5. 继续,接着有一位买家以101块钱买入1000股,等于要把目前的bestoffer 1000@101给match - 撮合了,那么你是不会收到这个最新的bid: 101@1000 的,
  因为它会进入matching engine的瞬间跟对面的best offer 撮合了,tick table的一个规则: bid offer 永远不会cross,
  否则要么是数据商的bug,要么是交易所的bug。现在,你只会收到一个告诉你delete the best offer的message,那么tick table长这样:

  买:500@90

틱 데이터는 간단하고 시장에서는 이 과정을 반복합니다.그러나 더 큰 문제는:

- 1. 많은 시간 틱의 데이터는 UDP로 전송됩니다. 주식 시장에서 거래가 매우 활발하다면 데이터가 매우 많을 것이라고 상상하십시오. UDP는 패킷 손실이 발생할 수 있습니다.

- 2. 실시간 틱 데이터를 더 빨리 처리하는 방법, 그렇지 않으면 데이터가 너무 많아서 지연되면 프로그램이 매달리기 전까지 실시간 틱의 속도를 더 이상 따라갈 수 없습니다.

- 3. 어떤 특별한 상황이 버그를 유발하는 것을 방지하는 방법, 한 틱이 맞지 않으면 다음 틱 테이블이 모두 잘못됩니다:)

** 또한 틱에 대한 이해의 문제도 있습니다: 다른 시장의 틱은 다른 점도 있습니다. 앞서 언급한 것은 선진국 주식 시장입니다. 실시간으로 추진됩니다. (새로운 주문이 있고 틱의 전송 레벨 내에서 틱이 8개만 전송됩니다. 예를 들어 도쿄 거래소는 전체 틱을 볼 수 없습니다. 많은 사람들이 거래하면 100개 이상의 레벨이있을 수 있습니다.) 국내 기간 교류는 얼마나 많은 밀리초입니다? 스냅샷을 찍고, 상환은 3초입니다. 그리고 당신에게 전송합니다. 아마도 국내 거래 시스템은 IT의 발전에 따라가지 못할 정도로 매우 오래되었습니다.

이 글은 양자 거래자 微信 id:quantcity가 정리했습니다.

  • 두 번째: 스냅샷 데이터와 거래소 데이터의 세부 사항은 무엇입니까?

해외의 HFT 틱 데이터에 대한 완전한 주문 데이터 프로세스가 있으므로 이 주문 데이터를 사용하여 스냅샷 데이터를 복원할 수 있습니다.

국내에서 두 개의 주식과 네 개의 선물은 이론적으로 스냅샷 데이터입니다. 예를 들어 전형적인 데이터 필드는 다음과 같습니다. [중고] 개시 가격 최고 가격 최저 가격 최신 가격 거래량 거래량 [중고] 여기서 가장 높은 () 가격은 거래 개시 이후 현재까지 거래가 발생한 가장 높은 () 가격입니다. 당신이 모든 거래에 대한 세부적인 세부 사항을 가지고 있다고 가정합니다. 사실 이 데이터는 max () 로 추측 할 수 있습니다. 따라서 외국 틱 데이터에는 일반적으로이 필드가 없습니다. [중고] 상장거래소와 상장거래소가 제공하는 실시간 거래는 세 가지 종류가 있습니다. [중고] 스냅샷은 3초에 한 번씩 시장의 사진을 찍어 현재 가격, 최고, 최저, 거래량, 거래 금액 등 시장의 사진을 전송하는 것입니다. 사진이 3초에 한 번 찍히기 때문에 이 3초 동안 시장이 무슨 일이 일어나는지 알 수 없습니다. 매일 연속 경매 시간은 아침 두 시간마다 총 4시간입니다. 따라서 스냅샷의 수는 14400/3입니다. 아마도 3800번입니다. 주식에서만 하루 전체 시장 스냅샷 데이터 양이 2G 이상입니다. [중고] 단편 거래는 실제 원자 단편 거래이다. 그러나 이 데이터는 또한 3초의 방량으로 전송되기도 하고 실시간도 아니다. 예를 들어 1.5초에 발생한 거래가 3초까지 전송되지 않는다. [중고] 위탁 예약 데이터, 레벨 2에서는 구매 한 번 판매 한 번의 상위 50 명, 모든 예약은 아닙니다. (이 글은 양량 거래자 微信 id:quantcity에서 정리했습니다.

**典型的有几类原因导致数据的差异**
- **1. 数据记录方式**

예를 들어, 주식의 레벨 1 데이터의 예를 들어, 거래소가 모든 증권의 최신 상태 데이터를 기록하는 dbf 파일을 발행하고, dbf 파일은 지속적으로 자동으로 갱신됩니다. 그러면 데이터 제공자 또는 데이터를 기록하는 사람이 해야 할 일은 모든 데이터를 데이터베이스에 넣기 위해 이 파일을 매번 읽는 것입니다. 그러나 거래소가 데이터를 갱신하는 빈도는 고유한 값이 아니기 때문에 데이터를 놓치지 않기 위해 가장 좋은 방법은 데이터를 갱신하는 빈도가 더 높다는 것입니다. 문제가 발생합니다. 이런 규칙이 있기 때문에, 여러분이 볼 수 있는 몇몇 비활성 거래 증권의 데이터 양은 활성 거래 증권보다 적고, 장기적인 선물 데이터는 최근보다 적고, 시간표가 일치하지 않는 문제들이 있습니다.

- **2. 运维问题**

아무도 연결이 끊어지지 않을 것을 보장 할 수 없습니다. 연결이 끊어지거나 기계 오류, 프로그램 오류 등이 발생할 경우 거래소 데이터 재생을 놓칠 수 있습니다. 앞서 언급한 데이터 메커니즘에 따르면, 실제로 레벨 1 데이터 T와 T+1 순간에는 논리적 연관성이 없습니다.

- **3. 程序导致的数据错误**

일부 유형의 주식 가격의 이상, 빈, 등과 같은 비교적 특이한 오류는 데이터 기록 절차의 오류로 인해 발생할 수 있습니다. 왜 발생합니까? 이유가 많고, 우리는 발생할 수 있음을 알고 있습니다. 거래소의 문제, 예를 들어 거래소가 레벨 2 데이터의 시작 가격을 잘못 작성 한 경우. 따라서 원칙적으로 100% 신뢰할 수 있는 데이터는 거의 없습니다. 데이터의 검사와 정화는 필요하고 지루합니다. 규칙의 설정은 개인 경험에 달려 있습니다.


더 많은