Friday 9 February 2018

자바 거래 전략


자바 거래 전략
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
데이터 피드 스레드 실행중인 거래 전략?
아시다시피 거래 전략은 입찰가 또는 마지막 거래 가격이 변경되는 경우와 같이 실시간 피드를 기반으로 조치를 취합니다. 데이터 피드 공급자는 주 스레드와 별도의 스레드에서 비동기 적으로 데스크톱 응용 프로그램에 따옴표를 스트리밍합니다. 이 데이터 피드 스레드는 데이터 공급 업체에 요청할 때 생성되며 스트리밍을 중단하라는 요청을 명시 적으로 보낼 때까지 계속됩니다.
대다수는 틱 데이터에 따라 주문을 입력하거나 업데이트하기 때문에 데이터 피드 스레드는 거래 전략을 실행합니다. 이 접근 방식에 문제가 있습니까? 이 디자인은 거래 응용 프로그램에서 일반적입니까?
특히 실행에 시간이 걸리는 경우 데이터 공급 스레드에서 거래 전략을 실행하고 싶지는 않습니다. 그 실행은 다른 스레드에서 일어나야합니다. Java에 익숙하지는 않지만 스레드 풀을 사용할 수 있다고 가정합니다. C #에서는 여러 스레드를 통해 작업을 분산시키는 매우 강력한 방법은 작업을 사용하는 것입니다.
생각해볼만한 또 다른 사항은 이전 틱을 계속 처리하는 동안 악기에 새로운 틱이있을 때 수행해야 할 작업입니다. 대부분의 경우 가장 최근 프로세스 만 처리하는 것이 좋습니다. 나는 C #의 샘플 구현으로 가장 최근의 업데이트 패턴이라고 불리는 것에 대해 약간의 글을 썼다. 어쩌면 당신은 그것을 유용하다고 생각할 것입니다.
대다수는 틱 데이터에 따라 주문을 입력하거나 업데이트하기 때문에 데이터 피드 스레드는 거래 전략을 실행합니다.
좀 빠지는. 데이터 피드 스레드는 거래 전략의 실행을 트리거합니다. 다른 처리가 데이터 피드 스레드를 느리게하는 것을 원하지 않습니다.

자바 거래 전략
오픈 자바 트레이딩 시스템의 홈에 오신 것을 환영합니다.
Open Java Trading System (OJTS)은 주식 거래 시스템을 개발하기위한 공통 인프라입니다. 인터넷의 원시 데이터 수집은 거래 신호의 인식과 시각화 모듈 및 은행과 같은 거래 플랫폼의 프로그래밍 방식 인터페이스에 연결되는 모듈로 구성됩니다. 이 프로젝트의 목적은 거래 시스템 개발자를위한 자체적 인 순수 Java (플랫폼 독립적) 공통 인프라를 제공하는 것입니다. 해결해야 할 몇 가지 측면은 재무 데이터를 저장하기위한 공통 SQL92 호환 데이터베이스 스키마, 서로 다른 모듈 간의 데이터 교환 방법, 원시 재무 데이터 및 거래 신호의 시각화 및 기타 여러 가지 공통적 인 측면을 작성하는 것입니다. 최종 거래 시스템.
직장과 가족 때문에 OJTS를 개선 할 시간을 찾지 못했습니다. 나는 그 영역에서 더 활동적인 자바 오픈 소스 프로젝트를 안내 할 링크 섹션을 계속 업데이트 할 예정이다.
사실 주식 시장의 역 동성에 대한 나의 관심의 결과로, 저는 환율의 이해를 돕기 위해 국가 경제에 대한 더 자세한 정보를 얻기 시작했습니다. 이 주제는 마침내 우리가 "가치", "성공"또는 "유용성"을 측정하기 위해 경제학에서 사용하는 미터 단위로서의 돈에 대한 더 깊은 연구로 이어졌습니다. 이 주제는 매우 흥미로운 것으로 밝혀졌지만 동시에 우리의 통화 시스템이 어떻게 작동하는지에 대한 정보를 찾는 것은 매우 어려웠습니다. 돈을 어디에서 얻고, 누가 돈을 창출하는지, 그리고 돈의 가치를 결정하는 것은 사람들에게 물어보십시오. 석사 학위 또는 Phd. 경제학과에서는 이러한 세부 사항을 알 수 없습니다. 오, 그래, 그들은 약간의 기술적 인 용어로 대답 할 것이지만, 프로세스를 설명하는 간단한 다이어그램을 그릴 수는 없을 것이다.
H. G. Wells는 다음과 같이 말했습니다 :
"통화를 쓰는 것은 일반적으로 불쾌한, 실제로 거의 외설스러운, 관행으로 인식된다 편집자는 작가가 돈을 쓰지 않는 것을 거의 눈물을 흘리지 않을 것입니다. 흥미롭지 않은 주제이기 때문에가 아니라 항상 심오한 혼란을 겪었 기 때문입니다. . "
나는 민주 사회에 살고있는 어떤 사람에게이 주제에 관해 읽을 것을 제안한다. 그것은 exagerated 수없는 정도로 우리의 삶에 매일 영향을 미칩니다! 내 의견으로는, 그 세계에있는 민주주의 국가의 모든 시민들은 우리 돈이 어디서 오는지 알고 있어야합니다. 당신은 화폐 부를 증가시키는 데 도움이되는 도구를 찾기 위해이 웹 사이트를 방문했을 가능성이 큽니다. 미터법 단위 "돈"(달러 또는 유로와 상관없이)을 이해하는 것은 돈을 벌기위한 툴킷에서 중요한 요소가 될 것입니다.
시간이 없으면 그 주제에 관한 단 하나의 책을 읽을 여력 만 있으면 Frederick Soddy가 부, 가상 부와 부채를 읽을 것을 제안합니다. 아마존을 통해 23.48 달러에 중고 사본을 살 수 있었지만 온라인 버전도 있습니다. 그것을 읽으려면 DjVu 플러그인이 필요합니다. 이 책은 원래 1929 년에 출판되었지만 실제 사실을 잘 설명하고 있습니다. Frederick Soddy의 모든 결론에 동의하지 않더라도 그의 작품은 즐겁게 자극적 인 것으로 생각되며 올바른 질문을하게됩니다.
릴리즈, 버그 수정 및 업데이트 된 문서
나는 OJTS가 다른 자바 거래 시스템 노력에 더 호환되도록 만드는 방법을 조사하고있다.
ITSdoc. org에는 투자 및 거래 시스템 분야의 지식 배포에 중점을 둔 새로운 위키가 있습니다. ITSdoc. org의 배경은 커뮤니티가 지식을 공유하도록 도와주는 위키피디아와 유사한 공동 작업 플랫폼을 갖추는 것입니다.
어제 OpenJavaTradingSystem 라이브러리 버전 0.13을 릴리스했습니다. 새로운 기능 중에는 OnVista의 주식, 자금 및 통화에 대한 데이터 검색이 있습니다. 통화 처리 및 전환 구현. 포트폴리오가 구현되고 단일 보안 용지 항목과 동일한 방식으로 포트폴리오를 사용할 수 있습니다. 알고리즘을 주식 시장 시계열에 적용하기위한 일반적인 프레임 워크를 추가했습니다. SISC / Scheme 대화 형 셸에서 ABCL / CommonLisp 및 "J"라는 편집기로 전환되었습니다. 파일 시스템에서 웹을 통해 이미 검색된 데이터를 캐싱하기위한 일반적인 데이터 캐싱 메커니즘을 추가했습니다. 더 많은 사소한 개선 사항이 새 버전에 관심이 있으시면 퀵 스타트 / 스크린 샷 섹션에서 시작하십시오. 매뉴얼은 아직 업데이트되지 않았지만 프로젝트에서 라이브러리를 사용하려면 유용한 배경 정보를 제공 할 수 있습니다. 설명서가 곧 업데이트되어야합니다.
의사 결정.
프로젝트의 내부를 설명하는 문서. Java 데이터 오브젝트 및 인터페이스 문서
& gt; & gt; HTML & gt; & gt; PDF 투자 및 거래 시스템 문서화 프로젝트
T e c h h o o o o g.
이 프로젝트에 사용 된 제 3 자 빌딩 블록.
HSQLDB는 타사 데이터베이스를 설치하지 않고 즉시 OJTS를 사용할 수 있도록 프로젝트와 함께 제공되는 데이터베이스 엔진입니다. 그러나 다른 SQL92 호환 데이터베이스를 사용하려는 경우이 옵션이 구성 옵션입니다. Castor (라이센스 : Exolab 라이센스)
Castor는 Java [tm] 용 오픈 소스 데이터 바인딩 프레임 워크입니다. Java 오브젝트, XML 문서 및 관계형 테이블 간의 최단 경로입니다. Castor는 Java-to-XML 바인딩, Java-to-SQL 지속성 등을 제공합니다. Castor 도크 렛 (라이센스 : GNU LGPL v2.1)
Castor JDO 및 Castor XML에 대한 매핑 및 DDL 파일을 생성하는 Java 도크 렛. TestMaker (라이센스 : TestMaker 오픈 소스 라이센스)
TestMaker 프로젝트에서 HTTP 또는 HTTPS와 같은 프로토콜 구현 만 웹에서 데이터를 수집하는 데 사용됩니다. jCookie (라이센스 : GNU LGPL v2.1)
jCookie 라이브러리는 TestMaker 라이브러리가 작동하는 데 필요합니다. htmlparser (라이센스 : GNU LGPL v2.1)
htmlparser 라이브러리는 웹 자원에서 데이터를 추출하는 데 사용됩니다. ABCL / CommonLisp (라이센스 : GNU GPL v2)
ABCL (Armed Bear Common Lisp)은 ANSI Common Lisp 프로그래밍 언어로 프로젝트의 알고리즘 중심을 구현하는 데 사용됩니다. JFreeChart (라이센스 : GNU LGPL v2.1)
JFreeChart는 재무 데이터를 차트로 시각화하는 데 사용됩니다. JSci (라이센스 : GNU LGPL v2.1)
Joda Time은 원래 JDK 날짜 및 시간 클래스를 대체합니다.
다른 프로젝트에 대한 링크.
JavaTraders Google 그룹은 다른 Java 기반 거래 시스템 및 도구에 대해 알아볼 수있는 최고의 항목 일 수 있습니다.
이 프로젝트의 코드는 LGPL의 조건에 따라 사용이 허가되며이 프로젝트에서 찾은 모든 문서는 FDL의 조건에 따라 사용이 허가됩니다.

자바 거래 전략
당겨 요청 0.
오늘 GitHub에 가입하십시오.
GitHub은 코드를 호스팅하고 검토하고, 프로젝트를 관리하고, 소프트웨어를 함께 구축하기 위해 함께 일하는 2,000 만 명이 넘는 개발자들의 본거지입니다.
HTTPS로 복제하십시오.
Git을 사용하거나 웹 URL을 사용하여 SVN에서 체크 아웃하십시오.
Backtesting 및 Trading을위한 Java 프레임 워크.
Tradelib은 2015 년 초부터 백 테스팅 및 신호 생성을 위해 실제 생활에서 사용되었습니다.
그것은 주로 선물 거래를 지원하기 위해 사용되었습니다. 따라서 주식과 ETF는 문제가되지 않지만, 특히 USD가 견적 통화가 아닌 경우 Forex를 지원해야합니다.
Tradelib은 SQLite와 MySQL을 모두 지원합니다. MySQL 5.6.4 이상이 지원됩니다. 이전 버전에서는 작동하지만 테이블 정의 파일에는 약간의 변경이 필요합니다.
Maven은 빌드 도구입니다.
코드는 Java (Java 8 이상)이므로 거의 모든 곳에서 작동합니다.
자세한 내용은 프로젝트 wiki 페이지를 참조하십시오.
간단한 모멘텀 전략이 예제로 구현되었습니다.
&부; 2017 GitHub, Inc. 용어 개인 정보 보안 상태 도움말.
현재이 작업을 수행 할 수 없습니다.
다른 탭이나 창을 사용하여 로그인했습니다. 새로 고침하여 세션을 새로 고침하십시오. 다른 탭이나 창에서 로그 아웃했습니다. 새로 고침하여 세션을 새로 고침하십시오.

QuantStart.
빠르게 성장하는 소매점 퀀텀 트레이더 커뮤니티를 지원하는 Quantcademy 개인 회원 포털에 가입하십시오. 당신은 당신의 가장 중요한 퀀트 트레이딩 질문에 대답 할 준비가되어있는 지식이 풍부하고 마음이 맞는 퀀트 트레이더 그룹을 찾을 수 있습니다.
퀀트 트레이딩에 관한 나의 eBook을 확인해보십시오. 여기서 저는 파이썬 툴로 수익성 높은 체계적인 트레이딩 전략을 만드는 법을 가르쳐드립니다.
Python 및 R을 사용하여 시계열 분석, 기계 학습 및 베이지안 통계를 사용하는 고급 거래 전략에 관한 새로운 전자 책을 살펴보십시오.
2014 년 2 월 26 일 Michael Halls-Moore 작성
이 기사에서는 자동화 된 실행의 개념에 대해 설명합니다. 광범위하게 말하자면, 이것은 전자 거래 플랫폼을 통한 거래 전략이 이후의 인간 개입없이 거래 실행 신호를 생성하는 것을 허용하는 프로세스입니다. 현재까지 QuantStart에서 논의 된 대부분의 시스템은 자동화 된 실행 전략으로 구현되도록 설계되었습니다. 이 기사에서는 백 테스트 및 자동 실행 기능을 모두 제공하는 소프트웨어 패키지 및 프로그래밍 언어에 대해 설명합니다.
첫 번째 고려 사항은 전략을 백 테스팅하는 방법입니다. 내 개인적인 견해는 일류 프로그래밍 언어 내에서 백 테스트 환경을 맞춤 개발하면 유연성이 가장 높다는 것입니다. 반대로 공급 업체가 개발 한 통합 백 테스트 플랫폼은 백 테스트가 수행되는 방식에 대해 항상 가정해야합니다. 그럼에도 불구하고, 사용 가능한 프로그래밍 언어의 선택은 크고 다양하며 종종 압도적입니다. 어떤 언어가 적합한지를 개발하기 전에는 분명하지 않습니다.
체계적인 규칙으로 전략을 체계화 할 때 양적 거래자는 미래의 성과가 과거 성과를 반영 할 것이라는 확신을 가져야합니다. 이 가설을 테스트하기 위해 일반적으로 두 가지 형태의 백 테스팅 시스템이 있습니다. 광범위하게는 리서치 테스터 및 이벤트 기반 테스터로 분류됩니다. 우리는이 두 가지 패러다임에 대한 맞춤형 백 테스터와 벤더 제품을 비교하여 어떻게 비교하는지 살펴볼 것입니다.
연구 도구.
알고리즘 거래 전략을 식별 할 때 일반적으로 시장 상호 작용의 모든 측면을 완전히 simualte하는 것이 불필요합니다. 대신 잠재 전략 성능을 신속하게 결정할 수있는 근사값을 만들 수 있습니다. 이러한 리서치 툴은 종종 거래 비용, 채우기 가격, 제약 조건, 장소 의존성, 위험 관리 및 포지션 사이징에 대한 비현실적인 가정을 만듭니다. 이러한 단점에도 불구하고 이러한 전략의 성과는 여전히 효과적으로 평가할 수 있습니다. 연구를위한 일반적인 도구로는 MATLAB, R, Python 및 Excel이 있습니다.
이 소프트웨어 패키지에는 빠른 실행 속도와 쉬운 전략 구현을 가능하게하는 벡터화 기능이 함께 제공됩니다. MATLAB과 pandas는 벡터화 된 시스템의 예입니다. 이러한 리서치 툴을 통해 현실적인 시장 상호 작용 시뮬레이션을 완벽하게 "살피지"않고도 신속하고 반복적 인 방식으로 여러 전략, 조합 및 변형을 테스트 할 수 있습니다.
이러한 도구는 백 테스트 및 실행에 자주 사용되지만 이러한 연구 환경은 일반적으로 분 단위로 높은 주파수에서 일중 거래에 접근하는 전략에 적합하지 않습니다. 이러한 라이브러리는 실시간 시장 데이터 공급 업체에 효과적으로 연결되거나 강력한 방식으로 중개 API와 상호 작용할 수없는 경향이 있습니다.
이러한 실행상의 단점에도 불구하고 연구 환경은 전문 양적 무역 업계에서 많이 사용됩니다. 현실적인 백 테스팅 환경에서보다 엄격한 수표로 승격하기 전에 모든 전략 아이디어에 대한 "첫 번째 초안"을 제공합니다.
이벤트 중심 Backtesting.
일단 전략이 연구에서 적절하다고 판단되면 현실적으로 평가되어야합니다. 이러한 사실주의는 이전 게시물에서 설명한 문제의 대부분 (전부는 아닐지라도)을 설명하려고 시도합니다. 이상적인 상황은 실시간 실행뿐만 아니라 역사적인 백 테스트에도 동일한 거래 생성 코드를 사용할 수 있다는 것입니다. 이는 이벤트 기반 백 테스터를 통해 달성됩니다.
이벤트 중심 시스템은 소프트웨어 엔지니어링에서 널리 사용되며 일반적으로 윈도우 기반 운영 체제에서 그래픽 사용자 인터페이스 (GUI) 입력을 처리하는 데 사용됩니다. 또한 실시간 시장 주문 또는 무역 채우기의 개념을 이벤트로 캡슐화 할 수 있으므로 알고리즘 거래에 이상적입니다. 이러한 시스템은 종종 C ++, C # 및 Java와 같은 고성능 언어로 작성됩니다.
자동화 된 거래 전략이 실시간 시장 피드 및 브로커 (이 둘은 동일 할 수도 있음)에 연결되는 상황을 고려하십시오. 새로운 시장 정보가 시스템에 전송되어 이벤트가 새로운 거래 신호를 생성하고 실행 이벤트를 생성합니다. 이러한 시스템은 이벤트를 수신하고 적절하게 처리하기 위해 대기하는 연속 루프에서 실행됩니다.
역사적인 데이터 핸들러 및 중개 시뮬레이터와 같은 하위 구성 요소를 생성 할 수 있습니다. 이 하위 구성 요소는 실제 대응 물을 모방 할 수 있습니다. 따라서 실시간 실행과 매우 유사한 방식으로 백 테스팅 전략을 사용할 수 있습니다.
그러한 시스템의 단점은 간단한 연구 도구와 비교할 때 복잡한 설계에 있습니다. 따라서 "시장 출시 시간"은 더 길다. 그들은 버그에 취약하고 프로그래밍 및 소프트웨어 개발 방법론에 대한 지식이 필요합니다.
엔지니어링 측면에서 대기 시간은 시뮬레이션과 응답 사이의 시간 간격으로 정의됩니다. 양적 거래에서는 일반적으로 실행 신호 생성과 실행을 수행하는 브로커로부터 채우기 정보를 수신하는 사이의 왕복 시간 지연을 나타냅니다.
이러한 대기 시간은 저주파 인터 데이 전략에서 거의 문제가되지 않습니다. 대기 시간 동안 예상되는 가격 변동은 전략에 큰 영향을 미치지 않습니다. 대기 시간이 극도로 중요한 고주파수 전략에서도 마찬가지입니다. HFT의 궁극적 인 목표는 가능한 한 슬립을 줄이기 위해 대기 시간을 줄이는 것입니다.
대기 시간을 줄이는 것은 알고리즘 트레이딩 시스템과 주문이 실행되는 최종 거래소 간의 "거리"를 최소화하는 것입니다. 이는 시스템 간의 지리적 거리를 줄임으로써 네트워크 케이블 링을 따라 이동 시간을 단축시킬 수 있습니다. 네트워킹 하드웨어에서 수행되는 처리를 줄이거 나보다 정교한 인프라로 중개를 선택하는 것도 포함될 수 있습니다. 많은 중개 회사가 비즈니스 우승을 위해 대기 시간에 경쟁합니다.
대기 시간 감소는 두 서버 간의 네트워크 거리로 정의되는 "인터넷 거리"의 함수로서 기하 급수적으로 더 비쌉니다. 따라서 고 빈도 거래자의 경우 대기 시간 감소 지출과 미끄러짐 최소화로 인한 이득 사이에 절충안이 도달해야합니다. 이러한 문제는 아래의 Colocation 섹션에서 설명합니다.
언어 선택.
언어 선택을 유도하는 몇 가지 쟁점이 이미 설명되어 있습니다. 이제 개별 프로그래밍 언어의 장점과 단점을 고려해 보겠습니다. 나는 언어를 고성능 / 경질 개발과 저 성능 /보다 쉬운 개발로 크게 범주화했다. 이것들은 주관적인 용어이며 배경에 따라 일부는 동의하지 않습니다.
커스텀 백 테스팅 환경 프로그래밍의 가장 중요한 측면 중 하나는 프로그래머가 사용되는 툴에 익숙하다는 것입니다. 프로그래밍 언어 환경에 익숙하지 않은 사람들을 위해 다음은 알고리즘 거래 내에서 활용되는 경향을 명확히 할 것입니다.
C ++, C # 및 Java.
C ++, C # 및 Java는 모두 범용 객체 지향 프로그래밍 언어의 예입니다. 즉, 해당 통합 개발 환경 (IDE)없이 사용할 수 있고, 모든 플랫폼에서 작동하며, 상상할 수있는 거의 모든 작업을 수행 할 수있는 다양한 라이브러리가 있으며 올바르게 활용하면 빠른 실행 속도가 가능합니다.
궁극적 인 실행 속도가 원하는 경우 C ++ (또는 C)가 최상의 선택이 될 수 있습니다. 메모리를 관리하고 실행 속도를 최적화 할 수있는 유연성이 가장 뛰어납니다. 이러한 유연성은 가격으로 제공됩니다. C ++은 잘 배우는 것이 까다 롭고 종종 미묘한 버그를 유발할 수 있습니다. 개발 시간은 다른 언어보다 훨씬 오래 걸릴 수 있습니다. 이러한 단점에도 불구하고 그것은 금융 산업에 보급되어 있습니다.
C #과 Java는 부동 소수점 및 정수와 같은 원시 데이터 유형을 제외한 모든 구성 요소가 객체가되어야하기 때문에 비슷합니다. 자동 가비지 수집을 수행하여 C ++과 다릅니다. 가비지 수집은 성능 오버 헤드를 추가하지만 더 빠른 개발로 이어집니다. 이 언어들은 고유 한 GUI 기능, 수치 해석 라이브러리 및 빠른 실행 속도를 가지기 때문에 백 테스터를 개발할 때 좋은 선택입니다.
개인적으로, 저는 HFT 시스템과 같이 매우 빠른 실행 속도가 필요한 이벤트 기반 백 테스터를 만들기 위해 C ++를 사용합니다. 이것은 파이썬 이벤트 중심 시스템에 병목 현상이 발생했다는 느낌이 들었을 때만 해당합니다. 후자의 언어가 그러한 시스템에 대한 첫 번째 선택이 될 수 있기 때문입니다.
MATLAB, R 및 Python.
MATLAB은 수치 계산을위한 상용 IDE입니다. 그것은 학계, 공학 및 금융 분야에서 널리 받아 들여지고 있습니다. 그것은 과학 계산을위한 많은 숫자 라이브러리를 가지고 있습니다. 개발중인 알고리즘이 벡터화 또는 병렬화의 대상이된다고 가정 할 때 빠른 실행 속도를 자랑합니다. 이러한 장점에도 불구하고 비용이 많이 들기 때문에 소매 상인에게는 예산이 적게 든다. MATLAB은 인터랙티브 브로커 (Interactive Brokers)와 같은 중개업에 직접 실행하기 위해 때때로 사용됩니다.
R은 전용 통계 스크립팅 환경입니다. 무료 오픈 소스 크로스 플랫폼이며 매우 고급 분석을 수행 할 수있는 풍부한 통계 패키지를 포함합니다. R은 학문 통계 및 양적 헤지 펀드 산업에서 매우 널리 사용됩니다. R을 중개 회사에 연결할 수는 있지만 업무에 적합하지 않으며 더 많은 연구 도구로 간주되어야합니다. 또한 작업이 벡터화되지 않으면 실행 속도가 부족합니다.
필자는 MATLAB, R 및 위에서 언급 한 범용 언어 사이에 있지만 Python을이 제목 아래에 그룹화했습니다. 그것은 무료 오픈 소스 및 크로스 플랫폼입니다. 이것은 컴파일 된 것과 반대되는 것으로 해석되어 C ++보다 기본적으로 느립니다. 그러나 과학적 계산부터 저수준 웹 서버 설계에 이르기까지 상상할 수있는 거의 모든 작업을 수행 할 수있는 라이브러리가 포함되어 있습니다. 특히 NumPy, SciPy, pandas, matplotlib 및 scikit-learn이 포함되어 있습니다. 벡터화 된 언어가 컴파일 된 언어 실행 속도와 비교할 수있는 견고한 수치 연구 환경을 제공합니다.
파이썬은 또한 브로커에 연결하기위한 라이브러리를 가지고 있습니다. 이를 통해보다 복잡한 다른 언어를 사용하지 않고도 이벤트 중심의 백 테스팅 및 라이브 실행 환경을 만들 수있는 "원 스톱 숍"을 제공합니다. 실행 속도는 몇 분 또는 그 이상의 시간 척도로 거래되는 일중 거래자에게 충분합니다. 파이썬은 C ++과 같은 하위 언어와 비교할 때 매우 익숙하고 배우기 쉽습니다. 이러한 이유로 우리는 QuantStart 기사에서 파이썬을 광범위하게 사용합니다.
통합 개발 환경.
IDE라는 용어는 알고리즘 거래 내에서 여러 의미를 지닙니다. 소프트웨어 개발자는이를 구문 강조, 파일 찾아보기, 디버깅 및 코드 실행 기능으로 프로그래밍 할 수있는 GUI를 의미합니다. 알고리즘 트레이더는 실시간 또는 실시간 데이터 다운로드, 차트 작성, 통계적 평가 및 실제 실행을 통해 완벽하게 통합 된 백 테스팅 / 거래 환경을 의미합니다. 우리의 목적을 위해이 용어는 범용 프로그래밍 언어로 간주되지 않는 GUI 기반의 백 테스팅 / 거래 환경을 의미합니다.
일부 퀀트 거래자는 Excel을 거래에 부적절하다고 생각할 수도 있지만 결과의 "온 전성 검사"에 매우 유용하다고 생각했습니다. 모든 데이터가 명백한 시각에서 직접 이용 가능하다는 사실은 매우 기본적인 신호 / 필터 전략을 구현하는 것을 수월하게 만듭니다. Interactive Brokers와 같은 중개인은 Excel에서 실시간 시장 데이터를 받고 거래 주문을 실행할 수 있도록하는 DDE 플러그인도 허용합니다.
사용의 용이성에도 불구하고 Excel은 합리적인 규모의 데이터 또는 수치 계산 수준에서 매우 느립니다. 다른 전략과 비교하여 개발할 때만 오류 검사에 사용합니다. 특히 전략이 사전 검색 편견의 대상인지 여부를 확인하는 것이 매우 편리합니다. 소프트웨어의 스프레드 시트 특성으로 인해 Excel에서 감지하는 것이 간단합니다.
프로그래밍 언어에 익숙하지 않고 인터내셔널 전략을 수행하는 경우 Excel이 좋은 선택 일 수 있습니다.
상업 / 소매 Backtesting Software.
소매 차트, "기술 분석"및 백 테스팅 소프트웨어 시장은 매우 경쟁력이 있습니다. 이러한 소프트웨어가 제공하는 기능으로는 가격의 실시간 차트 작성, 풍부한 기술 지표, 맞춤형 백 테스팅 언어 및 자동 실행 기능이 있습니다.
일부 공급 업체는 TradeStation과 같은 올인원 솔루션을 제공합니다. TradeStation은 여러 자산 클래스에 걸쳐 전자 주문을 제공하는 거래 소프트웨어 (TradeStation이라고도 함)를 생산하는 온라인 중개 회사입니다. 현재 자동화 된 실행을위한 직접 API를 인식하지 못했습니다. 대신 주문은 GUI 소프트웨어를 통해 이루어져야합니다. 이는 트레이딩 인터페이스가 가벼운 트레이더 (Trading Trader)를 보유하고 있지만, 자사의 독점적 인 실시간 시장 / 주문 실행 API와 FIX 인터페이스를 제공하는 인터렉티브 중개인 (Interactive Brokers)과는 대조적입니다.
또 다른 매우 인기있는 플랫폼은 'Expert Advisors'창설을 위해 외환 거래에 사용되는 MetaTrader입니다. 자동 거래에 사용할 수있는 독점적 언어로 작성된 사용자 정의 스크립트입니다. TradeStation이나 MetaTrader에 대한 많은 경험이 없었으므로 그만큼의 시간을 투자하지 않을 것입니다.
이러한 도구는 심층적 인 소프트웨어 개발에 익숙하지 않고 많은 세부 사항을 처리하기를 원한다면 유용합니다. 그러나 이러한 시스템을 사용하면 많은 유연성이 희생되며 종종 하나의 중개 회사에 묶입니다.
오픈 소스 및 웹 기반 도구.
현재 널리 사용되는 두 가지 웹 기반 백 테스팅 시스템은 Quantopian과 QuantConnect입니다. 전자는 Python (및 ZipLine, 아래 참조)을 사용하는 반면 후자는 C #을 사용합니다. 두 가지 모두 풍부한 역사적인 데이터를 제공합니다. Quantopian은 현재 인터렉티브 브로커 (Interactive Brokers)를 통해 라이브 거래를 지원하고 QuantConnect는 실시간 거래를 위해 노력하고 있습니다.
Algo-Trader는 스위스 기반 기업으로 시스템에 오픈 소스 및 상업용 라이센스를 모두 제공합니다. 내가 제공 할 수있는 것에서부터 제공은 매우 성숙한 것으로 보이며 많은 기관 고객이 있습니다. 이 시스템은 전체 이력 테스트 및 복잡한 이벤트 처리를 허용하며 대화 형 중개인과 연결됩니다. Enterprise 버전은 훨씬 더 높은 성능 기능을 제공합니다.
Marketcetera는 이미 작성한 코드를 활용하기 위해 Python 및 R과 같은 다른 많은 언어와 연결할 수있는 백 테스팅 시스템을 제공합니다. 'Strategy Studio'는 백 테스팅 코드를 작성하고 최적화 된 실행 알고리즘을 작성하는 기능을 제공하며, 이후 역사적인 백 테스트에서 생 종이 거래로 전환합니다. 나는 전에 그들을 사용하지 않았다.
ZipLine은 위에서 언급 한 Quantopian 서비스를 지원하는 Python 라이브러리입니다. 그것은 완전히 이벤트 중심의 백 테스팅 환경이며 현재는 미미한 바 기준으로 미국 주식을 지원합니다. 나는 ZipLine을 광범위하게 사용하지는 않았지만 그것이 좋은 도구라고 생각하는 다른 사람들을 알고있다. 여전히 개선해야 할 부분이 많이 남아 있지만 팀은 지속적으로 프로젝트를 진행하고 있으며 매우 적극적으로 유지 관리하고 있습니다.
살펴보고 싶은 Github / Google Code 호스트 프로젝트도 있습니다. 나는 그들을 조사하는 데 많은 시간을 투자하지 않았다. 이러한 프로젝트에는 OpenQuant, TradeLink 및 PyAlgoTrade가 포함됩니다.
기관용 백 테스팅 소프트웨어.
Deltix 및 QuantHouse와 같은 기관 등급의 백 테스팅 시스템은 소매 알고리즘 거래자에 의해 종종 활용되지 않습니다. 소프트웨어 라이센스는 일반적으로 인프라 스트럭처를위한 예산 밖에 있습니다. 즉, 이러한 소프트웨어는 퀀트 펀드, 독점 거래소, 가족 사무실 등에서 널리 사용됩니다.
이러한 시스템의 이점은 분명합니다. 단일 장비 또는 포트폴리오에서 높은 빈도 수준까지 데이터 수집, 전략 개발, 과거 백 테스트 및 실시간 실행을위한 올인원 (all-in-one) 솔루션을 제공합니다. 이러한 플랫폼은 광범위한 테스트를 거쳤으며 "현장에서"많이 사용되었으므로 견고한 것으로 간주됩니다.
시스템은 이벤트 기반이며 백 테스팅 환경은 종종 실제 환경을 높은 수준의 정확도로 시뮬레이트 할 수 있습니다. 또한 시스템은 트랜잭션 비용을 최소화하기 위해 최적화 된 실행 알고리즘을 지원합니다. 자본 규모가 큰 거래자에게는 특히 유용합니다.
Deltix 나 QuantHouse에 대한 많은 경험이 없다는 것을 인정해야합니다. 즉, 예산만으로는 대부분의 소매 상인이 접근 할 수 없기 때문에 이러한 시스템에 머물지는 않을 것입니다.
코 로케이션.
알고리즘 거래를위한 소프트웨어 환경이 조사되었습니다. 이제 우리 전략을 실행할 하드웨어의 구현에주의를 돌릴 수 있습니다.
소매 상인은 시장 시간 동안 집에서 전략을 실행할 것입니다. 이것은 자신의 PC를 켜고, 중개업에 연결하고, 시장 소프트웨어를 업데이트 한 다음, 알고리즘이 하루 동안 자동으로 실행되도록합니다. 반대로, 관리 대상 자산이 많은 전문가 용 퀀트 펀드 (quantforce)는 고속 전략을 수행하기 위해 가능한 한 대기 시간을 줄이기 위해 전용 Exchange 기반 서버 인프라를 보유하게됩니다.
홈 데스크톱.
하드웨어 배치에 대한 가장 간단한 접근 방법은 광대역 (또는 유사한) 연결을 통해 중개 시스템에 연결된 가정용 데스크톱 컴퓨터로 알고리즘 전략을 수행하는 것입니다.
이 접근법은 시작하기 쉽지만 많은 결점이 있습니다. UPS로 백업하지 않는 한 데스크탑 컴퓨터는 정전이 발생할 수 있습니다. 또한 가정용 인터넷 연결은 ISP의 자비하에 있습니다. 전력 손실이나 인터넷 연결 실패는 거래에서 중요한 순간에 발생할 수 있으며 알고리즘 거래자는 닫을 수없는 열린 포지션을 남겨 둡니다. 이 문제는 또한 운영 체제의 필수 재시작 (실제로 이것은 전문적인 환경에서 나에게 일어났습니다!) 및 구성 요소 오류로 인해 발생하며 동일한 문제가 발생합니다.
위의 이유로 나는 알고리즘 거래에 대한 가정용 데스크톱 접근법을 추천하기를 주저합니다. 이 방법을 사용하기로 결정했다면 백업 컴퓨터와 백업 인터넷 연결 (예 : 3G 동글)을 모두 사용하여 가동 중지 상황에서 위치를 종료 할 수 있습니다.
가정용 데스크톱의 다음 단계는 VPS (가상 사설 서버)를 사용하는 것입니다. VPS는 종종 "클라우드"서비스로 판매되는 원격 서버 시스템입니다. VPS는 실제로 훨씬 더 큰 서버의 파티션이기 때문에 해당 전용 서버보다 훨씬 저렴합니다. 이들은 개별 사용자가 사용할 수있는 가상의 고립 된 운영 체제 환경을 가지고 있습니다. CPU로드는 여러 VPS간에 공유되며 시스템 RAM의 일부는 VPS에 할당됩니다. 이것은 모두 가상화라고하는 프로세스를 통해 수행됩니다.
일반적인 VPS 제공 업체에는 Amazon EC2 및 Rackspace Cloud가 포함됩니다. 엔터프라이즈 급의 높은 RAM, 높은 CPU 서버를 통해 낮은 RAM 및 기본 CPU 사용량을 갖춘 보급형 시스템을 제공합니다. 알고리즘 소매 상인의 대다수의 경우 엔트리 레벨 시스템은 저주파수 일중 또는 일간 전략과 더 작은 과거 데이터 데이터베이스로 충분합니다.
VPS 기반 시스템의 이점으로는 24/7 가용성 (특정 실제 다운 타임 임에도 불구하고),보다 강력한 모니터링 기능, 파일 저장 또는 관리 데이터베이스 및 유연한 아키텍처와 같은 추가 서비스를위한 간편한 "플러그인"등이 있습니다. 하나의 단점은 지속적인 비용입니다. 시스템이 커짐에 따라 전용 하드웨어는 성능 단위당 더 저렴 해집니다. 이 가격 포인트는 거래소로부터 멀리 떨어져 있다는 가정입니다.
가정용 데스크톱 시스템에 비해 지연 시간은 항상 VPS 공급자를 선택하여 향상되지는 않습니다. 집 위치는 클라우드 제공 업체의 데이터 센터보다 특정 금융 거래소에 더 가깝습니다. 이는 거래소 또는 그 근처에 위치한 알고리즘 트레이딩을 위해 특별히 제작 된 VPS 서비스를 제공하는 회사를 선택함으로써 완화됩니다. 아마존이나 랙 스페이스 (Rackspace)와 같은 범용 VPS 제공 업체보다 비용이 많이 든다.
Exchange Colocation.
최상의 대기 시간 최소화를 얻으려면 Exchange 데이터 센터에서 전용 서버를 직접 배치해야합니다. 아주 잘 투자하지 않으면 거의 모든 소매 알고리즘 트레이더에게 엄청나게 비싼 옵션입니다. 그것은 전문적인 양적 펀드 또는 중개업의 영역입니다. 위에서 언급 한 것처럼 좀 더 현실적인 옵션은 교환기 근처에있는 제공 업체로부터 VPS 시스템을 구매하는 것입니다.
알 수 있듯이 백 테스팅, 자동화 된 실행 및 전략 호스팅을위한 다양한 옵션이 있습니다. 적절한 솔루션을 결정하는 것은 예산, 프로그래밍 능력, 요구되는 커스터마이징 정도, 자산 클래스 가용성 및 거래가 소매 또는 전문적 근거로 수행되어야하는지 여부에 달려 있습니다.
양적 거래 시작하기?
QuantStart 목록을 구독해야하는 3 가지 이유 :
1. 퀀트 트레이딩 레슨.
계량 거래를 시작하는 데 도움이되는 힌트와 팁으로 가득한 무료 10 일간 코스에 즉시 액세스 할 수 있습니다!
2. 모든 최신 내용.
매주 나는 퀀트 스타트에서 모든 활동의 포장을 보내드릴 것입니다. 그래서 당신은 결코 다시 글을 놓치지 않을 것입니다.
현실감 넘치는 퀀 트레이딩 팁.

No comments:

Post a Comment