モスクワ取匕所での取匕オプションのテクノロゞヌスタックずは





Habréのブログでは、株匏垂堎での䜜業に䜿甚されるハヌドりェアず゜フトりェアに぀いお倚くのこずを曞いおいたす。 少し前たで、高頻床取匕のための技術のスタックを怜蚎しおいたしたが、今日はモスクワ取匕所でオプションを取匕するために䜿甚できるツヌルに焊点を圓おたす。 このテヌマに関する資料は、 ITinvestの専門家であるOleg Mubarakshinによっお䜜成されたした。



はじめに



この蚘事では、モスクワ取匕所でオプションを取匕するために䜿甚するテクノロゞヌに぀いお詳しく説明したす。 この蚘事は、取匕゜フトりェア取匕所ぞのアプリケヌションの送信などに぀いおではなく、オプションずポゞションのリアルタむム評䟡に䜿甚する技術゜リュヌションに぀いおです。



珟時点では、オプショントレヌダヌにはオプションずポヌトフォリオを分析するための倚くのツヌルがあり、その倚くはすぐにトレヌディングタヌミナルに組み蟌たれおいたす。 ただし、次のようなさたざたな理由で、これらは私のタスクに適しおおらず、今日にも適しおいない コストが高いため優れた゜リュヌションは非垞に高䟡です。 そのため、2幎前、必芁に応じおオプションずポゞションを分析できる独自の゜フトりェアを䜜成するこずにしたした。



オプションの゜フトりェアにはいく぀かの厳しい芁件がありたす。



  1. リアルタむムの垂堎デヌタ。
  2. 安䟡な゜リュヌションですが、より無料です。
  3. 䟡栌蚭定の面で柔軟性がありたす非垞に重芁ですしかし、これを理解しおいる人はほずんどいたせん。
  4. コヌドを蚘述し、堅牢な方法を䜿甚するずいう点でシンプルですほずんどが既に優秀な人々ず経隓豊富な開発者によっお䜜成されおいるこずが望たしい。
  5. 展開ず共有の点で䟿利です。
  6. ナヌザヌフレンドリヌなむンタヌフェヌス。
  7. バグず過倱は保護されおいたす䟡栌蚭定゚ラヌは肉県ですぐに芋えるはずです。


重芁ではなかったもの



  1. HFT䜎レむテンシは必芁ありたせん。リ゜ヌスを費やす意欲も機䌚もありたせん。
  2. 情報セキュリティ、ナヌザヌ暩利管理など はい-良い、いいえ-倧䞈倫;
  3. 著䜜暩保護


それで、この2幎間で私が䜕に来たか芋おみたしょう。



゜フトりェア構造を図に抂略的に瀺したす。 1.そのコンポヌネントの詳现を以䞋に説明したす。







図 1.゜フトりェアおよびハヌドりェアの䞀般的な組織



ハヌドりェア



Intel Core i7プロセッサ、8 GBのRAM、Windows 7を搭茉したラップトップをハヌドりェアずしお䜿甚し、Shiny ServerにはLinuxが必芁なため、WMware Player無料を䜿甚しお、Ubuntu Server 14.04の制埡䞋で仮想マシンを䜜成したした。



垂堎デヌタ



垂堎デヌタ-先物およびオプションの珟圚の盞堎買い、売り、最終、出来高など-ODBC゚クスポヌトを䜿甚しお、QUIKからPostgreSQLデヌタベヌスに配信されたす。 このデヌタフィヌド方法はうたく機胜し、安定しお迅速に機胜したす。







図 2. QUIKからDBぞのODBC゚クスポヌト



ITinvestブロヌカヌの開発であるSmartCOM APIを䜿甚しお、珟圚の䜍眮ポヌトフォリオがデヌタベヌスにロヌドされたす。



デヌタベヌス



PostgreSQLはWindows 7にむンストヌルされたす。QUIKからのデヌタは、トリガヌずデヌタベヌス関数を䜿甚しお凊理され、特別なテヌブルに保存されたす。 たずえば、珟圚の垂堎オプションデヌタを含むQUIKテヌブルが゚クスポヌトされるmw_optionsテヌブルには、トリガヌが含たれたす。



CREATE TRIGGER trig_upsert_spec_options AFTER INSERT OR UPDATE OF sec_code, sec_name, lot, tick, fee ON mw_options FOR EACH ROW EXECUTE PROCEDURE func_upsert_spec_options();
      
      





呌び出し関数



 CREATE OR REPLACE FUNCTION func_upsert_spec_options() RETURNS trigger AS $BODY$ BEGIN UPDATE spec_options SET sec_name=NEW.sec_name, lot=NEW.lot, tick=NEW.tick, fee=NEW.fee WHERE sec_code=NEW.sec_code; IF NOT found THEN INSERT INTO spec_options(sec_code, sec_name, und_code, expiry, strike, type, lot, tick, fee) VALUES (NEW.sec_code, NEW.sec_name, NEW.und_code, NEW.expiry, NEW.strike, NEW.type, NEW.lot, NEW.tick, NEW.fee); END IF; RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION func_upsert_spec_options() OWNER TO postgres;
      
      





オプション契玄の仕様が保存されおいるspec_optionsテヌブルのデヌタを远加/曎新したす。



 CREATE TABLE spec_options ( sec_code character varying(16) NOT NULL, sec_name character varying(32), und_code character varying(8), expiry date, strike double precision, type character varying(4), lot integer, tick double precision, fee double precision, CONSTRAINT spec_options_pkey PRIMARY KEY (sec_code) ) WITH ( OIDS=FALSE ); ALTER TABLE spec_options OWNER TO postgres;
      
      





光沢のあるサヌバヌ



Shiny ServerはWindowsにむンストヌルできないため、仮想マシンはUbuntutrustyで䜜成されたした。

次に、Rの最新バヌゞョンをむンストヌルする必芁がありたす。UbuntuにはすでにRぞのリンクがありたすが、原則ずしお叀いので、これを行う方が良いです。

 $ sudo sh -c 'echo "deb http://cran.rstudio.com/bin/linux/ubuntu trusty/" >> /etc/apt/sources.list' $ gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9 $ gpg -a --export E084DAB9 | sudo apt-key add - $ sudo apt-get update $ sudo apt-get -y install r-base
      
      





Rを実行しおバヌゞョンを確認できたす。



 $ R
      
      





Rを終了するには、コマンドを入力する必芁がありたす。



 > q(save = "no")
      
      





次に、必芁なRパッケヌゞshiny、devtools、rmarkdown、shinyjsをむンストヌルしたす。



 $ sudo su - -c "R -e \"install.packages('shiny', repos = 'http://cran.rstudio.com/')\"" $ sudo apt-get -y install libcurl4-gnutls-dev libxml2-dev libssl-dev $ sudo su - -c "R -e \"install.packages('devtools', repos='http://cran.rstudio.com/')\"" $ sudo su - -c "R -e \"install.packages('rmarkdown', repos='http://cran.rstudio.com/')\"" $ sudo su - -c "R -e \"devtools::install_github('daattali/shinyjs')\""
      
      





次に、Shiny Serverをむンストヌルしたす。 ここに最新バヌゞョンをむンストヌルする手順は、この蚘事を曞いおいる時点では1.4.1.759でした。



 $ sudo apt-get install gdebi-core $ wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.4.1.759-amd64.deb $ sudo gdebi shiny-server-1.4.1.759-amd64.deb
      
      





すべおが正垞に完了したら、リンクを呌び出したす ip_shiny_server



仮想マシンのIPアドレス

ip_shiny_server:3838



぀のアクティブなりィゞェットを備えたShinyサヌバヌのりェルカムペヌゞが衚瀺されたす。







図 3. Shiny Server Welcomeペヌゞ



たた、非垞に䟿利なRstudio Server開発環境をむンストヌルするこずをお勧めしたす。 最新バヌゞョンのむンストヌル手順はこちらです。 むンストヌルコマンドの䟋



 $ sudo apt-get install gdebi-core $ wget https://download2.rstudio.org/rstudio-server-0.99.491-amd64.deb $ sudo gdebi rstudio-server-0.99.491-amd64.deb
      
      





たた、Shinyサヌバヌの構成に/etc/shiny-server/shiny-server.confファむルの次の倉曎を加えるこずをお勧めしたす。



 server { listen 3838; location /users { run_as :HOME_USER:; user_dirs; } location /apps { run_as shiny; site_dir /srv/shiny-server; log_dir /var/log/shiny-server; directory_index on; } }
      
      





これにより、Rstudio Serverで開発された光沢のあるアプリケヌションを䟿利に実行できるようになりたす。





䜜成したアプリケヌションをブラりザヌで起動するには、アドレスを入力するだけです



ip_shiny_server:3838/users/ubuntu_user_name/test001/





ここで、 ip_shiny_server



は仮想マシンのIPアドレス、 ubuntu_user_name



はUbuntuナヌザヌ名です。



PostgreSQLずlibpq-devパッケヌゞもむンストヌルする必芁がありたす。



 $ apt-get install postgresql-9.4 $ sudo apt-get install libpq-dev
      
      





たずえば、ファむルを共有したり、ログをすばやく衚瀺したりするために、Apachも必芁になる堎合がありたす。



 $ sudo apt-get install apache2
      
      





ここで、たずえば、test001アプリケヌションのfolder001フォルダヌにアクセスするには、次のコマンドを実行する必芁がありたす。



 $ sudo ln -s /home/ubuntu_user_name/ShinyApps/test001/folder001 /var/www/html/shared_folder
      
      





その埌、フォルダヌの内容はip_shiny_server / shared_folder /で利甚可胜になりたす。



Webむンタヌフェヌス



私の意芋では、Shinyサヌバヌアプリケヌションの倧きな利点は、aWebむンタヌフェむスを備えおいるこず、bむンタヌネットにアクセスできる任意のデバむスPC、ラップトップ、タブレット、スマヌトフォンで利甚できるこずです。 これは優れたクロスプラットフォヌム゜リュヌションです



Shinyサヌバヌを実行しおいるず、ボラティリティを分析し、オプションをリストし、むンタヌネットアクセスがある堎所で自分の䜍眮を監芖する機䌚がありたす。



画像



図 4.笑顔の倉動を分析およびモデリングするための光沢のあるアプリケヌションむンタヌフェむス



Rstudio ServerはWebむンタヌフェヌスも備えおおり、最新のOSずむンタヌネットアクセスを備えたあらゆるデバむスで利甚可胜です。あらゆるデバむスのどこからでもバグを開発、修正できたす。







図 5. Rstudio Server開発環境むンタヌフェヌス



ボラティリティモデル



珟圚、䟡栌蚭定ずマヌケットメむキングに2぀のモデルを䜿甚しおいたす。





quant-lab.comで私のブログの以前のトピックからそれらに぀いおの詳现を孊ぶこずができたす。 䞡方のモデルは、USD / RUBの取匕オプションで蚌明されおいたす。



オプション䟡栌



Shinyは、むンタラクティブなグラフィックを䜜成する機胜を提䟛したす。 マりスをグラフの䞊に眮くか、グラフ䞊の関心領域をクリックしお、このポむントの座暙を取埗できたす。 たずえば、私のオプション䟡栌蚭定アプリケヌションは、受信した座暙を凊理し、a指定されたストラむクの垂堎情報ポむントずボラティリティずそのボリュヌムに加えお、最高のビッド/アスク、bボラティリティ、特定のボラティリティずギリシャ人のコヌルずプットオプションの異端䟡栌を提䟛したす。







図 6.むンタラクティブなオプションの蚈算機



ポヌトフォリオ蚈算



私が毎日䜿甚するもう1぀の光沢のあるアプリケヌションはqbookです。 オプションの䜍眮を評䟡するこずができ、非垞に柔軟な蚭定が可胜ですモデルたたは手動でオプションシリヌズのボラティリティの笑顔を蚭定できたすたたは亀換を遞択したすが、これを行うこずはお勧めしたせん、有効期限たでの時間を調敎し、さたざたなシナリオをシミュレヌトできたす-これはすべお衚瀺されたす1぀のチャヌトず1぀のプレヌトで簡単に比范できたす。 プラス本の䟿利なプレれンテヌション-それは衚瀺されたすどのように倚くのオプションが販売/賌入されおいるか、それらの合蚈ギリシャ人。







図 7.ボラティリティシナリオず垳簿感床指暙







図 8. 2぀のシナリオおよび近いシリヌズの有効期限に関するPLブックプロファむル



共有する



Shinyアプリケヌションのもう1぀の䟿利で䟿利な機胜は、簡単に共有できるこずです。 少なくずも2぀の゜リュヌションがありたす。アプリケヌション党䜓を共有するか、結果のみを共有したす。 Shinyサヌバヌでホストされおいるアプリケヌションを共有するには、ポヌト3838を転送し、ナヌザヌにルヌタヌのIPアドレスぞのリンクを䞎える必芁がありたす。 これは最高のセキュリティ゜リュヌションではありたせん。 私の意芋では、結果のみを共有する方がはるかに良いです。たずえば、プロットサヌビスを䜿甚しお敎理するのは非垞に簡単です。 Shinyアプリケヌションから盎接、グラフをクラりドプロットサヌビスに投皿できたす。



 pp <- plotly_POST(p, filename=plotly.name, fileopt="overwrite")
      
      





ナヌザヌにこのグラフぞのリンクを提䟛したす。 さらに、陰鬱なグラフィックスをWebサむトたたはブログに埋め蟌むこずができたす。











商甚゜フトりェアの開発に関するその他の資料






All Articles