일중 페어 트레이딩 전략
1 분짜리 데이터를 사용하여 Intraday Strategy를위한 Pair Trading을 백 테스팅하고 싶습니다. 나는 1d (quantopian / algorithms / 56d734a1ccb2dd5e6c0001e8) 대신 1m로 변경하여이 알고리즘을 시도했다. 그러나 Backtesting은 오류를 만든다.
안녕하세요 퀀트 1. 당신이 연결 한 algo는 당신 만 볼 수 있습니다. 여기 포럼에서 도움이 필요하시면 & quot; 첨부 & quot;를 사용하여 포럼에 알고리즘을 게시하는 것이 좋습니다. 버튼을 누르면 전체 백 테스트가 즐거워집니다 (일일 모드로 추정 됨).
이 웹 사이트의 자료는 정보 제공의 목적으로 만 제공되며 판매 제안, 구매 권유 또는 보안 또는 전략에 대한 추천이나 보증을 구성하지 않으며 Quantopian이 투자 자문 서비스를 제공하겠다는 제안을 구성하지 않습니다. 또한이 자료는 보안 또는 특정 투자의 적합성과 관련하여 의견을 제시하지 않습니다. 여기에 포함 된 어떤 정보도 콴토 피안이나 그 계열사가 투자 자문을 제공하려고 시도하지 않으며, 콴토 피안 또는 그 계열사의 자문 역할을 수행하지 않으므로 투자 관련 행동 강령에 관여하거나 자제하는 제안으로 간주되어서는 안됩니다. 1974 년 개정 된 근로자 퇴직 소득 보장법 (Employee Retirement Income Security Act), 개인 퇴직 연금 또는 개별 퇴직 연금, 또는 본 자료에 제시된 자료에 대한 신탁 능력에 관한 자문을 제공해야합니다. 개인 퇴직 또는 기타 투자자 인 경우 여기에 설명 된 투자 아이디어, 전략, 제품 또는 서비스가 귀하의 상황에 적합한 지 여부에 대해 Quantopian과 관련없는 재정 고문 또는 다른 신탁에게 문의하십시오. 모든 투자에는 원금 손실을 포함한 위험이 관련됩니다. Quantopian은 웹 사이트에 표현 된 견해의 정확성 또는 완전성에 대해 어떠한 보증도하지 않습니다. 견해는 변경 될 수 있으며 시장 상황이나 경제적 상황의 변화를 비롯하여 다양한 이유로 신뢰할 수 없게 될 수 있습니다.
죄송합니다. 무엇인가 잘못되었습니다. 다시 시도하거나 의견을 보내서 문의하십시오.
지원 티켓을 성공적으로 제출했습니다.
지원팀이 곧 연락을 드릴 것입니다.
이 웹 사이트의 자료는 정보 제공의 목적으로 만 제공되며 판매 제안, 구매 권유 또는 보안 또는 전략에 대한 추천이나 보증을 구성하지 않으며 Quantopian이 투자 자문 서비스를 제공하겠다는 제안을 구성하지 않습니다.
또한이 자료는 보안 또는 특정 투자의 적합성과 관련하여 의견을 제시하지 않습니다. 여기에 포함 된 어떤 정보도 콴토 피안이나 그 계열사가 투자 자문을 제공하려고 시도하지 않으며, 콴토 피안 또는 그 계열사의 자문 역할을 수행하지 않으므로 투자 관련 행동 강령에 관여하거나 자제하는 제안으로 간주되어서는 안됩니다. 1974 년 개정 된 근로자 퇴직 소득 보장법 (Employee Retirement Income Security Act), 개인 퇴직 연금 또는 개별 퇴직 연금, 또는 본 자료에 제시된 자료에 대한 신탁 능력에 관한 자문을 제공해야합니다. 개인 퇴직 또는 기타 투자자 인 경우 여기에 설명 된 투자 아이디어, 전략, 제품 또는 서비스가 귀하의 상황에 적합한 지 여부에 대해 Quantopian과 관련없는 재정 고문 또는 다른 신탁에게 문의하십시오. 모든 투자에는 원금 손실을 포함한 위험이 관련됩니다. Quantopian은 웹 사이트에 표현 된 견해의 정확성 또는 완전성에 대해 어떠한 보증도하지 않습니다. 견해는 변경 될 수 있으며 시장 상황이나 경제적 상황의 변화를 비롯하여 다양한 이유로 신뢰할 수 없게 될 수 있습니다.
이 웹 사이트의 자료는 정보 제공의 목적으로 만 제공되며 판매 제안, 구매 권유 또는 보안 또는 전략에 대한 추천이나 보증을 구성하지 않으며 Quantopian이 투자 자문 서비스를 제공하겠다는 제안을 구성하지 않습니다.
또한이 자료는 보안 또는 특정 투자의 적합성과 관련하여 의견을 제시하지 않습니다. 여기에 포함 된 어떤 정보도 콴토 피안이나 그 계열사가 투자 자문을 제공하려고 시도하지 않으며, 콴토 피안 또는 그 계열사의 자문 역할을 수행하지 않으므로 투자 관련 행동 강령에 관여하거나 자제하는 제안으로 간주되어서는 안됩니다. 1974 년 개정 된 근로자 퇴직 소득 보장법 (Employee Retirement Income Security Act), 개인 퇴직 연금 또는 개별 퇴직 연금, 또는 본 자료에 제시된 자료에 대한 신탁 능력에 관한 자문을 제공해야합니다. 개인 퇴직 또는 기타 투자자 인 경우 여기에 설명 된 투자 아이디어, 전략, 제품 또는 서비스가 귀하의 상황에 적합한 지 여부에 대해 Quantopian과 관련없는 재정 고문 또는 다른 신탁에게 문의하십시오. 모든 투자에는 원금 손실을 포함한 위험이 관련됩니다. Quantopian은 웹 사이트에 표현 된 견해의 정확성 또는 완전성에 대해 어떠한 보증도하지 않습니다. 견해는 변경 될 수 있으며 시장 상황이나 경제적 상황의 변화를 비롯하여 다양한 이유로 신뢰할 수 없게 될 수 있습니다.
높은 가능성 거래.
선물, 주식 및 외환 시장에 대한 높은 거래 설정 및 거래 전략.
2006 년 6 월 9 일 금요일.
페어 트레이딩에 대한 일중 변동, 내 거래 스타일.
거래 방법을 알기 위해서는 시장이 어떻게 연결되어 있는지를 알아야합니다. 나는 위에서 아래로 접근하는 방식으로 시장을 살펴본 다음 거래 할 몇 가지 제품으로 범위를 좁히는 것이 좋습니다.
내 말은 이걸 봐라.
6 의견 :
공유 거래에 대해 큰 감사를드립니다. 거래 쌍이 옵션, STF와 같은 현금, 주식 또는 그 파생 상품을 거래 할 때?
웹 사이트를 확인해 주셔서 감사합니다. 사람들이 실제로 읽고 있거나 적어도 내가하고있는 일을 체크하고 있는지 항상 알고 싶습니다.
블로그에 들러 주셔서 감사합니다. 관심이 있다면 다른 게시물이 있습니다. 어쨌든 주식에만 집중하는 이유가 있습니까? 영국에는 CFD라고 불리는 것이 있습니다. 익숙하다면 본질적으로 레버리지 주식 거래이며 쌍 거래시 가장 효과적입니다. 기본적으로 선물 거래자이지만 다른 유형의 시장, 쌍 및 선물 스프레드를 볼 수 있습니다.
흥미로운 쌍 거래 전략입니다. 페어 트레이딩 시스템에서 사용하는 한 쌍은 유로 선물과 유가 선물입니다. 유로존은 대부분의 석유를 수입하고 ECB는이를 인플레이션 모델의 주요 요인이라고 생각하기 때문에 유로화와 석유 간의 지속적인 상관 관계를 생성하는 경향이있다.
일중 쌍 거래.
이 데모는 Econometric Toolbox의 기능을 사용하여 간단한 일중 페어 트레이딩 전략을 확인하고 조정하는 방법을 보여줍니다.
Copyright 2010-2011, The MathWorks, Inc. 모든 권리 보유.
데이터베이스에서 intraday 데이터로드.
우리는 데이터베이스에서 브렌트 유적 (LCO)에 대한 일중 데이터를 다운로드 할 것입니다. 또한 West Texas Intermediate (WTI)에 해당하는 데이터를 다운로드합니다.
지난 11 일간의 데이터에 초점을 맞추자.
공적분 테스트 프레임 워크.
Econometrics Toolbox는 Engle-Granger와 Johansen 공적분 프레임 워크를 모두 지원합니다. Engle-Granger는 구형 모델이며 Johansen은 한 번에 두 개 이상의 시간 계열을 분석하는 데 특히 유용합니다. Engle-Granger를 거래 모델로 사용합니다.
그렇더라도 공적분 관계가 존재하는 작은 창문이있다.
이 테스트는 잔여 물의 잔차와 표준 오차뿐만 아니라 공적분 회귀 계수를 추정합니다. 모든 쌍 (pair) 거래 전략에 유용한 정보입니다.
쌍 거래 전략.
다음 함수는 쌍 전략을 설명합니다.
우리는 다른 규칙을 수행 할 때이 전략을 테스트 할 수 있습니다.
기존의 매개 변수 스윕 프레임 워크를 사용하여 교정 창과 재조정 빈도의 최적 조합을 식별 할 수 있습니다.
이러한 역사적 추적 시간 시리즈가 갈라 졌음에도 불구하고 자주 재 보정함으로써 수익성있는 쌍 거래 전략을 만들 수 있습니다.
QuantStart.
빠르게 성장하는 소매점 퀀텀 트레이더 커뮤니티를 지원하는 Quantcademy 개인 회원 포털에 가입하십시오. 당신은 당신의 가장 중요한 퀀트 트레이딩 질문에 대답 할 준비가되어있는 지식이 풍부하고 마음이 맞는 퀀트 트레이더 그룹을 찾을 수 있습니다.
퀀트 트레이딩에 관한 나의 eBook을 확인해보십시오. 여기서 저는 파이썬 툴로 수익성 높은 체계적인 트레이딩 전략을 만드는 법을 가르쳐드립니다.
Python 및 R을 사용하여 시계열 분석, 기계 학습 및 베이지안 통계를 사용하는 고급 거래 전략에 관한 새로운 전자 책을 살펴보십시오.
2014 년 2 월 20 일 Michael Halls-Moore
이 기사에서는 첫 번째 일중 거래 전략을 고려할 것입니다. 그것은 고전적인 거래 아이디어, 즉 "거래 쌍"을 사용할 것입니다. 이 경우 우리는 뉴욕 증권 거래소 (NYSE)에서 거래되고 미국 주식 시장 지수 인 S & amp; P500을 거래하려고하는 두 개의 ETF (Exchange Traded Funds), SPY 및 IWM을 사용할 예정입니다. 러셀 2000, 각각.
이 전략은 ETF 쌍을 갈망하여 하나의 금액을 단락시킴으로써 ETF 쌍 사이에 "확산"을 광범위하게 창출합니다. 장단기 비율은 통계적 공적분 시계열 기법을 활용하는 등 다양한 방법으로 정의 할 수 있습니다. 이 시나리오에서는 롤링 선형 회귀를 통해 SPY와 IWM 간의 헤지 비율을 계산할 것입니다. 그러면 SPY와 IWM간에 z - 점수로 표준화 된 "확산"을 만들 수 있습니다. 거래 신호는 스프레드가 평균으로 돌아갈 것이라는 믿음으로 z - 점수가 특정 임계 값을 초과 할 때 생성됩니다.
전략의 근거는 SPY와 IWM이 대규 모 및 소규모 미국 기업 그룹의 경제와 동일한 상황을 대략적으로 특성화한다는 것입니다. S-P500 지수와 Russell 2000 지수를 별도로 (예 : small-cap / large-cape) 영향을 미칠 수 있기 때문에 전복은 가격의 스프레드를 취하면 평균 반전이되어야한다는 것이 전제입니다. 뚜렷한 차이, 재조정 날짜 또는 거래 차단), 장기 물가 연동이 가능할 것입니다.
전략.
전략은 다음 단계로 수행됩니다.
데이터 - SPY 및 IWM의 1 분 막대는 2007 년 4 월에서 2014 년 2 월 사이에 얻어집니다. 처리 - 데이터가 올바르게 정렬되고 누락 된 막대가 서로 삭제됩니다. 스프레드 - 두 ETF 간의 헤지 비율은 롤링 선형 회귀 분석을 통해 계산됩니다. 이것은 1 bar만큼 앞으로 이동하고 회귀 계수를 다시 계산하는 전환 확인 창을 사용하여 $ \ beta $ 회귀 계수로 정의됩니다. 따라서 막대 $ b_i $에 대한 헤지 비율 $ \ beta_i $는 $ k $ 막대의 룩백을 위해 포인트 $ b_ $ ~ $ b_ $에 걸쳐 계산됩니다. Z-Score - 스프레드의 표준 점수는 일반적인 방식으로 계산됩니다. 이것은 스프레드의 (샘플) 평균을 빼고 스프레드의 (샘플) 표준 편차로 나눈 것을 의미합니다. 이것에 대한 이론적 근거는 z - 점수가 무 차원 양이므로 문턱 값 매개 변수를 더 쉽게 해석 할 수 있도록하는 것입니다. 나는 의도적으로 계산에 미리보기 바이어스를 도입하여 얼마나 미묘한가를 보여 주었다. 그것을 시도하고보십시오! 거래 - 긴 신호는 음수의 z 점수가 사전 결정된 (또는 사후 최적화 된) 임계 값 아래로 떨어지면 발생하며 짧은 신호는 이와 반대입니다. 탈출 신호는 절대 z - 점수가 추가 임계 값 아래로 떨어지면 생성됩니다. 이 전략을 위해 나는 (임의로) $ | z | = 2 $의 절대 진입 임계치와 $ | z | = 1 $의 퇴계 임계치를 선택했다. 퍼짐에있는 평균 되돌리기 행동을 추측하는 것은, 희망적으로 그 관계를 붙잡고 긍정적 인 성과를 제공 할 것입니다.
아마도 전략을 깊이있게 이해하는 가장 좋은 방법은 실제로 그것을 구현하는 것입니다. 다음 섹션에서는이 평균 - 되 돌리는 전략을 구현하기위한 전체 파이썬 코드 (단일 파일)에 대해 설명합니다. 이해를 돕기 위해 코드를 자유롭게 주석 처리했습니다.
파이썬 구현.
모든 Python / pandas 자습서와 마찬가지로이 자습서에서 설명한대로 Python 연구 환경을 설정해야합니다. 설치가 끝나면 첫 번째 작업은 필요한 Python 라이브러리를 가져 오는 것입니다. 이 역 테스트를 위해서는 matplotlib과 pandas가 필요합니다.
내가 사용하고있는 특정 라이브러리 버전은 다음과 같습니다.
도서관을 가져 오십시오.
다음 함수 create_pairs_dataframe은 두 개의 기호로 된 일간 막대를 포함하는 두 개의 CSV 파일을 가져옵니다. 우리의 경우 SPY와 IWM이 될 것입니다. 그런 다음 두 원본 파일의 인덱스를 사용하는 별도의 데이터 프레임 쌍을 만듭니다. 누락 된 거래 및 오류로 인해 타임 스탬프가 다를 수 있으므로 일치하는 데이터가 보장됩니다. 이는 판다 (pandas)와 같은 데이터 분석 라이브러리를 사용하면 얻을 수있는 주요 이점 중 하나입니다. "상용구"코드는 매우 효율적으로 처리됩니다.
다음 단계는 SPY와 IWM 사이에서 회전하는 선형 회귀를 수행하는 것입니다. 이 인스턴스에서 IWM은 예측 자 ( 'x')이고 SPY는 응답 ( 'y')입니다. 100 개의 막대로 구성된 기본 전환 확인 기간을 설정했습니다. 위에 논의 된 바와 같이 이는 전략의 매개 변수입니다. 전략이 강력하다고 판단 되려면 수익률 프로필 (또는 다른 실적 측정치)을 전환 기간의 볼록 함수로보고 싶을 것입니다. 따라서 코드의 후반부에 특정 범위에 대한 룩백 기간을 변경하여 민감도 분석을 수행 할 것입니다.
일단 회전 베타 계수가 SPY-IWM에 대한 선형 회귀 모델에서 계산되면 데이터 프레임 쌍에 추가하고 빈 행을 삭제합니다. 이것은 트리밍 기준과 같은 룩백 크기와 동일한 첫 번째 막대 집합을 구성합니다. 그런 다음 두 개의 ETF를 SPY 및 IWM의 $ - \ beta_i $ 단위로 보급합니다. 분명히 실제 구현에서는 불가능한 IWM의 양을 취하는 것이 현실적인 상황은 아닙니다.
마지막으로 스프레드의 평균을 빼고 스프레드의 표준 편차로 정규화 한 스프레드의 z - 점수를 만듭니다. 여기에는 다소 미묘한 미리보기 바이어스가 있습니다. 나는 연구에서 실수를하는 것이 얼마나 쉬운 지 강조하고 싶었 기 때문에 의도적으로 코드에 남겨 두었습니다. 평균 및 표준 편차는 전체 확산 시계열에 대해 계산됩니다. 이것이 진정한 역사적 정확성을 반영한 것이라면, 이 정보는 암시 적으로 미래의 정보를 사용하기 때문에 이용 가능하지 않았을 것입니다. 따라서 우리는 회전 평균과 표준 편차를 사용하여 z 점수를 계산해야합니다.
create_long_short_market_signals에서 거래 신호가 생성됩니다. 이것들은 z - 스코어가 음의 z - 스코어를 초과 할 때 스프레드를 길게하고 z - 스코어가 양의 z - 스코어를 능가 할 때 스프레드를 짧게하여 계산됩니다. 이탈 신호는 z 점수의 절대 값이 다른 (크기가 더 작은) 임계 값보다 작거나 같으면 주어집니다.
이 상황을 달성하기 위해서는 전략이 시장의 "내부"인지 "외부"인지를 각 바에 대해 알아야합니다. long_market과 short_market은 길고 짧은 시장 위치를 추적하기 위해 정의 된 두 변수입니다. 불행하게도 이것은 벡터화 된 접근 방식과 달리 반복적 인 방식으로 코드를 작성하는 것이 훨씬 간단하므로 계산이 느립니다. 요구되는 1 분 막대에도 불구하고.
CSV 파일 당 700,000 개의 데이터 포인트를 사용하여 구형 데스크탑 컴퓨터에서 계산하는 것이 상대적으로 빠릅니다!
pandas DataFrame (일반적인 작업은 아니지만)을 반복하려면 iterrows 메서드를 사용해야합니다. iterrows 메서드는 반복 할 수있는 생성기를 제공합니다.
이 단계에서 실제 장 / 단 신호를 포함하도록 쌍을 업데이트하여 시장에 있어야하는지 여부를 결정할 수 있습니다. 이제 우리는 포지션의 시장 가치를 추적 할 수있는 포트폴리오를 만들어야합니다. 첫 번째 작업은 길고 짧은 신호를 결합하는 위치 열을 만드는 것입니다. 여기에는 $ (1,0, -1) $, long / market 위치를 나타내는 $ 1 $, (종료해야하는) 위치가없는 $ 0 $ 및 short / market position을 나타내는 $ -1 $의 요소 목록이 포함됩니다 . sym1 및 sym2 열은 각 막대를 닫을 때 SPY 및 IWM 위치의 시가를 나타냅니다.
일단 ETF 시장 가치가 창출되면, 모든 바의 끝에서 총 시장 가치를 산출하기 위해 ETF 시장 가치를 합산합니다. 그런 다음 해당 Series 객체의 pct_change 메소드를 통해 반환 스트림으로 변환됩니다. 후속 코드 줄은 나쁜 항목 (NaN 및 inf 요소)을 정리하고 마지막으로 완전한 형평 곡선을 계산합니다.
__main__ 함수는이 모든 것을 하나로 결합합니다. 일중 CSV 파일은 datadir 경로에 있습니다. 특정 디렉토리를 가리 키도록 아래 코드를 수정해야합니다.
전략이 전환 확인 기간과 얼마나 중요한지 판단하려면 다양한 전환에 대한 실적 측정 항목을 계산해야합니다. 성능 측정 값과 $ [50,200] $의 룩백 범위 인 포트폴리오의 최종 총 백분율 수익률을 10 씩 증가시켜 선택했습니다. 다음 코드에서 이전 함수가이 범위에서 for 루프로 래핑 된 것을 볼 수 있습니다 다른 임계 값은 고정되어 있습니다. 마지막 작업은 matplotlib를 사용하여 lookbacks 대 line charts를 반환하는 것입니다.
전환 확인 기간과 수익의 차트를 볼 수 있습니다. 110 막대와 같은 룩백 (lookback) 주위에는 "전역"최대 값이 있습니다. 룩백이 수익과 무관 한 상황을 보았다면 우려의 원인이었을 것입니다.
SPY-IWM 선형 회귀 헤지 비율 비유 기간 분석.
상향 경 사진 주식 곡선없이 백 테스팅 기사를 완성 할 수 없습니다! 따라서 누적 수익률과 시간의 곡선을 플로팅하려는 경우 다음 코드를 사용할 수 있습니다. 전환 확인 매개 변수 연구에서 생성 된 최종 포트폴리오를 플로팅합니다. 따라서 시각화하려는 차트에 따라 룩백을 선택해야합니다. 차트는 비교를 돕기 위해 같은 기간에 SPY의 수익률을 표시합니다.
다음과 같은 주식 곡선 차트는 100 일의 전환 기간 동안 발생합니다.
SPY-IWM 선형 회귀 헤지 비율 비유 기간 분석.
SPY의 축소는 금융 위기 기간 중 2009 년에 중요하다는 점에 유의하십시오. 전략은 또한 현 단계에서 변동성이있었습니다. 또한이 기간 동안 S & P500 지수를 반영하는 SPY의 강세 경향으로 인해 작년 실적이 다소 악화되었음을 유의하십시오.
스프레드의 z - 점수를 계산할 때 미리보기 바이어스를 고려해야합니다. 또한 이러한 모든 계산은 거래 비용없이 수행되었습니다. 이 전략은 일단 이러한 요소가 고려되면 매우 열악하게 수행됩니다. 학비, 입찰 / 매도 및 미끄러짐은 모두 현재 밝혀지지 않았습니다. 또한이 전략은 매우 비현실적인 ETF의 소수 단위로 거래되고 있습니다.
추후 기사에서 우리는 이러한 요소들을 고려하여 훨씬 더 정교한 이벤트 중심의 백 테스터를 만들고 우리의 주식 곡선 및 성과 지표에 대한 신뢰를 훨씬 더 높일 것입니다.
양적 거래 시작하기?
QuantStart 목록을 구독해야하는 3 가지 이유 :
1. 퀀트 트레이딩 레슨.
계량 거래를 시작하는 데 도움이되는 힌트와 팁으로 가득한 무료 10 일간 코스에 즉시 액세스 할 수 있습니다!
2. 모든 최신 내용.
매주 나는 퀀트 스타트에서 모든 활동의 포장을 보내드릴 것입니다. 그래서 당신은 결코 다시 글을 놓치지 않을 것입니다.
현실감 넘치는 퀀 트레이딩 팁.
Comments
Post a Comment