Monday 19 March 2018

거래 알고리즘 옵션


알고리즘 트레이딩의 기초 : 개념과 예제.


알고리즘은 작업 또는 프로세스를 수행하기 위해 명확하게 정의 된 지침 집합입니다.


알고리즘 트레이딩 (자동 트레이딩, 블랙 박스 트레이딩, 또는 단순한 알 고 트레이딩)은 a 컴퓨터가 불가능한 속도와 빈도로 이익을 창출하기 위해 거래를하기 위해 정의 된 명령어 세트를 따르도록 프로그래밍 된 컴퓨터를 사용하는 프로세스입니다. 인간 상인. 정의 된 규칙 집합은 타이밍, 가격, 수량 또는 모든 수학적 모델을 기반으로합니다. 상인에 대한 이익 기회와는 별도로, 알 고향 거래는 시장을보다 유동적으로 만들고 무역 활동에 대한 정서적 인적 영향을 배제함으로써보다 체계적인 거래를 만듭니다. (자세한 내용은 올바른 알고리즘 트레이딩 소프트웨어 선택을 확인하십시오.)


거래자가 다음과 같은 간단한 거래 기준을 따랐다 고 가정 해보십시오.


50 일 이동 평균이 200 일 이동 평균보다 커지면 50주의 주식을 매수하십시오. 50 일 이동 평균이 200 일 이동 평균보다 낮아지면 주가는 주식의 주식을 매도합니다.


이 두 가지 간단한 지침 세트를 사용하면 정의 된 조건이 충족 될 때 주가 및 이동 평균 지표를 자동으로 모니터링하고 구매 및 판매 주문을하는 컴퓨터 프로그램을 작성하기 쉽습니다. 상인은 더 이상 실시간 가격 및 그래프를 감시하거나 수동으로 주문할 필요가 없습니다. 알고리즘 거래 시스템은 거래 기회를 정확하게 식별함으로써 자동으로 거래를 수행합니다. 이동 평균에 대한 자세한 내용은 단순 이동 평균을 참조하십시오.


[입증 된 전략과 궁극적으로 알 고리즘 트레이딩 시스템으로 작업 할 수있는 포인트 전략에 대해 자세히 알아 보려면 Investopedia Academy의 Become a Day Trader 코스를 확인하십시오. ]


알고리즘 트레이딩의 이점.


Algo-trading은 다음과 같은 이점을 제공합니다.


가능한 최상의 가격으로 실행되는 거래 신속하고 정확한 거래 주문 배치 (따라서 원하는 수준의 실행 가능성 높음) 중요한 가격 변동을 피하기 위해 정확하고 신속한 거래 시간 단축 거래 비용 절감 (아래의 구현 부족 예 참조) 여러 항목에 대한 동시 자동 점검 시장 조건 거래 배치시 수동 오류 위험 감소 사용 가능한 과거 및 실시간 데이터를 기반으로 알고리즘 백 테 스트 정서적 및 심리적 요인에 기반한 인적 자원 거래자의 실수 가능성 감소.


현재의 고액 거래의 가장 큰 부분은 고주파 거래 (high frequency trading, HFT)입니다. 이 프로그램은 사전 프로그래밍 된 지침에 따라 여러 시장 및 여러 결정 매개 변수에 걸쳐 매우 빠른 속도로 많은 수주를 배치하려고합니다. (고주파 거래에 대한 자세한 내용은 고주파 거래 (HFT) 회사의 전략과 비밀을 참조하십시오.)


Algo-trading은 다음과 같은 다양한 거래 및 투자 활동에 사용됩니다.


주식을 대량 구매하지만 불특정 다수의 투자로 주식 가격에 영향을 미치고 싶지 않은 중장기 투자자 또는 매수 측 회사 (연기금, 뮤추얼 펀드, 보험 회사). 단기 거래자 및 매도자 측 참가자 (시장 형성 자, 투기자 및 중개인)는 자동 거래 실행의 혜택을받습니다. 또한, algo-trading은 시장에있는 판매자에게 충분한 유동성을 창출하는 데 도움을줍니다. 체계적인 거래자 (추종자, 쌍 거래자, 헤지 펀드 등)는 거래 규칙을 프로그래밍하고 프로그램이 자동으로 거래되도록하는 것이 훨씬 더 효율적이라는 것을 알 수 있습니다.


알고리즘 거래는 인간 상인의 직감이나 본능에 기반한 방법보다 적극적인 거래에 대한 체계적인 접근 방식을 제공합니다.


알고리즘 트레이딩 전략.


알고리즘 거래를위한 모든 전략에는 향상된 수익 또는 비용 절감 측면에서 수익성이 확인 된 기회가 필요합니다. 다음은 algo-trading에서 사용되는 일반적인 거래 전략입니다.


가장 일반적인 알고리즘 트레이딩 전략은 이동 평균, 채널 이탈, 가격 수준 이동 및 관련 기술 지표의 추세를 따릅니다. 이러한 전략은 예측이나 가격 예측을하지 않기 때문에 알고리즘 거래를 통해 구현하는 가장 쉽고 간단한 전략입니다. 거래는 바람직한 추세의 발생을 기반으로 시작되며, 이는 예측 분석의 복잡성에 빠지지 않고 알고리즘을 통해 구현하기 쉽고 직관적입니다. 위에서 언급 한 50 일과 200 일 이동 평균의 예는 인기있는 추세 전략입니다. (추세 거래 전략에 대한 자세한 내용은 추세를 활용하는 간단한 전략을 참조하십시오.)


한 시장에서 더 낮은 가격에 이중 상장 주식을 매수하고 다른 시장에서 높은 가격으로 동시에 매각하는 것은 가격 차이를 무위험 수익 또는 차익 거래로 제공합니다. 가격 차이가 수시로 존재하기 때문에 동일한 작업이 주식 대 선물 상품에 대해 복제 될 수 있습니다. 이러한 가격 차이를 식별하고 주문을하는 알고리즘을 구현하면 효율적인 방식으로 수익성있는 기회를 얻을 수 있습니다.


인덱스 펀드는 보유 자산을 각각의 벤치 마크 지수와 동등하게 유지하기 위해 재조정 기간을 정했습니다. 이는 인덱스 펀드 재조정 직전에 인덱스 펀드의 주식 수에 따라 20-80의 베이시스 포인트 이익을 제공하는 예상 거래를 활용하는 알고리즘 트레이더에게 수익성있는 기회를 창출합니다. 이러한 거래는 적시 실행 및 최적의 가격을 위해 알고리즘 거래 시스템을 통해 시작됩니다.


델타 중립적 인 거래 전략과 같이 입증 된 많은 수학 모델은 포트폴리오 델타가 0으로 유지되도록 양수 및 음수 델타를 상쇄하기 위해 거래가 이루어지는 옵션과 기본 보안의 조합에 대한 거래를 허용합니다.


평균 회귀 전략은 자산의 고가와 저가가 주기적으로 평균값으로 되돌아가는 일시적인 현상이라는 생각에 기반합니다. 가격 범위를 식별하고 정의하고이를 기반으로 알고리즘을 구현하면 자산 가격이 정의 된 범위를 벗어날 때 거래가 자동으로 배치됩니다.


볼륨 가중 평균 가격 전략은 대량의 주문을 분해하고 주식 관련 과거 볼륨 프로파일을 사용하여 동적으로 결정된 작은 주문 청량을 출시합니다. 목표는 VWAP (Volume Weighted Average Price)에 가까운 주문을 실행하여 평균 가격으로 이익을 얻는 것입니다.


시간 가중 평균 가격 전략은 대량의 주문을 분해하고 시작 및 종료 시간 사이의 균등하게 나뉘어 진 시간대를 사용하여 동적으로 결정된 작은 주문 청량을 시장에 출시합니다. 목표는 시작 및 종료 시간 사이의 평균 가격에 가까운 주문을 실행하여 시장 영향을 최소화하는 것입니다.


거래 주문이 완전히 채워질 때까지이 알고리즘은 정의 된 참여율과 시장에서 거래되는 거래량에 따라 부분 주문을 계속 전송합니다. 관련 "단계 전략"은 사용자 정의 시장 볼륨 비율로 주문을 보내고 주가가 사용자 정의 수준에 도달하면이 참여율을 높이거나 낮 춥니 다.


구현 부족 전략은 실시간 시장을 거래함으로써 주문의 실행 비용을 최소화함으로써 주문 비용을 절감하고 지연된 실행의 기회 비용으로부터 이익을 얻는 것을 목표로합니다. 이 전략은 주식 가격이 호의적으로 움직일 때 목표로하는 참여율을 높이고, 주가가 반대로 움직일 때 그것을 낮출 것이다.


다른 측면에서 "사건"을 식별하려고 시도하는 몇 가지 특별한 클래스의 알고리즘이 있습니다. 예를 들어 판매 측 시장에서 사용되는 이러한 "스니핑 알고리즘"은 대규모 주문의 구매 측면에서 알고리즘의 존재를 식별 할 수있는 내장 된 인텔리전스를 갖추고 있습니다. 이러한 알고리즘을 통한 탐지는 시장에서 대량 주문 기회를 파악하고 더 높은 가격으로 주문을 작성함으로써 이익을 얻을 수 있도록 도와줍니다. 이것은 때로는 하이테크 전방 주행으로 확인됩니다. (고주파 거래 및 사기 행위에 대한 자세한 내용은 다음을 참조하십시오 : 주식을 온라인으로 구입할 경우 HFT에 관여 함)


알고리즘 거래에 대한 기술적 요구 사항.


컴퓨터 프로그램을 사용하여 알고리즘을 구현하는 것이 마지막 부분으로, 백 테스트가 있습니다. 문제는 식별 된 전략을 주문 거래 계정에 액세스 할 수있는 통합 된 전산 프로세스로 변환하는 것입니다. 다음이 필요합니다.


필요한 거래 전략, 고용 된 프로그래머 또는 미리 만들어진 거래 소프트웨어를 프로그래밍하기위한 컴퓨터 프로그래밍 지식 주문을하기위한 네트워크 연결 및 거래 플랫폼에 대한 액세스 주문을 할 수있는 기회를 알고리즘이 모니터 할 시장 데이터 피드에 액세스 능력 및 인프라 실제 시장에 출시되기 전에 빌드 된 시스템을 백 테스팅하기 알고리즘에서 구현 된 규칙의 복잡성에 따라 백 테스트를위한 사용 가능한 과거 데이터.


다음은 포괄적 인 예입니다 : Royal Dutch Shell (RDS)은 암스테르담 증권 거래소 (AEX)와 런던 증권 거래소 (LSE)에 상장되어 있습니다. 차익 거래 기회를 식별하는 알고리즘을 구축해 보겠습니다. 흥미로운 관찰은 거의 없습니다.


AEX는 유로화로 거래되며, LSE는 스털링 파운드로 거래됩니다. AEX는 1 시간의 시간차로 인해 LSE보다 한 시간 앞당겨 거래가 이루어지며, 다음 두 시간 동안 동시에 거래가 이루어지고, AEX가 마감됨에 따라 지난 한 시간 동안 LSE에서만 거래가 이루어집니다. .


이 두 시장에 상장 된 Royal Dutch Shell 주식에 대해 서로 다른 통화로 차익 거래를 할 수 있는지 알아볼 수 있습니까?


현재 시장 가격을 읽을 수있는 컴퓨터 프로그램 LSE 및 AEX의 가격 피드 GBP-EUR 환율에 대한 외환 환율 피드 주문을 올바른 교환으로 전달할 수있는 주문 배치 기능 과거 가격 피드에 대한 백 테스트 기능.


컴퓨터 프로그램은 다음을 수행해야합니다.


두 거래소의 RDS 주식의 수신 가격 피드를 읽으십시오. 사용 가능한 환율을 사용하여 한 통화의 가격을 다른 통화로 변환하십시오. 유익한 기회로 이어지는 충분히 큰 가격 불일치 (중개 비용을 할인)가 존재한다면, 낮은 가격의 거래소에서 주문하고 높은 가격의 거래소에서 주문을 판매합니다. 원하는대로 주문을 실행하면 차익 거래 이익이 발생합니다.


간단하고 쉬운! 그러나 알고리즘 트레이딩의 실행은 유지 관리 및 실행이 간단하지 않습니다. 알 고가 생성 한 거래를 배치 할 수 있다면 다른 마켓 참여자도 마찬가지입니다. 따라서 가격은 밀리 초 및 심지어 마이크로 초 단위로 변동합니다. 위의 예에서 구매 주문 거래가 실행되면 어떻게되지만 주문이 시장에 출시 될 때까지 판매 가격이 변경되지 않습니다. 당신은 개방적인 자세로 앉아 결국 귀하의 차용액 전략을 쓸모 없게 만들 것입니다.


예를 들어 시스템 장애 위험, 네트워크 연결 오류, 거래 주문과 실행 간의 시간 지연, 그리고 무엇보다 불완전한 알고리즘과 같은 추가적인 위험과 과제가 있습니다. 알고리즘이 복잡할수록 더 엄격한 백 테스팅이 필요합니다.


결론.


알고리즘의 성능을 정량적으로 분석하는 것은 중요한 역할을하므로 비판적으로 검사해야합니다. 돈을 쉽게 벌기위한 개념을 가진 컴퓨터의 도움을 받아 자동화하는 것은 흥미로운 일입니다. 그러나 시스템을 철저히 테스트하고 필요한 한계를 설정해야합니다. 분석적 거래자는 올바른 전략을 확실하게 구현하는 데 자신감을 갖기 위해 스스로 프로그래밍 및 시스템을 학습하는 것을 고려해야합니다. 신중한 사용과 철저한 거래로 수익성 높은 기회를 창출 할 수 있습니다. (자세한 내용은 자신의 Algo 거래 로봇을 코딩하는 방법을 참조하십시오.)


AlgoTrader 알고리즘 트레이딩 소프트웨어.


AlgoTrader는 양적 헤지 펀드를위한 최초의 완전 통합 알고리즘 트레이딩 소프트웨어 솔루션입니다. 주식, 외환 및 파생 상품 시장에서 복잡한 양적 거래 전략을 자동화 할 수 있습니다. AlgoTrader는 일상적인 양적 헤지 펀드가 일상적인 업무 수행에 필요한 모든 것을 제공하며, Bitcoin 및 기타 Cryptocurrencies의 자동 거래를 허용하는 최초의 유일한 알고리즘 거래 소프트웨어 제품입니다.


AlgoTrader의 이점.


자동화 - 모든 양적 거래 전략을 완전히 자동화 할 수 있습니다.


고속 - 대량의 시장 데이터가 초고속으로 자동 처리, 분석 및 처리됩니다.


사용자 정의 가능 - 사용자 별 요구 사항에 맞게 오픈 소스 아키텍처를 사용자 정의 할 수 있습니다.


비용 효과 - 완전 자동화 된 거래 및 내장 기능은 비용을 절감합니다.


신뢰성 - 가장 견고한 아키텍처와 최첨단 기술을 토대로 제작되었습니다.


완전 지원 - 설치 및 사용자 정의를위한 포괄적 인 지침을 제공합니다. 현장 및 원격 교육 및 컨설팅이 가능합니다.


AlgoTrader 기능.


AlgoTrader 작동 원리.


규칙 기반 거래 전략은 완전히 자동화 될 수 있습니다.


전자 시장 데이터가 도착합니다. 데이터는 AlgoTrader 내부에서 실행되는 거래 전략으로 전달됩니다. 거래 전략은 시장 데이터를 분석, 필터링 및 처리하고 거래 신호를 생성합니다. 거래 신호에 따라 액션이 실행됩니다 (예 : 주문 또는 위치 마감). 주문은 해당 시장에 전달됩니다.


AlgoTrader 서비스 & # 038; 훈련.


온 사이트 및 원격 상담 및 교육 : 기존 전략 자동화 및 마이그레이션 기존 전략 개선 및 최적화 새로운 전략 프로토 타이핑 및 백 테스팅 맞춤형 기능 개발 포괄적 인 설명서 및 사용자 가이드.


최근 뉴스.


Swisscom Startup Challenge 8 월 17-2017 수상자 중 AlgoTrader.


강력한 기능을 갖춘 AlgoTrader 4.0 소개.


AlgoTrader는 스위스 국립 Fintech 팀 2017 년 6 월 12-2017 일의 일부입니다.


증언.


Vontobel은 AlperTrader의 개방적이고 확장 가능한 아키텍처는 물론 Esper 및 Spring과 같이 일반적으로 사용되는 표준 오픈 소스 구성 요소의 사용을 높이 평가합니다.


Benjamin Huber, Algo Trading & Head 책임자 Smart Order Routing, 은행 Vontobel AG, 취리히.


우리는 AlgoTrader의 전략 개발 및 기술적 유연성 측면에서 매우 인상적입니다. AlgoTrader는 여러 VIX Future 및 Option 기반 전략을 동시에 거래 할 수있게 해주는 핵심 기술입니다.


Raimond Schuster, 취리히 ISP Securities AG 집행위원회 위원.


판권 소유.


소셜 링크.


하단 주소.


스위스 전화 : +41 44 291 14 85 :


1. aws. amazon로 이동하여 & # 8220; 콘솔에 로그인 & # 8221;을 클릭하십시오. (아래 스크린 샷 참조)


2. 아직 Amazon AWS 계정이없는 경우 "Create AWS Account"를 클릭하여 등록 절차를 수행하십시오.


3. Amazon AWS Console에 로그인하면 사용자 이름 아래의 화면 오른쪽 상단에있는 메뉴에서 "내 계정"을 선택하십시오.


4. 다음 화면에서 "계정 설정"아래에 12 자리 Amazon ID가 표시됩니다.


귀하와 귀하가 소프트웨어 사용에 대한 별도의 서면 라이센스 계약을 체결하지 않은 한, 최종 사용자 사용권 계약 (& # 8220; 계약서 # 8221;)은 귀하가 소프트웨어를 사용하는 것을 관할합니다.


라이센서는 귀하가 본 계약서에 포함 된 모든 조건을 수락한다는 조건하에 만 소프트웨어의 사용을 기꺼이 허가합니다. 본 계약에 서명하거나 소프트웨어를 다운로드, 설치 또는 사용함으로써 귀하는 본 계약을 이해하고 해당 조항을 모두 수락 함을 나타냅니다. 귀하가 본 계약서의 모든 조건을 수락하지 않으면, 라이센서는 귀하에게 소프트웨어의 사용권을 허여하지 않으며 소프트웨어를 다운로드, 설치 또는 사용할 수 없습니다.


1. 라이센스 부여.


에이. 평가 사용 및 개발 사용 라이센스. 라이센스 계약자는 본 계약의 조건을 준수 함을 조건으로, 본 계약 기간 동안 소프트웨어를 내부적으로 사용하기 위해 재 라이센스 할 권리가없는 비 독점적이고 양도 불가능한 개인 라이센스를 귀하에게 부여합니다 평가 사용 및 개발 사용. 라이센서가 제공 한 제 3 자 소프트웨어 제품 또는 모듈 (있는 경우)은 소프트웨어와 함께 사용할 수 있으며 제 3 자에 의해 제공된 이용 약관을 수락 할 수 있습니다. 라이센스가 종료되면 소프트웨어 사용을 중지하고 모든 인스턴스를 제거해야합니다. 여기에 명시 적으로 부여되지 않은 모든 권리는 사용 허가자가 보유합니다. 개발자는 소프트웨어 또는 그 파생물 (개발자의 내부 사업 목적 포함)의 상업적 사용을해서는 안됩니다. 직접 또는 간접 고객에게 소프트웨어 또는 개발자 응용 프로그램을 복사 및 재배포하는 행위는 금지됩니다.


비. 생산 사용 라이센스. 해당 라이센스 요금 지불을 포함하여 본 계약의 조건을 준수하는 것을 조건으로, 라이센스 부여자는 본 계약 기간 동안 라이센스를 재 라이센스 할 수있는 비 독점적이고 양도가 불가능한 라이센스를 귀하에게 부여합니다. : (a) 귀하의 내부 사업 목적으로 만 소프트웨어를 사용하고 복제하십시오 (& # 8220; 제작 사용); (b) 백업용으로 만 소프트웨어의 합리적인 사본을 만들 수 있습니다. 이러한 라이센스는 라이센스 비용을 지불 한 특정 수의 CPU (CPU에 의해 라이센스가 부여 된 경우) 또는 Java Virtual Machine 인스턴스 (가상 시스템 별 라이센스 인 경우)로 제한됩니다. 더 많은 수의 CPU 또는 Java 가상 머신 인스턴스에서 소프트웨어를 사용하려면 추가 라이센스 비용을 지불해야합니다. 라이센서가 제공 한 제 3 자 소프트웨어 제품 또는 모듈 (있는 경우)은 본 소프트웨어와 함께 사용할 수 있습니다.


기음. 기타 권리 없음. 소프트웨어에 대한 귀하의 권리와 사용은 본 제 1 항에서 명시 적으로 부여 된 권리로 제한됩니다. 귀하는 소프트웨어를 다른 용도로 사용하지 않습니다. 본 절에서 명시 적으로 라이센스가 부여 된 경우를 제외하고, 라이센스 부여자는 암시 적, 금반언 적 또는 다른 방법으로 귀하에게 다른 권리 또는 라이센스를 부여하지 않습니다. 여기에 명시 적으로 부여되지 않은 모든 권리는 라이센스 제공자 또는 공급 업체가 보유합니다.


2. 제한.


제 1 항에서 명시 적으로 제공된 경우를 제외하고, 귀하는 다음을 수행하지 않습니다. (a) 소프트웨어의 수정, 번역, 분해, 파생물 작성 또는 소프트웨어 복사. (b) 어떤 형태로든 소프트웨어에 대한 권리를 다른 사람에게 임대, 대여, 양도, 배포 또는 부여하는 행위. (c) 제 3 자에 의한 소프트웨어의 제공, 공개, 공개 또는 사용을 허용하거나 사용을 허가하는 행위 (d) 소프트웨어 또는 그 일부에서 실행되는 벤치 마크 또는 성능 테스트 게시 또는 (e) 소프트웨어의 소유권 표시, 레이블 또는 표시를 제거하는 행위. 귀하는 독립 실행 형 또는 OEM (Original Equipment Manufacturer)을 기준으로 소프트웨어를 배포 할 수 없습니다.


3. 소유권.


양 당사자간에, 본 소프트웨어는 그 안에있는 모든 지적 재산권을 포함하여 라이센서의 독점적 인 자산으로 남을 것이다.


에이. 귀하가 섹션 1 (a)에 명시된 라이센스하에 소프트웨어를 사용하는 경우 본 계약은 평가 또는 개발 기간 동안 유효합니다.


비. 귀하가 제 1 조 (b) 항에 명시된 라이센스에 따라 소프트웨어를 사용하는 경우, 본 계약은 (a) 연간 가입 라이센스로 구입 한 경우 1 년 동안 또는 (b) 영구적으로 영구 라이선스. 연간 구독 라이센스는 한 달 전에 사전 통지없이 해지되지 않는 한 1 년까지 자동으로 갱신됩니다. 본 계약은 귀하가 본 계약 기간을 위반할 경우 통지없이 자동 종료됩니다. 계약이 해지되면 즉시 소프트웨어 사용을 중지하고 소유하거나 통제하는 소프트웨어의 모든 복사본을 폐기해야합니다.


5. 지원 서비스.


지원 서비스를 포함하여이 라이센스를 구입 한 경우 유지 보수 릴리스 (업데이트 및 업그레이드), 전화 지원 및 웹 기반 지원이 포함됩니다.


에이. 인가 권자는보고 된 오류를 해결하거나 우회하기 위해 고안된 업데이트를 제공하기 위해 상업적으로 합당한 노력을 기울일 것입니다. 이러한 오류가 유지 보수 릴리스에서 수정 된 경우, 라이센스 사용자는 해당 유지 보수 릴리스를 설치하고 구현해야합니다. 그렇지 않은 경우 업데이트는 영구적 인 업데이트가 포함 된 유지 보수 릴리스가 제공 될 때까지 사용되는 임시 수정, 절차 또는 루틴의 형태로 제공 될 수 있습니다.


비. 라이센스 계약 기간 동안 라이센스 제공자는 라이센스 제공자가 그러한 유지 보수 릴리스를 일반적으로 고객에게 제공 할 수있는 시점에서 라이센스 사용자에게 유지 보수 릴리스를 제공해야합니다. 제품 오퍼링이 업그레이드인지 또는 신제품인지 기능인지 여부에 대한 질문이 있으면 라이센서의 의견은 일반적으로 최종 사용자 고객을위한 새로운 제품이나 기능으로 제품 오퍼링을 취급한다는 조건하에 우선합니다 .


기음. 라이센서의 지원 서비스 제공 의무는 다음 조건에 달려있다. (a) 라이센시와 상담 한 후에 라이센스 사용자는 실수를 바로 잡기 위해 합리적인 노력을 기울인다. (b) 라이센스 사용자는 라이센스 부여 자의 사이트 또는 라이센스 사용자 사이트로의 원격 액세스를 통해 오류를 정정 할 수있는 충분한 정보와 자원은 물론 인력, 하드웨어 및 기타 추가 항목에 대한 액세스 권한을 라이센스 제공자에게 제공합니다 오류 발견과 관련된 소프트웨어; (c) 라이센스 사용자는 모든 유지 보수 릴리스를 즉시 설치합니다. (d) 라이센스 사용자는 제품을 작동시키는 데 필요한 모든 장비, 통신 인터페이스 및 기타 하드웨어를 조달, 설치 및 유지 보수합니다.


디. 라이센서는 다음과 같은 상황에서 지원 서비스를 제공 할 의무가 없다. (a) 제품이 변경, 수정 또는 손상된 경우 (라이센서의 직접 감독하에있는 경우는 제외). (b) 오류는 라이센스 사용자의 합당한 통제를 벗어난 과실, 하드웨어 오작동 또는 기타 원인으로 인해 발생합니다. (c) 오류는 라이센스 제공자를 통해 라이센스가 부여되지 않은 제 3 자 소프트웨어로 인해 발생합니다. (d) 라이센스 사용자는 유지 보수 릴리스를 설치 및 구현하지 않아 제품이 라이센스 부여자가 지원하는 버전입니다. 또는 (e) 라이센스 사용자는 만기일 때 라이센스 비용 또는 지원 서비스 비용을 지불하지 않았습니다. 또한 라이센스 제공자는 제품을 기반으로 고객 자신이 작성한 소프트웨어 코드에 대해 지원 서비스를 제공 할 의무가 없습니다.


이자형. 갑은 재량에 따라 제품의 지속적인 지원이 경제적으로 실용적이지 않다고 결정한 경우 갑옷 판매자 서비스를 중단 할 수있는 권리를 보유합니다. 인가 권자는 그러한 지원 서비스 중단을 서면으로 적어도 3 개월 전에 서면으로 통지하고 영향을받는 제품에 대해 선급금을 지불 한 미 지불 지원 서비스 수수료를 환불합니다. 라이센스 취득자는 제품이 지원되는 제 3 자 플랫폼 (소프트웨어, JVM, 운영 체제 또는 하드웨어를 포함하되 이에 국한되지 않음)의 모든 버전을 지원하거나 유지할 의무가 없습니다. 제품 및 기본 타사 플랫폼 및 (ii) 최초로 대체 된 후 6 개월 동안 제품 및 운영 체제의 직전 버전 두 개. 갑은 일정 기간이 만기가 된 후 30 일 이내에 갑이 계약에 따라 갑에게 지불 할 금액을 지불하지 않는 경우 지원 서비스의 수행을 중지 할 권리를 보유합니다.


6. 보증.


에이. 인가자는 소프트웨어를 설치 한 날로부터 90 일 동안 소프트웨어가 해당 문서에 명시된 기능 사양에 따라 중요한 모든 측면에서 수행 될 수 있음을 보증합니다. 그러한 보증을 위반 한 경우, 공급 권자는 선택에 따라 소프트웨어를 수정하거나 해당 소프트웨어를 무료로 교체해야합니다. 전술 한 내용은 귀하의 유일하고 독점적 인 구제책이며 라이센서의 이러한 보증 위반에 대한 단독 책임입니다. 위에 명시된 보증은 귀하의 이익을 위해서만 만들어집니다. 보증은 (a) 소프트웨어가 항상 설치 지침에 따라 올바르게 설치되고 사용 된 경우에만 적용됩니다. (c) 최신 업데이트가 소프트웨어에 적용되었습니다. (c) 라이센스 부여 자나인가 자의인가 된 대리인이 아닌 사람이 소프트웨어를 수정, 변경 또는 추가하지 않은 경우.


7. 면책 조항.


제 6 조 (a) 항에 의거하여 제공된 경우를 제외하고, 라이센스 제공자는 상품성, 특정 목적에 대한 적합성 및 비 침해에 대한 묵시적인 보증을 포함하여 명시 적이거나 묵시적인 모든 보증을 명시 적으로 부인하며, 상품성 및 특정 목적에의 적합성에 대한 묵시적 보증 무역. 구두 또는 서면 상 허가받지 않은 조언이나 정보는이 계약서에 명시 적으로 기술 된 보증을 제공하지 않습니다.


라이센스 부여자는 소프트웨어 제품이 귀하의 요구 사항을 충족 시키거나 귀하의 특정 사용 조건 하에서 작동한다는 보증을하지 않습니다. 인가자는 소프트웨어 제품의 작동이 안전하고 오류가 없으며 중단이 없음을 보증하지 않습니다.


소프트웨어 제품이 보안 및 중단없는 요구 사항을 충족하는지 여부를 결정해야합니다. 귀하는 귀하의 요구 사항을 충족시키기 위해 소프트웨어 제품의 고장으로 인해 초래 된 모든 손실에 대한 전적인 책임과 모든 책임을집니다. 라이센서는 컴퓨터 또는 정보 저장 장치의 데이터 손실에 대해 어떠한 경우에도 책임을지지 않습니다.


8. 책임의 제한.


책임의 모든 원인과 책임의 모든 이론에 근거하여 귀하에 대한 라이센스 제공자의 총 책임은 귀하가 소프트웨어 라이센스 제공자에게 지불 한 라이센스 비용을 한도로 초과하지 않을 것입니다. 어떠한 경우에도 라이센서는 특수한, 우발적 인, 우발적 인, 우발적 인, 징벌 적 또는 필연적 인 손해 (사용, 데이터, 사업 또는 이익의 손실 포함) 또는이 제품과 관련하여 발생하거나 이와 관련하여 발생하는 대체 제품의 비용을 책임지지 않습니다 계약 또는 사용 또는 성능에 대한 책임을지지 않으며, 그러한 책임은 계약, 보증, 불법 행위 (태만 포함), 엄격한 책임 또는 기타 방법에 근거하거나 그러한 손실의 가능성에 대해 면허가 부여되었는지 여부에 관계없이 손해. 상기 제한은 본 계약서에 명시된 제한된 구제책이 본질적인 목적을 달성하지 못한 것으로 판명 된 경우에도 적용되고 적용됩니다. 해당 관할 지역에서 라이센스 보유자가 묵시적 보증을 부인할 수있는 범위 내에서이 부인은 허용되는 최대 범위 내에서 유효해야합니다.


본 계약의 조항이 유효하지 않거나 집행이 불가능할 경우 본 계약의 나머지 조항이 완전히 효력을 유지합니다. 적용 가능한 법률에 의해 명시 적 또는 묵시적 제한이 허용되지 않는 한, 이러한 명시 적 또는 묵시적 제한은 해당 적용 법률에서 허용하는 최대한의 범위까지 계속 유효합니다.


본 계약은 본 계약 내용과 관련하여 당사자 간의 완전하고 독점적 인 계약으로, 본 계약 내용과 관련하여 이전 계약, 의사 소통 및 이해 (구두 및 구두)를 대체합니다. 본 계약의 당사자는 독립적 인 계약자이며 다른 당사자를 구속하거나 다른 당사자를 대신하여 의무를 부담 할 권한도 없습니다. 일방 당사자가 본 계약에 따른 권리를 행사하거나 집행하지 않는 한 그러한 권리의 포기로 간주되지 않습니다. 구매 주문서 나 기타 주문서에 포함 된 조건은 본 계약의 조건과 일치하지 않거나 추가적으로 라이센스 제공자에 의해 거절되며 무효로 간주되며 아무런 효력이 없습니다.


본 계약은 법률 원칙의 충돌과 관계없이 스위스 법에 따라 해석되고 해석됩니다. 양 당사자는 본 계약과 관련하여 발생하는 분쟁의 해결을 위해 스위스 취리히에 위치한 법원의 배타적 인 관할권 및 재판 지에 동의합니다.


10. 정의.


& # 8220; 평가 사용 & # 8221; 은 귀하의 프로덕션 용도로 의도 된 새로운 응용 프로그램에 대한 평가 및 평가판 용도로만 소프트웨어를 사용함을 의미합니다.


& # 8220; 프로덕션 사용 & # 8221; 란 내부 업무 용도로만 소프트웨어를 사용하는 것을 의미합니다. 생산 사용에는 ASP, VAR, OEM, 배포자 또는 대리점 계약의 일부로 소프트웨어를 공유하거나 배포하는 작업을 포함하여 재 라이센스, 재판매 또는 배포를 위해 소프트웨어를 복제 할 수있는 권리가 포함되지 않습니다.


& # 8220; 소프트웨어 & # 8221; 라 함은 라이센스 제공자의 소프트웨어 및 라이센스 자에 포함 된 모든 구성 요소, 문서 및 예를 의미합니다.


& # 8220; 오류 & # 8221; (a) 제품이 설명서에 명시된 사양을 준수하지 않아 제품 사용 불가 또는 사용 제한으로 이어지는 경우 및 / 또는 (b) 새로운 절차가 필요한 문제, 추가 정보 및 / 또는 제품 개선 요구 사항에 대해 설명합니다.


& # 8220; 유지 관리 릴리스 & # 8221; 는 5 항에 정의 된 표준 지원 서비스에 따라 라이센스 사용자가 사용할 수 있도록 업그레이드 및 제품 업데이트를 의미합니다.


& # 8220; 업데이트 & # 8221; 은 제품을 만들거나 추가 할 때 오류를 수정하는 소프트웨어 수정 또는 추가 또는 제품의 정상적인 작동에서 관찰 될 때 오류가 라이센스 사용자에게 미치는 실질적인 악영향을 제거하는 절차 또는 루틴을 의미합니다.


& # 8220; 업그레이드 & # 8221; 은 새로운 기능을 추가하거나 제품의 용량을 늘리기 위해 일반적으로 지원 서비스 기간 중 최종 사용자 고객에게 라이센스 제공자가 릴리스 한 제품의 개정판을 의미합니다. 업그레이드에는 신제품 출시 또는 별도의 요금이 부과 될 수있는 기능 추가가 포함되지 않습니다.


알고리즘 옵션 거래 3.


이 기사에서는 고객을 위해 작성한 전략과 같은 진정한 옵션 거래 전략에 대해 살펴 보겠습니다. 그러나 이것은 거래 도서의 시스템을 기반으로합니다. 앞서 언급했듯이 옵션 거래 서적에는 종종 실제로 작동하는 시스템이 포함되어 있습니다. 하루 거래 또는 외환 거래 도서에 대해서는 말할 수 없습니다. 여기서 검토 할 시스템은 실제로 이익을 창출 할 수 있습니다. 극단적 인 이익조차도, 분명히 결코 잃어 버리지 않기 때문에. 그러나 저자가 그것을 결코 뒷받침하지 않았다는 것도 또한 명백합니다.


명확한 설명 : 나는 이익 기대 또는 영리한 알고리즘 때문에 여기에 설명 된 시스템을 선택하지 않았지만 매우 간단하다 (더 단순한 시스템은 거의 상상할 수 없기 때문에) 일반적으로 옵션에 사용 된 추가 데이터는 필요하지 않기 때문에 미결 거래, 공개 변동성, 암시 적 변동성 또는 그리스와 같은 시스템에 영향을 미칩니다. 즉, 옵션 계산을 위해 R 함수를 호출 할 필요가없고, iVolatility 옵션 데이터, Zacks 수입 또는 시스템 백 테스트를위한 기타 이전 데이터를 지불 할 필요가 없습니다. 무료 Zorro 버전으로 충분합니다.


이 책 표지는 시스템 내부를 칭찬합니다. 투자 위험을 거의 0으로 낮추십시오 & # 8211; 30 %를 초과하는 일관된 높은 연간 수익을 달성하십시오 & # 8211; 델타, 시카고, 라스베가스, 라스베가스 등의 기초 및 기술적 분석을 배우는 것을 요구하지 않습니다. 그것은 시장 방향을 예측하는 능력을 필요로하지 않습니다. & # 8211; 스톡 따기 기술이 필요하지 않습니다. & # 8211; 가까운 모니터링이 필요하지 않습니다.


물론 모든 말을 나는 물론 공감합니다. 어쨌든 우리는 왜 우리가 그들없이 연간 30 %를 얻을 때 goblethegooks을 필요로 할 것입니까! 다음은 전략의 (단순화 된) 규칙입니다.


6 주간의 통화 및 6 주간의 지수 ETF 매도. 보험료가 $ 1 .. $ 2 범위에 있도록 파업 가격을 선택하십시오. 기본 가격이 파업 가격 중 하나에 닿아 인플레이션이 만료 될 위험이있는 경우 해당 옵션을 구매하고 동일한 유형의 새로운 옵션을 즉시 판매하지만 추가 만료일 및 손실을 충당하는 보험료 . 모든 옵션이 만료 될 때까지 기다린 다음 1로 되돌아갑니다.


옵션에 대한 경험이 조금이라도있는 경우 규칙 1에 목 졸려의 콤보가 있음을 알 수 있습니다. 그리고 규칙 2를 통해 당신은 이상한 것을 알게 될 것입니다. 그렇습니다. 손실은 분명히 새로운 거래의 프리미엄에 의해 보상 될 것이기 때문에 그러한 시스템은 결코 잃을 수 없습니다. 마침내 우리가 성배를 찾았습니까?


목 졸라.


수익과 위험에 대한 인상을 얻으려면 먼저 6 주간 $ 2 프리미엄 목 매듭의 이득 / 손실 도표를 확인하십시오. 마지막 기사의 커브 플로팅 스크립트에있는 목 졸림의 정의입니다.


$ 6의 스트라이크 스팟 거리는 $ 250의 가격, 배율 100, 15 %의 변동성을 가진 가상의 인덱스 ETF에서 2 달러 프리미엄으로 선택되었습니다. 이것이 수익 / 손실 다이어그램입니다.


우리의 잠재적 이득은 예상대로 (2 * 100 * 2 프리미엄) 콤보 무역 당 약 $ 400입니다. 그러나 우리의 지수 ETF의 가격은 만기가 될 때까지 어떤 방향으로도 10 달러 이상을 움직이는 것이 좋습니다. 그렇지 않으면 손실이 신속하게 천 달러 영역에 도달 할 수 있습니다. 이는 실제로 투자 위험을 거의 0으로 낮추지는 않습니다. & # 8221; 그러나 기다려라, 우리는 규칙 2를 가지고있다. 그것은 확실히 그 날을 구할 것이다! 그것을 백 테스트에 넣자.


시스템.


코드에 대한 간단한 설명 (시스템 코딩에 대한 자세한 소개는 블랙 북에서 찾을 수 있습니다). findCall 함수는 만료 시간과 프리미엄을 얻고이 두 매개 변수와 일치하는 통화 계약의 현재 옵션 체인을 조사합니다. 이를 위해 50 단계로 가격을 인상합니다. 그래도 원하는 프리미엄 이하의 계약이 발견되지 않으면 0을 반환하고 그렇지 않으면 발견 된 계약의 포인터를 반환합니다. findPut 함수는 put 계약에 대해 동일한 작업을 수행합니다.


실행 기능은 라이브 테스트뿐만 아니라 백 테스트를위한 백 테스트 시간 및 기타 매개 변수를 설정합니다. 그것은 매일 스크립트이며, 기능은 매일 동부 시간으로 3시 20 분에 실행됩니다. 그것은 백 테스트를 위해 두 개의 이력 데이터 파일을 사용합니다. 자산 기능은 조정되지 않은 SPY 가격의 파일을로드합니다 (조정되지 않은 이유는 파업 가격 거리를 결정하는 것이 배당 조정 가격에서 작동하지 않기 때문입니다). contractUpdate 함수는 해당 날짜의 SPY 옵션 체인을 브로커 또는 파일에서로드합니다. 이 두 파일은 커미션, 여백 및 우리가 거래하는 중개인이나 교환을 시뮬레이션하기위한 다른 매개 변수를 포함하는 자산 목록 AssetsIB. csv를 더하여 존재해야합니다.


코드의 다음 부분은 기적 규칙 2를 구현합니다. 현재 손실을 계산하고, 돈이있는 위치를 닫은 다음 즉시 손실 (1.8 * 손실)보다 약간 높은 프리미엄으로 즉시 새 위치를 엽니 다. 이런 식으로 우리는 우리를 반대하는 시장을 처벌하고 있습니다. printf 함수는 로그에 이벤트를 저장하기 때문에 우리는이 이벤트를 통해 더 잘 운명을 파악할 수 있습니다.


코드의 마지막 부분은 목을 조른 것입니다. MarginCost 계산에 유의하십시오. 마진은 필요한 자본과 이에 따른 백 테스트 성능에 영향을 미치므로 브로커의 증거금 요구 사항을 반영해야합니다. 기본적으로 매도 옵션의 여백에는 프리미엄과 자산 목록에 설정된 고정 된 비율의 일정 비율이 있습니다. 그러나 브로커는 옵션 콤보에 대해보다 복잡한 마진 공식을 적용하는 경우가 많습니다. 여기서 우리는 판매 된 목 매기의 마진이 프리미엄 (자동으로 추가됨)과 기본 가격의 15 %에서 2 가지 파업 차이의 최소치를 뺀 값이라고 가정합니다. 우리가 2 개의 포지션을 가지고 있기 때문에 우리는 절반을 곱합니다. 그러나 마진 공식은 전체 목을위한 것입니다.


2011-2016 년의 백 테스트는 약 2 초만이 필요합니다. 이것은 결과입니다 (우리는 항상 1 계약을 체결한다고 가정).


우리는 모든 거래에서 약 60 %의 수익을 올렸으며 Montecarlo 분석을 기반으로 연간 수익률을 12 %로 책정했습니다. 너무 흥분하지 마라. 30 %를 초과하는 지속적이고 높은 연간 수익은 어떨까요? 그리고 우리는 새로운 무역으로 우리의 손실을 항상 보상 할 때 어떻게 935 달러의 할인을받을 수 있습니까?


비합리적으로 뒤집어 쓰고 있습니까?


규칙 2없이 동일한 전략을 시도해 봅시다. 이렇게하면 스크립트가 약간 단순 해집니다.


롤오버를 제거하기 만하면 시스템이 크게 개선되었습니다.


압연이없는 자본 곡선 :


이제 25 % 연간 수익은 약속 이익에 다소 근접합니다. 물론 제한 메커니즘이 없기 때문에 더 높은 위험을 희생해야합니다. 이제는 위험을 줄이기위한 콘도르 같은 목 졸림 대신에 다른 옵션 콤보를 테스트 할 수 있습니다. 다양한 프리미엄과 만료로 이익이 어떻게 영향을 받는지 알아 내기위한 최적화를 실행할 수 있습니다. 나는 그것을 독자에게 남겨 둡니다. 흥미로운 질문은이 옵션뿐 아니라 지금까지 코딩 한 많은 옵션 거래 시스템을 통해 옵션을 롤업하는 것이 성능을 현저하게 저하시키는 이유입니다. 고객에게 종종 큰 놀라움을 선사합니다.


손실 보상으로 롤오버하는 것은 실제로 Martingale 시스템을 수립합니다. 그리고 그런 시스템은 카지노보다 옵션 거래에서 더 나은 운임이 아닙니다. 사실, 심지어 더 심합니다. 카지노에서는 적어도 모든 경기에서 동일한 기회가 있습니다. 거래에서, 잃는 옵션 콤보는 시장이 동향을 시작한다는 것을 암시합니다. 그리고 그 추세는 롤오버 계약으로 계속 될 것입니다. 얼마 지나지 않아 더 높은 보험료로 손실을 보상 할 수 없게됩니다. 그 가치로 계약을 찾을 수 없기 때문입니다. 그러면 계약 수량을 늘릴 수 있습니다. 실제로 그렇게했다면 계정이 생존하는 기간에 대한 링크 아래에서 계산할 수 있습니다. 잃어버린 계약을 뒤집어 쓰는 것은 전형적인 비합리적인 인간 행동입니다. & # 8211; 그러나 시장은 비합리성을 처벌하는 경향이있다.


인공 옵션 데이터.


시스템은 goblethegooks에 의존하지 않기 때문에이 미니 시리즈의 첫 번째 부분에서 만든 인공 옵션 데이터를이 시스템을 테스트하는 데 사용할 수 있는지 확인할 수 있습니다. 위의 백 테스트 결과는 실제 옵션 데이터를 사용한 결과입니다. 합성 데이터의 결과는 다음과 같습니다.


실제 데이터와 비슷하지만 비슷합니다. 인공 데이터는 옵션 프리미엄이 이론적 가치와 동일하고 수익 보고서와 같은 기본 사항이 아무런 역할을하지 않기 때문에보다 효율적인 시장 상황을 나타냅니다. 실제 데이터 백 테스트를 확인하는 데 사용할 수 있습니다. 아니면 돈을 절약하기 위해 비 goblethegooks 시스템 (예, 이 단어가 마음에 듭니다)을 인공 데이터로 역 테스트하고, 최종 테스트를 위해 실제 데이터를 구매하는 것이 좋을 때에 만 테스트합니다.


2017 저장소에 전체 스크립트를 추가했습니다. Zorro 버전 1.73 이상이 필요합니다. 조정되지 않은 SPY 데이터는 아카이브의 History 폴더에서 찾을 수 있습니다 (또는 Zorro 명령 assetHistory (SPY. US & # 8221; FROM_STOOQ | UNADJUSTED)로 다운로드). 인공 2011-2016 옵션 기록을 직접 만들고 싶지 않으면 여기에서 기록 데이터 아카이브에서 다운로드 할 수 있습니다.


결론.


백 테스트에서 증거금 비용을 염두에 두십시오. 계약을 잃어 버리지 마십시오. 시스템에 골판지가없는 경우 인공 데이터를 사용해보십시오.


문학.


(1)은 제가 시스템을 가져온 책입니다. 그 책은 괜찮아. & # 8211; 대부분의 다른 옵션 도서보다 좋거나 나쁘지는 않지만 단지 $ 10에 불과하므로 실수가 아닙니다.


(2) 옵션 거래 문제에 대한 정말 좋은 소개입니다. 비록 저자가 내 블로그의 제목을 뻔뻔하게도 표절했는데, 필자가 쓰기 시작하기까지 수년이 지난 지금도!


(1) Daniel Mollat, $ tock 옵션 $, BN Publishing 2011.


& ldquo; 알고리즘 옵션 트레이딩 3에 대한 11 가지 생각 & rdquo;


정말 기사를 즐겼습니다!


* 구매 * 옵션을 기반으로하는 옵션 시스템에 대해 알고 있습니까?


예, 많은 시스템이 옵션 콤보의 일부로 옵션을 구입합니다. 예를 들어 나비 또는 콘도르는 구매 옵션을 포함합니다.


고마워, 집에서 그것을 시도합니다.


명시적인 MarginCost는 신규 거래가 개설되기 전에 계산됩니다. 현재 열려있는 거래에 대한 MarginCost는 어떻게됩니까? 설명서에 브로커가 제공하지만 테스트 모드에 있다고 명시되어 있습니까? 그것은 틀린 것처럼 보이는 assetList ()에서 파생 된 무언가로 기본 설정되어있는 것 같습니다. 명시 적으로 계산 된 MarginCost는 약 10에서 15 사이의 값을 가지지 만 implict는 80에서 100 사이입니다 (Assets 파일 포함).


그래서 스크립트에서 각 막대에 대해 명시 적으로 MarginCost를 계산하고 코드를 조정해야한다고 생각했습니다 (아래 참조). 그러나 이것은 자본 요구 사항을 전혀 변경하지 않습니다. & # 8211; 왜 안돼? MarginCost의 함축성이 무시됩니까? 그리고 그렇다면 맞습니까?


// 모두 만료 되었습니까? 새로운 옵션을 입력하십시오.


계약서 * 전화 = findCall (WEEKS * 7, PREMIUM);


계약서 * Put = findPut (WEEKS * 7, PREMIUM);


MarginCost = 0.5 * (0.15 * Price - 분 (통화 - & gt; fStrike - 가격, 가격 - & gt; fStrike));


printf (& # 8220; \ nInitMarginCost % .3f & # 8211; Price % .3f & # 8221;, (var) MarginCost, Price);


MarginCost = 0.5 * (0.15 * Price & # 8211; min (StrikeCall-Price, Price-StrikePut));


printf (& # 8220; \ nMaintMarginCost % .3f & # 8211; Price % .3f & # 8221;, (var) MarginCost, Price);


MarginCost는 귀하의 계정의 여백이 아닙니다. 위치 마진이며 위치를 열기 전에 설정됩니다. 열린 포지션의 유지 보수 여백을 변경하려면 무역 거래 변수 ThisTrade-> fMarginCost를 사용하십시오.


감사합니다. 지금은 ThisTrade - & gt; fMarginCost를 테스트했으며 자본 요구량에 예상되는 효과가 나타났습니다. 그러나 ThisTrade - & gt; fMarginCost MarginCost를 설정 한 후에도 여전히 다른 값을 갖습니다. fMarginCost가 MarginCost와 어떻게 관련되는지 자세히 설명해 주시겠습니까? 다시 한번 감사드립니다.


# MarginCost g - & gt; asset - & gt; vMarginCost를 정의하십시오.


따라서 자산의 기본 마진 일뿐입니다.


나는 개인 무역의 마진 요구 사항이 무역 시험 기간 동안 변함없이 유지 될 것이라고 생각한다. & # 8211; ThisTrade - & gt; fMarginCost, sorrect를 통해 적극적으로 설정하지 않는 한?


예. MarginCost는 ThisTrade-> fMarginCost에 영향을 미치지 만 그 반대는 아닙니다.


알고리즘 옵션 거래, Part 1.


옵션의 많은 흥미로운 기능에도 불구하고 개인 거래자는 거의 활용하지 못합니다 (물론 저는 바이너리 옵션이 아닌 진지한 옵션에 대해 말하고 있습니다). 어쩌면 옵션은 복잡하다는 평판 때문에 인기가 없을 수도 있습니다. 또는 대부분의 거래 소프트웨어 도구에 의한 지원 부족 때문입니다. 또는 알고리즘 트레이딩에 필요한 과거 데이터 및이를 지원하는 몇 가지 도구의 가격 태그가 있기 때문입니다. 뭐든간에 & # 8211; 우리는 최근 옵션 거래 시스템에 대한 몇 가지 프로그래밍 계약을 맺었으며 간단한 시스템조차도 비교적 일관성있는 이익을 창출 한 것으로 보았습니다. 특히 판매 옵션은 기존 거래보다 유리합니다. 악기. 이 기사는 알고리즘 옵션 거래로 돈 벌기에 관한 미니 시리즈 중 첫 번째 기사입니다.


옵션 101.


옵션은 많은 웹 사이트와 많은 거래 서적에서 설명되어 있으므로 여기에서는 간단한 개요 만 제공합니다. 옵션은 고정 된 가격 (파업 가격)으로 고정 된 날짜 (만기일) 또는 그 이전에 금융 자산 (기초 자산)을 매입 (콜 옵션)하거나 매각 (옵션 매입) 할 권리를 소유자에게 부여하는 계약입니다. . 옵션을 짧게 (쓰기) 판매하는 경우 거래의 상대방을 선택하게됩니다. 따라서 4 가지 다른 방법으로 직위를 입력 할 수 있습니다. 전화를 사거나, 풋을 사거나, 짧은 전화를 팔고, 짧은 풋을 팔아라. 그리고 파업 가격과 만기 날짜의 가능한 모든 조합이 있습니다.


보험료는 옵션을 사고 팔거나 지불 할 때 지불하거나 징수하는 가격입니다. 그것은 기본 주식의 가격보다 훨씬 적습니다. 주요 옵션 시장은 유동적이므로 언제든지 합리적인 행사 가격과 만료일을 가진 옵션을 구매, 작성 또는 판매 할 수 있습니다. 통화 옵션의 현재 기본 가격 (현물 가격)이 파업 가격보다 높으면 옵션이 비용에 포함됩니다. 그렇지 않으면 돈에서 빠져 나옵니다. put 옵션에 대해서는 반대입니다. 돈은 구매자에게 좋고 판매자에게는 좋지 않습니다. 옵션으로 돈을 행사할 수 있으며 파격 가격으로 근본적으로 교환 할 수 있습니다. 현물과 파업의 차이는 구매자의 이익과 판매자의 손실입니다. 아메리칸 스타일 옵션은 만료시 유럽 스타일 옵션 언제든지 행사할 수 있습니다.


적어도 이익을 내지는 못하더라도 out-of-the-money 옵션은 행사 될 수 없습니다. 그러나 그들은 만기가되기 전에 돈으로 걸어 갈 수있는 기회가 있기 때문에 쓸모가 없습니다. 옵션의 가치는 그 기회에 따라 다르며, 현물 가격, 파업, 만기, 무위험 수익률, 배당률 및 유명한 Black-Scholes 수식의 변동성을 바탕으로 유럽 옵션에 대해 계산할 수 있습니다. 이 값은 옵션 프리미엄의 기초입니다. 실질 프리미엄은 공급, 수요 및 근본적인 가격 추세를 예고하려는 시도로 인해 약간 벗어날 수 있습니다.


근사 프로세스로 수식을 반대로함으로써 실제 보험료에서 변동성을 계산할 수 있습니다. 이 내포 된 변동성은 시장이 다음에 변동을 기대하는 방식입니다. 옵션 값의 부분 파생물은 그리스 (델타, 베가 & # 8211; 그리스 문자가 무엇인지 & # 8211;와 쎄타인지는 모르지만)입니다. 그들은 시장 매개 변수가 바뀔 때 값이 변할 방향과 강도를 결정합니다.


거래 옵션에 필요한 모든 기본 정보. 그건 그렇고, 거래 책과 전략의 공연을 비교하는 것은 흥미 롭습니다. 이 책에 설명 된 외환이나 주식 거래 시스템은 대부분 침대에서 흘러 나오고 간단한 백 테스트에서 이미 사라지지만 옵션 시스템에서는 그다지 중요하지 않습니다. 그들은 종종 백 테스트에서 승리합니다. 그리고 비록 저는 거의 저자가 그것을 정말로 뒷받침하지 않았다고 확신합니다. 옵션 거래 도서 작성자는 다른 거래 도서 작성자보다 지능이 있습니까? 어쩌면, 우리는 대안적인 설명이 있음을 알 수 있습니다.


왜 옵션을 거래합니까?


그들은 더 복잡하고 거래하기가 더 어려우며, 단순히 입 / 퇴장 가격의 차이가 될 수있는 가치를 계산하려면 노벨상을받은 공식이 필요합니다. 이 모든 옵션에도 불구하고 옵션은 다른 금융 상품에 비해 많은 장점을 제공합니다.


높은 레버리지. $ 100를 사용하면 몇 가지 주식 만 살 수 있지만 몇 백 가지 옵션을 살 수 있습니다. 통제 된 위험. 주식의 짧은 포지션은 귀하의 계좌를 닦을 수 있습니다; 옵션의 위치는 원하는 방식으로 위험을 제한하기 위해 영리하게 결합 될 수 있습니다. 그리고 정지 손실과는 달리 실제 위험 한계입니다. 추가 측정 기준. 주식 이익은 가격 상승 또는 하락에만 의존합니다. 옵션 이익은 변동성의 증가, 변동성의 하락, 가격 변동, 범위를 벗어나거나 상상할 수있는 거의 모든 가격 행동으로 달성 될 수 있습니다. 화재와 잊기. 옵션이 만료되므로 특정 조건에서 팔거나 운동하기를 원하지 않는 한 알고리즘을 닫지 않아도됩니다. 그리고 만료 된 옵션에 대해서는 출구 수수료를 지불하지 않습니다. 판매자 이점. 보험료로 인해, 옵션이 잘못된 방향으로 움직인다 할지라도 옵션은 여전히 ​​판매자에게 이익을 창출 할 수 있습니다.


해커 윤리는 당신이 단지 무언가를 요구하지 않고 그것을 증명할 것을 요구합니다. 옵션에 익숙해지기 위해 마지막으로 판매자의 이점 인 테스트를 테스트 해 봅니다.


이것은 매우 간단한 옵션 거래 시스템입니다. 무작위로 통화 또는 풋 옵션을 기록하고 만료 될 때까지 위치를 유지합니다. put / call randomness로 인해 그것은 추세에 좌우되지 않습니다. 코드 세부 사항을 살펴보기 전에 [Test] 모드에서 두 번 실행하면됩니다 (Zorro 1.53 이상 버전 필요). 당신은 결과가 언제든지 다르다는 것을 알게 될 것입니다. 그러나 수수료가 이익에서 제외 되더라도, 그것은 종종 부정적인 것보다 긍정적입니다. 전형적인 결과 :


대부분의 거래가 승리하는 것을 볼 수 있지만 잃을 때 그들은 크게 잃어 버립니다. 이제 전략을 뒤집고 판매하는 대신 옵션을 구입하십시오. enterLong ()을 사용하여 enterShort ()를 대체하십시오. 두 번 다시 실행하십시오 (스크립트는 백 테스트의 경우 약 3 초가 필요합니다). 결과가 부정적인 경우가 많음을 알게 될 것입니다. & # 8211; 사실 거의 언제든지.


옵션, 적어도 테스트 스파 계약, 실제로 판매자를 선호하는 것 같습니다. 이것은 주식, ETF 또는 지수 선물의 장기 포지션에 대한 긍정적 인 기대와 다소 유사하지만, 옵션 매도인의 강점은 시장의 방향에 강하고 독립적입니다. 거래 책에서 옵션 시스템의 긍정적 인 결과의 상당 부분을 설명 할 수 있습니다. 그런데 왜 옵션 구매자가 있습니까? 옵션은 흔히 이익을 위해가 아니라 비싸지 않은 가격 추세에 대한 보험으로 구입합니다. 그리고 왜 판매자 우위가 시장 상어에 의해 차용을하지 않는 것입니까? 왜냐하면 어쨌든 옵션으로 알고리즘 거래가 많지 않기 때문이며 어쨌든 금융 시장에서 상어보다 고래가 많기 때문일 수 있습니다.


옵션에 대한 함수.


옵션 거래 및 백 테스팅에는 기초 거래보다 몇 가지 더 많은 기능이 필요하다는 것을 알 수 있습니다. 옵션이 없으면 동일한 임의의 거래 시스템이이 짧은 스크립트로 축소됩니다.


옵션에는 (적어도) 세 가지 추가 기능이 필요합니다.


dataLoad (1, & # 8221; SPY_Options. t8 & # 829;, 9)는 & # 8220; SPY_Options. t8 & # 8221; 파일에서 기록 옵션 데이터를로드합니다. 데이터 세트로 변환합니다. 옵션 데이터에는 입찰 가격 및 입찰가뿐만 아니라 가격, 만료일, 유형 및 가격이 포함됩니다. 미국인이나 유럽인에게 전화를 걸거나 전화한다. & # 8211; 일부는 공개 옵션과 같은 추가 데이터를 거의 사용하지 않았습니다. 과거 가격 데이터와 달리 옵션 데이터는 일반적으로 비쌉니다. iVolatility와 같은 공급 업체에서 구입할 수 있습니다. 그러나 아래에서 설명 할 무료 방법으로 얻을 수있는 또 다른 방법이 있습니다.


가운데 열에는 다른 행사 가격과 만료 날짜가 나열되고 오른쪽과 왼쪽에는 할당 된 통화 (왼쪽) 및 풋 옵션 (오른쪽)에 대한 입찰 가격과 주문 가격이 표시됩니다. 가격은 주당입니다. 옵션 계약은 항상 특정 주식 수 (보통 100)를 커버합니다. 그러므로 위의 목록에서 다음 주 (2017 년 2 월 3 일) 만료시 $ 230의 SPY 통화 옵션을 쓸 때 $ 15 프리미엄을받을 수 있습니다 파업 가격. SPY가 그 날짜까지 230 달러를 넘지 않으면 $ 15는 당신의 이익입니다. $ 230와 $ 10 센트로 올랐고 옵션이 행사되면 (돈이 만료 될 때 자동으로 발생) $ 5를 계속 유지합니다. 그러나 그것이 갑자기 300 달러로 급상승했다면 (트럼프가 미국 전역에 새로운 벽을 발표했는데, 모두 자신이 지불했다), 당신은 6985 달러의 손실을 감수해야한다.


이미지는 계약을 표시하지만 옵션 체인의 일부일뿐입니다. 만료일과 행사 가격이 더 많기 때문입니다. SPY 옵션 체인에는 최대 10,000 개의 다른 옵션을 포함 할 수 있습니다. 그들은 모두 위의 contractUpdate 함수를 사용하여 PC에 다운로드되기 때문에 완료하는 데 몇 초가 걸릴 수 있습니다.


contract (Type, 30, priceClose ())는 이전에 다운로드 한 옵션 체인에서 특정 옵션을 선택합니다. PUT 또는 CALL, 만기까지의 일수 (30) 및 파업 (priceClose ()는 근본적인 현재 가격 임)은 최적의 피팅 옵션을 선택하기에 충분한 정보입니다. 백 테스트에서 정확한 가격을 얻기 위해 UNADJUSTED 플래그를 사용하여 기본 가격 데이터를 다운로드했습니다. 스트라이크 가격은 항상 조정되지 않습니다.


계약이 선택되면 다음 enterLong () 또는 enterShort ()가 시장에서 옵션을 구매하거나 판매합니다. if () 절은 계약이 사용 가능하고 유효 기간이 이전 계약과 다르다는 것을 확인합니다 (다른 계약 만 교역되도록하기 위해). 출입, 정지 또는 이익 한도는 평소와 같이 작동 할 것이므로 이제는 기본 가격 대신 프리미엄 인 옵션 값에만 적용됩니다. 백 테스트는 옵션이 행사되거나 해당 금액이 만료 될 때 그 기초가 즉시 판매되고 이윤은 구매자의 계정으로 예약되고 판매자의 계정에서 공제된다는 것을 전제로합니다. 옵션이 돈에서 만료되면 위치는 사라집니다. 따라서 우리는이 전략에서 포지션을 종료하는 것에 신경을 쓰지 않습니다. 이러한 차이를 제외하고 거래 옵션은 다른 금융 상품 거래와 마찬가지로 작동합니다.


Backtesting 옵션 전략.


다음은 부자가되는 쉬운 방법입니다. IB 계정을 열고 1 분 간격으로 옵션 체인과 계약 가격을 기록하는 소프트웨어를 실행하십시오. 지난 5 년 간 일부 데이터 공급 업체가 한 일은 이제 데이터 보물을 판매하고 있습니다. 몇 년 간 주요 주식의 옵션 체인에 대해 수천 달러를 쉽게 지불 할 수 있지만 누가이 데이터의 저작권을 실제로 소유하고 있는지 확실하지 않습니다. & # 8211; 벤더, 브로커, 거래소 또는 시장 참여자? 이것은 합법적 인 회색 영역 일 수 있습니다. 어쨌든 옵션 전략을 개발하기 위해서는 과거 데이터가 필요합니다. 그렇지 않으면 백 테스트 할 수 없습니다.


법적 문제없이 무료로 이용할 수있는 방법은 다음과 같습니다.


이 스크립트는 제가 여기 게시 한 일반적인 Zorro 스크립트보다 약간 더 길기 때문에 자세히 설명하지 않겠습니다. 2011-2017 년 중 어느 날에 인공 옵션 체인을 생성하고이를 기록 데이터 파일에 저장합니다. 옵션 가격은 기본 가격, 변동성, 현재 위험 자유 이자율 및 기초 자산의 배당률로부터 계산됩니다. 파업 가격의 세 가지 범위와 다음 180 일간의 금요일의 만료 날짜를 사용합니다. 이를 실행하기 위해서는 R이 설치되어야하고, 옵션 값을 계산하기 위해서는 RQuantlib 패키지가 필요합니다. 모든 기능은 Zorro 매뉴얼에 설명되어 있습니다. yield () 함수는 미국 재무부 채권의 현재 수익률을 반환하고 contractVal ()은 모든 옵션 매개 변수를 사용하여 미분 방정식을 풀어 프리미엄을 계산합니다. 두 함수의 소스 코드는 contract. c include 파일에서 찾을 수 있습니다.


느린 미분 방정식 해법과 엄청난 수의 옵션 때문에 스크립트를 완료하는 데 몇 시간이 걸립니다. 실제 SPY 옵션 데이터와 생성 된 데이터를 비교 한 내용은 다음과 같습니다.


파란 선은 인위적인 옵션 가격이고 검은 선은 옵션 데이터 공급 업체로부터 구입 한 실제 가격이며 3 주 SPY 계약과 10 점의 파업 거리가 있습니다. 가격이 꽤 잘 맞는지 알 수 있습니다. 부분적으로 무작위적일 수있는 약간의 차이점이 있는데, 부분적으로는 공급과 수요의 변이 때문입니다. 이러한 이상 현상을 이용하는 전략의 경우 & # 8211; 여기에는 묵시적인 변동성에 기반한 모든 전략이 포함됩니다. 실제 역사적 옵션 가격이 필요합니다. 기초의 가격 변동성이나 변동성을 악용하는 옵션 전략의 경우 인공적 데이터가 발생할 가능성이 큽니다. 끝까지이 기사를 읽으면서 이미 몇 천 달러를 절약했습니다.


결론.


옵션과 옵션 조합을 사용하여 매우 흥미로운 속성을 가진 인공 금융 상품을 만들 수 있습니다. 옵션 전략, 특히 옵션 판매는 다른 전략보다 수익성이 높습니다. 알고리즘 옵션 전략은 조금 있지만 다른 금융 수단과 전략보다 훨씬 복잡하지 않습니다.


나는 2017 스크립트 저장소에 모든 스크립트를 포함 시켰으며, 산출량 데이터를 포함한 과거의 데이터 세트도 포함시켰다. 그렇지 않으면 다운로드를 위해 Quandl 브리지 또는 Zorro S가 필요했다. Zorro 1.53 이상이 필요합니다 (현재 베타 & # 8221; Zorro 다운로드 페이지의 링크. 그럼에도 불구하고 무료 Zorro 버전에서 지원되지 않는 Quandl 브리지에 대한 오류 메시지는 스크립트가 실행하는 포함 된 출력 속도 때문에 무시할 수 있습니다.


다음 기사에서는 옵션 값과 위험을 제한하거나 임의의 가격 범위를 거래하는 옵션을 결합하는 방법에 대해 자세히 살펴볼 것입니다. & # 8220; Iron Condor & # 8221;와 같은 재미있는 이름을 가진 그 조합. 또는 & # 8220; 나비 & # 8221; '옵션 전략'이라고도 불리는데, 그들은 단지 인공 금융 도구입니다. 거래 방법은 실제 전략에 달려 있습니다. 간단하지만 일관되게 수익성있는 옵션 전략이이 미니 시리즈의 세 번째 기사의 주제가 될 것입니다.


& ldquo; 알고리즘 옵션 거래에 대한 48 가지 생각, 1 부 & rdquo;


매우 흥미로운 기사! Zorro 개발자가 만든 자동 거래 시스템이 한 가지 있습니다 (좋은 방법입니다). 내 전략이 전략과 무작위로 유사한 결과를 생성한다는 사실은 매우 흥미 롭습니다. 나는이 미니 시리즈의 다음 기사를 기대하고있다.


나는 너의 책이 언제든지 영어로 곧 번역 될지 너는 어떤 생각이 있냐고 묻고 싶다. 책을 읽는 것을 좋아합니다.


나는이 미니 시리즈 기사에 전적으로 관심이있다. 이 시리즈의 다음 작품에 대해 알려주세요.


감사 & # 8211; 네, 영어 도서 버전이 계획되어 있습니다. 원시 번역을 검토 할 시간을 좀 벌어야합니다. Andrés : 오른쪽의 구독 필드에 입장하실 수 있습니다.


멋진 기사, 좋은 책이 무엇인지, 옵션으로 거래 할 수있는 곳을 물어보고 싶습니다. 감사.


맞습니다. 인위적인 가격과 실제 가격은 일종의 '합성'제품과 관련이 있습니다. 만료 날짜와 동적으로 변경된 파업 (기본 가격에 따라 다름)이있는 롤오버 된 일련의 실제 옵션으로 만들어진 옵션?


Investopedia와 Tastytrade는 옵션에 대한 자습서와 비디오를 제공합니다. 그것은 일련의 과정을 거치지 않고 실생활에서와 마찬가지로 파업과 만료일이 다른 옵션 체인입니다. 그렇지 않으면 백 테스트가 현실적이지 않습니다.


인위적인 가격과 실제 가격을 비교할 때 ATM 공격을 사용합니까? 저에게 옵션 트레이딩 전략과 실제 옵션 데이터를 다시 테스트하는 요지는 윙에서 임 플라이드 볼륨이 인위적으로 생성 된 것보다 훨씬 더 큽니다.


사용 된 파업은 약 10 포인트 ITM이었다.


이 흥미로운 기사를 게시 해 주셔서 감사합니다. 이 미니 시리즈의 다른 두 기사가 언제 출판 될지 알 수 있습니까?


시간이되면 & # 8230; 🙂


이 얼마나 좋은 기사! 무작위 매매 시스템의 결과는 CBOE S & amp; P 500 PutWrite Index와 유사하며 의미가 있습니다.


이 기사에 감사드립니다. 요전에 이것에 대해서 생각하고 있었나요?


나는이 블로그의 기사를 아주 좋아합니다. 현재 특정 주식의 만기 통화 옵션을 1 년 거래하고 있습니다.


& # 8220; 판매자 이점 & # 8221; 그것은 통제 된 위험 & # 8221;과 모순된다는 것. 성명서.


& # 8220; 종종 투자자를 혼란스럽게하는 것은 짧은 통화와 긴 통화가 같은지 아닌지입니다. 직관적으로, 이는 통화와 풋이 거의 정반대의 계약이기 때문에 다소 의미가있을 수 있지만, 짧은 통화와 긴 풋은 동일하지 않습니다. 당신이 오래있을 때 보험료를 지불해야하며 최악의 경우 보험료 만 상실하게됩니다. 그러나 전화가 짧을 때 옵션 보험료를 징수하지만 많은 위험에 노출됩니다. & # 8221;


따라서 (알몸의) 통화를 쓸 때 위험은 무제한입니다. 짧은 만료 기간 (30 일)은 대부분의 경우를 저장하지만 이는 매우 망각입니다. 이 방법은 사기 거래 봇과 매우 유사합니다. 봇은 99.5 %의 시간 봇에서 적은 금액 (예 : 통화료)을 얻고 있지만 느슨한 경우에는 많은 돈이 위험합니다.


긴 통화 또는 Put Traders 위험은 제한적이며, 자신의 상금을 증액하기위한 out-of-the-money 옵션을 선택하고 평행하게함으로써 승리 확률을 낮 춥니 다.


나는 LEAPS (1 년 이상 만료 / 긴 옵션) 백 테스트에 관심이 있습니다.


그냥 해. 사용자 포럼에서 Zorro 1.54를 다운로드하고 LEAP가있는 시스템을 백 테스트하십시오. 이를 위해 & # 8220; DaysMax & # 8221;를 늘려야합니다. 1 년 (365) 또는 장기 계약을 포함하여 2 년 (2 * 365)까지 스크립트를 생성하는 옵션 데이터의 변수. 스크립트는 데이터 생성을 위해 약간 더 시간이 필요할 것입니다.


거래 옵션이 새로운 Zorro 기능이므로, 브로커 API 부분 (zorro-trader / manual / en / brokerplugin. htm)이 처리 옵션을 설명하기에 충분히 업데이트되었는지 궁금합니다.


I’m asking because I’m trying to write a DLL plugin for TradeKing (soon to be renamed to Ally Invest). They have stocks, ETFs, and options contracts. Very low barrier-to-entry broker as well ($0 required to get API access).


For options, implement the basic API functions plus 5 BrokerCommand functions: GET_POSITION, GET_OPTIONS, GET_UNDERLYING, SET_SYMBOL, and SET_MULTIPLIER.


Fantastic Article, thanks for sharing, I tried out the code and downloaded the options data via the script, it all seemed to download OK and make me a 48mb T8 file for SPY but when I run the random script I don’t get any trades. Its the first time I have ran zorro (I’m on the latest version downloaded 2-3 days ago) so really unsure what I’m doing wrong.


Any help would be appreciated and I really look forward to the next episode in this enthralling series 😉


here is the log output:


Test OptionsSellRandom SPY.


Simulated account AssetsIB.


Bar period 24 hours (avg 2233 min)


Test period 12.01.2011-01.06.2016 (1270 bars)


Lookback period 80 bars (16 weeks)


Simulation mode Realistic (slippage 5.0 sec)


Spread 2.0 pips (roll 0.00/0.00)


Contracts per lot 1.0.


Gross win/loss 0.00$ / -0.00$ (-1p)


Average profit 0.00$/year, 0.00$/month, 0.00$/day.


Max drawdown -0.00$ -1% (MAE -0.00$ -1%)


Total down time 0% (TAE 0%)


Max down time 0 minutes from Sep 2010.


Max open margin 0.00$


Max open risk 0.00$


Trade volume 0.00$ (0.00$/year)


Transaction costs 0.00$ spr, 0.00$ slp, 0.00$ rol.


Capital required 0$


Number of trades 279 (52/year, 1/week, 1/day)


Percent winning 0.0%


Max win/loss 0.00$ / –0.00$


Avg trade profit 0.00$ -1.$p (+0.0p / -1.$p)


Avg trade slippage 0.00$ 1.$p (+0.0p / -1.$p)


Avg trade bars 23 (+0 / -23)


Max trade bars 26 (5 weeks)


Time in market 506%


Max open trades 6.


Max loss streak 279 (uncorrelated 279)


Annual return 0%


Sharpe ratio 0.00.


Kelly criterion 0.00.


R2 coefficient 1.000.


Confidence level AR DDMax Capital.


Portfolio analysis OptF ProF Win/Loss Wgt%


and a snippet of the log file…


[1338: Fri 13.05.16 19:00] +0 +0 6/271 (206.21)


[SPY::SC1272] Call 20160513 204.0 03.5713 not traded today!


[SPY::SC1272] Expired 1 Call 20160513 204.0 0207: +0.00 at 19:00:00.


[1339: Mon 16.05.16 19:00] +0 +0 5/272 (204.96)


[1340: Tue 17.05.16 19:00] +0 +0 5/272 (206.46)


[1341: Wed 18.05.16 19:00] +0 +0 5/272 (204.44)


[1342: Thu 19.05.16 19:00] +0 +0 5/272 (204.06)


[SPY::SC4278] Write 1 Call 20160624 205.0 03.4913 at 19:00:00.


[1343: Fri 20.05.16 19:00] +0 +0 6/272 (204.92)


[SPY::SP1773] Put 20160520 208.0 04.2851 not traded today!


[SPY::SP1773] Expired 1 Put 20160520 208.0 0204: +0.00 at 19:00:00.


[1344: Mon 23.05.16 19:00] +0 +0 5/273 (205.51)


[1345: Tue 24.05.16 19:00] +0 +0 5/273 (206.17)


[1346: Wed 25.05.16 19:00] +0 +0 5/273 (208.67)


[1347: Thu 26.05.16 19:00] +0 +0 5/273 (209.44)


[SPY::SC4779] Write 1 Call 20160701 209.0 03.7358 at 19:00:00.


[1348: Fri 27.05.16 19:00] +0 +0 6/273 (209.53)


[SPY::SP2274] Put 20160527 208.0 03.3622 not traded today!


[SPY::SP2274] Expired 1 Put 20160527 208.0 0209: +0.00 at 19:00:00.


[1349: Tue 31.05.16 19:00] +0 +0 5/274 (210.56)


[SPY::SC2775] Cover 1 Call 20160531 207.0 02.2309: +0.00 at 19:00:00.


[SPY::SC3276] Cover 1 Call 20160531 205.0 05.1843: +0.00 at 19:00:00.


[SPY::SP3777] Cover 1 Put 20160531 206.0 00.8602: +0.00 at 19:00:00.


[SPY::SC4278] Cover 1 Call 20160531 205.0 04.9463: +0.00 at 19:00:00.


[SPY::SC4779] Cover 1 Call 20160531 209.0 02.8347: +0.00 at 19:00:00.


[1350: Wed 01.06.16 19:00] +0 +0 0/279 (209.12)


I see that the positions are all opened with zero volume, as if you had set the number of contracts to 0. Have you used the unmodified script from the repository?


I’m using the OptionsSimulate. c file straight from the Zip file.


I installed R and the Quantlib libraries and the R bridge seemed to work fine as well.


The top of the file.


string FileName = “History\\SPY_SimOptions. t8”;


var StrikeMax[3] = ; // 3 strike ranges with different steps.


var StrikeStep[3] = ; // stepwidths for the 3 ranges.


int DaysMax = 180;


var BidAskSpread = 2.5; // Bid/Ask spread in percent.


var Dividend = 0.02;


int Type = 0; // or EUROPEAN, or FUTURE.


LookBack = 21; // for volatility.


I’m sorry for the n00b questions, its really interesting tools and systems and I was wanting to try out some vertical credit spreads using this code as a basis on the SPY and perhaps some other instruments!


It is not a noob question, it is in fact my fault. I just see that I’ve forgotten to set the options multiplier in the script. That did not matter with the previous Zorro version since the multiplier was 100 by default, but it must now be set because options can have very different multipliers.


I’ve corrected the script above. Thanks for notifying me!


Yes that was it!


Getting back results now, thanks so much for your help jcl.


I’m now off to put $1mm in an account and trade this baby 😉


Do you have any idea when you will get to work on the rest of the articles in this series?


Looks like the code below is not working anymore.


The CSV file SPY. csv get filled with this content:


QECx05,The url you requested is incorrect. Please use the following url instead: /api/v3/datasets/:database_code/:dataset_code.


Sorry, actually that file was from Quandl, and need a paid subscription.


From Yahoo I get the error Can’t download SPY from Yahoo.


Anyone having the same problem ?


I guess all are having the same problem, as Yahoo changed their protocol last week. If you run into issues like that, look for a solution not only on my blog, but first on the Zorro forum:


Thank you for this helpful information on automated trading systems!


I’m pretty new to this but I think this is a much bigger deal than you make it sound:


& gt; There are some tiny differences that might be partially random, partially caused by anomalies in supply and demand. For strategies that exploit those anomalies you’ll need real historical data.


Having accurate volatility is essential. Without it, you’re not just writing a strategy that doesn’t exploit those anomalies, you’re writing one that totally ignores them. It’s comparable to generating a stock’s price by picking a random number based on the probability distribution of the previous weeks’ prices or smoothing out all the biggest moves.


Options prices are based on expectations about the future but (unless I misunderstand your code), you’re pricing them based on the past. The differences will be more pronounced on underlyings other than SPY, particularly around earnings time (say AAPL, MSFT or GOOG).


I also find it hard to think of a strategy that doesn’t exploit the difference between implied and actual volatility. Even a 16/5 delta put spread on SPY only works as well as it does because IV is much much higher than it should be.


Yes, option price changes due to expectation of volatility, maybe when company news approach, belongs to the mentioned anomalies. The general rule is: for anomalies that have also an effect on the underlying you can use the artificial prices. For anomalies that only affect options, but not the underlying, you’ll need to purchase real historical options data.


how good will the simulated data be if I will change BarPeriod =1440 to be BarPeriod = 1 ?


Theoretically, as good or bad as the daily data, since the priciple is the same. But I haven’t yet made tests with 1-minute options data. That’s an awful lot of data.


“Due to the slow differential equation solver and the huge number of options, the script needs several hours to complete.”


How much faster do you think this could be if the R / Quantmod stuff were replaced with C/C++? I’m thinking of generating lots of synthetic data.


I believe it _is_ C++, at least the underlying Quantlib is programmed in C++. The R overhead is probably negligible. The problem is not the code, but the math. Numerically solving differential equations is slow. Black-Scholes is much faster, but for European options only. If you have really lots of data to generate, it might make sense to check the speed of different approximation methods for American options.


I notice volatility is fixed at 20 in the above script for generating synthetic option prices. Might there not be an argument for volatility to be a rolling 30 days and calculated programatically from the underlying?


What do you mean with “a rolling 30 days”? 20 is the usual volatility period in financial calculations, since it is roughly equivalent to one month. 30 would probably not make much difference.


You use a one time estimate of Volatility I think: eg 16 for the S&P. But on a rolling basis it will very widely which is of course part of the reason why option prices change so much: as volatility rises so does the price of the option. If therefore you use a rolling 20 (or 30) day moving average of volatility you will obtain more accurate synthetic option prices than simply assuming a one time flat 16 for the S&P when sometimes actual might be 10 , sometimes 30. I have not looked at the architecture of zorro and so don’t now whether its mostly vector, or look or what. Either way it would be possible to include the relevant day’s moving average of the volatility of the underlying instrument rather than a fixed figure.


But there again that is what you do perhaps? HistVolOV = VolatilityOV(20) – maybe this is 20 days? Not 20%?


A question not a statement.


Anyway it looks a wonderful piece of software. Just going to plough my way through the manual.


Yep, looks like Vol is a time series. Sorry to bother you.


Yes, it’s annualized volatility from the last 20 days. If it were 20%, I would have written: HistVolOV = 0.2.


아니. It doesn’t cut it. You can’t use a single measure of historic volatility for everything from a one month option to an expiry 24 months out. Perhaps the whole scheme is invalid. For instance IV for an SPX two year maturity is currently 15%+ while an option expiring in the next few days is 5% ish.


It may be invalid to use manufactured data at all. Except if you treat it as a sort of Monte Carlo test: this is what may/could have happened / might happen.


Anthony, the script is calculating the current price of an option. The current price depends on current volatility. Not on volatility from 24 months ago.


You calculate the value of European options with the Black Scholes formula, and American options, as in the script above, with an approximation method. Both methods normally use 20 days volatility. The volatility sampling method can differ, but the 20 days are pretty common to all options trading software that I know. And you can see from the comparison with real prices above that this period works rather well.


No, you can not calculate the current price of an option on any given day in that way. There is no way to accurately reproduce implied volatility hence price on any given date in the past. And it is the implied volatility we are interested in, not the historic. I totally agree on Black Scholes of course and its uses but it is cart before horse to expect to plug in 20 day volatility as at 3rd January 1985 and expect it to come up with an accurate price as traded at the close on that day for the SPX for any given strike or expiry.


It’s looking at it the wrong way around.


What you can try is to play around with different methods of estimating what the implied vol/ price MAY have been on 3rd Jan 1985 for a given strike and expiry of an SPX option.


For instance you might use 5 day historic volatility for an option expiring in a week and 252 day volatility for an option expiring in a year. Or you might imply volatilities by looking at the term structure of VIX futures contracts from 2004. Or at least use the VIX index itself going back to 1986 as input for 30 day volatility.


Whatever you do you won’t really be producing anything like what was actually traded on the day. Or at least not consistently and accurately over all expiries and strikes.


I believe that the process you describe does have a value but that the outcome of both the prices produced and the back tests resulting therefrom will be more akin to a random moet carlo process than to a back test on actual traded price data.


I believe it is a valuable process but that what is produced is a series of parallel universes: what might have happened to a given strategy over a given period of time using implied volatilities which may or may not have been traded.


Sorry to be long winded and I am an admirer of both your product and your script above. I would not have thought of generating fake option prices had I not seen your excellent article.


But in my opinion at least you need to rethink your input into the BS formula as far as volatility is concerned.


Incidentally please be well aware that I admire your product and your thoughts. Don’t imagine I am being difficult. Equally please don’t imagine I believe I am “right”!


I am just enjoying the journey and the dialogue with you and hoping together we can improve each other’s understanding of the topic.


Mine is limited!


Say the date you are looking atis 7th January 1987. On that day historic SPX volatility calculated over 20 trading days was 15.23. Historic volatility on that day for the past 252 days was 14.65.


For 5 days it was 18.


Now say I am trying to “calculate” (guess) a price (which might have been traded on 7th January 1987) for an option expiring in 5 days, 20 days and 252 days. Lets assume ATM.


My suspicion is that it would not be helpful to use 15.23 for all three expiries.


좋은 말 해줘서 고마워. Finance is complex. My knowledge is even more limited and I’m daily surprised by some results that I didn’t expect. & # 8211; In your example, the 15.23% volatility is the correct value. If you used a higher volatility period for higher expiration, then it depends on whether it’s still annualized volatility or just volatility of a longer time. In the latter case the results are off by some factor, in the former case they are based on too old volatility and thus not up to date. & # 8211; You’re right about the implied volatility, since it is affected by the difference of theoretical and real option value. So you cannot use the script above for getting it. Otherwise you would just get back some approximation of the current volatility. You need real option prices for IV.

No comments:

Post a Comment