파이썬 forex backtesting
Jon V.
빅 데이터. 시작. 거래.
빅 데이터. 시작. 거래.
파이썬에서 백 테스팅 시스템 구축 : 또는 두 시간 동안 $ 3400를 잃어 버렸습니다.
백 테스트 시스템을 구축하는 것은 실제로 매우 쉽습니다. 망치기 쉽다는 뜻입니다. 거기에는 훌륭한 라이브러리가 많이 있지만 (그리고 우리는 어느 시점에서 그들을 통해 갈 것입니다.), 저는 항상 이것을 조정하여 미세 조정하는 것을 좋아합니다.
내가 본 모든 백 테스트 시스템에서 우리는 두 가지 범주가 있다고 가정 할 수 있습니다.
오늘 우리는 for-loopers에 대해 이야기 할 것입니다.
"for-loopers"는 가장 좋아하는 백 테스터 유형입니다. 그들은 쓰는 것이 쉽지 만 확장하기에 재미가 있지만 중요한 흐름을 보입니다. 슬프게도 많은 백 테스터가 "for-loopers"입니다 (ps : 이것에 대해 더 나은 이름을 찾아야합니다!).
for-looper는 어떻게 작동합니까? for 루프를 사용하면 (추측 할 수 있듯이). 그것은 다음과 같습니다.
아주 간단한 권리? 이것은 하나의 백 테스팅 시스템이 작동하는 방법이며, 이는 기세 전략을 실행합니다 :
문제는 무엇입니까?
(수평 적으로) 확장하기가 어렵습니다. 여러분의 apply_strategy ()가 백 테스팅 및 프로덕션 작업을 계속하기 위해 많은 작업이 필요합니다. 동일한 프로그래밍 언어로 모든 것을 갖추어야합니다.
이것들을 하나씩 차례로 살펴 봅시다.
확장 성. 저는 몇 주 전에 내 등반 전략 중 하나를 최적화하기 위해 등산 알고리즘을 실험했습니다. 아직 실행 중입니다. 2 주 후. 그리고 저는 생계를 유지할 수있는 확장 가능한 시스템을 구축합니다. 왜 아직도 실행 중입니까? 멀티 프로세싱, 디스코, 생산자 / 소비자 (ZeroMQ 사용) 또는 스레드 만 사용하여 속도를 높일 수 있지만 일부 문제는 "당황스럽지 않습니다"(예, 실제로 작성한 단어가 아니라 실제 용어입니다). 이처럼 백 테스터를 확장하는 작업량 (특히 동일한 기계 학습을 수행하려는 경우)은 엄청납니다. 당신은 할 수는 있지만 잘못된 길입니다.
생산과 백 테스팅이 동기화되었습니다. 내가 이것에 물린 시대. 내가 잃어버린 거래를 상기 할 수 있습니다. "나는 왜이 거래에 참가 했습니까?" 또는 나의 오래된 시간 좋아하는 "왜 지금 멈춰 멈춤이 적용 되었습니까?".
이야기 시간 : 나는 전략을 최적화하고 항상 이익을 확보하기 위해 무역이 이익을 얻은 후에 후행 중지를 할 수 있다면 어떻게 될지보기 위해 백 테스터를 운영하기위한 아이디어를 가졌습니다. Backtesting은 수익의 13 % 증가와 매 매 거래 손실로 인해 매력적이었습니다. 나는 내 고향이 2 시간 만에 3400 달러를 잃은 후에 그것을 알아 냈습니다 (매우 비싼 교훈).
apply_strategy를 동기화 상태로 유지하는 것은 매우 어렵고 분산 방식으로 수행하려는 경우 거의 불가능합니다. 그리고 "거의"동일한 두 가지 버전의 전략을 갖고 싶지는 않습니다. 3400 달러를 절약하지 않는 한.
다른 언어 사용하기 파이썬을 좋아합니다. 그리고 얼랭. 그리고 Clojure. 그리고 J. And C. And R. 그리고 Ruby (실제로 Ruby를 싫어합니다.) 내 시스템에서 다른 언어의 힘을 활용할 수 있기를 바랍니다. 나는 잘 검증 된 라이브러리가 있고 거기에 커다란 커뮤니티가있는 R의 전략을 시험해보고 싶다. Erlang이 내 코드와 C를 확장하여 데이터를 정리하려고합니다. 거래 에서뿐만 아니라 성공하기를 원한다면, 모든 가용 자원을 편견없이 사용할 수 있어야합니다. R 개발자와 어울리는 델타 헤지 펀드 및 시각화 방법이나 Sharpe ratio가 거짓말 일 수있는 이유에 대해 많은 것을 배웠습니다. 모든 언어는 다른 군중을 가지고 있으며 많은 사람들이 시스템에 아이디어를 부어 주길 원합니다. 다른 언어로 apply_strategy를 시도하면 (2)와 함께 행운을 빕니다.
너 지금 확신 해? 글쎄, for-loopers가 초기 테스트를 수행하는 좋은 방법이라는 것을 당신에게 확신시키려는 것이 아닙니다. 그것은 내가 시작한 방법이며, 많은 전략을 위해 그들을 파이프 라인으로 보내지 않습니다. "더 나은"방법 (밤에 잠을 잘 수 있도록)은 이벤트 생성기입니다.
다음으로 올라와, 가장 간단한 (그러나 가장 성공적인) 백 테스터를 나누고 토론합니다!
더 많은 의견이 있으면 jonromero에서 ping을하거나 뉴스 레터에 가입하십시오.
법적 근거. 이것은 실험 및 재미를위한 알트 레이팅 플랫폼을 구축하는 방법에 대한 엔지니어링 자습서입니다. 여기에있는 모든 제안은 재정 조언이 아닙니다. 거래 조언을 따랐거나이 시스템을 프로덕션 환경에 배치했기 때문에 돈을 잃어버린다면이 임의의 블로그 (및 / 또는 저)를 비난 할 수 없습니다. 자신의 책임하에 즐기십시오.
QuantStart.
빠르게 성장하는 소매점 퀀텀 트레이더 커뮤니티를 지원하는 Quantcademy 개인 회원 포털에 가입하십시오. 당신은 당신의 가장 중요한 퀀트 트레이딩 질문에 대답 할 준비가되어있는 지식이 풍부하고 마음이 맞는 퀀트 트레이더 그룹을 찾을 수 있습니다.
퀀트 트레이딩에 관한 나의 eBook을 확인해보십시오. 여기서 저는 파이썬 툴로 수익성 높은 체계적인 트레이딩 전략을 만드는 법을 가르쳐드립니다.
Python 및 R을 사용하여 시계열 분석, 기계 학습 및 베이지안 통계를 사용하는 고급 거래 전략에 관한 새로운 전자 책을 살펴보십시오.
2014 년 3 월 11 일 Michael Halls-Moore 작성
우리는 지난 두 달 동안 퀀트 스타트에서 파이썬과 팬더를 활용 한 다양한 거래 전략에 대한 백 테스팅을했습니다. 팬더의 벡터화 된 특성으로 인해 대규모 데이터 세트의 특정 작업이 매우 빠릅니다. 그러나 우리가 지금까지 연구 한 벡터화 된 등고선의 형태는 무역 실행이 모의되는 방식에서 몇 가지 단점을 가지고있다. 이 연재 기사에서는 파이썬을 사용하여 이벤트 중심의 백 테스팅 환경을 구축함으로써 역사적 전략 시뮬레이션에 대한보다 현실적인 접근 방식을 논의 할 것입니다.
이벤트 기반 소프트웨어.
우리가 그러한 등 테스터의 개발을 탐구하기 전에 이벤트 중심 시스템의 개념을 이해해야합니다. 비디오 게임은 이벤트 중심 소프트웨어의 자연스러운 사용 사례를 제공하고 탐색 할 수있는 간단한 예제를 제공합니다. 비디오 게임은 높은 프레임 속도의 실시간 설정에서 서로 상호 작용하는 여러 구성 요소가 있습니다. 이것은 이벤트 루프 또는 게임 루프로 알려진 "무한"루프 내에서 전체 계산 집합을 실행하여 처리됩니다.
게임 루프의 각 진드기에서 함수는 게임 내의 대응하는 이전 동작에 의해 생성 된 최신 이벤트를 수신하기 위해 호출됩니다. 키 누름 또는 마우스 클릭을 포함 할 수있는 이벤트의 성격에 따라 루프를 종료하거나 추가 이벤트를 생성하는 후속 작업이 수행됩니다. 그런 다음 프로세스가 계속됩니다. 다음은 의사 코드의 예입니다.
코드는 지속적으로 새 이벤트를 확인한 다음 이러한 이벤트를 기반으로 작업을 수행합니다. 특히 코드가 지속적으로 루프되고 이벤트가 확인되기 때문에 실시간 응답 처리가 환상적입니다. 이것은 분명히 고주파 거래 시뮬레이션을 수행하기 위해 필요한 것입니다.
왜 이벤트 중심의 등양가인가?
이벤트 중심 시스템은 벡터화 된 접근 방식보다 많은 이점을 제공합니다.
코드 재사용 - 이벤트 기반 백 테스터는 의도적으로 구성 요소를 최소한으로 전환하여 기록 백 테스트 및 실시간 거래에 모두 사용할 수 있습니다. 통계 분석을 수행하기 위해 모든 데이터를 한 번에 사용할 수 있어야하는 벡터화 된 백 테스터는 사실이 아닙니다. Lookahead Bias - 이벤트 중심의 백 테스터는 시장 데이터 영수증이 처리되어야하는 "이벤트"로 취급되므로 미리보기 바이어스가 없습니다. 따라서 주문 관리 및 포트폴리오 시스템이 어떻게 작동 할 것인지를 모방하면서 시장 데이터로 이벤트 중심의 백 테스터를 "드립 피드 (drop feed)"할 수 있습니다. 현실주의 - 이벤트 중심의 백 테스터는 주문 실행 방법 및 거래 비용에 대한 커스터마이즈가 가능합니다. 커스텀 교환 핸들러가 구축 될 수 있기 때문에 Moo (Market-On-Open) 및 MOC (Market-on-Close)뿐만 아니라 기본 시장 및 주문 수주를 처리하는 것은 간단합니다.
이벤트 중심 시스템에는 많은 이점이 있지만 단순한 벡터화 시스템에 비해 두 가지 단점이 있습니다. 첫째, 구현 및 테스트가 훨씬 더 복잡합니다. "움직이는 부분"이 더 많아서 버그를 도입 할 가능성이 커집니다. 이를 완화하기 위해 테스트 주도 개발과 같은 적절한 소프트웨어 테스트 방법론을 사용할 수 있습니다.
두 번째로 벡터화 된 시스템에 비해 실행 속도가 느립니다. 최적 벡터화 연산은 수학 계산을 수행 할 때 활용할 수 없습니다. 우리는 이후의 기사에서 이러한 한계를 극복하는 방법을 논의 할 것입니다.
이벤트 기반 백 테스터 개요.
백 테스트 시스템에 이벤트 중심 접근 방식을 적용하려면 특정 작업을 처리 할 구성 요소 (또는 객체)를 정의해야합니다.
이벤트 - 이벤트는 이벤트 중심 시스템의 기본 클래스 단위입니다. 이벤트 루프 내에서 처리되는 방식을 결정하는 유형 (예 : "MARKET", "SIGNAL", "ORDER"또는 "FILL")을 포함합니다. 이벤트 대기열 - 이벤트 대기열은 나머지 소프트웨어에서 생성되는 모든 이벤트 하위 클래스 객체를 저장하는 메모리 내장 Python 대기열 객체입니다. DataHandler - DataHandler는 과거 또는 현재 시장 데이터를 처리하기위한 인터페이스를 제공하는 추상 기본 클래스 (ABC)입니다. 전략과 포트폴리오 모듈을 두 방식간에 재사용 할 수 있으므로 상당한 유연성을 제공합니다. DataHandler는 시스템의 모든 하트 비트에 대해 새로운 MarketEvent를 생성합니다 (아래 참조). 전략 - 전략은 시장 데이터를 취하고 해당되는 SignalEvents를 생성하기위한 인터페이스를 제공하는 ABC이기도하며 궁극적으로 Portfolio 객체에 의해 활용됩니다. SignalEvent에는 시세 기호, 방향 (LONG 또는 SHORT) 및 타임 스탬프가 포함됩니다. 포트폴리오 - 이것은 전략의 현재 및 이후 위치와 관련된 주문 관리를 처리하는 ABC입니다. 또한 섹터 노출 및 포지션 사이징을 포함하여 포트폴리오 전체에 걸쳐 리스크 관리를 수행합니다. 보다 정교한 구현에서는 이것이 RiskManagement 클래스에 위임 될 수 있습니다. Portfolio는 Queue에서 SignalEvents를 가져 와서 Queue에 추가되는 OrderEvents를 생성합니다. ExecutionHandler - ExecutionHandler는 중개에 대한 연결을 시뮬레이션합니다. 핸들러의 역할은 큐에서 OrderEvent를 가져 와서 시뮬레이트 된 접근 방식이나 간 중개에 대한 실제 연결을 통해 실행하는 것입니다. 주문이 실행되면 FillEvents가 생성되며 수수료, 커미션 및 미끄러짐 (모델링 된 경우)을 포함하여 실제로 처리 된 내용을 설명합니다. 루프 - 이 모든 구성 요소는 모든 이벤트 유형을 올바르게 처리하고 해당 구성 요소로 라우팅하는 이벤트 루프에 래핑됩니다.
이것은 거래 엔진의 꽤 기본적인 모델입니다. 특히 포트폴리오 사용 방법과 관련하여 확장에 대한 중요한 범위가 있습니다. 또한 서로 다른 거래 비용 모델을 자체 클래스 계층 구조로 추상화 할 수도 있습니다. 이 단계에서는이 기사 시리즈 내에서 불필요한 복잡성을 초래하므로 더 이상 논의하지 않을 것입니다. 나중의 튜토리얼에서는 추가 현실주의를 포함하도록 시스템을 확장 할 것입니다.
다음은 실제로 백 테스터가 어떻게 작동하는지 보여주는 파이썬 코드 스 니펫입니다. 코드에는 두 개의 루프가 발생합니다. 외부 루프는 백 테스터에게 하트 비트를주기 위해 사용됩니다. 실시간 거래의 경우 새로운 시장 데이터가 폴링되는 빈도입니다. 백 테스터가 드립 피드 형식으로 제공된 시장 데이터를 사용하기 때문에 백 테스팅 전략의 경우 반드시 필요한 것은 아닙니다 (bars. update_bars () 라인 참조).
내부 루프는 실제로 이벤트 Queue 오브젝트의 이벤트를 처리합니다. 특정 이벤트가 해당 구성 요소에 위임되고 이후에 새 이벤트가 대기열에 추가됩니다. 이벤트 Queue가 비어 있으면 하트 비트 루프가 계속됩니다.
이것은 이벤트 주도형 백 테스터가 어떻게 설계되는지에 대한 기본 개요입니다. 다음 기사에서는 Event 클래스 계층 구조에 대해 설명 할 것이다.
양적 거래 시작하기?
QuantStart 목록을 구독해야하는 3 가지 이유 :
1. 퀀트 트레이딩 레슨.
계량 거래를 시작하는 데 도움이되는 힌트와 팁으로 가득한 무료 10 일간 코스에 즉시 액세스 할 수 있습니다!
2. 모든 최신 내용.
매주 나는 퀀트 스타트에서 모든 활동의 포장을 보내드릴 것입니다. 그래서 당신은 결코 다시 글을 놓치지 않을 것입니다.
현실감 넘치는 퀀 트레이딩 팁.
QuantStart.
빠르게 성장하는 소매점 퀀텀 트레이더 커뮤니티를 지원하는 Quantcademy 개인 회원 포털에 가입하십시오. 당신은 당신의 가장 중요한 퀀트 트레이딩 질문에 대답 할 준비가되어있는 지식이 풍부하고 마음이 맞는 퀀트 트레이더 그룹을 찾을 수 있습니다.
퀀트 트레이딩에 관한 나의 eBook을 확인해보십시오. 여기서 저는 파이썬 툴로 수익성 높은 체계적인 트레이딩 전략을 만드는 법을 가르쳐드립니다.
Python 및 R을 사용하여 시계열 분석, 기계 학습 및 베이지안 통계를 사용하는 고급 거래 전략에 관한 새로운 전자 책을 살펴보십시오.
Frank Smietana, 2017 년 7 월 18 일
이 기사에서는 QuantStart의 전문 게스트 기고가 중 한 명인 Frank Smietana가 Python 오픈 소스 백 테스팅 소프트웨어 환경을 설명하고 자신의 프로젝트 요구에 적합한 백 테스팅 프레임 워크에 대한 조언을 제공합니다.
Backtesting은 STS (Systematic Trading Strategy) 프로덕션 프로세스에서 전략 개발과 배포 (라이브 거래) 사이에 가장 중요한 역할을합니다. 전략에 결함이있는 경우 철저한 백 테스팅을 통해이 사실을 알릴 수 있기 때문에 손실 전략이 배포되는 것을 방지 할 수 있습니다.
트레이딩 시뮬레이션 및 라이브 거래를 비롯한 여러 관련 기능이 백 테스트와 겹칩니다. 백 테스트는 기록 데이터를 사용하여 STS 성능을 계량합니다. 트레이딩 시뮬레이터는 거래의 트리거링과 가격대 성능을 가시화함으로써 한 걸음 더 나아가서 백 테스팅을 수행합니다. 시뮬레이트 / 라이브 거래는 테스트 된 STS를 실시간으로 배포합니다. 즉, 거래 신호, 주문 생성, 브로커에게 주문 라우팅, 주문 실행과 함께 위치 유지 등이 있습니다.
대부분의 프레임 워크는 일부 실시간 거래 기능을 포함하여 백 테스팅을 뛰어 넘습니다. 선호하는 브로커 및 데이터 소스와 함께 작동하는 백 테스팅 프레임 워크에서 배포하려는 경우 편리합니다. Quantopian / Zipline은 한 단계 더 나아가 완벽하게 통합 된 개발, 백 테스팅 및 배포 솔루션을 제공합니다.
파이썬 커뮤니티는 6 개 이상의 오픈 소스 백 테스팅 프레임 워크를 사용할 수있어 잘 지원됩니다. 그러나 그들은 개발 및 문서화의 다양한 단계에 있습니다. 오픈 소스 백 테스팅 프레임 워크를 구축하는 팀에서 일하는 것을 즐긴다면 Github repos를 확인하십시오.
백 테스팅 프레임 워크를 평가하기 전에 STS의 요구 사항을 정의하는 것이 좋습니다.
어떤 종류의 자산을 거래하고 있습니까? 대부분의 프레임 워크가 YahooFinance를 통해 미국 주식 데이터를 지원하지만 전략에 파생 상품, ETF 또는 EM 증권이 포함되어 있으면 프레임 워크에서 데이터를 가져 오거나 제공해야합니다. 자산 클래스 범위는 데이터를 뛰어 넘습니다. 프레임 워크가 유한 길이의 미래 및 옵션을 처리하고 롤오버 거래를 자동으로 생성 할 수 있습니까? 비 유동성 시장은 대량 주문을 할 때 얼마나 현실적인 가정을해야합니까?
STS가 구축 한 데이터 빈도 및 세부 정보는 무엇입니까? 모든 틱이나 입찰 / 요청을 요구하는 거래 시스템은 5 분 또는 매시간 간격과는 매우 다른 데이터 관리 문제를 가지고 있습니다. 헤지 펀드 및 HFT 매장은 데이터 양과 빈도를 처리하기 위해 견고하고 확장 가능한 백 테스팅 프레임 워크를 구축하는 데 상당한 투자를했습니다. 일부 플랫폼은 S & P 주식과 같은 다양한 자산 클래스에 대해 1 분의 해결책으로 풍부하고 깊은 데이터 세트를 제공합니다.
STS는 어떤 주문 유형을 요구합니까? 최소, 한계, 정지 및 OCO가 프레임 워크에 의해 지원되어야합니다.
지원 수준 & amp; 필요한 서류. 초기 단계의 프레임 워크는 설명서가 부족하고 커뮤니티 보드 이외의 지원은 거의 없습니다.
Backtesting Framework의 구성 요소.
데이터 및 STS 수집 : 수집 구성 요소는 STS 스크립트 / 정의 파일을 사용하고 테스트에 필요한 데이터를 제공합니다. 프레임 워크가 backtesting 전에 어떤 STS를 다시 코딩해야한다면, 프레임 워크는 STS 테스트 속도를 높이기 위해 가장 유명한 기술 지표에 대한 준비된 기능을 지원해야합니다. 사용자는 프레임 워크에서 제공하는 항목 또는 가져올 수있는 항목을 기준으로 기간을 백 테스트 할 기간을 결정합니다.
성능 테스트는 STS 논리를 요청 된 기록 데이터 창에 적용하고 광범위한 위험 & amp; 최대 삭감, Sharpe & Sortino 비율을 포함한 성능 메트릭. 대부분의 모든 프레임 워크는 주식 곡선 및 deciled 통계를 포함하여 상당한 수의 시각화 기능을 지원합니다.
최적화는 STS 프로세스에서 컴퓨팅 자원의 상당 부분을 필요로하는 경향이 있습니다. STS에서 최적화가 필요한 경우 확장 가능한 분산 / 병렬 처리를 지원하는 프레임 워크에 중점을 둡니다.
기술 지표를 사용하여 개발 된 전략의 맥락에서 시스템 개발자는 각 지표에 대한 최적의 매개 변수 집합을 찾으려고 시도합니다. 가장 간단하게, 최적화는 6 일과 10 일 이동 평균 크로스 오버 STS가 1에서 20 사이의 다른 기간 조합보다 역사적인 테스트 데이터에서 더 많은 이익을 축적했음을 알 수 있습니다. 이미이 간단한 예제를 사용하면 20 * 20 = 400 매개 변수 조합이 계산 & amp; 순위.
포트폴리오 컨텍스트에서 최적화는 포트폴리오의 모든 자산에 대한 최적의 가중치 (단락 및 레버리지 된 수단 포함)를 찾으려고합니다. 주기적으로 포트폴리오가 재조정되어 최적화 된 가중치와 일치하도록 필요한 포트폴리오 보유 물의 매매가 이루어집니다.
위치 조정은 최적화의 추가 사용으로 시스템 개발자가 STS 및 포트폴리오 성능에 대한 레버리지 및 동적 위치 결정의 영향을 시뮬레이션 및 분석 할 수 있습니다.
파이썬에 대한 6 가지 백 테스팅 프레임 워크.
오픈 소스 Python 백 테스팅 플랫폼의 표준 기능에는 다음이 포함됩니다.
이벤트 주도 매우 유연하고 제한없는 라이센스 사전 정의 된 기술 지표의 적절한 수집 표준 성능 메트릭 계산 / 시각화 /보고 기능.
PyAlgoTrade.
PyAlgoTrade는 종이 및 라이브 거래 기능과 함께 완전하게 문서화 된 백 테스팅 프레임 워크입니다. 데이터 지원에는 Yahoo! Finance, Google Finance, NinjaTrader 및 Quandl과 같은 모든 유형의 CSV 기반 시계열. 지원되는 주문 유형에는 Market, Limit, Stop 및 StopLimit가 포함됩니다.
PyAlgoTrade는 Bitstamp를 통한 Bitcoin 거래 및 실시간 Twitter 이벤트 처리를 지원합니다.
bt - 파이썬 백 테스팅.
bt "는 복잡한 거래 전략의 신속한 개발을 촉진하기 위해 쉽게 테스트 할 수 있고, 재사용이 가능하며, 유연한 전략 논리 블록을 만드는 것을 목표로합니다."
이 프레임 워크는 특히 자산 가중치와 포트폴리오 재조정을위한 포트폴리오와 함께 포트폴리오 기반 STS를 테스트하는 데 적합합니다. 다른 시간 빈도 또는 대체 자산 가중치를 실행하는 전략을 수정하면 코드를 미세 조정할 수 있습니다. bt는 파이썬을위한 파이낸셜 함수 라이브러리 인 ffn 위에 구축되었습니다.
백 트레이더.
이 플랫폼은 블로그와 질문 및 기능 요청 게시를위한 활발한 온라인 커뮤니티와 함께 매우 잘 문서화되어 있습니다. Backtrader는 CSV 파일, Pandas DataFrames, 블레이즈 반복기 및 세 브로커의 실시간 데이터 피드를 비롯한 다양한 데이터 형식을 지원합니다. 이러한 데이터 피드는 동시에 액세스 할 수 있으며 서로 다른 시간대를 나타낼 수도 있습니다. 지원되는 중개인은 FX 거래를위한 Oanda 및 대화 형 중개인 및 비주얼 차트를 통한 다중 자산 클래스 거래를 포함합니다.
pysystemtrade.
pysystemtrade 개발자 인 Rob Carver는 왜 또 다른 Python 백 테스팅 프레임 워크와 프레임 워크 개발에 대한 논쟁을 만들어 내기 시작했는지 토론하는 훌륭한 글을 가지고 있습니다. pysystemtrade에 대한 백 테스팅 프레임 워크는 Rob의 책 "Systematic Trading"에서 논의됩니다.
pysystemtrade는 최적화 및 조정 기술이 포함 된 완전한 기능을 갖춘 백 테스터와 인터랙티브 브로커 (Interactive Brokers)를 통한 완전 자동 선물 거래를 비롯한 다양한 로드맵 기능을 나열합니다. 오픈 소스 참여자를 환영합니다.
Zipline은 종이 및 라이브 거래 기능을 갖춘 알고리즘 트레이딩 시뮬레이터입니다. Zipline은 브라우저 기반의 IPython 노트북 인터페이스를 통해 액세스 할 수있어 명령 줄 도구 대신 사용할 수 있습니다. Quantopian이 지원하고 개발 한 Zipline은 독립형 백 테스팅 프레임 워크 또는 완전한 Quantopian / Zipline STS 개발, 테스트 및 배포 환경의 일부로 사용할 수 있습니다. Zipline은 10 년간의 역사적인 미국 주식 데이터 및 많은 데이터 가져 오기 옵션을 제공합니다.
QSTrader는 실시간 거래 기능이있는 백 테스팅 프레임 워크입니다. 퀀트 스타트의 설립자 인 마이클 홀즈 무어 (Michael Halls-Moore)는 소매점 퀀트 헤지 펀드와 기관 퀀트 헤지 펀드의 요구에 부응 할 수있는 강력하고 확장 가능한 플랫폼을 구축하려는 의도로 QSTrader를 출시했습니다. Qstrader는 현재 다양한 시간 범위에서 OHLCV "바"해상도 데이터를 지원하지만 진드기 데이터를 사용할 수 있습니다.
백 테스팅과 라이브 거래는 모두 이벤트 중심으로 이루어 지므로 연구에서 테스트 및 최종 거래에 이르는 전략의 전환을 간소화합니다. 핵심 전략 / 포트폴리오 코드는 두 배포 모두에서 종종 동일합니다.
Qstrader의 주요 이점은 모듈성이므로 특정 위험 또는 포트폴리오 관리 요구 사항을 가진 사람들을 위해 광범위한 사용자 정의 코드를 사용할 수 있습니다.
Backtest 채택.
(잘하면 수익성있는) STS 개발에 대한 보상에 집중하고 전략을 철저히 테스트하는 데 충분한 시간과 자원을 투자하지 않고 자금이 투입된 계좌를 배포하는 것은 인류의 본성입니다. 그러나 백 테스팅은 결함있는 전략을 배치하고 거래 자본을 잃지 않도록하는 게이트 키퍼 일뿐만 아니라 STS 개발 프로세스에 알릴 수있는 여러 가지 진단 기능을 제공합니다. 예를 들어, 두 개의 서로 다른 시간 프레임에 걸쳐 동일한 STS를 테스트하고, 자산 상관 관계의 맥락에서 전략의 최대 축소를 이해하며, 여러 지역에 걸쳐 자산 할당을 백 테스팅하여 더 똑똑한 포트폴리오를 만들 수 있습니다.
향후 게시물에서는 Python이 아닌 환경의 백 테스팅 프레임 워크와 예측 거래 모델 백 테스팅을위한 부트 스트래핑 및 잭 나이프와 같은 다양한 샘플링 기술의 사용에 대해 다룰 예정입니다.
양적 거래 시작하기?
QuantStart 목록을 구독해야하는 3 가지 이유 :
1. 퀀트 트레이딩 레슨.
계량 거래를 시작하는 데 도움이되는 힌트와 팁으로 가득한 무료 10 일간 코스에 즉시 액세스 할 수 있습니다!
2. 모든 최신 내용.
매주 나는 퀀트 스타트에서 모든 활동의 포장을 보내드릴 것입니다. 그래서 당신은 결코 다시 글을 놓치지 않을 것입니다.
현실감 넘치는 퀀 트레이딩 팁.
Comments
Post a Comment