본문 바로가기

backup

L2캐쉬를 이용한 FIX성능 높이기 추석기간 FIX인코더 새로 만들었는데, 이번에 FIX엔진 만든 것은 L2캐쉬를 적극적으로 이용해서 성능을 높였네요. 오픈소스 FIX엔진으로 많이 쓰이는 것이 quick fix라고 있는데, fix8이라는 곳에서 자신들이 성능이 더 좋다고 하면서 테스트 자료를 올린 것이 있더군요. 흔히 이런 곳에서 자기들 속도 높다고 하면서 하는 것이 for문 십만번 돌리기, 백만번 돌리기입니다. 아래에 있는 것이 테스트 구문하고 그 결과인데, 십만번 돌리고 걸린 시간을 나눠서 인코더가 1.63마이크로초 디코더가 7.05마이크로초가 걸렸다고 하는 군요. 그런데 for문 십만번 돌리기에는 문제가 있습니다. L2메모리 이상에서 캐쉬되어서 속도가 엄청나게 빨라지게 됩니다. 그리고 컴파일러에 따라서는 자동으로 옵티마이즈되어서 병렬.. 더보기
지난달부터 네번째 FIX엔진 완전히 갈아엎고 있네요. ㅋ FIX엔진 말고 다른 개선 하려다가 FIX엔진 좀 바꿔야 할게 있어서 수정하다보니 또 지난달부터 4번째로 완전히 FIX엔진 갈아엎고 있네요. 지난번에 만든 것도 엄청 최적화되었다고 생각을 했었는데, 왠지 다시 짤때마다 다른게 보이고, 새로운 아이디어가 떠오르네요. ㅋ 이번에 기본 개념부터 완전히 다른 FIX디코더를 만들었는데, 실제 마켓데이터 수신해보니 드디어 1마이크로초 아래로 내려갔네요 ㅠ.ㅜ 그런데 옆으로 그 고생하면서 만들었던 이제는 하나도 쓸모가 없어진 긴 코드들이 눈에 보이는군요 ㅠ.ㅜ 코드 길이도 훨씬 줄고, 개념도 바뀌고, 재활용할 구석이 안보여요 ㅠ.ㅜ 이젠 FIX디코더 성능이 문제가 아니라 FIX인코더가 병목이네요. 문제는 이번에 새로 디코더 짜면서 인코더에 대한 아이디어도 떠올랐는데,.. 더보기
zeromq 또는 cep를 쓰는 빠른 HFT 거래 시스템? HFT 시스템을 구축을 한다고 하면서 zeromq를 쓰려고 한다는 사람들을 보면 그걸 왜 쓰지라는 생각이 든다. 아래글에서 zeromq가 빠르다는 의미가 무엇인지에 대해서 이야기 한것 참고를 하면 좋겠다. https://kldp.org/node/138232 zeromq를 이용해서 HFT시스템을 만들었을 때 장점? 정말 위의 글 처럼 std::queue를 쓸 때보다 나은점이 무엇인지 솔직히 하나도 모르겠다. 조금의 병렬프로그래밍만 할 수 있으면 그냥 차라리 std::queue가 더 빠르지 않을까? zeromq광고하는 사람들이 스테로이드 받은 TCP, 혹은 TCP보다 빠르다고 하는데, 솔직히 TCP소켓 프로그래밍 잘못하면 속도 잘 안나올수는 있다. 하지만. zeromq가 통신할 때 사용하는 프로토콜이 TCP.. 더보기
HFT 시스템 개발 순서 HFT를 시작하겠다고 한다면 가장 먼저 해야할 것은 수익을 낼 수 있는 로직을 찾아내는 것입니다. 완벽한 로직이 아니어도, 최소한 수익을 낼 수 있는 아이디어라도 어느 정도 도출을 하고 시작하여야 합니다. 거래 속도가 빠르다고 HFT도 아니고, 거래 속도만 높다고 해서 수익이 나지도 않습니다. 이 단계에서 거래 로직을 찾는 방법은 우선 틱데이터라도 받아서 저장하면서, 데이터분석해서 자신의 아이디어를 구체화하고가상으로라도 시뮬레이션해보는 것입니다. 이 단계에서는 굳이 속도가 빠르지 않아도 됩니다. HFT가 빨라야 하는 것은 시세를 받자마자 로직처리하고 주문까지 던져야 하는 것인데,주문을 던지지 않는다면, 늦게 받으나 일찍 받으나 큰 차이가 나지 않습니다.거래소간 차익거래를 한다든지 그런 종류의 HFT가 아.. 더보기
stunnel을 쓰지 않고 바로 openssl c 프로그래밍하기 FIX로 거래를 하려고 하면 흔히 ssl를 요구하게 됩니다. 그래서 쉽게 쓰게 되는데,FIX제공해주는 업체에서 보통 쉽게 쓰는 방법으로 stunnel을 추천을 하게 됩니다. stunnel은 openssl을 기반으로 해서 자기 컴퓨터에 일반 평문을 ssl로 자동으로 바꿔서 보내주는 중간 프락시 서버를 만드는 것입니다.말이 어려운데ssl을 요구하는 서버와 직접 통신 하는 것이 아니라, 내 컴퓨터에 심어져 있는 서버에다가 메세지를 보내면 그 중간 서버가 ssl을 요구하는 업체에다가 메세지를 암호화해서 보내고다시 그 곳으로부터 오는 메세지를 암호를 풀어서 평문으로 해서 자신의 프로그램에서 쓸 수 있도록 해주는 것입니다. 참고로 openssl은 오픈소스쪽에서 무료로 만들어진 ssl 구현한 툴입니다. stunnel.. 더보기
FX마진거래 유로달러 흥미롭게 거래하는 동영상이 있군요. 요즘 바빠서 글도 자주 올리지 못했네요. FX마진거래관련해서 자료 좀 찾다가 보게된 동영상인데, 유로 달러를 피보나치 이용해서 거래를 하는 군요. FX마진거래가 거래량이 많아서 그런지, 기술적 분석이 잘 맞는 경우가 많은데, FX마진 중에서 특히 유로달러는 통화 특성이 기술적 분석이 잘 맞는 경향이 있네요. 제가 수동거래를 잘 안해서 쓰지는 않는데, 확실히 수익내는 유로달러 로직 중에 피보나치 쓰는 로직들이 있긴 한데 잘 맞더라구요. FX마진거래 고수중 아는 분이 EA만들어 달라고 해서 알게된 로직인데, 그 분도 피보나치 이용해서 잘 맞추는거 보면 위의 전략이 그렇게 허무맹랑한 것 같지는 않고, 연구해볼 가치는 있을 것 같긴 하네요. 지금 개발하고 있는것 끝나고 시간 남으면 한번 로직 찾아보는 것도 재미.. 더보기
밀리초(ms), 마이크로초(us), 나노초(ns) 관계 밀리초, 마이크로초, 나노초 단위나 표기법에 대해서 혼동을 하시는 분들이 있는 것 같아서(?) 정리 글 올립니다. 가장 먼저 밀리초, 밀리초는 ms로 표기하고 1/1000초 입니다. 참고로 눈을 깜빡이는 시간이 대략 300ms(밀리초)가 나옵니다. 뉴욕에서 런던까지 빛의 속도로 가면 대략 30ms(밀리초)가 나옵니다. 뉴욕과 런던 서버 연결하는데 레이턴시가 30ms 정도 나오길래 왜 이렇게 오래 걸려 어떻게 더 줄여볼 수 없을까라고 생각을 한 적이 있는데, 좀 지나보니 그게 빛의 속도였더군요.. 1초에 지구를 7바퀴 반.. 물론 조금 더 줄일 수 있는 방법들은 있지만, 거의 그게 빛의 속도 수준입니다. 아래는 참고로 한달에 200만원 정도 서버 쓸 수 있는 FCM360이란 업체에서 제공해주는 스피드입니다.. 더보기
HFT 시스템 트레이딩 환경 구축 - 레드햇 엔터프라이즈 리눅스 설치기 몇날 며칠 레드햇 엔터프라이즈 리눅스 가지고 완전 씨름을 하였다. 시스템 트레이딩 환경을 구측 하는데 리눅스이고 더욱이 레드햇 엔터프라이즈 리눅스이냐.. 리눅스는 윈도우와 달리 리얼타임 OS로 속도가 더 빠르고, OS차원에 커스터마이징이 가능하다.그래서 HFT 시스템 트레이딩을 위한 환경을 구축할 수가 있다. 물론 많이 알아야 하겠지만 말이다. 하지만, 이런 것보다 가장 큰 이유는 솔라플레어 네트워크 카드를 쓰기 위해서이다.많은 HFT 시스템 트레이딩 업체들에서 쓰는 솔라플레어 네트워크 카드는 대표적인 10기가바이트 네트워크 카드이다. 10기가 바이트 네트워크 카드는 100메가 바이트 네트워크 카드는 한번에 처리하는 데이타양은 같다. 그말은 10기가 바이트가 100메가 바이트 네트워크 카드가 1번 처리할.. 더보기
HFT 시스템 만들기 FIX프로토콜 HFT 트레이딩을 하다보면 FIX프로토콜이라든 것을 들어보게 됩니다. 금융거래는 국제적으로 FIX가 거의 표준으로 사용이 되고 있는데, 해외사이트에서 관련 사이트 돌아다니시면 FIX라든지 FastFix라든지를 접하게 됩니다. 해외에서 거래를 하게되면, 큰 업체들은 기본적으로 FIX를 제공합니다. 꼭 HFT를 위해서가 아니라 금융상품을 거래하기 위한 표준규약이기 때문에 대부분 FIX를 제공하고, FIX를 이용해서 거래를 하게 되면 매우 빠르게 거래가 가능합니다. FX마진거래를 하시는 분들은 MT4를 많이들 쓰시는데, 시스템을 업체서버와 같은 곳에서 네트웍 레이턴시 최소화시키고 거래해봐야 아무리 빨라봐야 200ms 이하로 절대로 못 내려갑니다. 내부를 알고나면 MT4가 간편하기는 하지만 브로커가 장난치기 정.. 더보기
[시스템 트레이딩을 위한 금융공학]시계열 분석 데이터 구하기 시스템 트레이딩을 위한 금융공학을 시작하려고 했는데, 바쁜일이 있어서 제대로 시작도 하지 못했군요. ㅋ 아주 기초적인 내용에서부터 좀 고급의 내용까지 시스템 트레이딩을 하면서 필요한 내용들을 가능한 쉽게 설명을 하도록 하겠습니다. 처음이니 아주 기초적인 시계열분석부터 시작을 하도록 하겠습니다. 시계열분석이라는 말은 들어보지도 못하신 분도 있을 것 같은데, 일정한 시간 주기의 데이터를 가지고 통계분석을 하는 것을 시계열 분석이라고 합니다. 말이 좀 어렵긴 하네요. 영어로는 time series analysis 라고 하는데, 시간과 관련된 데이터의 분석입니다. 시계열 분석을 하기 앞서서 우선 데이터를 먼저 구해야겠죠. 여기서는 우선 코스피 200 자료를 가지고 분석을 해보려고 합니다. 코스피 200 일자별 .. 더보기