파이썬 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. 모든 최신 내용.
매주 나는 퀀트 스타트에서 모든 활동의 포장을 보내드릴 것입니다. 그래서 당신은 결코 다시 글을 놓치지 않을 것입니다.
현실감 넘치는 퀀 트레이딩 팁.

Python forex backtesting
당겨 요청 11.
오늘 GitHub에 가입하십시오.
GitHub은 코드를 호스팅하고 검토하고, 프로젝트를 관리하고, 소프트웨어를 함께 구축하기 위해 함께 일하는 2,000 만 명이 넘는 개발자들의 본거지입니다.
HTTPS로 복제하십시오.
Git을 사용하거나 웹 URL을 사용하여 SVN에서 체크 아웃하십시오.
QSForex는 현재 "알파"상태 인 외환 ( "외환") 시장에서 사용하기위한 오픈 소스 이벤트 기반 백 테스팅 및 라이브 거래 플랫폼입니다.
그것은 QuantStart의 Forex Trading Diary 시리즈의 일부로 체계적인 거래 커뮤니티에 강력한 거래 엔진을 제공하여 간단한 forex 전략 구현 및 테스트를 가능하게합니다.
이 소프트웨어는 허용 된 "MIT"라이센스 (아래 참조)로 제공됩니다.
오픈 소스 - QSForex는 매우 제한적인 오픈 소스 MIT 라이센스에 따라 출시되었습니다. 이 라이센스는 제한없이 연구 및 상업용 응용 프로그램에서 모두 사용할 수 있지만 어떠한 종류의 보증도 제공하지 않습니다. 무료 - QSForex는 무료이며 다운로드하거나 사용할 필요가 없습니다. 협업 - QSForex는 오픈 소스이기 때문에 많은 개발자들이 소프트웨어를 개선하기 위해 협력합니다. 새로운 기능이 자주 추가됩니다. 모든 버그는 신속하게 결정되고 수정됩니다. 소프트웨어 개발 - QSForex는 간단한 크로스 플랫폼 지원을 위해 Python 프로그래밍 언어로 작성되었습니다. QSForex는 대부분의 계산 코드에 대한 단위 테스트 스위트를 포함하며 새로운 기능에 대한 새로운 테스트가 지속적으로 추가됩니다. 이벤트 중심 아키텍처 - QSForex는 백 테스팅 및 실시간 거래를 위해 완전히 이벤트 중심으로 이루어 지므로 연구 / 테스트 단계에서 실시간 거래 구현으로 전략을 간단하게 전환 할 수 있습니다. 거래 비용 - 모든 역 측정 된 전략에는 기본적으로 스프레드 비용이 포함됩니다. Backtesting - QSForex는 일중 틱 - 해상도 다중 일 다중 통화 쌍 백 테스팅 기능을 제공합니다. 거래 - QSForex는 현재 쌍의 포트폴리오를 통해 OANDA Brokerage API를 사용하여 실시간 일중 거래를 지원합니다. 성능 측정 기준 - QSForex는 현재 Matplotlib 및 Seaborn 시각화 라이브러리를 통해 기본 성능 측정 및 형평성 시각화를 지원합니다.
oanda /를 방문하여 계정을 설정하면 실시간 거래를 수행하는 데 필요한 API 인증 자격 증명을 얻을 수 있습니다. 이 기사에서 quantar / articles / Forex-Trading-Diary-1-Automated-Forex-Trading-OANDA-API를 수행하는 방법을 설명합니다.
git clone github / mhallsmoore / qsforex. git 터미널에서 다음 명령을 사용하여이 git 저장소를 시스템의 적절한 위치에 복제하십시오. 다른 방법으로 github / mhallsmoore / qsforex / archive / master. zip에서 현재 마스터 브랜치의 zip 파일을 다운로드 할 수 있습니다.
응용 프로그램 루트 디렉토리의 settings. py 파일에있는 모든 설정에 대한 환경 변수 세트를 작성하십시오. 또는 각 설정에 대한 os. environ. get (.) 호출을 덮어 쓰면 특정 설정을 "하드 코딩"할 수 있습니다.
이렇게하면 패키지를 설치할 새 가상 환경이 만들어집니다. QSForex git 저장소를 다음과 같은 예제 디렉토리에 다운로드했다고 가정합니다.
/ projects / qsforex / (이 디렉토리를 아래에서 QSForex를 설치 한 위치로 변경하십시오) 패키지를 설치하려면 다음 명령을 실행해야합니다.
NumPy, SciPy, Pandas, Scikit-Learn 및 Matplotlib를 컴파일해야하기 때문에 시간이 걸립니다. 이 작업에 필요한 많은 패키지가 있으므로 자세한 내용은 다음 두 기사를 참조하십시오.
또한 코드 내에서 qsforex 가져 오기를 호출 할 수 있도록 사이트 패키지 디렉토리에서 QSForex 설치 디렉토리로 심볼릭 링크를 만들어야합니다. 이렇게하려면 다음과 유사한 명령이 필요합니다.
반드시 변경하십시오.
/ projects / qsforex를 설치 디렉토리 및.
/venv/qsforex/lib/python2.7/site-packages/를 virtualenv 사이트 패키지 디렉토리에 추가하십시오.
이제 후속 명령을 올바르게 실행할 수 있습니다.
이 단계에서 연습이나 라이브 거래를 원할 경우 Python trading / trading. py를 실행할 수 있습니다. 이 스크립트는 기본 TestStrategy 거래 전략을 사용합니다. 이것은 단순히 매 5 번째 틱마다 통화 쌍을 매매합니다. 그것은 순전히 테스트 용입니다 - 실제 거래 환경에서는 사용하지 마십시오!
보다 유용한 전략을 만들고 싶다면 간단히 설명이 포함 된 이름으로 새 클래스를 만드십시오. MeanReversionMultiPairStrategy를 사용하고 calculate_signals 메소드가 있는지 확인하십시오. trading / trading. py와 같이이 클래스를 쌍 목록과 이벤트 대기열에 전달해야합니다.
자세한 내용은 strategy / strategy. py를 참조하십시오.
backtesting을 수행하기 위해서는 시뮬레이션 된 외환 데이터를 생성하거나 역사적인 tick 데이터를 다운로드해야합니다. 소프트웨어를 간단하게 시험해보기 원하는 경우 예제 백 테스트를 생성하는 가장 빠른 방법은 시뮬레이션 데이터를 생성하는 것입니다. QSForex에서 사용하는 현재 데이터 형식은 dukascopy / swiss / english / marketwatch / historical /에서 DukasCopy Historical Data Feed가 제공 한 것과 동일합니다.
일부 기록 데이터를 생성하려면 settings. py의 CSV_DATA_DIR 설정이 기록 데이터를 저장할 디렉토리로 설정해야합니다. 그런 다음 scripts / 디렉토리 아래에있는 generate_simulated_pair. py를 실행해야합니다. 이 명령은 BBBQQQ 형식의 통화 쌍인 단일 명령 행 인수를 필요로합니다. 예 :
이 단계에서 스크립트는 2014 년 1 월에 한 달의 데이터를 생성하기 위해 하드 코드됩니다. 즉, 그 달의 모든 영업일 동안 CSV_DATA_DIR에 BBBQQQ_YYYYMMDD. csv 형식의 개별 파일 (예 : GBPUSD_20140112.csv)이 나타납니다. 데이터 출력의 월 / 년을 변경하려면 파일을 수정하고 다시 실행하십시오.
과거 데이터가 생성되었으므로 백 테스트를 수행 할 수 있습니다. 백 테스트 파일 자체는 backtest / backtest. py에 저장되지만 Backtest 클래스 만 포함됩니다. 실제로 백 테스트를 실행하려면이 클래스를 인스턴스화하고 필요한 모듈을 제공해야합니다.
이를 수행하는 가장 좋은 방법은 examples / mac. py 파일에서 Moving Average Crossover 구현 예제를보고 이것을 템플릿으로 사용하는 것입니다. 이것은 strategy / strategy. py에있는 MovingAverageCrossStrategy를 사용합니다. 이 기본값은 여러 통화 쌍 사용을 보여주기 위해 GBP / USD와 EUR / USD를 모두 거래하는 것입니다. CSV_DATA_DIR에있는 데이터를 사용합니다.
예제 백 테스트를 실행하려면 다음을 실행하십시오.
이 작업에는 약간의 시간이 소요됩니다. 집에있는 우분투 데스크탑 시스템에서 generate_simulated_pair. py를 통해 생성 된 기록 데이터를 사용하면 실행하는 데 약 5-10 분이 걸립니다. 이 계산의 상당 부분은 실제 백 테스트의 끝에 계산서가 계산 될 때 발생하므로 코드가 끊어지지 않았 음을 기억하십시오! 완료 될 때까지 그대로 두십시오.
백 테스트의 성능을 보려면 단순히 output. py를 사용하여 주식 곡선, 기간 수익률 (tick-to-tick returns) 및 수익률 곡선을 볼 수 있습니다.
그리고 그게 다야! 이 단계에서 strategy / strategy. py의 전략을 수정 또는 추가하고 DukasCopy (dukascopy / swiss / english / marketwatch / historical /)에서 다운로드 한 실제 데이터를 사용하여 자신의 백 테스트를 시작할 준비가되었습니다.
설치에 대한 질문이 있으시면 mikequantstart에 언제든지 문의하십시오.
특히 코드베이스로 인한 버그 또는 기타 문제가있는 경우 github / mhallsmoore / qsforex / issues에서 Github 문제를 자유롭게 열어보십시오.
Copyright (c) 2015 Michael Halls-Moore.
사용, 복사, 수정, 병합 할 수있는 권한을 포함하되 이에 국한되지 않고 소프트웨어를 취급하기 위해이 소프트웨어 및 관련 문서 파일 (이하 "소프트웨어")의 사본을 얻는 모든 사람에게 사용 권한이 무료로 부여됩니다 다음 조건에 따라 소프트웨어의 사본을 게시, 배포, 재 라이센스 및 / 또는 판매 할 수 있고 소프트웨어를 제공받는 사람에게 허용 할 수 있습니다.
위의 저작권 고지 및이 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함되어야합니다.
소프트웨어는 상품성, 특정 목적에의 적합성 및 비 침해에 대한 보증을 포함하여 (단, 이에 한하지 않음) 묵시적이든 명시 적이든 어떠한 종류의 보증없이 "있는 그대로"제공됩니다. 저자 또는 저작권 보유자는 어떠한 경우에도 소프트웨어 또는 사용과 관련하여 발생했거나 발생했거나 발생했거나 계약 위반, 기타로 인해 발생하는 청구 또는 기타 책임에 대해 책임을지지 않습니다. 소프트웨어.
마진에 대한 외환 거래는 높은 위험을 수반하며 모든 투자자에게 적합하지 않을 수 있습니다. 과거 성과가 미래의 성과를 나타내는 것은 아닙니다. 높은 레버리지는 당신뿐만 아니라 당신을 도울 수 있습니다. 외환에 투자하기로 결정하기 전에 투자 목표, 경험 수준 및 위험 식욕을 신중하게 고려해야합니다. 초기 투자의 일부 또는 전부를 상실 할 가능성이 있기 때문에 잃을 수없는 돈을 투자해서는 안됩니다. 외환 거래와 관련된 모든 위험에 대해 알고 있어야하며, 의심스러운 점이 있으면 독립적 인 재정 고문에게 조언을 구해야합니다.
&부; 2017 GitHub, Inc. 용어 개인 정보 보안 상태 도움말.
현재이 작업을 수행 할 수 없습니다.
다른 탭이나 창을 사용하여 로그인했습니다. 새로 고침하여 세션을 새로 고침하십시오. 다른 탭이나 창에서 로그 아웃했습니다. 새로 고침하여 세션을 새로 고침하십시오.

Comments

Popular posts from this blog

Forex vps server vergleich

Forexpros은 상품

Hotforex 인도