Was sind typische Algo-Trading-Strategien für Aktienoptionen wie zu viele Leute fragen Sachen wie diese Jemand mit einem soliden intra-Tage-Short-Halteperiode Algo-Derivate-Strategie vermutlich won039t post es auf eine Website. Allerdings, Algo-Händler, abhängig von ihrer Latenz, Liebe zu Spam ETF039s mit Anführungszeichen und beobachten Sie die ETF039s versuchen, langsam auszugleichen. Während die ETF neu ausbalanciert, versucht die Arbitrage-Gesellschaft, kurzfristige Preisunterschiede zwischen dem Aktienkurs des etf und dem Preis auf dem Optionskontrakt zu finden. Sie experimentieren mit verschiedenen Strategien, um die Optionen I039m sicher entweder Weg, aber das ist ein einfaches Beispiel: Dieses Diagramm ist 60 Tage von Anführungszeichen für 5 verschiedene ETF039s, die alle durch die SampP in irgendeiner Form denominiert sind. Wie Sie sehen können, gibt es Cluster von Sigma 5 Ereignisse in allen 5 etfs in kleinen Zeiträumen. Dies ist der HFTAlgo Händler Spamming Zitate, und beobachten sie wieder auszugleichen. Verwandte Fragen Weitere Antworten unter Carl Savant. Finance Professional, Blogger Es kommt darauf an, ob Sie intraday (oder sogar hochfrequente) Strategien oder jene mit einer niedrigeren Handelsfrequenz (täglich, wöchentlich, monatlich) suchen. Paul039s Antwort unten deckt die höhere Frequenz-Bit sehr gut. Beachten Sie, dass für eine private Person gibt es einige ernsthafte anfängliche Anstrengungen zu machen, bevor Sie können erfolgreich an diesem Spiel teilnehmen. Eine Menge von niedrigeren Frequenz Algos implementieren Strategien, die Händler würde sonst tun, auf einer diskretionären Basis. Momentum-Trading-Strategien zum Beispiel können leicht in einem Algorithmus implementiert werden. Dies kann weniger exotisch als die HF-Sachen, aber it039s technisch algo sowie die Barrieren der Eintrag sind viel niedriger. Nach dem Anschauen deines Videos ist meine Idee zur Börsenoption jetzt verfeinert. Ich bin vertraut mit der Tatsache, dass in Aktienoption gibt es zwei Arten von Optionen zuerst, eine Call-Option bietet Ihnen die Möglichkeit, einen Anteil an einem Unternehmen zu einem festen Preis vor einem bestimmten Zeitpunkt später zu kaufen. Die zweite ist eine Put-Option, die die Wahl ist, einen Anteil eines bestimmten Unternehmens zu einem vorbestimmten Preis vor einem vorbestimmten Datum zu verkaufen. Dank für Ihre fantastischen Informationen. Auch habe ich die gleichen Informationen auf einer anderen Website, die Genius Trading System - Learn to Trade Optionen auf Aktien, Indizes und ETF039s gefunden. Vielen Dank. Mehr Antworten finden Verwandte Fragen Verwandte FragenBitfinex gab heute den Start von Bergbau-Verträge als Handelsprodukt auf ihrer Plattform bekannt. Insgesamt wurden 100 THS (Terahashes pro Sekunde) mit einer Laufzeit von 3 Monaten zum Handel unter dem Namen TH1BTC zur Verfügung gestellt. Die 100 THS sind Teil eines größeren Pools von 3500 THS, so dass mehr Bergbau-Verträge in Zukunft verfügbar sein könnten. Interessanterweise ist dies das erste Mal, dass es möglich ist, einen Bergbau-Vertrag zu kürzen. Der Abbau eines Bergbaukontrakts bedeutet, dass wir den Betrag von Bitcoin jetzt erhalten (den Preis, den wir verkaufen) und anschließend die Dividendenzahlung (in Bitcoin) über die folgenden 3 Monate, bis der Vertrag Mitte Dezember abläuft. Ein Gewinn wird erzielt, wenn die Summe aller ausgezahlten Dividenden (zuzüglich der Zinsen, die wir gezahlt haben, um den Vertrag zu kürzen) geringer ist als das, was wir zu Beginn des Verkaufs des Vertrages (an eine andere Person) erhalten haben. Dies bedeutet, dass der Preis von TH1BTC von 3 Variablen abhängt (in absteigender Reihenfolge): Veränderung der Bergbauproblem bis zum 15. Dezember Die verbleibende Zeit bis zum 15. Dezember Der Zinssatz (Swapsatz) Wenn Schwierigkeiten die Dividendenzahlungen kleiner werden, weil 1 THS repräsentiert einen kleineren Bruchteil der gesamten Netzhash-Leistung. Daher sollte der Preis eines Vertrages sinken, wenn die Schwierigkeiten zunehmen. Je näher wir bis zum Ausatmen des Fiebers Bitcoins können Geist mit 1 THS insgesamt. Daher sollte der Preis eines Kontrakts sinken, je näher wir zum Auslauf kommen und einen Preis von 0 bei Verfall erreichen. Je höher der Zinssatz, desto teurer ist es, den Vertrag über die volle Länge von 3 Monaten einzugeben und zu halten. Bitfinex bietet keine 90-Tage-Swaps an, so dass ein Vertrag mit dem Ziel, es zu halten, bis das Ende ziemlich viel Zinsrisiko enthält, weil an einem gewissen Punkt ein neuer Swap (bei einem potenziell ungünstigen Zinssatz) genommen werden muss. Dies ist weniger ein Problem beim Gehen lang (Bitcoin Preise sind in der Regel niedrig) als beim Gehen kurz (es gibt nur maximal 100 Verträge zur Verfügung, insgesamt keine nackte Shorting). Der Ausgleich für die Risikopreise sollte steigen, wenn die Swapsätze steigen. Das große Unbekannte ist natürlich die Veränderung in den Bergbau Schwierigkeiten in den nächsten 90 Tagen. In der folgenden Abbildung sehen wir, wie sich die Schwierigkeit in den letzten 6 Monaten verändert hat. Die Daten sind von Tradeblock und es zeigt nicht nur eine grafische Darstellung der vergangenen Veränderungen in der Schwierigkeit (Schwierigkeitsänderungen alle 14 Tage abhängig von der Vergangenheit Hash Rate Mehr Infos finden Sie im Wiki), sondern auch einige grundlegende Zusammenfassung Statistiken. Im Durchschnitt hat sich die Schwierigkeit 27 in den letzten 30 Tagen und 77 in den letzten 60 Tagen erhöht. Zur Schätzung des fairen Preises eines TH1BTC werden wir davon ausgehen, dass die Schwierigkeit im Durchschnitt 15 pro Monat über die nächsten 3 Monate steigen wird. Derzeit ist der Preis für den Kauf eines Vertrags im Wert von 1 THS 2 BTC. Der Pool Gebühr 3 ist und wir ignorieren Zinsen. Füllen Sie alle Informationen, die wir erhalten die folgenden Ergebnisse: Wenn wir also einen langen Vertrag auf der Grundlage unserer Annahmen gehen wir einen Verlust von etwa 0,39 Bitcoin (ein bisschen mehr in Wirklichkeit, da wir mit dem Bergbau in der Mitte des Septembers bis Mitte beginnen Von Dezember), da die erwarteten Dividenden (monatliche Einnahmen) nicht die anfänglichen Kosten von 2 BTC vor Ablauf des Vertrags abdecken werden. Auf der anderen Seite, würde zu einem Preis von 2 Bitcoin kurz gehen würde einen Gewinn von etwa 0,39 Bitcoin pro Vertrag erzeugt haben. Denken Sie daran, dass wir didn8217t enthalten Swap-Kosten, die derzeit rund 1 pro Tag (). Es gibt zwei Möglichkeiten, um die Ergebnisse zu betrachten. Entweder könnten wir sagen, dass die Preise für TH1BTC derzeit überbewertet sind und näher bei etwa 1,5 BTC liegen sollten. Wenn wir davon ausgehen, Schwierigkeiten werden mehr als 15 pro Monat steigen, dann sollten die Preise sogar noch niedriger sein. Oder wir könnten sagen, dass der Markt effizient ist und die Preise korrekt sind, was implizieren würde, dass der Markt in den nächsten 90 Tagen durchschnittlich etwa 2 pro Monat sinken dürfte. In jedem Fall werden die Ergebnisse in 90 Tagen mit Sicherheit bekannt sein. Kämpfen, um von der jüngsten Bitcoin-Flash-Crash, die auf Bitfinex entstanden nur vier Tage zu erholen. Die Bitcoin-Preise nahmen heute einen weiteren Tauchgang ein, da Margin-Trader ihre Positionen auf BTC-e liquidierten. Die Veranstaltung begann um 1:36 PM (UTC1), als große Verkaufsaufträge anfingen, oben auf dem drittgrößten westlichen Bitcoin Austausch BTC-e zu erscheinen. Das Abwärtsmomentum nahm stetig zu, da das Orderbuch zunehmend dünn wurde, und stürzte die Preise auf einen Tiefstand von USD 309 pro Bitcoin um 1,43 PM. In den folgenden Minuten stiegen die Preise rasch auf dünnem Volumen zurück auf rund USD 442, da Arbitrage-Händler begannen, den Rabatt gegenüber anderen Börsen zu nutzen. BTC-e ist eine der wenigen großen Börsen, die ihren Kunden über die MetaTrader-Plattform seit November 2013 Margin-Trading anbieten, aber die Details, wer exakt die für den Margin-Handel notwendigen Mittel zur Verfügung stellt, blieben unklar. Die Form und insbesondere Timing des Crash-Punkte in Richtung Margin-Händler werden liquidiert (oder Stop-Aufträge ausgeführt werden), ähnlich wie auf Bitfinex vor ein paar Tagen passiert. Im Gegensatz zu Bitfinex, das über offene Swap-Positionen transparent ist. BTC-e liefert keine wichtigen Daten, die für eine gründlichere Analyse erforderlich wären, und so kann diese letzte Aussage nur als eine gute Vermutung angesehen werden. Anders als Bitfinex, das auf einem versteckten Algorithmus basiert, um den Auftragsfluss zu steuern. BTC-e scheint keine besonderen Schutzmaßnahmen vorhanden zu haben, um solche Ereignisse zu mildern. Der Rückgang unter 400 war vor allem auf einen Mangel an Angeboten im Orderbuch zurückzuführen, und nicht, weil der Markt glaubte, dass der wahre Wert unter 400 lag, da der Rückstoß zurück auf über 440 Minuten später im Grunde bewiesen wurde. Daher könnte das Anhalten des Handels während der extremen Abwärtsvolatilität leicht das Blutvergießen unter den Margin-Händlern abgelehnt haben, indem anderen Marktteilnehmern mehr Zeit gegeben wurde, das Orderbuch zu verdicken. Update 4:58 PM (UTC1): BrCapoeira hat auf Reddit eine interessante Grafik geschrieben, die auf Daten der Metatrader-Plattform basiert: Diese Grafik impliziert, dass ein einzelner großer Auftrag die Ursache für dieses Ereignis war. Ob dieser Auftrag aufgrund eines Margin Call, eines einfachen Fehlers, des Manipulierens des Marktes oder der Eröffnung einer großen Short-Position entstanden ist, bleibt unklar. Der gesunde Menschenverstand würde vermuten, dass dies wahrscheinlich das Ergebnis eines Margin Call eines einzigen großen Händlers war. Mein vorheriger Beitrag zu diesem Thema wurde während der Diskussionen in der Folge des jüngsten Bitcoin-Flash-Crash aufgewachsen. Coindesk war einer der ersten, der es abholte, und seitdem begannen verschiedene Beiträge über die Transparenz und die mögliche Verantwortlichkeit des Austauschs zur aktiven Verwaltung der Auftragsausführung zu erscheinen. Als Ergebnis dieser Ereignisse Josh Rossi, Vice President Business Development bei Bitfinex, ging auf Reddit, um offen einige der Fragen angesprochen, die gegen die Börse. Die Tatsachen, die wir sicher wissen, sind, dass es einige große Verkaufsaufträge kurz vor dem Absturz gab, zum Beispiel ein 500 Verkaufsauftrag auf Bitstamp um 9.49 Uhr (UTC1), ungefähr 6 Minuten bevor ein großer Verkauf auf Bitfinex den Absturz auslöste. Doch die Daten sagen uns nicht, ob es Insiderhandel, eine Form der Marktmanipulation war. Oder ein einfacher Fehler. Tatsache ist, dass nach dem Bitcoin Blitz Absturz offenen Swap-Positionen von rund 28m auf 24m, die etwa 8400 Margin Long Positionen wurden geschlossen (bei einem Durchschnitt von 475) in einer Weise (Margin Call) oder ein anderes (Stop-Order-Hit) sank. Die Daten sagen uns nicht, was das Verhältnis ist aber nach Josh nur etwa 650 Bitcoins wurden als Ergebnis von Margin-Anrufe verkauft. Wie richtig bemerkt von Jonathan Levin. Tatsache ist, dass ab ca. 24 Stunden vor dem Bitcoin-Flash-Crash bis zum Crash selbst weitere 1000 Bitcoins in Short-Positionen entnommen wurden und etwa 2500 Shorts anschließend während des Crashs geschlossen wurden. Ob diese Shorts zur Sicherung bestehender Positionen geöffnet wurden, da ein böswilliger Versuch, einen Margin-Aufruf auszulösen, oder eine Möglichkeit, den Markt mit privaten Informationen auf den Markt zu bringen, aus den verfügbaren Daten nicht ermittelt werden kann (es sieht seltsam verdächtig aus). Was war unerwartet Persönlich, ist der interessante Punkt nicht, dass Bitcoin-Flash abgestürzt. Plötzliche Preisschwankungen passierten in der Vergangenheit und werden in Zukunft auch in illiquiden Märkten wie Bitcoin passieren. Der interessante Punkt ist die Beteiligung von Bitfinex und wie sie die Auftragsabwicklung aktiv gesteuert haben, ohne die Marktteilnehmer vorher zu informieren. Die Bitfinex-Matching-Engine wurde während des gesamten Crashs nicht gestoppt, obwohl es langsamer wurde (aber nirgendwo so schlimm wie die berüchtigte 70-minütige Orderverzögerung auf dem nun verstorbenen MtGox-Tausch während des Absturzes im Jahr 2012). Jedoch was Bitfinex taten, wurde sie etwas eingeführt, das sie jetzt als Geschwindigkeitsstöße bezeichnen. Was es bedeutet, ist, dass sie im Wesentlichen Fahnen Bestellungen, die sie für ungültig oder potenziell gefährlich und verlangsamen sie absichtlich. Auf den ersten Blick mag das eine nette Idee sein. Wer nicht will, dass ein Filter böswillige Anordnungen beseitigt oder verlangsamt, aber wie so oft mit solchen Sachen steht der Teufel im Detail. Das Problem ist, dass Bitfinex nicht (und möglicherweise nie wird) öffentlich machen, wie genau sie eine Bestellung als 8220bad8221 und 8220slow es down8221 kategorisieren. Wenn ein Marktteilnehmer beschließt, eine große Verkaufsauftrag gegen ein dünnes Auftragsbuch zu setzen, dann that8217s seine Entscheidung. Ob seine Handlung beabsichtigt war oder nicht, ist nicht an der Börse zu entscheiden. Es könnte sein, dass dieser Marktteilnehmer einfach die erste Person war, die auf ein Großereignis reagiert und bereit ist, die zusätzlichen Kosten des daraus resultierenden Schlupfes im Vorgriff auf eine große Preisbewegung zu tragen. Es gibt einfach keinen Weg, Ordnungen a priori genau zu klassifizieren als 8220good8221 oder 8220bad8221, da das automatisch Wissen über alle unmittelbaren zukünftigen Ereignisse annehmen würde. Was kann verbessert werden Mistakes (8220fat finger8221, Algorithmus gehen Chaos) passieren, werden Margen gerufen und die Leute versuchen, das System in jeder möglichen Weise zu spielen. Logischerweise müssen die Märkte und ihre Teilnehmer geschützt werden. Bitfinex war sich der potenziellen toxischen Auftragsströme und präventiver Gegenmaßnahmen bewusst. Das einzige, was sie vergessen, war es, ihre Kunden über die versteckten Sicherheits-Features zu informieren. Das Verbergen dieser Schutzmaßnahmen von der Öffentlichkeit fügt dem Markt Unsicherheit hinzu (vor allem jetzt, wo wir wissen, dass sie existieren und manchmal etwas tun) und bringt im Wesentlichen alle Händler in die Hände von Bitfinex. An diesem Punkt kann ein Händler nur hoffen, dass Bitfinex wird immer in den besten Absichten ihrer Kunden handeln. Diese Hoffnung könnte aber zwecklos sein, denn Bitfinex macht Geld aus Handelsgebühren, unabhängig davon, ob ein Händler tatsächlich Geld macht. Man muss nicht lange denken, um das verborgene Potenzial für Missbrauch in einem solchen System zu verwirklichen. Der Hauptgrund von Josh aufgeworfen, warum Bitfinex nicht beabsichtigt, ihre Algorithmus zu veröffentlichen ist zu vermeiden, dass Händler die Möglichkeit, es zu nutzen, ist gefälscht und die folgenden zeigt, warum. Das sind die offiziellen marktweiten Leistungsschalter von NASDAQ, die online und vollständig transparent für jeden Marktteilnehmer. Diese Regeln sind sicher nicht perfekt, aber sie sind einfach, transparent und arbeiten für eine der größten Aktienmärkte der Welt. Nun, ich habe großen Respekt für die Menschen auf der Bitfinex-Plattform arbeiten, aber ich bezweifele, dass sie es geschafft, kommen mit einem Algorithmus, der Marktteilnehmer besser als die, die von einer großen Börse von mehr als 900.000.000 Aktien pro Tag im Durchschnitt verwendet schützt . Und wenn sie es taten, ist jetzt die Chance für Bitfinex, es der Welt zu beweisen und möglicherweise Geschichte zu schreiben, indem sie den großen Jungs lehrt, wie man einen Austausch richtig durchführt. Wenn es um den öffentlichen Austausch geht, ist Transparenz ein Muss, nicht nur für Bitfinex, sondern für jeden Austausch. Die Marktteilnehmer müssen genau wissen, was geschieht, wenn sie einen Auftrag erteilen und unter keinen Umständen allein auf guten Glauben verlassen müssen. Schutzmaßnahmen sind wichtig, weil Unfälle passieren und Märkte Crash, aber es ist nicht an der Börse, sich in geheimer Ordnung Diskriminierung. Es gibt verschiedene Möglichkeiten, um die Finanzmärkte zu schützen und keiner von ihnen ist perfekt. Hinzufügen von Komplexität erhöht in der Regel die Chance für unbeabsichtigte Nebenwirkungen und daher ein einfacher, transparenter Ansatz scheint geeigneter als eine verborgene, komplexe. Vor zwei Tagen senkte BitMEX ihre Handelsgebühren auf 0 und feierte sie durch die Freigabe eines Basismarktes, der Bot auf Github macht. BitMEX führt derzeit eine Handelsherausforderung bis zum 29. August 2014, um ihre neue Plattform zu fördern. Freigabe einer Markierung bot ist wahrscheinlich eine interessante und effektive Möglichkeit, um API-Verkehr zu erhöhen und Stress-Test der Plattform ein wenig. Natürlich konnte ich nicht widerstehen und schaute mich um. Market-Maker ist ein gegabelter Liquidbot. Das ursprünglich entworfen wurde, um auf dem jetzt obsolet MtGox Austausch laufen zu lassen. Es gab einige kleinere Änderungen (neue api-Klasse, um mit BitMEX zu verbinden, einige zusätzliche Drucke zur Konsole, Änderungen bei der Anpassung an Futures-Kontrakte und ein riesiger und unnötiger Druck zur Konsole beim Start), aber keine signifikanten Änderungen der Handelslogik. Der Algorithmus verwendet REST und überprüft nur alle 60 Sekunden Änderungen. Dies disqualifiziert bereits den Bot, da er zu langsam ist, um auf laufende Änderungen im Orderbuch zu reagieren. BitMEX Begrenzungen Anfragen an die REST-API auf 150 pro 5 Minuten, so können Sie versuchen, die Reduzierung der 60 Sekunden, um etwas wie 3, aber es ändert sich die Tatsache, dass, sobald die Märkte beginnen zu bewegen, werden Sie die Grenze treffen und mit offenen Positionen stecken. Um fair zu sein, bietet BitMEX die Bot mehr als Marketing-Stunt und explizit erklärt, dass die Umstellung auf WebSocket wird sehr vorteilhaft sein, da es Echtzeit-Updates ermöglicht. Insgesamt ist der Algorithmus solide geschrieben, technisch funktioniert und ist einfach einzurichten, aber es macht Sie kein Geld auf lange Sicht. Wenn jemand ernsthaft bedenkt, um diesen Bot zu verwenden, würde ich die folgenden kleinen Änderungen empfehlen, um den Code mehr brauchbar zu machen: 1. Wechseln Sie zu Websocket 2. Exit position on close: 3. Build-Aufträge ab dem Mittelpunkt: Zusätzlich würde ich raten zu messen Volatilität in irgendeiner Weise und passen die Distanz zwischen Aufträgen dynamisch sowie die Größe. Während meiner Tests war die API immer ansprechbar und akkurat. Das Volumen an der Börse ist noch niedrig, aber die Grundlagen der Plattform sehen vielversprechend aus. Dieser Bot ist ein lustiges Werkzeug, um Benutzer in die Welt der Markteinführung und algorithmischen Handel einzuführen, aber es gewinnt eine Chance gegen etablierte Algorithmen. Hinweis: Wenn Sie erwägen, mit diesem Algorithmus im Auge zu behalten, dass die Markteinführung ein Vollzeitjob ist. Alles, was weniger als komplette Widmung, schnelle Reaktionszeit und 100 Uptime wird dazu führen, dass Sie Geld verlieren. Edit: Follow-up auf die Nachwirkungen hier Heute Bitcoin Preise nahm einen Tauchgang als Margin Händler auf einer der größten Börse Bitfinex erhielt ihre Aufträge liquidiert. Für viele enge Marktbeobachter und anspruchsvollere Händler war das keine Überraschung. In der Tat haben sich lange Positionen in den letzten Monaten kontinuierlich aufgebaut, in Erwartung einer neuen Blase in Bitcoin-Preisen und erreichten bis zu 30 m in hervorragenden Swap-Positionen auf Bitfinex. Nun wäre dies kein Problem für sich alleine, solange es genügend Kapital zur Unterstützung des Darlehens gibt. Leider waren die meisten dieser Long-Positionen rund 600 8211 640 USDBTC eingetragen und die Sicherheiten wurden meistens in Bitcoins selbst zur Verfügung gestellt. Das folgende Diagramm zeigt schön den Aufbau von Longpositionen, die um den 14. Juli mit knapp 32m in Swaps reichen. Wenn Sie eine schnelle Mathematik basierend auf der Instandhaltungsspanne von Bitfinex von 13 ausführen und Bitcoin als Sicherheiten annehmen, stellen wir fest, dass Margin-Aufrufe um die 520 8211 540 USDBTC-Marke beginnen sollten. Gestern waren die Preise nah, und heute sind sie endlich über die Klippe gesprungen. Das Problem ist, dass, sobald Margin-Anrufe in Sie gesetzt haben eine kaskadierende Wirkung, die durch das Orderbuch reißt, wodurch noch mehr Aufträge, um den Punkt der keine Rückkehr zu erreichen und die Erhöhung der Abwärtströmung weiter. Diese Art von Veranstaltungen sind nicht auf Bitcoin-Börsen beschränkt, sondern kann auch auf großen Börsen wie während der 2010 Flash-Crash in den USA auftreten. Die Ursache eines solchen Flash-Crashe kann variieren und geht von Fett-Finger Fehler, Programmierfehler zu Cascading Margin-Anrufe. Es ist interessant zu sehen, wie sich die Börsen mit diesen Ereignissen befassen. In den USA implementierte Nasdaq marktweite Leistungsschalter, die den Handel unter solchen extremen Umständen stoppen werden. Bitcoin Märkte sind noch nicht so fortgeschritten und in der Regel weiter Handel. Wenn wir die Order-Aktion auf Bitfinex heute sehen, sehen wir etwas ganz Besonderes: Es scheint (und das ist nur eine Vermutung, da es keinen offiziellen Kommentar aus der Börse gibt) als ob Bitfinex einen Algorithmus ausführt, um die Margin-Aufrufe zu bearbeiten. Der Algorithmus beginnt zu verkaufen, sondern begrenzt sich auf eine 10 Tropfen der Preise innerhalb von 1 Minute. Wenn die Preise mehr als 10 in 1 Minute fallen, hört es auf zu verkaufen und wartet auf Kaufaufträge. Sobald es wieder eine gewisse Anzahl von Kaufaufträgen im Orderbuch gibt, beginnt der Algorithmus wieder zu verkaufen, bis alle Margin-Anrufe erfüllt sind. Edit: LeMogawai war der erste, der dies in diesem Beitrag zeigen und es entspricht meiner persönlichen Beobachtung zum Zeitpunkt der Veranstaltung. Dies scheint ein interessanter Umgang mit kaskadierenden Margin-Anrufen zu sein, kann aber auch als Borderline-Marktmanipulation von der Börsenseite betrachtet werden. Durch die Ausbreitung der Verkaufsaufträge im Laufe der Zeit wird die Abwärtsdynamik verringert, aber Trader am Ende Handel gegen den Austausch selbst und nicht den Markt mehr. Die Börse hat zu diesem Zeitpunkt einen informativen Vorteil und ist daher eher als die Händler zu profitieren. Glücklicherweise dauerte diese nur etwa 10 Minuten, wonach die Kontrolle auf den Markt zurückgegeben wurde. Andere Börsen, die auch Margin-Trading wie BTC-e und OKcoin anbieten, befinden sich nun in einer günstigen Position und können von den heutigen Veranstaltungen lernen. Die Implementierung eines Systems, das den Leistungsschaltern von großen Börsen wie Nasdaq ähnlicher ist, könnte ein intelligenter erster Schritt sein. Vor kurzem arbeite ich, um meine neue Handelsplattform zu erhalten. Diese neue Version basiert auf Python, verwendet MySQL, um eine Datenbank aller Zeitreihen verschiedener virtueller Währungen mit automatischer Nachfüllung von BitcoinCharts zu speichern und integriert die 3 wichtigsten Börsen MtGox, BTC-E und Bitstamp. Die Plattform wird als Weg, um Backtest einige Strategien und engagieren sich im automatischen Handel verwendet werden. Im Vorfeld habe ich beschlossen, einige Daten von BTC gegen USD von BitcoinCharts zu ziehen und basierend auf den Ideen von Hashem und Timmermann (1995) eine einfache Handelsstrategie umgesetzt. Die Idee ist, das Vorzeichen der t1-Periodenrendite basierend auf einer Regression zu prognostizieren, die auf einer automatischen Auswahl von technischen Indikatoren während der letzten n Periode bis t geschätzt wird. Dann, nachdem t1 passiert ist, aktualisieren wir das Modell und versuchen, t2 vorherzusagen, unter Verwendung aller verfügbaren Daten der letzten n Perioden bis t1 und so weiter. Für meine Bachelor-Arbeit habe ich vier verschiedene technische Handelsregeln in den Devisenmärkten untersucht. Es verwendet MCS - und SPA-Test, um nach gültigen Modellen unter verschiedenen Parametern zu suchen, die nicht dem Daten-Snooping unterliegen. Unter Berücksichtigung realistischer Transaktionskosten finden wir keine Anzeichen für Überrenditen, die im Einklang mit der Markteffizienz stehen. Mit diesem Code sollten Sie in der Lage, Bitcoin Arbitrage-Möglichkeiten in BTC-e suchen. Es nutzt die Idee eines Preises und gilt dreieckigen Arbitrage, unter Berücksichtigung der Kosten und Ausbreitung. Der Grund, dass ich dies hier posten ist, obwohl es funktioniert, sind die Chancen, dass Sie zu langsam sein, um mit anderen Investoren, die das gleiche tun konkurrieren. Mögliche Verbesserungen wären die Berücksichtigung der Orderbuch-Tiefe zu berücksichtigen und die Trades dynamisch zu trennen und zu versuchen, andere Trader zu unterbieten, die das gleiche tun. Auch die Einrichtung alles auf einem dedizierten Server in der Nähe der physischen Lage des BTC-e Match-Engine sollte drastisch reduzieren Verzögerung und geben Ihnen eine potentielle Kante. Post navigationQuantitative Futures, Aktien und Options Trading (VERFÜGBAR FÜR MATLAB FREELANCING) Es gibt mehrere Papiere zu diesem Thema. Eine schnelle Google-Suche gibt Ihnen eine Liste der Forschungsarbeiten zu diesem Thema. Cointegration Technik wird manchmal verwendet, um Pairs Handel zu tun. Indem man prüft, ob ein Paar von Aktien kointegriert ist, könnte man lange auf eine Aktie und kurz auf die andere (multipliziert mit Hedge Ratio) gehen. Wir versuchen also marktneutral zu sein. Carol Alexander in dem Buch Market Models gibt eine sehr gute Erklärung der Theorie dahinter. Ein Satz von I (1) - Serien wird als kointegriert bezeichnet, wenn es eine Linearkombination dieser Serien gibt, die stationär ist. Lager A und Lager B sind zusammengefasst, wenn A, B ungefähr I (1) sind, aber es gibt ein Hedge-Verhältnis, so dass Spread StockA - HedgeRatio StockB ungefähr I (0) ist. I. e Die Ausbreitung ist stationär oder mittelwertig. So führen wir die folgenden Schritte durch, um zu prüfen, ob zwei Bestände kointegriert sind: Schritt 1. Überprüfen Sie, ob die beiden Vorräte in Reihenfolge 1 integriert sind. (1) Dies geschieht mit Augmented Dickey Fullertest Schritt 2: Nachdem sie den obigen Test bestanden haben, führen Sie eine Cointegration ein, um den Dickey-Volltest zu überprüfen. Schritt 3: Nachdem der ADF - Können wir eine gewöhnliche Least Squares Regression durchführen, um die Hedge Ratio (die Beta der Regression) zu erhalten. Schritt 4: So würde das Spread StockA - HedgeRatio StockB jetzt kointegriert sein (mittlere Wiederherstellung) Schritt 5: Half Life Half Life im Grunde sagt Ihnen, wie viel Zeit dauert es für die Ausbreitung wieder auf die Hälfte der Entfernung des Mittelwerts zurück. Schritt 6: Berechnen Sie die Verbreitung HEUTE. Berechnen Sie die Standardabweichung der Ausbreitung bis zum Vortag. Prüfen Sie, wie weit die aktuelle Spread aus dem historischen Durchschnitt ist. Wenn es größer als 1,5 Standardabweichungen (oder irgendeine andere Schwelle) ist, dann gehen Sie kurz die Ausbreitung sonst gehen Sie lang die Ausbreitung. I. e Go Short Stock A und Long Hedge Ratio Stock B. Seien Sie im Handel, bis die Halbwertszeit für das Paar berechnet. Wenn die Halbwertszeit vergangen ist, geh aus dem Handel. Das sind einfache Schritte. Man sollte mehr Arbeit und Forschung auf sie legen, um sie zu einer praktischen Handelsstrategie zu entwickeln. Einige interessante Papiere sind hier: MATLAB Code Hier: CointPairsTrade. m ist die Hauptfunktion und ruft alle anderen Funktionen Bitte lassen Sie mich wissen, wenn es irgendwelche Bugs Hier ist die Formel, die man verwenden, um die implizite Dividendenrendite berechnen könnte: PV (Dividende) - CALL PUT (Spot - Strike) ((Strike exp (rT)) - Strike) wobei r der Zinssatz zum Verfall ist. T ist die Zeit bis zur Fälligkeit in Jahren. Implizierte Dividendenrendite PV (Dividende) (T Spot) Beispiel PFE, Pfizer Inc Unter Berücksichtigung der Optionspreise von Juni 2010 Expiration Spot 18,49 CALL 1,72 PUT 1,52 r 0,16 T 0,5 (ungefähr) ATM Strike 18 Setzen Sie die obigen Werte in die Gleichung ein Unten: PV (Div) -1,72 1,52 (18,49-18) (18 exp (0,00160,5)) - 18) Angegebener Dividendenertrag 0.3044 (0,5 18,49) 0,0329 3,29 Um eine Meinung zu äußern, wird die Dividendenrendite reduziert Sollte lange gehen PFE Juni 2010 18 CALL, kurz ein Juni 2010 18 PUT und SHORT 100 Aktien der PFE-Aktie. Um eine Meinung zu äußern, dass die Dividendenrendite erhöht wird, sollte man kurz gehen PFE Juni 2010 18 CALL, lange ein Juni 2010 18 PUT und lange 100 Aktien der PFE-Aktie. Sonntag, 26. Juli 2009 Hier zeige ich, wie man einem einfachen Ansatz folgen kann, um die Profitabilität von Option Straddles rückgängig zu machen. Straddles sind eine Möglichkeit, sich der Volatilität einer Aktie auszusetzen. A Long Straddle bedeutet Kauf einer AT-THE-MONEY CALL und PUT-Option mit dem gleichen Ablaufdatum. Umgekehrt für eine kurze Straddle-Position. Um von einer Straddle-Position profitieren zu können, sollte man in der Lage sein, historisch zu berechnen, wie oft die Aktie über die Prämie hinausgehen würde, die man für die STRADDLE-Position bezahlen würde. Zum Beispiel, wenn ein Straddle auf eine Aktie 4 kostet, ist es sinnvoll zu überprüfen, wie oft in der Vergangenheit hat die Aktie bewegen mehr als 4, UP oder DOWN. Dh, wenn die Option in 30 Tagen abläuft, muss man herausfinden, an jedem bestimmten 30 Tage in der Vergangenheit, wie oft hat die Aktie bewegt über 4 hinaus. Dies ist nur eines der vielen Dinge, die man vor dem Kauf oder Verkauf von Straddles tun muss . In Verbindung mit den Volatilitätskegeln und der Berechnung des durchschnittlichen Spread zwischen der realisierten Volatilität und der impliziten Volatilität sollte ein Investor einige Informationen geben, um diese zu handeln. Man kann auch in Strangle schauen. Hier ist eine Figur, die eine Aktie historische Bewegungen in den letzten 3 Jahren für eine 30 Tage rollenden Fenster Zeitraum zeigt. Man kann aus dem Diagramm sehen, dass CNH in den letzten 3 Jahren über 5 nur 50 der Zeit, 60 mehr als 3,8, 70 mehr als 2,66 usw. hinausgegangen ist. So, wenn eine Straddle nur 2,66 kostet, dann Historisch 70 der Zeit Es hat sich mehr als 2,66 in 30 Tagen bewegt. Auf der anderen Seite gibt es noch eine 30 Chance, dass es nicht über 2.66 zu bewegen. Montag, 29. Juni 2009 Dieser Beitrag beschreibt, was Volatilität Zapfen sind und wie ich sie normalerweise verwenden. Wie bei vielen meiner Beiträge, werde ich Code an diesen Beitrag beizufügen. Volatilitätskegel sind eine grafische Darstellung realisierter Volatilitätsbereiche über verschiedene Zeithorizonte wie 30,60,90,120 Tage. Es gibt eine Volatilitätsverteilung. Sie setzt die gegenwärtige implizite Volatilität in Perspektive. Einige Zitate aus dem Buch Volatilität Handel von euan sinclair: Die Volatilität Kegel ist sehr nützlich für die Platzierung von aktuellen Marktinformationen (realisierte Volatilität, implizite Volatilität und die Verbreitung zwischen ihnen) in den historischen Kontext. Wir können am besten durch den Vergleich implizite Volatilität an die historische Volatilitätsverteilung des Volatilitätskonus. Selling Monats-implizite Volatilität bei 35, weil dies in der 90. Perzentil für eine Monats-Volatilität in den letzten 2 Jahren kann die Grundlage für einen vernünftigen Handelsplan bilden. Man braucht, um die Streuung zwischen 30-Tage-Rolling nahe an nahe Volatilität und die implizite Volatilität zu berechnen. Man muss die AVERAGE der oben genannten Spreizung über einen ausreichenden Zeitraum berechnen. Wenn die Ausbreitung Über Normal ist, dann muss man sorgfältig als Gelegenheit zum Handel schauen. Als Beispiel zeigt das oben genannte Diagramm den Volatilitätskegel des Bestandes. CNH ab heute 06292009 Die 30, 60, 90 und 120 Tage rollenden Volatilitäten und ihre Perzentile sind unten gezeigt und in der Figur aufgetragen. 30 60 90 120 ----------------------------------- Aktuell: 0,6252 0,7363 0,9564 1,1798 Min: 0,1205 0,177 0,19 25. 0,3324 0,3301 0,2023 0,3318 0,3149 0,4039 0,4118 0,3943 50 0,3924 75: 0,6239 0,6538 0,639 0,6148 90: 1,1666 1,2162 1,2797 1,1961 MAX: 1,7115 1,5827 1,5581 1,4694 Wie Sie aus der obigen Tabelle sehen können, CNH 60 Tage Volatilität hat sich von einem Minimum variiert von 17.7 auf ein Maximum von 158. Der nahe Preis ist heute 14.32. Der nächste Schlag für 08222009 Verfall ist 15. Die implizite Volatilität der Call-Option ist 69,5 (von Optionen Express-Website). Die Anzahl der Tage bis Verfall ist 53. Der Implizite vol von 69,5 fällt zwischen 75 bis 90. So Ca. 80 der Zeit in den letzten 4 Jahren hat sich die realisierte Volatilität von 60 Tagen hat unter dieser Zahl von 69,5 gewesen. So sind wir im dritten Quartil. Ob dies hoch genug ist, um die implizite Volatilität zu verkaufen oder nicht, hängt von der Risikobereitschaft der Personen ab. Diese Information gibt mir das Vertrauen, den Handel intelligent zu machen. Bitte laden Sie alle drei Dateien in das gleiche Verzeichnis, und führen Sie VolConesCC. m Samstag, 27. JUNI 2009 In diesem Beitrag, gebe ich eine fertige Figur zu verwenden oder Handlung, die man praktisch halten konnte VIX Ebene zu den erwarteten SampP 500 kehrt zu beziehen Reichweite in den nächsten 30 Tagen. Ich zeige auch, wie die Handlung abgeleitet wird. Doppelklicken Sie auf das Grundstück für ein BIGGER Bild klicken Wie Sie aus der Abbildung oben sehen kann, kann man leicht den erwarteten Bereich von SampP 500 Returns mit einem bestimmten VIX Ebene für eine gegebene Wahrscheinlichkeit herauszufinden. Zum Beispiel ist der VIX-Pegel 30. Wenn wir also die obige Darstellung, für 90 Wahrscheinlichkeit, 30 VIX, auf der X-Achse betrachten und es vertikal und quer durchführen, können wir sehen, dass in den nächsten 30 Tagen der erwartete Bereich für SampP 500 Rückgabe ist - 14.24. Im Allgemeinen ist die lineare Beziehung wie folgt: Erwarteter Bereich mit 50 Wahrscheinlichkeit 0.1947 VIX Erwarteter Bereich mit 68 Wahrscheinlichkeit 0.2871 VIX Erwarteter Bereich mit 75 Wahrscheinlichkeit 0.3321 VIX Erwarteter Bereich mit 90 Wahrscheinlichkeit 0.4748 VIX Erwarteter Bereich mit 95 Wahrscheinlichkeit 0.5658 VIX Erwarteter Bereich mit 99 Wahrscheinlichkeit 0.7436 VIX Jetzt zeige ich, wie ich die Oben-Plot-Wahrscheinlichkeiten abgeleitet habe p 0.50 0.68 0.75 0.90 0.95 0.99 Passen Sie diese Wahrscheinlichkeiten korrekt an, die in das norminv-Programm p2 0.50 p.2 zu übergeben werden. Bevor wir fortfahren, sollten wir eine wichtige Annahme machen, dass die Rendite der Rendite SampP 500 over the next 30 days is normally distributed USe the norminv command to get the number of standard deviations that a number drawn from unit normal distribution will be since VIX is is an annualized standard deviation, We divide the values Obtainded above by sqrt(12 ) nstd nstd . sqrt(12) Now the Linear Relationship between Level of VIX and SampP 500 return range would be: ExpRangeSP500 nstd . VIX Now let us plot using various values of VIX VIX 0:10:100 ExpRangeSP500 nstd VIX PLOT plot(VIX, ExpRangeSP500,-) set(gca, YTick,0:5:max(ExpRangeSP500(:))) set(gca, YtickLabel, cellstr(strcat(num2str(0:5:max(ExpRangeSP500(:))),))) set(gca, XTickLabel, cellstr(strcat(num2str(VIX),))) title(VIX vs SampP 500 returns Expected Range over next 30 days) xlabel(VIX) ylabel(SampP 500 returns Expected Range over next 30 days) plottitles strcat(cellstr(num2str(p .100)),) legend(plottitles, Location, best) text(VIX(9)ones(6,1),ExpRangeSP500(:,9),plottitles, FontSize,14,FontWeight, bold) grid on axis tight In this post I show how one could utilize the VIX methodology for American Options. VIX was designed with European Type Options. It was designed for SP500 Options ( which are European ). But when applied to American Options, These have a bias due to early exercise and Dividend and disbursement events. If the forecasted period avoids dividends, then the bias should be minimal. Neverthelss, It can be used as a valuable forecast or a technical indicator. function VIX ReplicateVixStock(Data, TM, Rf, CT) REPLICATEVIXSTOCK applies VIX methodology for stocks (American Options) VIX was designed with European Type Options. It was designed for SP500 Options ( which are European ). But when applied to American Options, These have a bias due to early exercise and Dividend and disbursement events. If the forecasted period avoids dividends, then the bias should be minimal. Neverthelss, It can be used as a valuable forecast or a technical indicator. Inputs: If NO Inputs are provided, Example will run Data: Should be cell array with separate data for two Maturities centered around 30 days. I. e One option expiry must be less than 30 days and the other should be greater than 30 days. Data is a three column data with Strike, Call and Put Prices. Data should be Near Term Option Data Data should be far Term Option Data TM. Time to maturity for two options Rf. Risk free Rate CT. Current Time ( Time Stamp when The data was collected ) Output. VIX-- A single number that Applies the VIX methodology to the American Options Example. Try running with NO inputs if(nargin0) Near-Term Strike Call Put Data 75 11.75 0.05. 80 6.90 0.08. 85 2.40 0.60. 90 0.18 3.40. 95 0.05 8.30. Next Term Strike Call Put Data 75 NaN NaN. 80 7.70 0.73. 85 3.80 1.80. 90 1.05 4.05. 95 NaN NaN. TimeToMaturity TM 937 RiskFreeRate Rf 1.1625100 Per Annum Current Time CT 12:09:00 end Difference between Calls and Puts (Absolute Value) DF abs(Data (:,2) - Data (:,3)) DF abs(Data (:,2) - Data (:,3)) FInd Hour, Minute, Second from the time using datevec function Year, Month, Day, Hour, Minute, Second datevec(CT) In Years 1440 is the number of minutes in a day and 510 is the number of minutes to 8:30 AM which is the time the option expires on its expiration date NumYears(1) 1440 - (Hour 60 Minute Second60) 510. (1440 365) (TM(1) - 2)365 NumYears(2) 1440 - (Hour 60 Minute Second60) 510. (1440 365) (TM(2) - 2)365 In days NumDays NumYears . 365 Find the minimum of the difference in Call and Put Prices and Get the corresponding Strike Price. ATM(1,:) Data ((DF min(DF )),:) ATM(2,:) Data ((DF min(DF )),:) Calculate Forward Price Level and Referential Strike Application of PUT CALL Parity Level ATM(:,1) exp(RfNumYears(:)) . (ATM(:,2) - ATM(:,3)) Reference Strike for i 1:2 Strike ATM(i,1) if(ATM(i,2)ATM(i,3)) RefStrike(i)ATM(i,1) else RefStrike(i) Data (find(Data (:,1) RefStrike(i)) cpval(cid) Data (cid,2) pid find(Data (:,1) TradingwithMatlab at 10:52 AM 1 comment: Sunday, June 14, 2009 This post is in continuation to my previous blog post on getting the Options Data from websites such as Yahoo, Optionetics and Options Express. I wanted to collect End-Of-Day Options Data from those websites and search for Covered Calls that I could trade. Covered Call is a strategy wherein you buy the stock and write an Out-of-the money CALL option and thus generate monthly income from the stock. This strategy can also be used if you already own a stock and want to earn some income on it. You can also write In the Money Call Option which will give you more downside protection, but less return. At the end of each day one can run the following program and thus store the options Data and use it for further analysis. After collecting the data, One could search for those stocks that have the highest premium and which you think are good stocks and wont mind holding on to them. Note that this function depends on GetYahooOptionsData2.m function that I talked about in my previous blog post. One can purchase it, if interested. function Out CoveredCalls(SymbolList) CoveredCalls gives the Options Data and Calculates Covered Calls returns for a given Symbol for that particular day This function can also be used to build a database of Options Data on a daily basis. NOTE that This function requires GetYahooOptionsData2.m function Inputs: A cell array of Symbols Output: A structure with the following fields: calldata. This contains the Calls data and also has Flat and Exercised returns The colummn names are as follows: Expiry, MonthNum, time Value, Exercise Return, Flat Return RawData. This contains Both the Calls and Puts Data The column names are as follow: Symbol, Last, Change, Bid, Ask, Volume, Open Int, Expiry, MonthNum, Last Price Example: Out CoveredCalls( ) If user wants a single big cell array, one can get it by using command: vertcat(Out. calldata ) Friday, June 5, 2009 UPDATE. Thanks to a comment, I changed the code to reflect the new changes at fidelity site. CUSIP is a 9 character(alpha-numeric ) identifier. It actually stands for Committee on Uniform Security Identification Procedures. Sometimes it is very useful to be able to look up the Stock Symbol that the CUSIP represents. I had a list of CUSIPS and some data associated with it. I did not have the Stock Symbols Associated with Them. I was only interested in Stock CUSIPS. I searched online and found out that there was no automated way of finding out the stock symbol associated with stock CUSIPS. So I wrote the following program to look up the CUSIP at the Fidelity website and grab the stock symbol associated with it. I extensively used regular expressions. I hope this program will be useful to others. For example: 031162100 given Amgen Inc---AMGN Symbols CusipToSymbolLookUp( ) function Symbols CusipToSymbolLookUp(Cusip) CUSIPTOSYMBOLLOOKUP converts STOCK CUSIPS to STOCK Symbols Symbols CusipToSymbolLookUp(Cusip) gives a list of STOCK symbols that correspond to a list of Cusips. This function looks up a STOCK symbol for a given CUSIP The CUSIP needs to be 8 or 9 characters long If a valid 8 character Cusip is given, then a 9th check digit is added if possible. It accesses the fidelity website and does html parsing to get the symbol name. Cusip can be a cell array of Cusips More information on CUSIPs can be found at: cusip I Thank Nabeel Azar for his program checkcusip. m Example: Symbols CusipToSymbolLookUp( ) Atleast one input is required if(nargin lt 1) error(Atleast one Input is needed) end Check if its either a cell array or Character if (ischar(Cusip)iscell(Cusip)) error(Cusip needs to be either a character or Cell Array) end isvector(Cusip)) error(Cusip needs to be a cell array) end Convert Char to a cell string Cusip cellstr(Cusip) Find how many cusips were given ncusips length(Cusip) Intial Web URL weburl activequote. fidelitymmnetSymLookup. phtmlreqforlookupREQUESTFORLOOKUPampproductidmmnetampisLoggedInmmnetamprows50ampforstockampbycusipampcriteria Pre assign the Output Symbols cell(ncusips,1) Now go through the List and do the processing for idx 1:ncusips If The Length of the Cusip is 8 digitscharacters long, Then It is converted into 9 digits using a program called checkcusip If it returns a logical false, then it is a wrong CUSIP If it returns a double digit, then join the checkdigit to the original CUSIP if(length(Cusip )8) Result checkcusip(Cusip(idx)) if (islogical(Result ) ampamp Result false) continue else Join the Cusip with CheckDigit Cusip Cusip num2str(Result ) end If the Length is not equal to 9, then just continue elseif(length(Cusip ) Construct the URL using the Cusip and read the url weburl Cusip ampsubmitSearch data urlread(weburl Cusip ampsubmitSearch) Search for a preliminary pattern pat lt(a HREF).gt. pat SIDVALUEID(a-zA-Z)gt Use regexp to match the pattern data2regexp(data, pat, tokens) Use another pattern to get the symbol if( isempty(data2)) pat gtwlt snamechar(regexp(data2,pat, match)) Symbols(idx) data2 end Pre-Process the Output before storing it in an array if( isempty(sname)) sname(1 end) Symbols sname end function Result checkcusip(inputCell) CHECKCUSIP Check a CUSIP CHECKCUSIP is used to validate 9 digit CUSIPs and provide the checkdigit for 8 digit CUSIPs. Note that if you give this function a combination of 8 and 9 digit CUSIPs, you need to check both the class (logical or non-logical) as well as the value of the output. Logicals are used to indicate validity of a 9 digit CUSIP, while non-logical doubles are used to supply the checkdigit for an 8 digit CUSIP. Convert the input to a char array if iscell(inputCell) cusipCharArray strvcat(inputCell ) else error(Inputs must be cell arrays of CUSIP strings.) end Make sure there are at least 8 columns if size(cusipCharArray,2) error(Must supply 8 or 9 digit CUSIPs.) end Make them all lowercase cusipCharArray lower(cusipCharArray) Convert the string digits to numerical values and the characters to their numerical values, with A:10 Set spaces (for computing the checkdigit) to NaNs Transpose the array, and work down the columns. longCusipString double(cusipCharArray) longCusipString longCusipString. numericalLocations (longCusipStringgt0 amp longCusipStringlt9) charLocations (longCusipStringgta amp longCusipStringltz) NaNLocations longCusipString longCusipString(numericalLocations) longCusipString(numericalLocations) - 0 longCusipString(charLocations) longCusipString(charLocations) - a 10 longCusipString(NaNLocations) NaN Get the cusip digits cusipNums longCusipString(1:8,:) Scale with scaling factors cusipNums diag(1 2 1 2 1 2 1 2) cusipNums Sum the digits in each term gt10 gt10 cusipNumsgt10 cusipNums(gt10) floor(cusipNums(gt10)10) rem(cusipNums(gt10),10) Sum the resulting values cusipNums sum(cusipNums) Get the last digit lastDigit rem(cusipNums,10) Generate the checkdigit checkDigit 10 - lastDigit checkDigit(checkDigit10) 0 Create a cell array the right size for the output. Result cell(numel(inputCell),1) If no check digit was given in the input, output the checkdigit if size(longCusipString,1)9 needCusip isnan(longCusipString(9,:)) else needCusip logical(ones(1,size(longCusipString,2))) end Result(needCusip) num2cell(checkDigit(needCusip)) If a check digit was given, validate it if size(longCusipString,1)9 isCheckdigitCorrect longCusipString(9, needCusip) num2cell(isCheckdigitCorrect) end Only the 1st, 4th, 5th, or 6th digit may be an alphanumeric letter (1st for international issues) badIdx any(longCusipString(2 3 7 8,:)gt10,1) Result(badIdx) The first digit cannot be an i, o, or z badIdx any(longCusipString(1,:)i longCusipString(1,:)o longCusipString(1,:)z,1) Result(badIdx) Reshape the result Result reshape(Result, size(inputCell)) This post is just to demonstrate how to replicate the Calculations behind the CBOE Volatility Index, Commonly called VIX. It is also commonly thought of investor gauge of fear. One can read more about at cboe The Implementation below follows the methodology as illustrated in the following white paper: CODE Published Here: ReplicateVIX Near-Term Strike Call Put Data 775 125.48 0.11. 800 100.79 0.41. 825 76.70 1.30. 850 54.01 3.60. 875 34.05 8.64. 900 18.41 17.98. 925 8.07 32.63. 950 2.68 52.33. 975 0.62 75.16. 1000 0.09 99.61. 1025 0.01 124.52 Next Term Strike Call Put Data 775 128.78 2.72. 800 105.85 4.76. 825 84.14 8.01. 850 64.13 12.97. 875 46.38 20.18. 900 31.40 30.17. 925 19.57 43.31. 950 11.00 59.70. 975 5.43 79.10. 1000 2.28 100.91. 1025 0.78 124.38 TimeToMaturity TM 1644 RiskFreeRate Rf 1.1625100 Per Annum Difference between Calls and Puts (Absolute Value) DF abs(Data (:,2) - Data (:,3)) DF abs(Data (:,2) - Data (:,3)) Current Time CT 08:30:00 FInd Hour, Minute, Second from the time using datevec function Year, Month, Day, Hour, Minute, Second datevec(CT) In Years 1440 is the number of minutes in a day and 510 is the number of minutes to 8:30 AM which is the time the option expires on its expiration date NumYears(1) 1440 - (Hour 60 Minute Second60) 510(1440 365) (TM(1) - 2)365 NumYears(2) 1440 - (Hour 60 Minute Second60) 510(1440 365) (TM(2) - 2)365 In days NumDays NumYears . 365 Find the minimum of the difference in Call and Put Prices and Get the corresponding Strike Price. ATM(1,:) Data (find(DF min(DF )),:) ATM(2,:) Data (find(DF min(DF )),:) Calculate Forward Price Level and Referential Strike Application of PUT CALL Parity Level ATM(:,1) exp(RfNumYears(:)) . (ATM(:,2) - ATM(:,3)) Reference Strike for i 1:2 Strike ATM(i,1) if(ATM(i,2)ATM(i,3)) RefStrike(i)ATM(i,1) else RefStrike(i) Data (find(Data (:,1) RefStrike(i)) cpval(cid) Data (cid,2) pid find(Data (:,1) TradingwithMatlab at 6:49 PM 7 comments: Correction Factor for Sample Size based on finite Population Size For a 95 Level, Z 1.96. Let us say that we want the result to be within 5 error--Confidence Interval and lets have P varying from 0.1 to 0.9. Then inserting the above numbers into the equation, we get: ConfidenceInterval 0.05Z 1.96 P 0.1:0.1:0.9 SampleSize Z2 . P . (1-P)(ConfidenceInterval2) SampleSizeRequired P SampleSize. SampleSizeRequired 0.1000 138.2976 0.2000 245.8624 0.3000 322.6944 0.4000 368.7936 0.5000 384.1600 0.6000 368.7936 0.7000 322.6944 0.8000 245.8624 0.9000 138.2976 Plot of SampleSize Required vs Probability: T-distribution table VS Sample Size and closeness to Standard Normal: (Source: Jeffrey Russell NOTES) T distribution with n-1 degrees of freedom at 0.05 level( 95) It becomes normal when T is Approx 2 ( 1.96 to be exact) Survey Example: Some tests for Sample Sizes: After survey we found that 60 People say A and 40 say B. Now We need to find out if it is significant or not. We need to find out by calculating the T-stat and comparing it with 2 (1.96 to be exact). NULL HYPOTHESIS: IT IS TIE (50-50). I. e Even though 60 of the people say A, we want to make sure it is different from being a TIE (50-50) when a bigger population is considered. T-stat formula ( Any Basic Stats Textbook is the source here) TStat (P - p0)sqrt(p0 (1-p0)n) Where p0 is NULL hypothesis. (0.50 in our case) We GOT 1.0954 Which is STILL LESS than 2. So we FAIL to reject the NULL Hypothesis. So we cannot say with certainty that it is NOT a TIE. Now lets go further and calculate it for a bunch of n n 30:10:100 tstat (P - p0).sqrt(p0 (1-p0).n) figure() plot(n, tstat) xlabel( Sample Size ) ylabel( T stat ) BINGO: We got it. So at a sample Size of 100, we get Exactly what we wanted. We REJECT the NULL Hypothesis that It was a TIE and declare A as our winner in the survey. ee How the PLOT flattens out after certain number of Samples( 450). That is why most of the proffessional Pollsters pick a sample size of Approximately 500 History behind Rules-of-thumb (Why 22 25 30) (Source: iSixSigma) n22 was proposed by Fisher in Statistical Mehthod, p. 44, when he reviewed the impact of the the exeeding of the standard deviation once in evey three trials. Twice the standard deviation is exceeded in about 22 trials For p-value 0.05, or 1 in 20 and 1.96 or nearly 2 it is convenient to take the point as a limit in judging whether a deviation is to be condisered significant or not. Deviations exceeding twice the standard deviation are thus formally regarded as significant. Using this criterion we should be led to follow up a false indication only once in 22 trials even if the statsitics were the only guide. Small effects will still escape notice if the data are insufficiently numerous to bring them out, but lowering of the standard of signficicance meet this difficulty. n 25 has a truly statistical justification. At n 25 the Law of Large numbers will start to show a pronounced symmetricnormal distribution of the sample means around the population mean. This normal distribution becomes more pronounced as n is increased. n 30 comes from a quote from Student (Gosset) in a 1908 paper On the probable error of a Correlation in Biometrika. In this paper he reviews the error associated with drawing of two independent samples from infinitely large population and their correlation (not the individual errors of each sample relative to the sample mean and the population mean). The text reviews different corrections to the correlation coefficient given various forms of the joint distribution. In a few sentences, Student says that at n 30 (which is his own experience) the correction factors dont make a big difference. Later, Fisher showed that the sample for a correlation needs to be determined based on a z-transformation of the correlation. So, Students argument is only interesting historically. Also, Student wrote his introduction of the t-test in Biometrika during the same year (his prior article). Historically, the n 30 discussed in his correlation paper has been confused with the t-test paper, which only introduced the t-statistic up to sample size 10. TradingwithMatlab I have previously worked as a Quantitative Futures Trader and currently work as an Analyst in a Quantitative Strategies Team at a Hedge Fund of Fund. I. along with Exchange Systems Inc, have created a MATLAB based tool called MATLAB2IB. I hold a masters degree in Electrical Engineering, A Patent in Control Systems, and an MBA from University Of Chicago Graduate School Of Business. I hope my 10 years of experience in using MATLAB both for engineering and now in finance, will be of use to others. I hope to present you with interesting topics. I can be contacted at tradingwithmatlabyahoo View my complete profile Visitor Count My Favorites Previous Posts Blog Archive Label Cloud Latex Equation Editor Website visitors My Blog List Picture Window template. Datenschutzerklärung |
No comments:
Post a Comment