파이썬으로 거래.
2017 년 5 월 20 일 토요일.
야후는 죽었고, 긴 사다리 야후!
참고 : 제공된 데이터는 분할에 대해서는 조정되지만 배당에 대해서는 조정되지 않는 것으로 보입니다.
2016 년 2 월 20 일 토요일.
SPY에서 간단한 통계적 모서리.
시장에 대한 언론의 보도 (며칠 동안 큰 손실을 겪은 후)에 대해 많은 이야기가 있었지만, 때로는 상당한 반등이 뒤 따르게되었습니다.
과거에는 손실을 줄이기 위해 직책을 닫음으로써 몇 가지 실수를 저질렀습니다. 다음 날 회복을 놓치기 만하면됩니다.
연속적인 손실 기간이 지나면 많은 상인들이 더 큰 손실에 대한 두려움에서 자신의 위치를 청산하게됩니다. 이 행동의 대부분은 계산 된 위험보다는 공포에 의해 지배됩니다. 똑똑한 상인들이 할인 된 가격으로옵니다.
consectutive 3 개 이상 손실 후에는 오래갑니다. 다음 닫을 때 종료하십시오.
이것은 전혀 나빠 보이지 않습니다! 샤프 비율을 보면 전략 점수는 하강 2.2와 B & amp; H가 0.44입니다. 이것은 실제로 꽤 좋습니다! (내가 commision 비용, 미끄러짐 등을 설명하지 않았던 것에 따라 너무 흥분하지 마라).
위의 전략이 오랜 시간 때문에 단순히 거래하고 싶지는 않지만 이론 자체는 유용한 것을 만들어 낼 수있는 더 깊은 생각을 불러 일으킨다. intraday 데이터에도 동일한 원칙이 적용되면 스캘핑 전략의 한 형태가 구축 될 수 있습니다. 위의 예에서 드로우 다운의 깊이에주의를 기울이지 않고 전 세계의 숫자 *를 계산하여 지나치게 단순화했습니다. 또한 위치 이탈은 기본적인 '다음날 마감'입니다. 개선해야 할 부분이 많이 있지만 내 생각에 본질은 다음과 같습니다.
2014 년 11 월 17 일 월요일
가장 가까운 이웃 예측을 가진 VXX 거래.
이 두 가지에 대한 나의 정의는 다음과 같다.
변동성 프리미엄 = VIX - 실현 볼트 델타 (기간 구조 기울기) = VIX-VXV.
프리미엄과 델타를 하나의 모델로 결합하는 것은 나에게 어려움 이었지만 항상 통계적 근사를 원했습니다. 본질적으로 (델타, 프리미엄)의 조합에 대해 현재 가치에 가장 근접한 모든 역사적 가치를 찾고이를 기반으로 한 미래 수익을 추정하고 싶습니다. 몇 번 나는 가장 가까운 이웃 보간 알고리즘을 쓰기 시작했으나 매번 포기해야했습니다. 가장 가까운 이웃의 회귀선을 발견 할 때까지 이를 통해 두 입력을 기반으로 예측 변수를 신속하게 구축 할 수 있었고 그 결과가 너무 좋았 기 때문에 어딘가에서 실수를 저질렀다고 걱정됩니다.
[delta, premium] - & gt; [VXX 다음날 수익] (샘플 중) 규칙을 사용하여 무역 전략 위의 데이터 세트 (샘플 외)에 기반한 가장 가까운 이웃 예측자를 만듭니다. 예상 수익 & gt; 예측 수익률이 0보다 작 으면 0이된다.
마지막 두 개의 플롯에서이 전략은 동일한 샘플 내부 및 외부 샘플을 수행하는 것으로 보입니다. 샤프 비율은 약 2.3입니다.
나는이 결과에 매우 만족하며이 기술로 가능한 것의 표면만을 긁어 모았습니다.
2014 년 7 월 16 일 수요일
간단한 백 테스트 모듈.
이상적인 백 테스팅 도구 ( 'ideal'에 대한 나의 정의는 이전의 'Backtesting dilemmas'게시물에 설명되어 있음)를 검색해도 즉시 사용할 수있는 결과가 발생하지 않았습니다. 그러나 사용 가능한 옵션을 검토하면 내가 정말로 원하는 것을 더 잘 이해할 수있었습니다. 내가 보았던 옵션 중 가장 단순하고 빠른 속도 때문에 가장 좋아하는 옵션이 pybacktest입니다. 소스 코드를 살펴본 후, 좀 더 간단하고 좀 더 우아한 아이디어를 얻었습니다. 거기에서, 지금은 TradingWithPython 라이브러리에서 사용할 수있는 내 자신의 백 테스터를 작성하는 것은 작은 단계였습니다.
입장과 출구 찾기 - & gt; pnl을 계산하고 백 테스터로 플롯을 만드십시오 - & gt; 후 처리 전략 데이터.
2014 년 6 월 7 일 토요일.
Cython으로 성능 향상.
테스트 데이터로 5k 샘플. 여기에 내 Drawdown 함수의 원래 버전이 있습니다 (현재 TradingWithPython 라이브러리에서 구현 됨)
Hmm 1.2 초는 그렇게 간단한 기능을하기에는 너무 빠르지 않습니다. 여기에 루프 반복마다 추가되는 목록 * highwatermark *와 같이 성능을 크게 저하시킬 수있는 몇 가지 사항이 있습니다. 인덱스를 사용하여 Series에 액세스하려면 엄격하게 처리 할 필요가없는 일부 처리가 포함되어야합니다. numpy 데이터로 작업하도록이 함수를 다시 작성하면 어떤 일이 발생하는지 살펴 보겠습니다.
글쎄, 이것은 본래의 기능보다 훨씬 빠르며 약 40 배속의 속도 증가입니다. 여전히 cython으로 컴파일 된 코드로 이동하여 개선 할 여지가 많습니다. 이제 위에서 설명한 dd 함수를 다시 작성했지만 cython 자습서에서 찾은 최적화 팁을 사용합니다. 이것은 Cython으로 함수를 최적화하는 데있어 처음 시도한 것입니다.
와우, 이 버전은 122 마이크로 초 만에 실행되므로 원래 버전보다 1 천 배 빠릅니다! Cython과 IPython 팀이 달성 한 것에 깊은 인상을 받았습니다. 사용의 용이성에 비해 속도는 단지 최고입니다!
추신 필자는 Matlab에서 pure C와 Mex wrapping을 사용하여 코드 최적화 작업을 수행 했었지만, 이것에 비해서는 엉망이었습니다.
2014 년 5 월 27 일 화요일
Backtesting 딜레마 : pyalgotrade 리뷰.
첫인상 : 적극적으로 개발, 꽤 좋은 문서, 충분한 기능 (TA 지표, 최적화 도구 등). 좋아 보인다, 그래서 나는 또한 원활하게 갔다 설치와 함께 갔다.
자습서는 약간 오래된 것 같습니다. 첫 번째 명령 인 yahoofinance. get_daily_csv ()는 알 수없는 함수에 대한 오류를 발생시킵니다. 걱정할 필요없이 문서가 최신 버전이고 누락 된 함수의 이름이 yahoofinance. download_daily_bars (symbol, year, csvFile)로 바뀌 었음을 알았습니다. 문제는이 함수가 해당 연도에서 현재 날짜까지의 모든 데이터가 아닌 1 년 동안 데이터 만 다운로드한다는 것입니다. 매우 쓸모없는.
데이터를 직접 다운로드하고 csv에 저장 한 후, 필자는 pyalgotrade가 Date, Adj Close, Close, High, Low, Open, Volume을 헤더에 포함 할 것으로 예상했기 때문에 열 이름을 조정해야했습니다. 그게 사소한 문제 야.
튜토리얼에서 제공되는 SMA 전략에 대한 성능 테스트를 수행합니다. 내 데이터 세트는 5370 일의 SPY로 구성됩니다.
이것은 실제로 이벤트 기반 프레임 워크에 매우 유용합니다.
그런 다음 스프레드 및 여러 자산 포트폴리오를 백 테스팅하는 데 필요한 기능에 대한 설명서를 검색해 보았으며 아무 것도 찾을 수 없었습니다. 그런 다음 팬더 DataFrame을 전략에 대한 입력으로 공급할 수있는 방법을 찾으려했으나 불가능한 일이 발생했습니다. 다시 큰 실망입니다. 이전 게시글의 요구 사항으로 언급하지 않았지만 지금은 팬더 지원이 시계열 데이터로 작동하는 모든 프레임 워크에서 필수임을 깨닫게되었습니다. Pandas는 Matlab에서 Python으로 전환해야하는 이유 였고 나는 결코 되돌아 가기를 원하지 않습니다.
결론 pyalgotrade는 유연성에 대한 나의 요구를 충족시키지 못합니다. 그것은 마음에 클래식 TA와 단일 악기 거래로 설계된 것 같습니다. 여러 자산, 헤징 등을 포함하는 백 테스팅 전략을위한 좋은 도구라고 생각하지 않습니다.
2014 년 5 월 26 일 월요일
딜레마에 대한 백 테스팅.
현실 세계를 잘 파악하십시오. 이것은 물론 가장 중요한 요구 사항입니다. 무한한 유연성 제공 : 도구는 즉시 사용 가능한 아이디어를 테스트하는 방식으로 사용해서는 안됩니다. 수량화 할 수있는 모든 것을 사용할 수 있어야합니다. 구현하기 쉽고 & amp; 유지하다. 그것은 생산성에 관한 것이고 작동하는 많은 아이디어를 테스트 할 수 있습니다. 매개 변수 검사, 워크 포워드 테스트 및 최적화를 허용합니다. 이는 전략 매개 변수에 따라 전략 성능 및 안정성을 조사하는 데 필요합니다. 위의 모든 요구 사항을 만족시키는 문제는 # 2와 # 3이 상충되는 것입니다. 높은 복잡성 (낮은 유지 보수성)의 비용없이 모든 것을 할 수있는 도구는 없습니다. 일반적으로 타사의 포인트 앤 클릭 도구는 맞춤 신호 및 이상한 포트폴리오로 테스트 할 수있는 자유를 엄격하게 제한하는 반면, 스펙트럼의 다른 끝 부분에서는 맞춤식 코딩 솔루션을 구현하는 데 수십 시간 이상이 소요됩니다. 코드가 복잡하고 읽을 수없는 코드로 끝납니다. 따라서 두 세계의 장점을 결합하기 위해 기존의 백 테스팅 프레임 워크를 사용하여 우리의 취향에 맞게 수정하십시오.
다음 게시물에서 나는 세 명의 후보자를 찾고있을 것입니다 :
Zipline은 널리 알려져 있으며 Quantopian의 엔진입니다. PyAlgotrade는 적극적으로 개발되고 잘 문서화 된 pybacktest는 단순성과 성능으로 인해 재미있을 수도있는 가벼운 벡터 기반 프레임 워크입니다. 나는 가설적인 거래 전략을 벤치마킹하는 이들 도구의 적합성을 검토하고있다. 이러한 옵션 중 어느 것도 내 요구 사항에 맞지 않는다면, 적어도 자신의 프레임 워크를 작성하기 위해 투자 할 것인지 결정해야 할 것입니다 (적어도 작동하지 않는 옵션을 확인하여 각 옵션에 대해 사용자 정의 코드를 고수하십시오). 병법.
첫 번째 평가는 Zipline입니다.
Zipline과 Quantopian에 대한 저의 첫인상은 긍정적입니다. Zipline은 개발자 팀이 지원하며 프로덕션 환경에서 테스트되기 때문에 품질 (버그)이 우수해야합니다. 이 사이트에는 훌륭한 문서가 있고 github의 예제 노트북이 있습니다.
그것의 걸림 새를 얻기 위하여는, 나는 exampe 노트북을 다운로드하고 그것으로 노는 시작했다. 실망스럽게도 첫 번째 예제 Simplest Zipline Algorithm : Apple을 구입하면 문제가 발생합니다. 데이터 세트는 3028 일 밖에 없지만이 예제를 실행하면 시간이 오래 걸립니다. 여기 내가 측정 한 것이 있습니다 :
zipline은 이벤트 기반 백 테스터이므로 별 성능을 기대하지는 못했지만 3000 샘플의 거의 1 분이 너무 나빴습니다. 이러한 종류의 성능은 모든 종류의 검사 또는 최적화에 금지됩니다. intraday 데이터 또는 수십만 개의 샘플을 쉽게 포함 할 수있는 여러 증권과 같은 더 큰 데이터 세트로 작업 할 때 또 다른 문제가 발생할 수 있습니다.
불행히도 필자는 Zipline을 사용 가능한 백 테스터 목록에서 제외해야하므로 필자의 요구 사항 4를 충족하지 못합니다.
다음 게시물에서 나는 PyAlgotrade를 보게 될 것이다.
참고 : 현재 시스템은 2 년 전으로 3GB RAM이 장착 된 AMD Athlon II X2 2800MHZ를 실행합니다. 벡터 기반의 백 테스팅을 사용하면 단일 백 테스트의 경우 1 초 미만이고 매개 변수 스캔의 경우 1 ~ 2 분이 소요됩니다. 10 단계의 기본 워크 포워드 테스트와 20x20 격자에 대한 매개 변수 스캔은 zipline을 사용하는 66 시간의 결과를 낳습니다. 나는 그 사람이 아니야.
2014 년 1 월 15 일 수요일
Windows 파일 exlorer에서 IPython 노트북을 시작합니다.
2014 년 1 월 13 일 월요일
2013 년 ETF를 활용하여 현재 귀하의 부채는 어디입니까?
레버리지 된 etf 행동을 알면 레프트 엣세 (etfs)가 벤치 마크보다 우월 할 것으로 예상되므로 부패에서 이익을 얻으려는 전략은 돈을 잃을 것입니다.
우리가 백 테스트 기간의 초기 (250 일)에 가격을 100 $로 정규화하면 2x etf가 1x etf보다 우수하다는 것이 명백합니다.
계산의 전체 소스 코드는 Trading With Python 과정 가입자에게 제공됩니다. 노트북 # 307.
2014 년 1 월 2 일 목요일.
TWTR에 가격표 넣기.
가격은 사용자 가치에서 파생됩니다.
TWTR은 현재 FB 또는 LNKD 사용자별로 더 가치가 있습니다. 경쟁 업체 모두가 소중한 개인 사용자 데이터를 보유하고 있으므로 논리적이지 않습니다. GOOG는 사용자로부터 광고 수익을 추출하는 데 탁월합니다. 이를 위해 검색 엔진부터 Google+, 문서 및 Gmail에 이르기까지 매우 다양한 제품을 제공합니다. TWTR은 닮은 것은 없지만 사용자 당 가치는 Google보다 35 % 낮습니다. TWTR은 FB 또는 GOOG 제품과 비교할만한 제품을 제공하지 않기 때문에 사용자 기반을 확장 할 수있는 여지가 제한적입니다. TWTR은 지금 7 년 동안 주변에 있고 accout를 원하는 대부분의 사람들은 그들의 기회를 가지고 있습니다. 나머지는 상관 없습니다. TWTR 사용자 기반은 변덕스러워지고, 곧 사용할 수있게 될 다음 뜨거운 것으로 옮겨 갈 것입니다.
미래 수익에서 파생 된 가격.
결론.
2013 년 9 월 19 일 목요일.
파이썬과 거래 가능!
2013 년 8 월 18 일 일요일.
짧은 VXX 전략.
이상적인 세계에서, 당신이 그것을 충분히 길게 잡는다면, 미래와 etn 재조정에서 시간 붕괴에 의해 생성 된 이익은 보장되지만, 단기적으로는 상당한 무거운 삭감을 겪어야 할 것입니다. 2011 년 여름을 회상 해보세요. 저는 VIX가 올라 오기 바로 전에 짧은 VXX 포지션을 유지할만큼 불행했습니다 (또는 어리석은). 나는 그때까지 내 계정을 거의 날려 버렸다. 단지 며칠 만에 80 %의 인출로 인해 브로커가 마진 콜을 위협 할 수있다. 마진 콜은 상실을 의미합니다. 이것은 내가 다시하고 싶어하는 상황이 아닙니다. 나는 머리를 항상 차갑게 유지하는 것이 쉽지 않을 것이라는 것을 알고 있었지만 상황의 스트레스와 압력을 경험하는 것은 다른 것이었다. 다행히도 VXX의 동작 방식을 알고 있었기 때문에 당황하지는 않았지만 여백 호출을 피하기 위해 XIV로 전환했습니다. 이야기가 끝나고 8 개월 후 포트폴리오가 힘을 되찾았고 매우 소중한 교훈을 얻었습니다.
VXX가 적절할 때만 단락함으로써 일부 위험을 최소화하는 전략을 살펴 보겠습니다.
위의 차트는 2010 년 1 월 이후 VIX-VXV 데이터를 보여줍니다. 작년의 데이터 포인트는 빨간색으로 표시됩니다.
나는 VXV = f (VIX)에 근사하는 이차 곡선을 두 가지 사이에서 사용하기로했다. f (VIX)는 파란색 선으로 그려집니다.
선 위의 값은 선물이 정상적인 콘탱고보다 강할 때의 상황을 나타냅니다. 필자는 델타 표시기를 정의하는데, 이것은 델타 = VXV-f (VIX)와의 편차입니다.
초록색 영역은 VXX에서의 음수 반환과 일치하는 것이 분명합니다.
델타 & gt; 0 고정 자본 (매일 100 $ 내기) 미끄러짐 또는 거래 비용 없음.
BATS에서 짧은 음량을 얻습니다.
2013 년 8 월 15 일 목요일.
짧은 볼륨 데이터에서 표시기를 작성합니다.
가까운 장래에 일어날 일에 대해 더 많은 정보에 근거한 추측을하기 위해 가격이 포함 된 것에 더 많은 정보가 필요합니다. 온갖 종류의 정보를 영리한 분석에 결합시킨 훌륭한 사례는 긴 블로그의 단편에서 찾을 수 있습니다. 이런 종류의 분석을하는 데는 많은 시간이 걸리고, 파트 타임으로 거래하기 때문에 시간이 없다.
그래서 나는 내 정보를 자동 수집하여 쉽게 소화 할 수있는 형태의 '시장 대시 보드'를 만들었습니다. 이 게시물에서는 짧은 볼륨 데이터를 기반으로 표시기를 작성하는 방법을 보여 드리겠습니다. 이 게시물은 데이터 수집 및 처리 과정을 설명합니다.
BATS 교환은 일일 볼륨 데이터를 사이트에서 무료로 제공합니다.
BATS 교환의 짧은 볼륨 데이터는 압축 된 텍스트 파일에 포함됩니다. 매일 자신의 zip 파일이 있습니다. txt 파일을 다운로드하고 압축을 풀면 내부에있는 내용 (처음 몇 줄)이 표시됩니다.
이 데이터는 의미있는 방식으로 제시되기 전에 상당한 작업이 필요합니다.
제가 진정으로 원하는 것은 언젠가는 데이터뿐 아니라 지난 몇 년 동안 총 볼륨에 대한 짧은 볼륨의 비율입니다. 그리고 실제로 500+ zip 파일을 다운로드하고 수동으로 Excel에 붙여 넣는 것 같은 느낌이 들지 않습니다.
다행히도, 전체 자동화는 몇 줄의 코드 라인으로 이루어져 있습니다.
먼저 파일을 다운로드 할 URL을 동적으로 만들어야합니다.
5 단계 : 차트 만들기 :
2013 년 3 월 17 일 일요일.
Trading with Python 코스 - 상태 업데이트.
오늘부터 4 월 두 번째 주에 시작할 새로운 웹 사이트와 자료를 준비 할 것입니다.
2012 년 1 월 12 일 목요일.
CBOE 선물 데이터에서 VXX 재구성
아래의 스크립트는이 프로세스를 자동화합니다. 첫 번째 버전 인 downloadVixFutures. py는 cboe에서 데이터를 가져 와서 각 파일을 데이터 디렉토리에 저장 한 다음 단일 CSV 파일 인 vix_futures. csv에 결합합니다.
두 번째 스크립트 reconstructVXX. py는 vix_futures. csv를 구문 분석하고 VXX의 일일 수익을 계산하고 결과를 reconstructedVXX. csv에 저장합니다.
계산을 확인하기 위해 필자는 시뮬레이트 된 결과를 SPVXSTR 인덱스 데이터와 비교해 보았습니다. 이 두 가지는 꽤 잘 일치합니다 (아래 차트 참조).
VXX를 재구성하는 코드입니다.
2011 년 12 월 26 일 월요일
howto : 옵저버 패턴.
리스너 클래스는 어떤 유형이든 상관 없습니다. 여기서는 Bob, Dave & amp; 백인. 그들 모두는 Sender에 가입되어있는 메소드를 가지고 있습니다. 구독 된 메서드에 대한 유일한 특별한 점은 보낸 사람, 이벤트, 메시지의 세 가지 매개 변수가 포함되어야한다는 것입니다. Sender는 Sender 클래스의 클래스 참조이므로 청취자는 누가 메시지를 보냈는지 알 수 있습니다. 이벤트는 일반적으로 문자열을 사용하는 식별자입니다. 선택적으로 메시지는 함수에 전달되는 데이터입니다.
좋은 세부 사항은 리스너 메소드가 예외를 throw하면 추가 이벤트로부터 자동으로 등록 취소됩니다.
2011 년 12 월 14 일 수요일
guiqwt로 플로팅하십시오.
데이터 수집 : ibpy & amp; tradingWithPython. lib. yahooData - 확인하십시오.
데이터 컨테이너 : 팬더 & amp; sqlite - 확인하십시오.
플로팅 라이브러리 : matplotlib - ehm. 아니.
그러나 파이썬에서 자주 발생하는 것처럼 누군가는 이미 어딘가에서 이미 작업에 딱 맞는 킥 - 엉덩이 툴킷을 작성했습니다. 그리고 guiqwt가 그 것처럼 보입니다. 대화 형 차트는 몇 줄의 코드 줄에 불과하므로 여기에서 예제를 살펴보십시오. 커브 대화 상자 만들기. 이를 위해 guiqwt 예제 코드를 약간 수정했다.
. 만약 내가 x 축에 날짜를 설정하는 방법을 알고 있다면.
2011 년 11 월 4 일 금요일.
어떻게 파이썬 개발 환경을 설정합니다.
2. Tortoise SVN을 설치하십시오. 이것은 Google 코드에서 소스 코드를 가져와야하는 유틸리티입니다.
3. Pandas (시계열 라이브러리) 설치
코드를 얻으려면 Tortoise SVN 설치 후 사용할 수있는 'Svn Checkout'Windows 탐색기 컨텍스트 메뉴를 사용하십시오. Checkout (Checkout 디렉토리를 원하는 위치로 변경하지만 tradingWithPython으로 끝나야 함) :
이제 다 됐습니다. \ cookbok 디렉토리에서 예제를 실행할 수 있습니다.
2011 년 10 월 28 일 금요일.
kung fu pandas는 데이터 문제를 해결할 것입니다.
얼마 전 필자는 금융 데이터 작업에 특히 적합한 데이터 분석 툴킷을 보았습니다. 그 기능의 표면을 긁어 낸 후에 나는 이미 그것이 제공하는 것에 의해 날아간 다. 이 패키지는 Wes McKinney가 적극적으로 개발하고 있으며, 가장 강력하고 유연한 오픈 소스 데이터 분석 / 조작 도구를 만드는 것이 야망입니다. 글쎄, 나는 그가 잘하고 있다고 생각한다!
결과는 다음과 같습니다.
이봐, 나 한테 시간을 절약 할 수 있었어! 그러나 앞으로의 작업에서 DataFrame 객체를 표준으로 사용하게 될 것이므로 앞으로도 계속 도움이 될 것입니다.
No comments:
Post a Comment