Tuesday 27 March 2018

3 부 1의 양적 거래 전략


QuantStart.


빠르게 성장하는 소매점 퀀텀 트레이더 커뮤니티를 지원하는 Quantcademy 개인 회원 포털에 가입하십시오. 당신은 당신의 가장 중요한 퀀트 트레이딩 질문에 대답 할 준비가되어있는 지식이 풍부하고 마음이 맞는 퀀트 트레이더 그룹을 찾을 수 있습니다.


퀀트 트레이딩에 관한 나의 eBook을 확인해보십시오. 여기서 저는 파이썬 툴로 수익성 높은 체계적인 트레이딩 전략을 만드는 법을 가르쳐드립니다.


Python 및 R을 사용하여 시계열 분석, 기계 학습 및 베이지안 통계를 사용하는 고급 거래 전략에 관한 새로운 전자 책을 살펴보십시오.


Michael Halls-Moore (2013 년 3 월 26 일)


이 기사에서 나는 종단 간 양적 거래 시스템을 수반하는 몇 가지 기본 개념을 소개 할 것입니다. 이 게시물은 두 명의 독자를 대상으로합니다. 첫 번째는 양적 상인으로서 펀드에서 일자리를 구하려고하는 개인입니다. 두 번째는 자신의 "소매"알고리즘 트레이딩 비즈니스를 시도하려는 개인입니다.


양적 거래는 매우 정교한 퀀텀 파이낸싱 영역입니다. 인터뷰를 통과하거나 자신의 트레이딩 전략을 수립하는 데 필요한 지식을 얻으려면 상당한 시간이 걸릴 수 있습니다. 뿐만 아니라 MATLAB, R 또는 Python과 같은 언어에서는 광범위한 프로그래밍 전문 지식을 필요로합니다. 그러나 전략의 거래 빈도가 증가함에 따라 기술적 측면이보다 적절 해집니다. 따라서 C / C ++에 익숙해지는 것이 가장 중요합니다.


양적 거래 시스템은 네 가지 주요 구성 요소로 구성됩니다.


전략 식별 - 전략 수립, 모서리 활용 및 거래 빈도 결정 전략 Backtesting - 데이터 획득, 전략 성과 분석 및 편향 제거 Execution System - 중개인과의 연계, 거래 자동화 및 거래 비용 최소화 위험 관리 - 최적의 자본 배분, 베팅 사이즈 "/ 켈리 기준과 트레이딩 심리.


먼저 거래 전략을 식별하는 방법을 살펴 보겠습니다.


전략 식별.


모든 양적 거래 프로세스는 초기 연구 기간부터 시작됩니다. 이 연구 프로세스는 전략을 찾고, 전략이 실행중인 다른 전략의 포트폴리오에 맞는지 여부, 전략을 테스트하는 데 필요한 모든 데이터를 얻는 방법, 더 높은 수익 및 / 또는 위험을 낮추기위한 전략을 최적화하려는 경우를 포함합니다. 전략을 "소매상"상인으로 운영하고 거래 비용이 전략에 어떤 영향을 미치는지 알아 보려면 자본 요구 사항을 고려해야합니다.


일반적인 믿음과는 달리, 다양한 공개 소스를 통해 수익성있는 전략을 찾는 것은 실제로 매우 간단합니다. 학자들은 이론적 인 거래 결과를 정기적으로 발표합니다 (대부분 거래 비용의 총액 임). 양적 금융 블로그는 전략에 대해 자세히 논의 할 것입니다. 무역 저널은 기금이 사용하는 전략의 일부를 개괄 할 것입니다.


왜 개인과 기업이 수익성있는 전략에 대해 논의하고 싶어하는지 질문 할 수 있습니다. 특히 "거래를 복잡하게 만드는"다른 사람들이 전략이 장기적으로 작동하지 않을 수 있다는 것을 알고있을 때 그렇습니다. 그 이유는 그들이 수행 한 정확한 매개 변수와 튜닝 방법을 자주 논의하지 않는다는 사실에 있습니다. 이러한 최적화는 상대적으로 평범하지 않은 전략을 수익성이 높은 전략으로 전환시키는 열쇠입니다. 사실, 고유 한 전략을 수립하는 가장 좋은 방법 중 하나는 유사한 방법을 찾아 자신의 최적화 절차를 수행하는 것입니다.


다음은 전략 아이디어를 찾기 시작할 수있는 작은 목록입니다.


당신이 볼 전략의 대부분은 평균 - 복귀와 추세 - 추종 / 운동량의 범주에 속할 것입니다. 평균 회귀 전략은 "가격 시리즈"(예 : 두 개의 상호 연관된 자산 사이의 스프레드)에 대한 장기 평균이 존재한다는 사실과이 평균에서 단기간의 편차가 결국 회복 될 것이라는 사실을 악용하려는 전략입니다. 모멘텀 전략은 한 방향으로 기세를 모을 수있는 시장 추세에서 "타기를 히치 (hitching)"함으로써 투자자 심리와 대규모 펀드 구조를 모두 활용하고, 그 흐름이 뒤바뀔 때까지 추세를 따라 가려고합니다.


양적 거래의 또 다른 중요한 측면은 거래 전략의 빈도입니다. 저주파 거래 (LFT)는 일반적으로 거래일보다 긴 자산을 보유하는 모든 전략을 나타냅니다. 따라서 고주파 거래 (HFT)는 일반적으로 자산을 하루 동안 보유하는 전략을 나타냅니다. 초고주파수 거래 (UHFT)는 초 단위 및 밀리 초 단위로 자산을 보유하는 전략을 나타냅니다. 소매 실무자 인 HFT와 UHFT는 확실하게 가능하지만 거래 기술 스택 및 주문서 역학에 대한 자세한 지식이 있어야만 가능합니다. 이 소개 기사에서는 이러한 측면에 대해서는 크게 언급하지 않겠습니다.


일단 전략 또는 전략 세트가 확인되면 과거 데이터에 대한 수익성을 테스트해야합니다. 그것이 역 테스팅의 영역입니다.


전략 Backtesting.


역 테스팅의 목표는 위의 프로세스를 통해 확인 된 전략이 과거 및 현재 데이터 모두에 적용될 때 수익이된다는 증거를 제공하는 것입니다. 이것은 "현실 세계"에서 전략이 어떻게 수행 될지에 대한 기대치를 설정합니다. 그러나 백 테스트는 여러 가지 이유로 성공을 보장하는 것은 아닙니다. 가능한 한 많이 고려해야하고 제거해야하는 수많은 편향을 수반하기 때문에 아마도 양적 거래에서 가장 미묘한 영역 일 것입니다. look-ahead bias, 생존 바이어스, 최적화 바이어스 ( "data-snooping"바이어스라고도 함)를 포함한 일반적인 바이어스 유형에 대해 논의 할 것입니다. backtesting에서 중요한 다른 영역으로는 역사적인 데이터의 가용성과 청결성, 현실적인 거래 비용을 고려하고 강력한 백 테스팅 플랫폼을 결정하는 것 등이 있습니다. 아래의 실행 시스템 섹션에서 트랜잭션 비용에 대해 더 자세히 논의 할 것입니다.


일단 전략이 확인되면, 테스트를 수행하고, 아마도 정교화 할 수있는 과거 데이터를 얻는 것이 필요합니다. 모든 자산 클래스에 걸쳐 상당수의 데이터 공급 업체가 있습니다. 그들의 비용은 일반적으로 데이터의 품질, 깊이 및 적시성과 함께 확장됩니다. 퀀트 트레이더 시작에 대한 전통적인 출발점은 (적어도 소매 수준에서) 야후 파이낸스의 무료 데이터 세트를 사용하는 것입니다. 나는 공급자들에게 너무 많이 머물지 않을 것이다. 오히려 역사적인 데이터 세트를 다룰 때 일반적인 이슈에 집중하고 싶다.


과거 데이터의 주된 관심사는 정확성 / 청결성, 생존자 편향 및 배당금 및 주식 분할과 같은 기업 활동 조정을 포함합니다.


정확도는 오류가 있는지 여부에 관계없이 데이터의 전반적인 품질과 관련됩니다. 스파이크 필터와 같이 오류를 쉽게 식별 할 수 있습니다. 스파이크 필터는 시계열 데이터에서 잘못된 "스파이크"를 찾아서 수정합니다. 다른 시간에 그들은 발견하기가 매우 어려울 수 있습니다. 두 개 이상의 공급자가 있고 각 공급자의 데이터를 서로 점검해야하는 경우가 종종 있습니다. 생존자 편견은 종종 무료 또는 저렴한 데이터 세트의 "특징"입니다. 생존 편향이있는 데이터 세트는 더 이상 거래하지 않는 자산을 포함하지 않는다는 것을 의미합니다. 주식의 경우에는 상장 주식 / 파산 주식을 의미합니다. 이 편향은 그러한 데이터 세트에서 테스트 된 주식 거래 전략이 과거의 "승자"가 이미 선택되어 있기 때문에 "실제 세계"보다 더 잘 수행 될 것임을 의미합니다. 기업 활동에는 회사가 수행하는 "물류 (logistical)"활동이 포함되며 원가에 계단식 기능 변경이 발생하며 이는 가격 반환 계산에 포함되어서는 안됩니다. 배당금 및 주식 분할에 대한 조정이 일반적인 원인입니다. 이 작업들 각각에서 역 조정이라고 알려진 프로세스가 수행되어야합니다. 주식 분할과 실제 수익 조정을 혼동하지 않도록 매우주의해야합니다. 많은 상인이 기업 활동에 의해 포착되었습니다!


백 테스트 절차를 수행하려면 소프트웨어 플랫폼을 사용해야합니다. Tradestation과 같은 전용 백 테스트 소프트웨어, Excel 또는 MATLAB과 같은 수치 플랫폼 또는 Python 또는 C ++와 같은 프로그래밍 언어의 완전한 사용자 정의 구현 중에서 선택할 수 있습니다. Tradestation (또는 유사), Excel 또는 MATLAB에 너무 많이 머 무르지 않을 것입니다. 아래에서 설명하는 이유 때문에 전체 사내 기술 스택을 만드는 것으로 믿습니다. 그렇게하는 것의 이점 중 하나는 극단적 인 고급 통계 전략을 사용하여 백 테스트 소프트웨어 및 실행 시스템을 긴밀하게 통합 할 수 있다는 것입니다. 특히 HFT 전략의 경우 사용자 지정 구현을 사용하는 것이 필수적입니다.


시스템을 다시 테스트 할 때 성능을 얼마나 잘 측정 할 수 있어야합니다. 정량적 전략에 대한 "산업 표준"측정 기준은 최대 축소 및 Sharpe Ratio입니다. 최대 하락률은 특정 기간 (일반적으로 연간)에 걸친 계정 자기 자본 곡선에서 가장 큰 peak-to-trough 하락을 특징으로합니다. 이것은 가장 자주 백분율로 표시됩니다. LFT 전략은 여러 가지 통계적 요인으로 인해 HFT 전략보다 더 많은 축소를하는 경향이 있습니다. 역사적인 백 테스트는 향후 최대 수익 감소를 보여 주며, 이는 향후 전략의 수익 감소 효과를위한 좋은 가이드입니다. 두 번째 측정 값은 초과 수익률의 평균을 초과 수익률의 표준 편차로 나눈 값으로 경험적으로 정의되는 Sharpe Ratio입니다. 여기에서 초과 수익률은 S & P500이나 3 개월 재무부 법안과 같은 사전 결정된 벤치 마크 이상으로 전략이 복귀 한 것을 의미합니다. 연간 수익률은 전략의 변동성 (Sharpe Ratio와는 달리)을 고려하지 않았기 때문에 일반적으로 활용되는 척도가 아닙니다.


일단 전략이 다시 테스트되었고 좋은 샤프 (Sharpe)와 드로우 다운 (drawdown)을 최소화하면서 편견이없는 것으로 간주되면 실행 시스템을 구축 할 때입니다.


실행 시스템.


실행 시스템은 전략에 의해 생성 된 거래 목록이 브로커에 의해 보내지고 실행되는 수단입니다. 무역 세대가 반자동 또는 완전 자동화 될 수 있다는 사실에도 불구하고, 실행 메커니즘은 수동, 반 수동 (즉, "원 클릭") 또는 완전히 자동화 될 수있다. LFT 전략의 경우 수동 및 반 수동 기술이 일반적입니다. HFT 전략의 경우 전략 및 기술의 상호 의존성으로 인해 무역 발전기와 긴밀하게 결합되는 완전 자동화 된 실행 메커니즘을 만들어야합니다.


실행 시스템을 만들 때 중요한 고려 사항은 중개자와의 인터페이스, 트랜잭션 비용 (커미션, 미끄러짐 및 스프레드 포함) 최소화 및 테스트 된 성능에서 라이브 시스템 성능의 차이입니다.


중개 회사와 연결하는 데는 여러 가지 방법이 있습니다. 브로커를 전화로 바로 호출하여 완전히 자동화 된 고성능 API (Application Programming Interface)까지 다양합니다. 이상적으로는 거래 실행을 가능한 한 자동화하는 것이 좋습니다. 이것은 당신이 더 많은 연구에 집중할 수있게 해줄뿐만 아니라, 여러 전략이나 더 높은 빈도의 전략을 실행할 수있게 해줍니다. (사실 자동 실행이 없다면 HFT는 본질적으로 불가능합니다). MATLAB, Excel 및 Tradestation과 같은 일반적인 백 테스팅 소프트웨어는 주파수가 낮고 단순한 전략에 적합합니다. 그러나 실제 HFT를 수행하려면 C ++와 같은 고성능 언어로 작성된 사내 실행 시스템을 구축해야합니다. 일화로, 이전에 고용 된 펀드에서 10 분마다 새로운 시장 데이터를 다운로드 한 다음 동일한 시간대에 해당 정보를 기반으로 거래를 수행하는 10 분의 "거래 루프"가있었습니다. 이것은 최적화 된 Python 스크립트를 사용하고있었습니다. 분 또는 두 번째 주파수 데이터에 접근하는 것에 대해서는 C / C ++가 더 이상적이라고 생각합니다.


대규모 펀드에서는 실행을 최적화하기 위해 퀀트 트레이더의 영역이 아닌 경우가 많습니다. 그러나 소규모 상점이나 HFT 회사에서는 상인이 유언 집행자이므로보다 폭 넓은 스킬 셋이 바람직한 경우가 많습니다. 기금에 고용되기를 원한다면이를 명심하십시오. 프로그래밍 기술은 통계 및 계량 경제학의 재능만큼이나 중요합니다.


실행의 기치에 해당하는 또 다른 주요 쟁점은 트랜잭션 비용 최소화입니다. 일반적으로 거래 비용에는 세 가지 요소가 있습니다. 수수료 (또는 세금)는 중개 회사, 거래소 및 SEC (또는 유사한 정부 규제 기관)가 부과하는 수수료입니다. 미끄러짐은 주문을 채우려는 의도와 실제 채워진 것의 차이입니다. 스프레드는 거래되는 증권의 입찰가 / 물가 사이의 차이입니다. 스프레드는 일정하지 않으며 시장의 현재 유동성 (즉, 매수 / 매도 주문의 가용성)에 좌우된다는 점에 유의하십시오.


거래 비용은 좋은 Sharpe 비율의 극도로 수익성 높은 전략과 무시 무시한 Sharpe 비율의 극단적 인 수익성이 낮은 전략 간의 차이를 만들 수 있습니다. 백 테스트에서 거래 비용을 정확히 예측하는 것은 어려울 수 있습니다. 전략의 빈도에 따라 입찰 / 청문 가격에 대한 진드기 데이터가 포함 된 과거 거래 데이터에 액세스해야합니다. 이러한 이유로 콴트의 전체 팀은 대규모 펀드의 실행 최적화에 전념합니다. 펀드가 상당량의 거래를 오프 로딩해야하는 시나리오를 고려해보십시오 (그 이유는 다양합니다!). 너무 많은 주식을 시장에 "쏟아 버리면"그들은 가격을 급격히 떨어 뜨릴 것이고 최적의 실행을 얻지 못할 수도 있습니다. 따라서 시장에 "물방울을 떨어 뜨리는"명령이 존재하지만, 펀드는 미끄러질 위험이 있습니다. 더 나아가, 다른 전략들은 이러한 필수품을 "먹이"하며 비 효율성을 악용 할 수 있습니다. 이것은 펀드 구조 차익 거래의 영역입니다.


실행 시스템의 마지막 주요 문제는 전략 성능이 백 테스팅 된 성능과 다른 점입니다. 이것은 여러 가지 이유로 발생할 수 있습니다. 우리는 이미 백 테스트를 고려할 때 미리보기 바이어스와 최적화 바이어스에 대해 이미 논의했습니다. 그러나 일부 전략에서는 배포 전에이 편향 요소를 쉽게 테스트 할 수 없습니다. 이것은 HFT에서 가장 우세하게 발생합니다. 실행 시스템에는 버그가있을뿐만 아니라 백 트레이스에는 나타나지 않지만 라이브 거래에는 나타나지 않는 거래 전략 자체가있을 수 있습니다. 시장은 전략을 전개 한 후에 체제 변화의 대상이되었을 수 있습니다. 새로운 규제 환경, 변화하는 투자 심리 및 거시 경제 현상은 시장이 어떻게 행동하고 따라서 전략의 수익성이 다른가로 이어질 수 있습니다.


위기 관리.


양적 교역 수수께끼의 마지막 부분은 위험 관리의 과정입니다. '위험'에는 앞에서 언급 한 모든 편견이 포함됩니다. 갑자기 하드 디스크 오작동을 일으키는 교환기에 함께있는 서버와 같은 기술 위험이 포함됩니다. 브로커가 파산하는 것과 같은 브로커 리스크 위험을 포함합니다 (MF Global과 최근의 공포를 감안할 때 미친 것처럼 보이지 않습니다!). 간단히 말해서 그것은 거래 구현을 방해 할 수있는 거의 모든 것을 다루고 있으며, 그 중 많은 소스가 있습니다. 전체 책은 양적 전략을위한 리스크 관리에 전념하기 때문에 모든 가능한 위험 원천을 여기에서 밝히지는 않을 것입니다.


리스크 관리는 포트폴리오 이론의 한 부분 인 최적 자본 배분 (optimal capital allocation)으로도 알려져 있습니다. 이것은 자본이 일련의 상이한 전략과 그 전략 내의 거래에 배분되는 수단이다. 그것은 복잡한 영역이며 일부 사소한 수학에 의존합니다. 최적의 자본 배분과 전략의 영향력이 관련되는 산업 표준을 켈리 기준이라고합니다. 이 글은 소개 글이므로, 나는 계산에 머 무르지 않을 것이다. Kelly 기준은 수익률의 통계적 특성에 대해 몇 가지 가정을합니다. 이는 금융 시장에서 종종 유효하지 않기 때문에 거래자는 구현 측면에서 보수적 인 경우가 많습니다.


위험 관리의 또 다른 주요 구성 요소는 자신의 심리적 프로파일을 다루는 것입니다. 거래로 들어가는 많은인지 적 편견이 있습니다. 전략이 혼자 남겨지면 이것은 알고리즘 거래와 관련하여 문제가 될 수 있습니다. 일반적인 편견은 상실감을 느끼는 고통 때문에 손실 위치가 닫히지 않는 손실 혐오감입니다. 마찬가지로 이미 이익을 잃는 것에 대한 두려움이 너무 클 수 있기 때문에 이익을 너무 일찍받을 수 있습니다. 또 다른 공통 바이어스는 최신 성 (recency) 바이어스로 알려져 있습니다. 이는 상인이 장기적인 관점이 아니라 최근의 사건에 지나치게 강조 할 때 나타납니다. 물론 두려움과 탐욕의 정서적 편향이 있습니다. 이는 종종 과소 또는 과잉 레버 리징으로 이어질 수 있으며, 이로 인해 파산 (즉, 계정 자본이 0 또는 그 이하가 됨) 또는 수익 감소가 발생할 수 있습니다.


이해할 수 있듯이 양적 거래는 매우 복잡하지만 매우 흥미로운 양적 금융 분야입니다. 나는이 기사에서 문자 그대로 표면을 긁어 냈으며 이미 오랜 시간이 걸리고 있습니다! 전체 책과 논문은 제가 한두 문장 밖에 쓰지 않은 쟁점에 관해 쓰여졌습니다. 따라서 양적 펀드 거래를 신청하기 전에 상당한 양의 기초 연구를 수행해야합니다. 최소한 MATLAB, Python 또는 R과 같은 프로그래밍 언어를 통해 구현 경험이 풍부한 통계 및 계량 경제학에 대한 광범위한 배경 지식이 필요합니다. 보다 높은 수준의 주파수에서보다 정교한 전략을 얻으려면 기술 설정이 필요할 것입니다 Linux 커널 수정, C / C ++, 어셈블리 프로그래밍 및 네트워크 대기 시간 최적화를 포함합니다.


자신의 알고리즘 트레이딩 전략을 만드는 데 관심이 있다면 먼저 프로그래밍을 잘하는 것이 좋습니다. 필자가 선호하는 것은 가능한 한 많은 데이터 수집기, 전략 백 테스터 및 실행 시스템을 가능한 한 많이 구축하는 것입니다. 자신의 수도가 라인에 있다면, 당신이 당신의 시스템을 완벽하게 테스트하고 그 함정과 특별한 이슈를 알고 있다는 것을 알면서 밤에는 잘 자지 않겠습니까? 장기간에 걸쳐 시간을 절약 할 수는 있지만 공급 업체에 아웃소싱하는 것은 장기적으로 매우 비쌀 수 있습니다.


양적 거래 시작하기?


QuantStart 목록을 구독해야하는 3 가지 이유 :


1. 퀀트 트레이딩 레슨.


계량 거래를 시작하는 데 도움이되는 힌트와 팁으로 가득한 무료 10 일간 코스에 즉시 액세스 할 수 있습니다!


2. 모든 최신 내용.


매주 나는 퀀트 스타트에서 모든 활동의 포장을 보내드릴 것입니다. 그래서 당신은 결코 다시 글을 놓치지 않을 것입니다.


현실감 넘치는 퀀 트레이딩 팁.


건물 무역 전략 수립을위한 Quant의 접근법 : 제 1 부.


최근 Quandl은 대형 헤지 펀드의 선임 포트폴리오 매니저를 인터뷰했습니다. 우리는 그녀가 어떻게 거래 전략을 세우는 지에 대해 이야기했는데, 어떻게 그녀가 시장의 추상적 인 표현에서 진정한 예언력을 지닌 구체적인 것으로 전환했는지에 대해 이야기했습니다.


새로운 거래 전략을 어떻게 디자인 할 수 있는지 말해 줄 수 있습니까?


모두 가설로 시작합니다. 나는 두 악기 사이의 관계가 있어야한다고 생각하거나, 시장에 인기를 얻고있는 새로운 악기가 있거나 어쩌면 마이크로 가격 책정 행위를 유발하는 비정상적인 거시 경제 요인이있을 수도 있습니다. 그래서 저는이 관계를 포착하고자하는 방정식 - 당신이 원한다면 모델 - 을 적어 둡니다. 전형적으로 그것은 무작위 (확률 론적 인) 구성 요소로 시간이 지남에 따라 변수가 어떻게 진화 하는지를 보여주는 일종의 프로세스 방정식 일 것입니다.


다음 단계는이 모델에 대한 닫힌 형식의 솔루션을 찾는 것입니다. 때때로 이것은 쉽다; 때로는 대수의 일 및 주를 필요로합니다. 때로는 폐쇄 형 솔루션이 없기 때문에 근사치를 해결해야합니다. 필자는 Mathematica의 상징적 조작 툴킷이이 단계에서 매우 유용하다는 것을 알았습니다.


좋아, 이제 나는 시장의 모델을 가지고있다. 나는 그것이 현실적인지를 시험 할 필요가있다. 이 단계에서는 대개 Matlab을 사용합니다. 여러 매개 변수에 대해 그럴듯한 값을 가정하고 일부 시뮬레이션을 실행합니다. 시뮬레이션 된 출력이 합리적으로 보입니까? 그들은 적어도 개념적으로 시장의 실제 동력을 반영합니까?


모델이이 온 전성 검사를 통과한다고 가정하면, 푸른 하늘 탐험이나 관념을 넘어 정식 연구로 넘어갈 때입니다.


"공식 연구"란 무엇을 의미합니까? 그리고 왜 그것이 필요한 것입니까?


나는 시장의 추상적 인 양식화 된 표현에서 진실 된 예언력을 가진 구체적이고 모호하지 않은 것에의 전환을 의미합니다.


진정한 예측 모델을 만드는 것은 어렵습니다. 그러나 예측 모델을 만들었다 고 생각하는 것을 속이기 란 매우 쉽습니다. 실제로는 샘플링 테스트를 사용하거나 규칙에 외인성 지식을 부과했거나 실제로 가지고있는 경우입니다. 대부분의 "시스템"은이 정확한 이유 때문에 현실 세계에서 붕괴됩니다.


나는 그것이 내 모델에 일어나기를 원하지 않는다. 나는 그것에 진짜 돈을 걸고있을 것이다. 그래서 수년 동안 저 자신을 속이는 위험을 최소화하는 느리고 안정적인 체계적인 접근 방식을 구축하고 개선했습니다. 그것이 제가 "공식 연구"라고 부르는 것입니다.


공식 연구 프로세스에 어떤 단계를 포함합니까?


초기에 가장 큰 두려움은 데이터 오염입니다. 역사는 제한된 자원입니다. 테스트를 위해 기록 데이터가 부족 해지면 더 이상 생성 할 수 없습니다. 나는 오염되지 않은 샘플 밖의 데이터를 공급하지 않는 것에 대해 편집증 적이다.


그래서 역사 데이터를 겹치지 않는 덩어리로 나누기 시작합니다. 나는 그때 임의로 어떤 덩어리인지 알지 못한다. (이것은 잠재적 인 편향에 대비하지 못합니다. 예를 들어, 테스트 데이터 세트가 2008 년이거나 2009 년에 위험을 찾고 있음을 알고 위험 회피를하는 경우).


하나의 청크를 교정 세트로 지정합니다. 필자는 보통 교정을 위해 파이썬을 사용합니다 : 내장 된 최적화 라이브러리를 사용하고 내 자신의 라이브러리를 작성했습니다. 이 특별한 예에서, 나의 매개 변수는 제한되고 상관됩니다. 그래서 저는 EM 알고리즘이라는 2 단계 최적화 과정을 사용합니다. 옵티 마이저는 초기 조건에 민감 할 수 있으므로 Monte Carlo를 사용하여 솔루션 공간에서 시작점을 선택할 수 있습니다. 이 모든 것은 파이썬에서하기 쉽습니다.


이 교정의 결과는 다른 시장 가격을 예측하기 위해 실제 시장 관측과 결합 할 수있는 일련의 "모델 매개 변수"- 수치 값이어야합니다.


모델을 보정 한 후에 샘플을 테스트합니다. 예측은 안정적이고 나머지는 평균 되 돌리는가? 그렇지 않은 경우 모델이 작동하지 않습니다. 저것과 같이 쉬운. 나는 모델을 깨뜨리기 위해 다양한 "트릭"을 시도한다. 예를 들어 월간 데이터를 보정하지만 일별 데이터를 테스트합니다. 아니면 캐나다 시장 데이터에 대한 미국의 매개 변수를 테스트합니다. 모델이 근본적인 경제적 현실을 진정으로 반영한다면이 공격에 상당히 견고해야합니다. (국경을 넘을 때 경제는 변하지 않습니다).


따라서 샘플 내 및 샘플 외를 엄격하게 분리합니다. 당신은 데이트 범위에 눈 멀게합니다; 당신은 Monte Carlo를 사용하여 출발점 편향을 피한다; 다양한 견고한 트릭을 시도해보십시오. 네가 속일 수 없다는 것을 확인하기 위해 또 무엇을합니까?


나는 파씨모에 매우 높은 프리미엄을 둔다. 모델에 너무 많은 매개 변수가 필요하거나 너무 많은 자유도가있는 경우 커브 피팅 일뿐입니다. 모델이 아닙니다. 그래서 나는 끊임없이 요인을 제거하려고 노력하고 있습니다. 모델이 여러 요소가 제거 된 상태로 유지되면 (그리고 "부유 한"상태로 유지되면) 아마도 좋은 것입니다.


두 번째로 강건성을 증명하는 것은 그것이 당신이 위에 구축 한 트레이딩 전략에 상관없이 모델이 잘 작동하는지 여부입니다. 모든 종류의 가장자리 조건을 가진 복잡한 비선형 스케일링 규칙을 사용하여 돈을 벌 수 있다면 견고성이 결여된다는 것을 의미합니다.


마지막으로 데이터를 대체 할 수있는 것은 없습니다. 필자는 다른 국가, 다른 악기, 다른 시간 프레임, 다른 날짜 빈도 등 모델을 테스트 할 수있는 가능한 모든 샘플 밖의 데이터 집합을 생각합니다. 이 모델은 모든 모델에서 작동해야합니다. 그렇지 않으면 결과에 선택 바이어스가 있습니다.


그것은 포괄적이라고 들린다. 다음에 어떻게 될까요?


보정 된 모델로 무장 한 다음 단계는 PL 시뮬레이션을 작성하는 것입니다. 기회 세트가 너무 작아서 입찰 요청을 보상 할 수 없거나 가끔 폭발로 인해 모든 이익이 죽는 경우 평균 복귀 잔여만으로는 충분하지 않을 수 있습니다. 따라서 내 모델을 사용하여 실제 거래 전략을 테스트해야합니다. 여기서 내가 최대한주의를 기울여야하는 부분이 있습니다. 새로운 자유 변수를 추가하거나 잠재 의식 지식으로 결과를 편향 시키거나 이상 치를 벗어나려는 것이 너무 쉽습니다. 샘플의 단순성, 엄격한 분리 및 지적 정직성이 중요합니다.


나는 백 테스트를 위해 Excel을 사용한다. 이것은 신중한 선택입니다 : Excel은 파이썬만큼 강력하지 못합니다. 이는 내가 거래 규칙을 얼마나 복잡하게 만들 수 있는지에 대한 상한이 있음을 의미합니다. 이것은 좋은 일입니다. 복잡성이 수익성이 있어야하는 전략은 처음에는 좋은 전략이 아닐 수 있습니다.


Excel을 사용하면 내 가정이 명확하게 나타납니다. 코드로 작업 할 때 이러한 일을 추적하기가 쉽습니다. 이를 통해 성능 통계 (위험, 수익, 자본 감소, Sharpe 비율 등)를 빠르고 명확하게 시각화 할 수 있습니다. 내 모델이 "효과가 있다고하더라도"모델 주위에 구축 된 거래 전략이 경제적으로 실행 가능하다는 보장이 없으므로 이러한 통계가 중요합니다.


거의 모든 거래 모델이 위의 모든 단계를 지나치게 만듭니다 : 푸른 하늘 정립 및 온 전성 검사; 내역 교정 및 시료 외부 성능; 트레이딩 전략 백 테스트 및 수익성. 그러나 그렇게하는 소수의 사람들에게는 이제 생산 단계로 넘어갈 때입니다. 이것은 완전히 다른 볼 게임입니다.


여기에서 인터뷰의 두 번째 부분을 읽을 수 있습니다. 그것에서, 우리는 생산이 완전히 새로운 볼 게임이고, 새로운 전략에 대한 아이디어를 얻는 방법에 대해 논의합니다. 우리는 인터뷰의 세 번째 파트에서 독자 질문에 응답합니다.


우리의 퀀트에 대한 질문이 있으십니까? 코멘트? 아래에 남겨두면 회신을 받게됩니다. 우리는 거래 전략 수립 과정에 대해 듣고 싶습니다.


회신을 남겨주 답장을 취소하십시오.


[& # 8230;] 빌딩 무역 전략 수립을위한 Quant의 접근법 : 제 1 부 빌딩 전략 수립을위한 Quant의 접근법 : 제 2 부 수탁 전략 수립을위한 Quant의 접근법 : 제 3 부 [& # 8230;]


[& # 8230;] 건물 무역 전략에 대한 Quant의 접근법 : 제 1 부 [Quandl] [& # 8230;]


[& # 8230;] 대형 헤지 펀드의 선임 양적 포트폴리오 매니저와의 인터뷰 중 일부. 첫 번째 부분에서 그녀는 양적 거래 전략을 세우는 이론적 인 단계를 논의했습니다. 두 번째 [& # 8230;]


[& # 8230;] 콴틀 리소스 허브 (Quandl Resource Hub). [& # 8230;]


[& # 8230;] 빌딩 트레이딩 전략에 대한 Quant의 접근법 : 제 1 부 [Quandl] 최근에 Quandl은 대형 헤지 펀드의 수석 Quantitative 포트폴리오 관리자를 인터뷰했습니다. 우리는 그녀가 어떻게 시장에 대한 추상적 인 표현에서 진정한 예언력을 지닌 구체적인 전략으로 전환하는지에 대한 거래 전략을 어떻게 구축하는지에 대해 이야기했습니다. 새로운 거래 전략을 어떻게 디자인 할 수 있는지 말해 줄 수 있습니까? 모두 가설로 시작합니다. 나는 [[# 8230;]이되어야한다고 추측한다.


[& # 8230;] 1. 빌딩 트레이딩 전략에 대한 Quant의 접근법 : Part One [& # 8230;]


나는 그 인터뷰가 아주 유용하다는 것을 알았다. 그러나, 이미 Matlab, Python 및 Excel (아마도 C # / C ++ / Java를 사용)을 제작에 사용했다는 것을 알았습니다. 4 개 국어로 이동하는 과정이 번거롭지 않습니까? 또한 Matlab에서 파이썬으로 할 수없는 것은 무엇입니까? 또한 Excel과 관련하여 시각화가 유용하더라도 많은 운영상의 위험 (수식이 올바르게 끌리지 않거나 시트가 제대로 새로 고쳐지지 않음 등)이 많이 발생한다는 것을 알지 못합니까? 이것에 대해 듣고 싶습니다.


& gt; 이 과정이 4 개 국어로 옮겨가는 것이 번거롭지 않습니까?


그것은 그렇게 성가시다. 일반적으로 가장 지루한 부분은 다른 앱이나 언어간에 일관되고 원활하게 데이터가 흐르도록 만드는 것입니다. 구문 변환이 쉽습니다. 데이터 변환, 별로.


& gt; Matlab에서 Python으로 할 수없는 것은 무엇입니까?


요즈음, 당신 말이 맞습니다. 파이썬에서는 할 수있는 일이 많지 않습니다. 실제로 파이썬을 점점 더 많이 사용하고 있습니다. 하지만 항상 그런 것은 아닙니다. 파이썬에서 오픈 소스 금융 라이브러리가 과다하게 발생하는 것은 비교적 최근의 현상입니다.


& gt; Excel과 관련하여 시각화가 유용하더라도 많은 운영상의 위험 (수식이 올바르게 끌리지 않거나 시트가 제대로 새로 고쳐지지 않음 등)이 많이 발생한다는 것을 알지 못합니까?


나는 완전히 동의한다. Excel은 여러면에서 취약합니다 : 운영상의 실수를하기 쉽고, 감사하는 것이 불가능합니다. 그것은별로 성과가 없습니다. 가장 불편한 시간에 멈 춥니 다. 따라서 Excel을 어디에서 어떻게 사용하는지 매우 신중해야합니다. 즉, 많은 비용보다 많은 이점이 있다는 것을 알았습니다.


인터뷰가 유용하다는 걸 알게되었습니다. 그러나 나는 Matlab, Python, Excel을 이미 사용했다는 것을 알고있다. (아마도 C ++ / C # / Java / Python을 사용하고있을 것이다.) 이 과정이 번거롭지 않습니까? 또한 Matlab에서 Python으로 할 수 없거나 그 반대 일 수 있습니까? Excel이 다소 조작상의 위험이 있다고 생각하지 마십시오. 일반적으로 수작업으로 오류가 발생할 수있는 수식을 끌어서 놓으십시오. 시트가 제대로 새로 고쳐지지 않습니다.


[& # 8230;] 빌딩 트레이딩 전략에 대한 한 가지 접근법 (quandl) [& # 8230;]


매우 합리적인 접근법. 나는 특히 OOS 데이터를 신성 모독에 두는 중요성을 좋아한다. 내가 어떤 불안감을 가지고있는 유일한 측면은 안정성을 테스트하기위한 요소를 제거하는 것입니다. 아마도 인터뷰 형식만으로는 상황이 좀 덜 명확 해졌을 것입니다. 그러나 모델을 하향식이 아닌 상향식으로 작성합니다. 새로운 요소가 정보를 추가하거나 그렇지 않습니다. 내 두 요인 모델이 내 3 요소 모델보다 IC가 높으면 세 번째 요인은 불필요하며 처음에 추가해서는 안됩니다. 그런 다음 잘 정의 된 모델에서 요인을 제거하면 항상 예측 성능이 저하됩니다.


사과, lvcm, 나는 충분히 명확하지 않았다. (데이비드에 대한 내 답장, 위 스레드 참조).


테스트 단계에서 요인을 제거하지 않아도됩니다. 내 사양 단계에서 그들을 제거하려고합니다. 새로운 자유도가 설명력을 추가하지 않는다면, 나는 그들을 버려 버린다. 그러나 일단 테스트 및 견고성 검사로 옮겨지면 요인을 제거하는 것이 타당하지 않습니다. (실제로 카파를 무시할 수는 없다는 것을 의미하는 것을 알지 못한다.).


OOS 데이터를 신성 모독으로 유지하기 & # 8212; 그걸로 너와 완전히. 사람들의 머리를 망치고 싶다면이 단계가 중요합니다.


나는 삶에 대한 양적 모델링과 분석을한다. 지금까지 R에서 재미있는 모델을 만들었습니다. 문제는 내가 파이썬을 능숙하게 다루지 못하고 그것을 배우는 데 많은 시간을 들이지 않는다는 것이다. 작업을 편안하게 할 수 있어야합니다. 다시 테스트, PL 테스트 등을 할 수있는 경험과 지식을 가진 사람과 협력 할 수있는 방법이 있습니까?


물론 역사적인 가격에 대한 모델 추정치를 그릴 수 있습니다. & # 8211; 그러나, 그것은 충분하지 않습니다. 모델이 실제 거래했을 때 어떻게 수행되었는지 시뮬레이션 할 필요가 있습니다.


백 테스트를 위해 Quantopian을 사용해 보셨습니까? IDE (통합 개발자 환경)는 Python 지식이 필요하지만 매우 쉽습니다.


Ruby (파이썬과 비슷한 프로그래밍 언어)에 백 테스트 환경을 구축했습니다.


어쨌든 모델을 프로그래밍 방식으로 변환하는 데 도움을 드리겠습니다.


인터뷰가 퀀트 (quant)로 유익한 정보입니다. 매개 변수에 Monte Carlo를 사용하는 방법에 대해 자세히 설명해 주시겠습니까? & # 8217; 초기화? 다시 한번 감사드립니다.


나는이 기사에 약간 놀랐다. 왜 당신은 & # 8216; & # 8217;을 소비하는 두들겨 진 확률 적 모델을 벗어나야합니다. 컴퓨터를 이용한 대수학으로 풀지 만 대부분의 매개 변수는 버립니다. 어떻게 최종 제품이 다른 것들과 다른가?


너 나를 오해 하네. & # 8212; 더 명확하지 않은 것에 대한 사과!


내 모델을 지정할 때 시작시 바로 매개 변수를 삭제하려고합니다. 20 개의 장기 변수와 12 일간의 자유도가있는 모델을 가진 퀀트를 보았습니다. 나에게는 모델이 아니며 보편적 인 교합기가 있습니다. 그들은 무엇이든 들어 맞을 수 있습니다. 나는 복잡하지 않은 것에 돈을 걸지 않습니다.


그래서 저는 제 모델을 만들 때 가능한 한 간결하게하려고 노력합니다.


경제적으로 합리적이고 논리적으로 건강하다고 생각되는 모델을 정의한 후에는 내 견고성 검사를 시행해야합니다. 그리고이 단계에서 나는 매개 변수를 버리지 않습니다. 그러나 나는 민감성에주의를 기울인다. 내 수익성이 하나의 특정 가치에 부합하는 특정 매개 변수에 엄청나게 민감하고 사소한 섭동으로 인해 떨어져 나간다면 내 모델이 현명하지 못한 것만으로도 운 좋은 생각 일 것입니다. 그러나 나는이 단계에서 매개 변수를 완전히 제거하는 것이 어리석은 일임을 당신과 동의합니다.


나는 감동했다. 최적의 도박 크기와 같은 돈 관리 규칙에 관해 어떻게 생각하니?


이것은 훌륭한 인터뷰이며, 귀하의 전략 설계에 대한 통찰력을 얻기 위해 시간을 들여 주셔서 감사드립니다. 이것은 매우 시간이 많이 걸리지 만 실제 시스템을 사용하는 실제 예제를 제공 할 수 있습니다 (시스템이 수익성이 있는지 여부에 관계없이). 개념적으로 나는 당신이 말하는 것을 이해하지만 실제 예제를 단계에 적용하는 것이 유익 할 것입니다. 다시 한번 감사드립니다.


나는 기본적인 질문을하고 싶다. 나는 thie 정량 분석 ​​분야에서 시작하고 있습니다. 그러나, 당신은이 분야에서 오랜 시간 동안 꽤 경험있는 것처럼 보입니다. 나는 양적 또는 기술적 전략이 당신에게 일관성을주고 있는지 묻고 싶다. 보고. 당신은 하나의 시스템에 의지하거나 그것을 임의로 변경하고 당신이 기술적 인 분석을 돕기 위해 어떤 근본적인 분석을 사용하는지 여부.


당신은 시장 진화를 계속해야합니다. 단일 시스템이나 전략은 영원히 작동하지 않습니다.


모델을 실시간으로 가져올 때 어떤 추가 검사 및 절차가 사용되는지, 특히 한 번 라이브 모델을 지속적으로 모니터링하고 관리하는 방법에 대해 질문하고 싶습니다. 미리 정의 된 모니터링 규칙 또는 회로 차단기를 설정하여 모델을 자동으로 작동 불능 상태로 만듭니다? 그렇다면 어떻게 구성하고, 어떤 종류의 측정 방법을 사용합니까? 이와 관련하여 합리적 실적이 저조한 기간을 어떻게 식별하고 처리합니까? 이러한 성능 저하는 의심할만한 모델을 만들어 모델이 작동하지 않는 것처럼 보일 수 있습니다.


나는 구식의 & # 8212; 회로 차단기가 실제로 작동한다고 생각하지 않습니다. 또는 프로그램 방식 회로 차단기를 사용하는 포트폴리오는 장기간에 걸쳐 포트폴리오를 underperform합니다. 추론은 회로 차단기가 손실을 너무 자주 감수하면서 좋은 거래에서 빠져 나오게하여 드물게 그 손실이 당신을 큰 문제에서 벗어나지 못하게합니다.


참고 : 여기에서 고전적인 quant arb 포트폴리오에 대해 이야기하고 있습니다. 전자 실행 또는 HFT가 아닙니다. 후자의 경우, 왜 여러개의 failsafe와 회로 차단기가 필요한지 완전히 알 수 있습니다. 그 책들은 당신에게서 정말 빨리 빠져 나올 수 있습니다. 하지만 그건 내 전문 분야가 아니야.


내 지역에서, 나는 깨는 모델에 약간의 패턴을 관찰했다. 우선, 그들은 거의 즉시 날려 버리지 않습니다. 대신, 기회는 사라지고 (모방 자에 의해 차익 거래) 또는 스프레드는 천천히 그리고 눈에 보이지 않는 정도로 공정 가치로부터 더 멀리 멀리 떨어지고 결코 돌아 오지 않는다 (정권 교체).


반대로, 무역이 갈라져서 분기가 가속화되면, 그것은 나에게 더 많은 항복의 냄새를 풍깁니다. 그러한 경우 나는 내 입장을 고수하고 내가 할 수 있다면 정말로 추가하고 싶다.


역설적 인 결론은 모델이 빨리 빠질수록 유효 할 가능성이 높다는 것입니다.


그 논리를 다루기 위해 일관된 회로 차단기를 프로그래밍하는 것은 행운입니다!


이것은 실제로 더 큰 문제의 축소판입니다. 회로 차단기가 실제로 도움이되는 상황은 정의에 대한 선험적 인 시도를 피하기에 충분할 정도로 거의 확실합니다. 매번 당신을 알 수있는 알려지지 않은 미지수입니다.


중요 사항 : 상기 내용은 본인의 직책과 위험 선호도에 따라 결정됩니다. 나는 충분히 수석이고 성공적인 포트폴리오 최대화가 나의 중심 인센티브이다. 내가 어렸을 때, 내 일을 지키면 (경기에 머무르다) 내 중앙 인센티브가 될 것이다. 이 경우 회로 차단기가 치명적인 일자리를 잃지 않기 때문에 도움이됩니다. 반면에 손익은 PL 보고서에 표시되지 않습니다.


& gt; 합리적인 부진 기간을 어떻게 파악하고 처리합니까?


이것은 1 억 달러의 질문입니다! 나는 당신에게 명확하고 명확한 답변을 주었으면합니다. & # 8212; 그것은 나를 도울 것이다. 🙂


의견을 보내 주셔서 감사합니다. 나는 전문적인 퀴 언트가 이런 유형의 질문들과 씨름한다는 사실로부터 약간의 위안을 취한다.


내가 할 수 있다면 또 하나의 질문입니다. & # 8212; 나는 점진적으로 (아직 실제로 테스트 / 시뮬레이션 / 구현되지 않은) 아이디어를 가지고 놀랐다. 관리 / 모니터링 유형. 여기서 당신은 특정 모델 (또는 바스켓 바스켓)에 투입된 자본의 양을 말하며, 전체 모델 성능에 따라 점차적으로 시간이 지남에 따라이를 증가 시키거나 증가 시키도록 조정합니다.


기본적인 생각은 관리 프로세스가 모델을 꺼내지 않을만큼 장기적인 관점을 가질 것이라는 것입니다. (실적이 충분히 큰 표본을보고 있기 때문에) 합리적인 / 예상 된 약세에 대한 시장의 가치를 평가하는 한편, 대표적인 표본 크기에 대해 수익률이 평평하거나 부정적으로 돌아 가면 결국 모델이 중단되는 것을 보장합니다.


물론이 아이디어는 손실에 대한 보장은 아니지만 LTCM 스타일의 폭발을 막는 데 충분할 것으로 기대됩니다.


(덧붙여서 : LTCM의 실수로 인한 실수 중 하나는 모델이 항상 작동한다고 가정하고, 따라서 계획을 세우거나 모니터링 할 레벨이 없으며 알려진 시스템 외부에 시스템을 알려주지 않습니다. / 기대되는 매개 변수는 자본을 보존하기 위해 축소되며, 가능한 한 그 유형의 실수를 배우고 피하고 싶습니다. ")


당신은 정권 교체에 대해 언급했습니다. 그렇다면 모델이 더 이상 작동하지 않는다고 생각하기에 무역이 충분히 손실되었다고 어떻게 결정합니까? & # 8220; Post # 3 : 모니터링 및 유지 관리 & # 8221; 좋을 😀 공유 주셔서 감사합니다!


모든 매우 합리적인 것들. 나는이 논평이 흥미 롭다는 것을 발견했다.


& # 8221; 예를 들어 월별 데이터를 보정하지만 일일 데이터를 테스트합니다. & # 8221;


나는 그것이 당신이 교정이란 무엇을 의미하는지에 달려 있다고 생각합니다. 그러나 이것은 약간 특이한 것으로서 나를 때렸다.


단순하게 만들고 이동 평균 크로스 오버를 사용하여 추세를 포착하려고 시도한다고 가정 해 봅시다. 나는 내가 생각하는 것을 얻을 때까지 매월 데이터로 놀아 난다. 일일 데이터로 이동하려면 * 매개 변수를 곱하면됩니다.


20 일 (이동 평균 길이와 같이)은 한 달에 약 20 영업일이 걸리므로


sqrt (20) [다양한 스케일링 매개 변수는 여기서 다루기에 너무 지루합니다.] 그러나 모델은 여전히 ​​같은 방식으로 행동해야합니다. 예를 들어 매일 매일 이동하면 매출액이 증가하지 않아야합니다.


다른 한편으로는 매개 변수를 동일하게 유지하면 6 개월 트렌드를 선택하는 대신 6 일 영업 동향을 따릅니다. 그러나 대부분의 자산을 따르는 트렌드의 가장 좋은 점은 그보다 약간 느려지는 경향이있어 좋은 것으로 보이지 않을 것입니다. 또한 나의 회전율은 훨씬 더 높을 것이지만, 그런 다음 당신은 그것을 기대합니다. 다른 말로하면 시장 행동의 모든 측면이 '프랙탈'이라고 확신하지 못한다는 것입니다. 그래서 나는 정확히 같은 모델을 다른 시간 척도에 적용 할 수 있습니다.


안녕 Rob. 원래 포스터는 여기에 있습니다. 가장 지각있는 코멘트 주셔서 감사합니다!


시장은 프랙탈인가? 큰 질문과 나는 스코 츠에 대해 토론하는 많은 저녁을 보냈다.


개인적으로 나는 그들이 아닌 것으로 생각한다. 왜냐하면 어떤 외인성 사건은 강제적 인 역할을하기 때문이다. 거래소로부터의 일일 증거금 전화, 헤지 펀드의 월간 MTM, 공개 거래 은행의 분기 재무 제표. 이러한 이벤트는 그 주파수에서 어떤 일이 일어나도록합니다. 따라서 모든 시간 규모가 동일하게 생성되는 것은 아니며 단순히 시계의 속도를 높이거나 낮추는 것은 "중립적 인"방법이 아닙니다.


그래서 저는 실제로 이런 종류의 시간 이동을하는 전략에 대해 매우 조심 스럽습니다.


시간 이동이 효과가있는 장난감 전략은 다음과 같습니다. 같은 "공간"(아마도 겨울과 봄 밀)에 2 개의 선물 스트립을 가져 가라. 1이 역행되고 다른 하나가 contango에있는 경우를 찾습니다. 앞 낮은 구매, 높은 다시 판매, 앞 높은 판매, 낮은 다시 구매. 완전히 단순하고 거의 "바보 같은"전략 이었지만 많은 선물 쌍에 대해서는 잘 작동하는 데 사용되었습니다.


이는 시간 척도를 변경하는 좋은 사례입니다. 이 전략은 결정 변수가 순수 상태이고 경로가 없으므로 매주 또는 매월 또는 분기별로 샘플 / 재조정 여부에 관계없이 작동해야합니다. 우리는 가격 역사를보고 있지 않다. 우리는 시간 구성 요소 (발생하는 채권, 또는 부패한 옵션 또는 드리프트로 무작위로 걷는 옵션)가있는 도구를 보지 않습니다. 따라서 전략이 정말 깨끗하다면 이러한 종류의 견고성 테스트를 없앨 수 있습니다.


(주의 : bid-ask는 여기에 복잡한 요소 중 하나입니다. 선택한 시간 규모가 마찰을 극복하는 가격 조치를 허용 할만큼 충분히 커야합니다. Bid-ask는 모든 곳의 퀀트에 대한 부담입니다.)


그러나 추세에 뒤 따르는 전략을 말하기 위해이 같은 테스트를 결코 적용하지 않을 것입니다. 그것은 모든 종류의 철학적 질문을 제기 할 것입니다. 9 일 또는 200 일 또는 언제라도 "달콤한 자리"를 차지하는 전략은 무엇을 의미합니까? 저 스위트 스팟을 최적화하여 커브 피팅입니까? 아니면 거의 모든 사람들이 9d와 200d를 사용하여 자기 충족 성 예언을하게 되는가? 그런 숫자는 시장에 대해 구조적인 것을 나타냅니다. 저는 설득력있는 주장을 두 방법으로 들었습니다. 간격 X에서 데이터를 샘플링 한 다음 9X 및 200X 이동 평균을 계산하면 어떻게됩니까? 그게 효과가 있니? 재미있는 철학적 질문. 나는 스스로 답을 모르겠다.


다른 메모 : 저는 "교정"이 저 특정한 문장에서 저의 말을별로 선택하지 않았다는 것에 동의합니다. "Ideation"이 더 좋았을 것입니다. 캘리브레이션하는 경우, 이미 타임 시프 팅이 안전하게 처리 할 수있는 것보다 많은 구조를 도입하고 있습니다.


당신은 절대적으로 정확한 re (t)와 sqrt (t)입니다.


의견에 다시 한 번 감사드립니다!


월별 데이터는 보정하지만 일일 데이터는 테스트 해보십시오. & # 8221; 매월 롤링 모델 (예 : 롤링 회귀)을 재조정하지만 일일 데이터를 사용하는 것을 의미합니다. 그 다음 달에 다시 캘리브레이션 된 모델을 테스트하고 매일 데이터를 사용합니다.


테스트의 도보 앞으로 방법처럼?


명확하지 않은 것에 대해 유감스럽게 생각합니다. 내가 의미하는 바는 Rob의 독창적 인 해석에 더 가까웠다. 나는 빈도 X에서 샘플링 된 데이터로 아이디어를 만들고 주파수 Y에서 샘플링 한 데이터로 테스트한다. 앞으로 또는 월간 재 교정은 별도의 연습으로, 모델이 제작 중이고 & # 8221; 몇 시간 동안.


늦은 새는 벌레를 얻습니다 : 지불 데이터 및 회사의 힘.


최근 Huffington Post의 기사에서 Visa의 국제 금융 교육 담당 책임자 인 Nathaniel Sillin은 "집을 관리하는 데 드는 비용과 시간에 청구서를 지불해야하는 중요성을 이해하면 값 비싼 실수를 피할 수 있습니다." 동의하면, Sillin의 샐비어 조언은 생각만큼 보편적이지 않습니다. 적어도 비즈니스 세계에서는 그렇지 않습니다. Bloomberg는 Quandl의 파트너 인 Dun & amp; 브래드 스트리트 (본질적으로 Experian과 비즈니스 세계의 Equifax)는 "대기업을 위해. . . 사물이 다르다. 한 가지는, 그들은.


자동차 산업 데이터의 풍경.


사람이 처음으로 바퀴를 발명 한 이래로 우리가 주변을 돌아 다니는 방식을 최적화 할 필요가 거의 원시적 인 강박 관념이었습니다. 최초의 자동화 된 자동차의 출현에서부터 자체 운전의 자동차에 이르기까지 자동차 산업은 기술의 포용으로 빠르게 진화 해 왔습니다. 우리는 현재 헨리 포드 (Henry Ford)가 움직이는 조립 라인을 설계 한 이래로 자동차 분야에서 가장 발전한 제품을 경험하고 있습니다. 연결된 자동차의 부상입니다. Scotiabank의 BI Intelligence Estimates에 따르면 2020 년까지 출하되는 신차의 75 % 이상이 인터넷에 연결됩니다. Facebook 알림을 읽는 것부터 안전 및 엔진 상태를 측정하는 것까지.


빙산, 카멜레온 및 독사 : 외환 집행에 관한 조사.


외환 시장은 오랫동안 모든 시장에서 가장 분산되고 불투명 해 왔습니다. 결과적으로 외환 거래자는 다른 자산 클래스의 동료와 비교하여 주요한 정보 단점으로 노동합니다. 증권 거래소가 거래 가격과 일일 거래량을보고하도록 증권 거래위원회 (SEC) 규정에서 요구하는 주식 시장과 달리 FX는 그러한 통합 데이터 소스를 자랑하지 않습니다. 중앙 교환소, 구덩이 또는 게시판이 없습니다. 대신 FX 거래는 백만 번 전화, 고객 방문, 거래 및 거래 플랫폼을 통해 이루어집니다. 전체 시장은 처방전없이 살 수 있고, 정당에 파티를 열며, 누구도 다른 사람들이 무엇을하고 있는지 알지 못합니다.


R을 이용한 양적 거래 전략 : 단계별 가이드.


이 글에서는 R을 사용하여 거래 전략을 수립하는 것에 대해 논의 할 것입니다. R을 사용하여 거래 전문 용어에 머무르기 전에 R이 무엇인지 이해하는 데 시간을 할애해야합니다. R은 오픈 소스입니다. 4000 개가 넘는 애드온 패키지가 있으며, 18000 + LinkedIn 그룹의 멤버와 현재 80 개의 R Meetup 그룹이 있습니다. 특히 데이터 분석을위한 통계 분석을위한 완벽한 도구입니다. Comprehensive R Archive Network의 간결한 설정은 CRAN이 필요한 기본 설치와 함께 패키지 목록을 제공함을 알고 있습니다. 분석에 따라 사용할 수있는 패키지가 많이 있습니다. 거래 전략을 구현하기 위해 quantstrat이라는 패키지를 사용합니다.


기본 거래 전략의 4 단계 프로세스.


가설 형성 시험 정제 생산.


우리의 가설은 "시장은 평균 반향이다"라고 공식화되어있다. 평균 회귀 (mean reversion)는 결국 가격이 결국 평균값으로 돌아 간다는 것을 나타내는 이론입니다. 두 번째 단계는 우리 가설에 대한 전략을 공식화하고 지표, 신호 및 성과 지표를 계산하는 가설을 검증하는 것입니다. 테스트 단계는 세 가지 단계, 데이터 가져 오기, 전략 작성 및 출력 분석으로 나눌 수 있습니다. 이 예에서는 NIFTY-Bees를 고려합니다. Goldman Sachs가 관리하는 Exchange 거래 펀드입니다. NSE는 장비에 대한 막대한 양을 가지고 있으므로이를 고려합니다. 아래 이미지는 동일 가격의 Open-High-Low-Close 가격을 보여줍니다.


우리는 가격의 변동을 비교하기위한 기준점을 설정합니다. 가격이 증가하거나 감소하면 임계 값 열을 업데이트합니다. 종가는 상위 밴드와 하위 밴드와 비교됩니다. 상부 밴드가 넘어지면, 그것은 판매를위한 신호입니다. 마찬가지로 낮은 밴드가 넘어지면 팔리는 신호입니다.


코딩 섹션은 다음과 같이 요약 될 수 있습니다.


전략 결과물에 대한 헬리콥터보기가 아래 다이어그램에 나와 있습니다.


따라서 시장이 평균 반전이라는 가설이 뒷받침된다. 이것은 역기능 테스트이기 때문에 평균 수익률과 실현 된 이익을 개선 할 수있는 거래 매개 변수를 조정할 여지가 있습니다. 다른 임계 값 레벨, 보다 엄격한 입력 규칙, 정지 손실 등을 설정하여 수행 할 수 있습니다. 백 테스트를 위해 더 많은 데이터를 선택하고, 임계 값 설정을 위해 Bayseian 접근법을 사용하고, 변동성을 고려합니다.


일단 백 - 테스트 결과에 의해 뒷받침되는 거래 전략에 대해 확신하고 나면 라이브 거래를 시작할 수 있습니다. 프로덕션 환경은 그 자체로 큰 주제이며 기사의 맥락에서 벗어납니다. 간단히 설명하면 거래 플랫폼에 전략을 쓰는 것입니다.


앞서 언급했듯이, 우리는 quantstrat 패키지를 사용하여 모델을 구축 할 것입니다. Quantstrat는 신호 기반 정량 전략을 모델링하고 백 테스트하는 일반 인프라를 제공합니다. 매우 적은 코드 행에서 전략을 빌드하고 테스트 할 수있게 해주는 고급 추상화 계층 (xts, FinancialInstrument, blotter 등을 기반으로 함)입니다.


퀀트 스트릿의 주요 특징은 다음과 같다.


지표, 신호 및 규칙을 포함하는 전략 지원 다중 자산 포트폴리오에 전략 적용 가능 시장, 제한, 중지 및 중지 위반 유형 지원 주문 규모 및 매개 변수 최적화를 지원합니다.


이 게시물에서 우리는 지표, 신호 및 규칙을 포함하는 전략을 수립합니다.


일반적인 신호 기반 모델의 경우 다음 사항을 고려해야합니다.


계측기 - 시장 데이터 포함 지표 - 시장 데이터로부터 도출 된 정량적 가치 신호 - 시장 데이터와 지표 간의 상호 작용 결과 규칙 - 시장 데이터, 지표 및 신호를 사용하여 주문을 생성합니다.


별로 신경 쓰지 않고 코딩 부분을 논의 해 봅시다. 우리는 코딩을 위해 R studio를 선호하며 같은 것을 사용하라고 주장합니다. 전략을 프로그래밍하기 전에 특정 패키지가 설치되어 있어야합니다.


다음 명령 세트는 필요한 패키지를 설치합니다.


패키지를 설치하면 추가 사용을 위해 패키지를 가져옵니다.


csv 파일에서 데이터를 읽고 xts 객체로 변환합니다.


우리는 주식, 통화, 초기 자본 및 전략 유형으로 포트폴리오를 초기화합니다.


동일한면에서 두 번 이상 교역하려면 위치 제한을 추가하십시오.


전략 개체를 만듭니다.


우리는 거래하고자하는 임계 값을 계산하는 함수를 만듭니다. If price moves by thresh1 we update threshold to new price. New bands for trading are Threshold+/-Thresh2. Output is an xts object though we use reclass function to ensure.


Add the indicator, signal and the trading rule.


Run the strategy and have a look at the order book.


Update the portfolio and view the trade statistics.


Here is the complete code.


Once you are familiar with these basics you could take a look at how to start using quantimod package in R. Or in case you’re good at C++, take a look at an example strategy coded in C++.


If you’re a retail trader or a tech professional looking to start your own automated trading desk, start learning algo trading today! Begin with basic concepts like automated trading architecture, market microstructure, strategy backtesting system and order management system.


코멘트는 닫힙니다.


최근 인기있는 글.


가장 많이 방문한 기사.


R 사용자를위한 작업.


bavotasan 디자인을 사용하여 WordPress에 의해 구동됩니다.


저작권 및 사본; 2017 R-bloggers. 판권 소유. 이 웹 사이트의 이용 약관.


LearnDataSci.


Home » Python for Finance, Part 2: Intro to Quantitative Trading Strategies.


Python for Finance, Part 2: Intro to Quantitative Trading Strategies.


Python for Finance, Part 2: Intro to Quantitative Trading Strategies.


Language: Python 3.5 Libraries: pandas, numpy, and matplotlib iPython notebook: available on GitHub.


In Python for Finance, Part I, we focused on using Python and Pandas to.


retrieve financial time-series from free online sources (Yahoo), format the data by filling missing observations and aligning them, calculate some simple indicators such as rolling moving averages and visualise the final time-series.


As a reminder, the dataframe containing the three “cleaned” price timeseries has the following format:


We have also calculated the rolling moving averages of these three timeseries as follows. Note that when calculating the $M$ days moving average, the first $M-1$ are not valid, as $M$ prices are required for the first moving average data point.


Building on these results, our ultimate goal will be to design a simple yet realistic trading strategy. However, first we need to go through some of the basic concepts related to quantitative trading strategies, as well as the tools and techniques in the process.


General considerations about trading strategies.


There are several ways one can go about when a trading strategy is to be developed. One approach would be to use the price time-series directly and work with numbers that correspond to some monetary value. For example, a researcher could be working with time-series expressing the price of a given stock, like the time-series we used in the previous article. Similarly, if working with fixed income instruments, e. g. bonds, one could be using a time-series expressing the price of the bond as a percentage of a given reference value, in this case the par value of the bond. Working with this type of time-series can be more intuitive as people are used to thinking in terms of prices. However, price time-series have some drawbacks. Prices are usually only positive, which makes it harder to use models and approaches which require or produce negative numbers. In addition, price time-series are usually non-stationary, that is their statistical properties are less stable over time.


An alternative approach is to use time-series which correspond not to actual values but changes in the monetary value of the asset. These time-series can and do assume negative values and also, their statistical properties are usually more stable than the ones of price time-series. The most frequently used forms used are relative returns defined as.


and log-returns defined as.


where $p\left(t\right)$ is the price of the asset at time $t$. For example, if $p\left(t\right) = 101$ and $p\left(t-1\right) = 100$ then $r_ >\left(t\right) = \frac = 1\%$.


There are several reasons why log-returns are being used in the industry and some of them are related to long-standing assumptions about the behaviour of asset returns and are out of our scope. However, what we need to point out are two quite interesting properties. Log-returns are additive and this facilitates treatment of our time-series, relative returns are not. We can see the additivity of log-returns in the following equation.


which is simply the log-return from $t_0$ to $t_2$. Secondly, log-returns are approximately equal to the relative returns for values of $\frac $ sufficiently close to $1$. By taking the 1st order Taylor expansion of $\log\left( \frac \right)$ around $1$, we get.


Both of these are trivially calculated using Pandas as:


Since log-returns are additive, we can create the time-series of cumulative log-returns defined as.


c\left(t\right) = \sum_ ^t r\left(t\right)


The cumulative log-returns and the total relative returns from 2000/01/01 for the three time-series can be seen below. Note that although log-returns are easy to manipulate, investors are accustomed to using relative returns. For example, a log-return of $1$ does not mean an investor has doubled the value of his portfolio. A relative return of $1 = 100\%$ does! Converting between the cumulative log-return $c\left(t\right)$ and the total relative return $c_ >\left(t\right) = \frac $ is simple.


For those who are wondering if this is correct, yes it is. If someone had bought $\$1000$ worth of AAPL shares in January 2000, her/his portfolio would now be worth over $\$30,000$. If only we had a time machine…


What is a quantitative trading strategy?


Our goal is to develop a toy trading strategy, but what does the term “quantitative trading strategy” actually mean? In this section we will give a definition that will guide us in our long-term goal.


Assume we have at our disposal a certain amount of dollars, $N$, which we are interested to invest. We have at our disposal a set of $K$ assets from which we can buy and sell freely any arbitrary amount. Our goal is to derive weights $w_i\left(t\right), i = 1, \ldots, K$ such that.


$$w_i\left(t\right) \in \mathbb \ \text \ \sum_ ^K w_i\left(t\right) \leq 1$$


so that an amount of dollars equal to $w_i\left(t\right) N$ is invested at time $t$ on asset $i$.


The inequality condition signifies $\sum_ ^K w_i\left(t\right) \leq 1$ that the maximum amount we can invest is equal to amount of dollars we have, that is $N$.


For example, assume we can invest in $2$ instruments only and that $N=\$1000$. The goal is to derive two weights $w_1\left(t\right)$ and $w_2\left(t\right)$.


If at some point $w_1\left(t\right) = 0.4$ and $w_2\left(t\right) = 0.6$, this means that we have invested $w_1\left(t\right)N = \$400$ in asset $1$ and $w_2\left(t\right)N = \$600$ in asset $2$. Since we only have $\$1000$, we can only invest up to that much which means that.


$$w_1\left(t\right)N + w_2\left(t\right)N \leq N \Rightarrow w_1\left(t\right) + w_2\left(t\right)


Georgios Efstathopoulos.


Georgios has 7+ years of experience as a quantitative analyst in the financial sector, and has worked extensively on statistical and machine learning models for quantitative trading, market and credit risk management and behavioural modelling. Georgios has PhD in Applied Mathematics and Statistics at Imperial College London, and is the founder and CEO of QuAnalytics Limited, a consultancy focusing on quantitative and data analytics solutions for individuals and organisation who wish to harvest the potential of their own data to grow their business.


권장 사항.


Python for Finance, Part I: Yahoo Finance API, pandas, and matplotlib.


In detail, in the first of our tutorials, we are going to show how one can easily use Python to download financial data from free online databases, manipulate the downloaded data and then create some basic technical indicators which will then be used as the basis of our quantitative strategy.


Python for Finance, Part 3: A Moving Average Trading Strategy.


In this article, we will start designing a more complex trading strategy, which will have non-constant weights wi(t)wi(t), and thus adapt in some way to the recent behaviour of the price of our assets.


Top Data Science Online Courses in 2017.


The following is an extensive list of Data Science courses and resources, from platforms like Coursera, edX, and Udacity, that give you the skills needed to become a data scientist.


100+ Free Data Science Books for 2017.


Pulled from the web, here is a our collection of the best, free books on Data Science, Big Data, Data Mining, Machine Learning, Python, R, SQL, NoSQL and more.


Thanks for sharing Georgios. Would utilizing a Monte Carlo simulation to derive the optimal weights split in order to maximize the return be an improvement to this strategy instead of evenly splitting 1/3 each ? : weights_vector = pd. DataFrame(1 / 3, index=r_t. index, columns=r_t. columns)


You are correct, MC would be one of the possible ways to optimise the weights for this strategy. Note, however, that there are several open questions regarding this optimisation. First of all, what are we optimising for? Total return, portfolio volatility, draw-downs? Secondly, optimisation runs the risk of over-fitting the weights to the historical interval we are using for the optimisation. These and other issues will be addressed in the following articles in this series.


When can we expect the next post?


기사 주셔서 감사합니다. There are several instances above where you divide 1/3 and 1/7. Python assumes the result to be an integer so the answer is 0 in both cases. You should use 1.0/3 and 1.0/7 to avoid this issue.


Thanks for the notice. This series of articles assumes that Python 3 is used. In Python 3, 1 / 3 will produce 1.3333, instead of the integer division which was the case in Python 2.


However, to make this compatible with Python 2 users, in what follows I will make sure that in such cases extra care is taken to ensure that divisions are handled appropriately.


Copyright © 2017 LearnDataSci. 판권 소유.

No comments:

Post a Comment