アルゴリズム取引におけるPython - ページ 24

 

Python、NumPy、pandas、Seaborn を使用した線形回帰モデル手法


Python、NumPy、pandas、Seaborn を使用した線形回帰モデル手法

このビデオでは、Python での簡単な回帰テクニックをいくつか紹介します。 Python で回帰を実装するために利用できるツールはいくつかありますが、ここではそのうちの 2 つ、特に NumPy を使用することに焦点を当てます。このチュートリアルは網羅的なものではなく、統計テストは実行しないことに注意してください。単純に線を当てはめて出力を視覚化します。

GitHub のビデオの説明に記載されているリンクからノートブックをダウンロードして、手順に従ってください。まずは環境を設定し、必要なライブラリをインポートすることから始めましょう。 NumPy、pandas、Yahoo Finance API を使用してライブ データを取得し、matplotlib を使用して視覚化し、seaborn を使用してプロットにテーマを適用します。

次に、データを取得する必要があります。約 1 年前に遡って、Google と S&P 500 ETF のデータを取得します。この目的のために、pandas データ リーダーと Yahoo Finance API を使用します。データを取得したら、すぐに確認できます。分析では「終値」価格のみに関心があるため、それに応じてデータを調整します。

回帰を実行するために、Google と S&P 500 ETF の両方の瞬間収益率を計算します。無効な値を削除したら、2 つの変数間の相関関係を計算する準備が整います。それらに強い相関があることがわかりましたが、この分析では因果関係を判断するつもりはありません。代わりに、S&P 500 を独立変数として考慮します。

視覚化を容易にするために、データ ポイントのより小さなサブセットをサンプリングします。この場合、60 個のリターンをランダムにサンプリングし、データセット全体と同様の相関関係を観察します。次に、X 軸に S&P 500、Y 軸に Google をとった散布図をプロットして、データを視覚化します。

回帰に移り、NumPy の Polyfit 関数を使用して線形モデルを近似します。 S&P 500 を独立変数、Google を従属変数として、多項式の次数 (単純な線形回帰の場合は 1) とともにサンプル データを渡します。これにより、最適な直線の傾きと y 切片が得られ、ベータ値として解釈できます。

傾向線をプロットするには、NumPy の Polyval 関数を使用し、回帰と独立変数を渡します。この傾向線を散布図に重ねることができます。さらに、回帰は将来の価格を予測するためのテクニカル指標として使用できます。この例では、S&P 500 終値を時間で回帰します。

回帰係数を取得したら、将来の時点の予測値を計算できます。実際のデータを時間に対してプロットし、傾向線を追加し、線形モデルに 1 つの標準偏差を加算および減算してチャネルを作成します。このチャネルは、予測の信頼区間を視覚的に表現します。

最後に、回帰モデルを使用して特定の時点の予測を行う方法を示します。回帰係数を使用して Poly1d オブジェクトを作成することにより、(将来の時点を表す) 値を代入して予測値を取得できます。また、傾向線と信頼区間を使用して散布図を視覚化する別の方法を提供する Seaborn の regplot についても簡単に説明します。

このチュートリアルに従うことで、Python で線形回帰を開始し、分析と予測のためのさまざまなテクニックを探索できます。

Python での線形回帰の基本を説明したので、追加のテクニックと概念をいくつか見てみましょう。

回帰分析の重要な側面の 1 つは、モデルの適合度を評価することです。言い換えれば、線形回帰直線は変数間の関係をどの程度よく表しているでしょうか?独立変数によって説明できる従属変数の分散の割合を示す R 二乗値など、適合度の評価に使用できるさまざまな統計的尺度があります。

R 二乗値を計算するには、Python の statsmodels ライブラリを使用できます。必要なモジュールをインポートし、線形回帰モデルをデータに適合させます。次に、モデルの rsquared 属性を使用して R2 値を抽出できます。

これを例で説明してみましょう。 2 つの変数 X と Y を含むデータセットがあり、X に基づいて Y を予測するために線形回帰モデルを近似したいとします。回帰を実行するには、statsmodels ライブラリの sm.OLS (Ordinary Least Squares) 関数を使用します。分析。

まず、必要なモジュールをインポートします。

import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
次に、データを pandas DataFrame にロードし、X 変数と Y 変数を抽出します。

data = pd.read_csv( 'data.csv' )
X = data[ 'X' ]
Y = data[ 'Y' ]
次に、定数項を独立変数 X に追加します。これは、statsmodels ライブラリが回帰モデルに切片項を含めるために必要です。

X = sm.add_constant(X)
これで、線形回帰モデルを当てはめて R 二乗値を計算できます。

model = sm.OLS(Y, X).fit()
r_squared = model.rsquared
最後に、適合度を評価するために R 二乗値を出力できます。

print( "R-squared:" , r_squared)
R 二乗値の範囲は 0 ~ 1 で、1 は完全な適合を示します。一般に、R 二乗値が高いほど、モデルがデータによく適合していることを示します。

R 二乗値に加えて、残差プロットを調べて、線形回帰の仮定の違反を示す可能性のあるパターンや傾向がないか確認することも重要です。残差は、従属変数の観測値と予測値の差です。優れた線形回帰モデルでは、残差がゼロ付近でランダムかつ均等に分散されている必要があります。

残差を視覚化するには、残差に対する予測値の散布図をプロットします。プロットにパターンまたはランダム性からの系統的な逸脱が示されている場合は、線形回帰モデルがデータに適切ではない可能性があることを示唆しています。

残差プロットを作成するには、Python の matplotlib ライブラリを使用できます。

predicted_values = model.predict(X)
residuals = Y - predicted_values

plt.scatter(predicted_values, residuals)
plt.axhline(y= 0 , color= 'r' , linestyle= '-' )
plt.xlabel( 'Predicted Values' )
plt.ylabel( 'Residuals' )
plt.title( 'Residual Plot' )
plt.show()
残差に対する予測値の散布図は、明確な構造や傾向のない雲のようなパターンを示すはずです。湾曲した形状や広がりの増加/減少などの明確なパターンが観察された場合は、線形回帰の仮定が当てはまらない可能性があることを示唆しています。

結論として、線形回帰は変数間の関係をモデル化するための強力で広く使用されている手法です。回帰直線をデータに当てはめることで、独立変数に基づいて予測を行い、従属変数についての洞察を得ることができます。 R 二乗値などの尺度を使用して適合度を評価し、残差プロットをチェックして回帰モデルの妥当性を評価することが重要です。

Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
  • 2021.07.05
  • www.youtube.com
#Python #Regression #NumPyhttps://alphabench.com/data/python-linear-regression.html✅ Please SUBSCRIBE:https://www.youtube.com/subscription_center?add...
 

Python、NumPy、Pandas を使用して株式投資ポートフォリオのボラティリティを計算する方法


Python、NumPy、Pandas を使用して株式投資ポートフォリオのボラティリティを計算する方法

このビデオでは、プレゼンターが Python を使用して投資ポートフォリオのボラティリティを計算する方法を示し、その背後にある数式も含めています。ハンドヘルド電卓で簡単に計算できるため、2 銘柄のポートフォリオに重点が置かれています。ただし、発表者は、3 つ以上の証券を含むポートフォリオの場合、ボラティリティの計算に行列の乗算が使用されると述べています。発表者は、NumPy ライブラリおよびその他のサポート ライブラリを利用して計算を実行します。

このビデオは、Python 環境のセットアップと必要なモジュールのインポートから始まります。次に、プレゼンターはプロセス全体で使用される変数を定義します。

ポートフォリオのリアルタイム データを取得するために、発表者は API の使用について言及し、特に 1 日の終わりの履歴データの使用を示します。データにアクセスするには API キーが必要であることが説明され、キーの登録方法と取得方法が説明されています。データの開始日は約 1 年前に設定されています。プレゼンターはポートフォリオを設定し、各証券に等しい重みを割り当て、ダウンロードしたデータを保存するための空のリストを作成します。

for ループを使用して、プレゼンターはポートフォリオ内の各シンボルに対して API 呼び出しを行い、データを取得します。データ プロバイダーの Web サイトからエンドポイント URL を取得し、必要な変更を加えることで API 呼び出しを構築する方法を示します。データは JSON 文字列として取得され、さらに処理するために pandas DataFrame に変換されます。終値は DataFrame から抽出され、データ リストに追加されます。

for ループが完了すると、プレゼンターはデータ リストを DataFrame に変換し、転置し、列の名前をシンボル名に変更し、インデックスを日付に変更します。次に、各証券の終値を含む結果のデータフレームを表示します。

ボラティリティを計算するには、瞬間収益率を計算する必要があると発表者は説明します。終値に対して NumPy の対数関数を使用して新しいデータフレームを作成し、連続する値の差を計算します。結果として得られる DataFrame は、各証券の瞬間収益率を表します。発表者は、NaN 値を処理するために DataFrame の最初の行を削除し、各証券の分散の計算を示します。

各証券のボラティリティを計算するために、プレゼンターは分散の平方根を使用します。結果のボラティリティがパーセンテージで表示されます。

ポートフォリオのボラティリティについては、各証券のボラティリティの加重平均として計算できると説明者は説明する。この例の証券は均等に重み付けされているため、発表者はボラティリティの平均のみを必要とします。彼らはそれをパーセンテージとしてフォーマットします。

次に、発表者は共分散行列の概念を紹介し、返される DataFrame を使用して共分散行列を計算する方法を示します。毎日の共分散を年間共分散に調整し、結果の共分散行列を表示します。

最後に、発表者は行列の乗算を使用してポートフォリオのボラティリティを計算します。重みに共分散行列を乗算し、結果の平方根を求めます。ポートフォリオのボラティリティは標準偏差を表すパーセンテージで表示されます。

結論として、このビデオでは、Python を使用してポートフォリオのボラティリティを計算する方法を段階的にデモンストレーションします。プレゼンターは、必要な計算を説明し、NumPy などの関連ライブラリを紹介し、ポートフォリオのボラティリティを低減するための分散の利点を強調します。

How to Calculate Stock Investment Portfolio Volatility with Python, NumPy & Pandas
How to Calculate Stock Investment Portfolio Volatility with Python, NumPy & Pandas
  • 2021.08.18
  • www.youtube.com
#python #numpy #pandaslearn how to use Python and NumPy to calculate investment portfolio volatilityhttps://alphabench.com/data/python-portfolio-volatil...
 

Steamlit for Python 入門 - 機能する Web アプリを数分で構築



Steamlit for Python 入門 - 機能する Web アプリを数分で構築

このビデオでは、Streamlit for Python を使用して Web アプリを作成する方法を説明します。 Streamlit は無料で使用できる Web ベースの UI で、フロントエンド開発の経験がなくても高品質のアプリを構築して共有できます。 APIを使用して株価データをダウンロードし、グラフ化できるシンプルなアプリを構築します。始めましょう!

まず、IDE として PyCharm を使用しますが、任意の IDE を使用できます。 PyCharm に詳しくない場合は、ビデオの説明に「Getting Started with PyCharm」ビデオへのリンクを提供しています。さらに詳しく知りたい場合は、ぜひチェックしてください。

すでに PyCharm で「Streamlit Demo」という新しいプロジェクトをセットアップし、Python ファイルを追加しました。新しい仮想環境から始めるため、いくつかの依存関係をインストールする必要があります。 Pandas、Requests ライブラリ、Streamlit が必要になります。 PyCharm の構成によっては、Pandas と Requests がすでにインストールされている場合がありますが、Streamlit を必ずインストールする必要があります。さらに、アプリには「End of Day Historical Data」API を使用します。これにより、1 日あたり約 20 回の制限付きで無料の API 呼び出しが可能になります。それ以上が必要な場合は、ウェブサイトで購読オプションを提供しています。

Streamlit がインストールされたら、サンプル アプリケーションを見てみましょう。ターミナルを開き、コマンド ラインから Python を呼び出して Streamlit コマンドを実行することで、Streamlit を実行します。彼らのサンプル アプリケーションは、「hello」というファイル内にあります。数秒後、アプリケーションが起動し、ヘッダー、テキスト、ハイパーリンクを含む Web ページが表示されます。左側には、探索できるさまざまなデモンストレーションがあります。彼らのデモの優れた点は、出力の生成に使用されるコードが提供されていることです。たとえば、グラフを含むデモがあり、その下にそのグラフの生成に使用されたコードが表示されます。 Streamlit は、Web ページ上でのコンテンツの書式設定と配置を処理するため、必要な出力を生成するコードの作成だけに集中する必要があります。

アプリケーションに満足したら、Streamlit にライブ公開の許可をリクエストできます。彼らは引き続き無料公開を提供していますが、設定するには連絡する必要があります。その後、ファイルを GitHub にプッシュし、数秒以内にライブ アプリケーションを共有できます。

次に、独自のアプリケーションの作成に進みましょう。アプリケーション コードを書き始める前に、Streamlit のいくつかの機能を説明します。 Streamlit には、ボタン、カラー ピッカー、サイドバー、テキスト ボックス、日付ピッカーなど、使用できるさまざまな要素が用意されています。最も一般的に使用される要素は、Web ページ上にテキストを表示できる「write」機能です。 「write」関数内でマークダウン構文を使用してテキストをフォーマットすることもできます。さらに、自由形式のテキストを表示したい場合は、docstring を使用するだけで、Streamlit がそれをマークダウンとしてレンダリングします。

基本的なアプリを作成して、これらの機能のいくつかをテストしてみましょう。いくつかの依存関係を定義してから、Streamlit 要素の使用方法を説明します。 「st」関数から始めて、そのさまざまな機能を調べていきます。たとえば、「st.button」を使用してボタンを表示し、「st.color_picker」を使用してカラーピッカーを使用し、「st.sidebar」を使用してサイドバーを作成できます。 「write」関数もテキストを表示するのに非常に便利で、その中でマークダウン構文を使用できます。これらの一般的な機能を説明しますが、Streamlit にはさらに多くのオプションが用意されていることを覚えておいてください。

アプリケーションを実行するには、現在の Streamlit サーバーを停止し、その名前で Python コマンドを実行して再起動します。

以下は、株価データをダウンロードしてグラフ化できるシンプルな Streamlit アプリの例です。

import streamlit as st
import pandas as pd
import requests

# Set the title and page layout
st.title( "Stock Price Data" )
st.sidebar.header( "Settings" )

# Create input fields in the sidebar
symbol = st.sidebar.text_input( "Enter a stock symbol (e.g., AAPL)" , value= "AAPL" )
start_date = st.sidebar.text_input( "Enter the start date (YYYY-MM-DD)" , value= "2022-01-01" )
end_date = st.sidebar.text_input( "Enter the end date (YYYY-MM-DD)" , value= "2022-12-31" )

# Create a button to trigger the data retrieval
if st.sidebar.button( "Get Data" ):
     # Make an API request to retrieve the stock price data
    url = f " https://api.example.com/stock/ {symbol}/history?start_date={start_date}&end_date={end_date}"
    response = requests.get(url)
    
     # Check if the API request was successful
     if response.status_code == 200 :
        data = response.json()
        df = pd.DataFrame(data)
        
         # Display the downloaded data
        st.write(df)
        
         # Create a line chart of the stock prices
        st.line_chart(df[ "close" ])
     else :
        st.write( "Error retrieving data from the API" )

# Add some additional information to the sidebar
st.sidebar.info( "This is a simple app to download and graph stock price data." )
st.sidebar.info( "Enter the stock symbol and date range, then click 'Get Data' to retrieve the data." )

この例では、まず必要なライブラリ (Streamlit、Pandas、Requests) をインポートします。次に、st.title() 関数と st.sidebar.header() 関数を使用して、タイトルとページ レイアウトを設定します。

次に、st.sidebar.text_input() 関数を使用してサイドバーに入力フィールドを作成します。ユーザーはこれらのフィールドに銘柄記号、開始日、終了日を入力できます。

次に、st.sidebar.button() 関数を使用してボタンを作成します。ボタンをクリックすると、データ取得プロセスがトリガーされます。入力された記号、開始日、終了日を使用して API リクエスト URL を構築します。 request.get() 関数を使用して、API に対して GET リクエストを作成します。

API リクエストが成功した場合 (ステータス コード 200)、レスポンスからデータを取得し、Pandas DataFrame を作成します。 st.write() 関数を使用してダウンロードしたデータを表示し、st.line_chart() 関数を使用して株価の折れ線グラフを作成します。

API リクエストが失敗した場合は、st.write() 関数を使用してエラー メッセージを表示します。

最後に、st.sidebar.info() 関数を使用して、サイドバーに追加情報を追加します。

このアプリを実行するには、Python ファイル (stock_app.py など) に保存し、ターミナルでコマンド streamlit runstock_app.py を使用して実行します。

これは単なる基本的な例であり、ニーズに基づいてさらにカスタマイズできます。 Streamlit は、ドロップダウン、チェックボックス、スライダーなど、インタラクティブな Web アプリを作成するための機能をさらに提供します。詳細と例については、Streamlit ドキュメント ( https://docs.streamlit.io/ ) を参照してください。

Getting Started with Steamlit for Python - Build a Functioning Web App in Minutes
Getting Started with Steamlit for Python - Build a Functioning Web App in Minutes
  • 2021.10.18
  • www.youtube.com
#python #streamlitHow to use streamlit - full-featured GUI for Pythonhttps://alphabench.com/data/python-streamlit-app.html*Please SUBSCRIBE:https://www.yo...
 

一日の終わり (EOD) 履歴データ API を使用して毎日の高値/安値の時刻を見つける



一日の終わり (EOD) 履歴データ API を使用して毎日の高値/安値の時刻を見つける

このビデオでは、株式の毎日の高値と安値の取引価格を抽出できる、End of Day Historical Data API について説明します。この API は金融データのフリーミアム モデルの一部であり、1 日あたり 20 回の無料 API 呼び出しを提供します。この API の利点は、70 を超える世界的な取引所からのデータへのアクセスが提供されることです。動画の説明に Web サイトへのリンクと特別価格が記載されています。

まず、環境をセットアップする必要があります。 datetime モジュールを使用して日付を操作し、ヘルパー ライブラリを使用して履歴データにアクセスし、pandas を使用してデータ操作とフィルタリングを行い、API 呼び出しを行うリクエストを使用します。次に、API キーを取得する必要があります。これはファイルに保存することも、簡単にするためにノートブックに直接保存することもできます。

また、データの開始日も定義します。通常は約 10 日前に遡ります。 API にはデータの種類に基づいてさまざまな制限があり、分単位のデータは 120 日に制限され、5 分間隔のデータは 600 日に制限されます。 API は、1970 年 1 月 1 日からの経過秒数を表す Unix タイムスタンプを使用してデータのインデックスを作成します。API リクエストでは、必要な開始日を Unix タイムスタンプに変換します。

必要な設定が完了したら、API キーを使用して「End of Day Historical Data」オブジェクトのインスタンスを作成できます。このオブジェクトを使用すると、必要なデータを取得できます。ヘルパー ライブラリは、さまざまな種類のデータを探索できるさまざまなエンドポイントを提供します。この例では、指定された開始日から開始して、1 分間隔を使用して Tesla の日中価格を取得することに焦点を当てます。

データを視覚化するには、Pandas DataFrame のコンストラクターで API 呼び出しをラップします。これにより、データの操作と視覚化が容易になります。 DataFrame の最初の数行を表示して、Unix タイムスタンプ、日付、時刻など、取得したデータを確認します。

ヘルパー ライブラリを使用したくない場合は、リクエスト ライブラリを使用して API エンドポイントに直接アクセスし、JSON データを取得する代替アプローチをビデオで説明します。

次に、データのクリーンアップを実行します。整数ベースのインデックスをデータの日付と時刻に置き換えます。時刻と日付に個別の列を追加し、GMT オフセットや元の日付時刻などの不要な列を削除します。結果として得られる DataFrame には、列が追加された改訂された構造が表示されます。

通常の取引時間に集中するために、元のデータのコピーを作成します。インデックスは datetime オブジェクトであるため、between_time メソッドを使用して、必要な時間をフィルタリングできます。ビデオで述べているように、このデータのタイムゾーンは GMT-5 であるため、それに応じて時間を調整します。また、解釈を容易にするために、時刻を東部時間 (ET) に変換します。

datetime 列の時刻のみをフィルターするには、いくつかの追加手順を実行します。すでに計算を実行しているため、datetime メソッドを適用して時刻を抽出する前に、データを再度フォーマットする必要があります。結果として得られる DataFrame には、ニューヨーク市の調整された時間が表示されます。

最後に、取引日中にいつ高値と安値が発生するかという最初の疑問に取り組みます。まず、groupby 関数と min メソッドと max メソッドを使用して、毎日の一般的な最高値と最低値を取得します。これらの高値と安値の特定の時間を決定するには、データフレーム内の最小値と最大値のインデックスをそれぞれ見つけます。これにより、これらの価格ポイントのタイミングに関する洞察が得られ、パターンや傾向を観察できるようになります。

全体として、このビデオでは、End of Day Historical Data API の使用方法、株価データの取得方法、および取引価格の高値と安値のタイミングの分析に関するステップバイステップのガイドを提供します。

Use End of Day (EOD) Historical Data API to Find Time of Daily High/Low
Use End of Day (EOD) Historical Data API to Find Time of Daily High/Low
  • 2021.11.22
  • www.youtube.com
@MattMacarty #python #pandas #EODHistoricalDataUse a financial services API to find the time a stock trades at it lowest or highest each dayUse a financi...
 

Python と QuantStats を使用して取引アルゴリズムとポートフォリオ指標をバックテストする方法



Python と QuantStats を使用して取引アルゴリズムとポートフォリオ指標をバックテストする方法

今日は、ポートフォリオ プロファイリング ツールとして構築された広範な財務指標ライブラリである Quant stats の包括的な概要を説明します。 Quant 統計を使用すると、簡単なワンライナーを使用して詳細なレポートを簡単に生成できます。このツールを使用すると、ポートフォリオのパフォーマンスを効果的に測定し、取引アルゴリズムをバックテストできます。

Quant stats は、すでによく知っていて使用している、よく知られたデータ サイエンス ライブラリに依存しています。このデモでは、PyCharm で作業し、新しいプロジェクトを開始しました。手順に従って作業を進める場合は、必要な依存関係がインストールされていることを確認してください。 Quant 統計情報が約 6 か月間更新されておらず、最新の Pandas バージョンとの互換性の問題がある可能性があるため、私は少し古いバージョンの Pandas を使用しています。

必要な依存関係があることを確認するには、それらをrequirements.txtファイルに追加し、Pipを使用してインストールします。さらに、Quant 統計は、統計、プロット、レポートの 3 つのモジュールで構成されています。機能が豊富なため、この 1 つのビデオですべてを説明することはできません。ただし、概要を説明し、開始方法について説明します。その後、特定のニーズや興味に基づいてさらに詳しく調べることができます。

詳細に入る前に、スポンサーからの意見を少し聞いてみましょう。 Python を使用して取引アルゴリズムを作成する方法を学習することに興味がある場合は、Looming Wealth がアルゴリズム取引コースを支援することを許可してください。このコースでは、ユーザーに代わって自動的に取引するボットの作成、技術的および財務的指標の実装と利用、機械学習を使用した独自の取引アルゴリズムの開発方法を学びます。自分のペースで学習することも、ライブクラスに参加して共同学習を行うこともできます。以下のリンクをクリックして、Looming Wealth の詳細を確認し、取引コースのいずれかで 15% 割引を受けてください。

さて、Quant の統計に戻りましょう。新しい空のファイルで、Quant 統計ライブラリをインポートすることから始めます。次に、分析する銘柄記号を設定します。この例では、S&P 500 ETF (SPY) を使用します。 Quant 統計を使用して、過去 3 年間のパフォーマンスを調べます。

返品データをダウンロードするには、Yahoo Finance データに依存する Quant stats utils を利用します。好みのデータ ソースを使用できます。ここには魔法はありません。返品を印刷して、何が得られるかを確認してみましょう。出力は、指定された期間にわたる毎日の収益を含む Pandas シリーズになります。

返品データを取得したら、Quant 統計を使用してさまざまな統計を計算できます。このビデオで説明しきれないほど多くの利用可能な機能があります。 available_stats 属性を出力すると、利用可能な統計のリストを取得できます。プライベート関数を除いた、利用可能な統計情報のリストを表示してみましょう。

簡潔にするために、リストの内包の一部をコメントアウトします。過去 3 年間の S&P 500 の一般的な統計をいくつか印刷していきます。 qs.stats.sharpe_ratio() を使用してシャープレシオを計算してみましょう。さらに、qs.stats.best_day() と qs.stats.best_month() をそれぞれ呼び出して、最適な日と月を見つけます。必要に応じて、これらの呼び出しを変更して、別の方法でデータを集計することができます。

あるいは、Quant stats は Pandas のラッパーを提供し、ポートフォリオ オブジェクトで直接メソッド呼び出しを行うことができます。 Pandas を拡張すると、ワンライナーを使用してさまざまな統計にアクセスできます。たとえば、Quant stats.extend_pandas() を呼び出し、ポートフォリオ オブジェクトを使用して、複利年間総収益や最大ドローダウンなどの統計を取得できます。

統計に加えて、Quant stats はポートフォリオを構築する機能も提供します。

次に、移動平均クロスオーバー戦略に基づいてシグナルを計算します。速い移動平均が遅い移動平均を上回っている場合、それは買いシグナルです。それ以外の場合は売りシグナルです。これらの信号をデータ フレームに追加します。

その後、信号に基づいて位置を計算します。買いシグナルの場合はポジションを 1 (ロング ポジションを示す) に設定し、売りシグナルの場合はポジションを -1 (ショート ポジションを示す) に設定します。他のすべてのケースは 0 (位置がないことを示す) に設定されます。

ポジションを取得したので、戦略のリターンを計算します。これを行うには、ポジションに資産の日次リターンを掛けます。これにより、毎日の戦略の収益が得られます。

次に、毎日の収益の累積積を取得して、戦略の累積収益を計算します。これにより、時間の経過とともに戦略が成長していきます。

最後に、quantstats.reports.html 関数を使用してレポートを生成します。この関数は、累積返品データを取得し、さまざまなパフォーマンス メトリックと視覚化を含む HTML レポートを生成します。レポートを HTML ファイルとして保存します。

レポートを自動的に表示するには、Web ブラウザを使用してファイルを開きます。コードはこれで終わりです。

ここで、選択したパラメーターを使用してこのコードを実行すると、移動平均クロスオーバー戦略が生成され、パフォーマンス メトリックが計算され、結果を含む HTML レポートが生成されます。ニーズに合わせて、移動平均期間や時間枠などの戦略パラメーターをカスタマイズできます。

理由: