ガむド取匕所でのアルゎリズム取匕にPythonを䜿甚する方法。 パヌト1





テクノロゞヌは資産になりたした-金融機関は珟圚、コアビゞネスに埓事しおいるだけでなく、新しい開発に倚くの泚意を払っおいたす。 高呚波取匕の䞖界では、最も効果的なだけでなく、高速な゜フトりェアずハ​​ヌドりェアの所有者によっお最高の結果が達成されるず既に述べたした。



金融分野で最も人気のあるプログラミング蚀語の䞭でも、RずPythonが泚目に倀したすが、C ++、C、Javaもよく䜿甚されたす。 DataCamp Webサむトで公開されおいるガむドでは、Pythonを䜿甚しお金融アプリケヌションを䜜成する方法に぀いお説明しおいたす。この資料の各章の䞀連の適応蚘事を玹介したす。



リヌダヌシップ構造





はじめに金融圏の構造に぀いお平易な蚀葉で



取匕戊略の䞖界に突入する前に、基本的な抂念に觊れるこずは理にかなっおいたす。 ただし、これは、以䞋で説明する内容が完党に初心者向けに蚭蚈されおいるずいう意味ではありたせん。 最初にPythonを䜿甚しおデヌタを操䜜するコヌスをよく理解し、Pythonリストずパッケヌゞの操䜜方法を想像しおみおください。少なくずも基本的なレベルで、NumPyずPandasに粟通しおいるず思いたす。



株匏取匕所



䌁業がビゞネスの開発を継続したり、新しいプロゞェクトを立ち䞊げたり、拡倧したりする堎合、資金調達ツヌルずしお株匏を䜿甚できたす。 株匏は䌚瀟の所有暩の株匏を衚し、株匏は珟金ず亀換されたす。 株匏は売買するこずができたす。このような取匕の参加者は、以前に発行された既存の株匏を操䜜したす。



特定の株匏の売買䟡栌は、株匏を発行した䌚瀟の業瞟に関係なく、垞に倉化する可胜性がありたす。すべおは需芁ず䟛絊によっお決定されたす。 株匏ず、たずえば借入資金を匕き付けるために䜿甚される債刞債刞ずの違いを理解するこずが重芁です。



取匕に関しおは、株匏の売買だけでなく、金融商品や、貎金属や石油などの資源を含むさたざたな資産で取匕を完了するこずができたす。



株匏を賌入するず、投資家は䌚瀟の特定の株匏を受け取り、そこからこの株匏を売华するこずにより、将来的に金銭的利益を埗るこずができたす。 戊略は異なる可胜性がありたす。株匏のさらなる成長を期埅しお長い取匕長いがあり、投資家が株匏がより安くなるず仮定するず短い取匕がありたす。したがっお、将来、より䜎い䟡栌で「買い戻す」こずを期埅しお株匏を売华したす。



トレヌディング戊略の開発には、たずえば機械孊習モデルの構築に類䌌したいく぀かの段階が含たれたす最初に戊略を策定し、コンピュヌタヌで実行できる圢匏で蚘述し、次に結果のプログラムのパフォヌマンスをテストし、最適化しおから有効性を評䟡する必芁がありたすず信頌性。



取匕戊略は通垞、バックテストの助けを借りおチェックされたす。これは、戊略がオヌクションの履歎デヌタで「実行」されるアプロヌチです-プログラムに基づいおトランザクションが生成されたす。 これにより、そのような戊略が過去に芳察された垂堎状況の発展に収入をもたらすかどうかを理解するこずができたす。 したがっお、入札の戊略の芋通しをリアルタむムで事前に評䟡するこずが可胜です。 同時に、実際の垂堎で䜜業する堎合、履歎デヌタの良奜なパフォヌマンスが繰り返されるずいう保蚌はありたせん。



時系列デヌタ



時系列は、連続する等しい時間間隔で取埗される䞀連のデゞタルデヌタです。 金融では、これらのシリヌズを䜿甚しお、䞀定の間隔で蚘録された䞀定期間の䟡栌の動きを远跡したす。 これは次のようなものです。







X軞には日付があり、䟡栌はY軞にありたす。この堎合の「連続した等しい時間間隔」ずは、日付が2週間の間隔で時間軞に沿っお配眮されおいるこずを意味したす。2005幎3月7日ず2005幎3月31日を比范できたす。 2005幎4月5日および2005幎4月19日 ここで、日付は月が最初に、次に日が来たずきに米囜で受け入れられる圢匏で蚘録されたす 



ただし、財務デヌタには通垞2぀のパラメヌタヌ䟡栌ず日付が含たれたせんが、5぀-取匕期間のサむズに加えお、これは取匕期間の始倀、その期間内の最高倀ず最䜎䟡栌、期間の終倀です。 これは、1日の期間を考慮しおいる堎合、デヌタの分析により、遞択した日の取匕の開始時ず終了時の䟡栌レベル、および入札䞭の最高䟡栌ず最䜎䟡栌に関する情報が埗られるこずを意味したす。



このガむドの孊習を続けるために知っおおく必芁のある基本的な抂念は、䞊蚘で説明されおいたす。



Pythonファむナンスの基瀎パンダ



Pythonを䜿甚しお金融アプリケヌションを開発するずきに最も芁求されるツヌルの1぀は、Pandasパッケヌゞです。 それは最初からすでに必芁ですが、開発プロセスを深くするに぀れお、NumPy、SciPy、Matplotlibなどのパッケヌゞも必芁になりたす。



はじめに、パンダに焊点を圓お、このツヌルを時系列分析に適甚しおみたしょう。 以䞋では、このパッケヌゞを䜿甚しおデヌタをむンポヌト、分析、操䜜する方法に぀いお説明したす。



財務デヌタをむンポヌトする



pandas-datareaderパッケヌゞを䜿甚するず、Google、Yahooなどの゜ヌスからデヌタを受信できたす。 金融機関たたは䞖界銀行-利甚可胜なデヌタ゜ヌスの詳现に぀いおは、 ドキュメントをご芧ください。 このガむドでは、Yahooからのデヌタの取埗に぀いお説明したす。 ファむナンス 開始するには、pipを䜿甚しおパッケヌゞの最新バヌゞョンをむンストヌルする必芁がありたす。



pip install pandas-datareader
      
      





開発䞭のバヌゞョンをむンストヌルする手順をここに瀺したす 。



 import pandas_datareader as pdr import datetime aapl = pdr.get_data_yahoo('AAPL', start=datetime.datetime(2006, 10, 1), end=datetime.datetime(2012, 1, 1))
      
      





少し前たではYahoo APIに倉曎があったため、自分でラむブラリを操䜜するには、公匏パッチを埅぀こずができるパッチをむンストヌルする必芁がありたす。 この問題に぀いおは、 ここで詳しく説明したす 。 ただし、このガむドでは、デヌタは事前​​にダりンロヌドされおいるため、孊習しおも問題はありたせん。



たた、pandas-datareaderはデヌタをロヌドするための䟿利なツヌルですが、Pythonの唯䞀のツヌルではないこずを理解するこずも重芁です。 Quandlなどのラむブラリを䜿甚しお、Google Financeサヌビスからデヌタを受信するこずもできたす 。



 import quandl aapl = quandl.get("WIKI/AAPL", start_date="2006-10-01", end_date="2012-01-01")
      
      





たた、倚くの人々は、Excelがデヌタ分析の金融分野で非垞に人気があるこずを知っおいたす。 将来の䜜業の䟿宜のために、このツヌルをPythonず統合できたす リンクに぀いお詳しくはこちら。



時系列デヌタの操䜜



デヌタをむンポヌトするために、pandas_datareaderを䜿甚したした。 その結果、aaplオブゞェクトが出珟したした-これはDataFrame、぀たり、朜圚的に異なるタむプの列を持぀2次元の名前付きデヌタ構造です。 このようなフレヌムで䜜業する堎合、最初に行うこずは、デヌタフレヌムの最初ず最埌の列を芋るためにheadおよびtail関数を実行するこずです。 ダりンロヌドしたデヌタの有甚な統蚈抂芁を取埗するには、describe関数を䜿甚できたす。



このコヌドの䟋は、゜ヌス資料ペヌゞにありたす 。



デヌタには、取匕期間の始倀ず終倀、および最高䟡栌​​ず最䜎䟡栌の4぀の列が含たれおいたす。1日の間隔ずApple株を考慮したす。 たた、2぀の远加の列VolumeずAdj Closeも取埗したす。 それらの最初のものは、取匕日に取匕が行われた株匏数を蚘録するために䜿甚されたす。 2番目の列は「調敎枈み」終倀です。これは、次の取匕日の始業前に完了しおいる可胜性のある圚庫に察するすべおのアクションが期間の終倀に远加されるこずを意味したす。



デヌタをCSVファむルに保存する必芁がある堎合、これはto_csv関数を䜿甚しお行うこずができ、read_csvを䜿甚しおファむルを読み取るこずができたす-これは、デヌタ゜ヌスが倉曎され、そのアクセスが䞀時的に倱われる状況に圹立ちたす。



 import pandas as pd aapl.to_csv('data/aapl_ohlc.csv') df = pd.read_csv('data/aapl_ohlc.csv', header=0, index_col='Date', parse_dates=True)
      
      





ダりンロヌドしたデヌタの基本的な分析が終わったら、次に進みたしょう。 これを行うには、たずえば、特定の列の最埌の10行を遞択しお、むンデックスず列を調べるこずができたす。 これはサブセットず呌ばれたす。これは、䜿甚可胜なデヌタの小さなセットのみが取埗されるためです。 結果のサブセットはシリヌズ、぀たり、1次元の名前付き配列です。



むンデックス列ずデヌタ列を確認するには、むンデックス属性ず列属性を䜿甚したす。 その埌、列columnの最埌の10個の芳枬倀のサブセットを遞択できたす。 これらの倀を分離するには、角括匧を䜿甚したす。 最埌の倀はts倉数に配眮され、そのタむプはtype関数を䜿甚しおチェックされたす。



 # Inspect the index aapl.index # Inspect the columns aapl.columns # Select only the last 10 observations of `Close` ts = aapl['Close'][-10:] # Check the type of `ts` type(ts)
      
      





角括匧を䜿甚するのは䟿利ですが、これはパンダで䜜業する際の最も䞀般的な方法ではありたせん。 したがっお、関数locおよびilocも怜蚎する䟡倀がありたす。最初の関数はラベルベヌスのむンデックス䜜成に䜿甚され、埌者は䜍眮のむンデックス䜜成に䜿甚されたす。



実際には、これは、2007たたは2006-11-01のようなシリヌズラベルをloc関数に枡すこずができ、22たたは43のような敎数がiloc関数に枡されるこずを意味したす。



 # Inspect the first rows of November-December 2006 print(aapl.loc[pd.Timestamp('2006-11-01'):pd.Timestamp('2006-12-31')].head()) # Inspect the first rows of 2007 print(aapl.loc['2007'].head()) # Inspect November 2006 print(aapl.iloc[22:43]) # Inspect the 'Open' and 'Close' values at 2006-11-01 and 2006-12-01 print(aapl.iloc[[22,43], [0, 3]])
      
      





パヌティション手順の結果を泚意深く芋るず、デヌタに特定の日が欠萜しおいるこずがわかりたす。 パタヌンをさらに分析するず、通垞2日たたは3日では十分ではありたせん。 これらは週末ず祝日であり、その間は為替取匕は行われたせん。



むンデックス付けのほかに、デヌタに぀いおさらに孊習する方法がいく぀かありたす。 たずえば、20行のデヌタのサンプルを䜜成し、それらを再フォヌマットしお、applが非日次倀および月次倀になるようにするこずができたす。 これを行うには、sampleおよびresample関数を䜿甚したす。



 # Sample 20 rows sample = aapl.sample(20) # Print `sample` print(sample) # Resample to monthly level monthly_aapl = aapl.resample('M').mean() # Print `monthly_aapl` print(monthly_aapl)
      
      





デヌタの芖芚化ず財務分析に進む前に、取匕期間の始倀ず終倀の差の蚈算を開始できたす。 この算術挔算は、Pandasを䜿甚しお実行できたす。applデヌタのOpen列の倀をClose列から枛算する必芁がありたす。 たたは、蚀い換えるず、aapl.Openからaapl.Closeを枛算したす。 結果の結果は、diffず呌ばれるaaplデヌタフレヌムの新しい列に栌玍され、del関数を䜿甚しお削陀できたす。



 # Add a column `diff` to `aapl` aapl['diff'] = aapl.Open - aapl.Close # Delete the new `diff` column del aapl['diff']
      
      





結果の絶察倀は、財務戊略の開発にすでに有甚である可胜性がありたすが、通垞、たずえば特定の株の成長率や䟡栌の䞋萜など、より深い分析も必芁です。



時系列デヌタの可芖化



関数head、tail、およびむンデックス付けを䜿甚したデヌタ分析に加えお、それらの芖芚化も可胜です。 PandasずMatplotlibチャヌト䜜成ツヌルの統合により、これは非垞に簡単に行えたす。 plot関数を䜿甚しお、関連するパラメヌタヌを枡すだけです。 さらに、グリッドパラメヌタヌを远加するず、結果のグラフがグリッドに重ねられたす。



 # Import Matplotlib's `pyplot` module as `plt` import matplotlib.pyplot as plt # Plot the closing prices for `aapl` aapl['Close'].plot(grid=True) # Show the plot plt.show()
      
      





このコヌドは、次のようなグラフを提䟛したす。







チュヌトリアルの次の郚分では、Pythonを䜿甚した時系列デヌタの財務分析に焊点を圓おたす。



継続するには... ..



ITI Capitalの金融および株匏垂堎に関するその他の資料






All Articles