そうだ!機械学習を使用してビリビリの株価動向を予測する

そうだ!機械学習を使用してビリビリの株価動向を予測する

[[418764]]

この記事では、主にPythonを使用してビリビリの株価を分析する方法について説明します。株価データの基礎分析を行い、matplotlib描画ライブラリと組み合わせて視覚化し、機械学習手法であるモンテカルロシミュレーションを使用して、今後1年間の株価動向を予測します。

インストール

numpy、pandas、matplotlib、scipy などの Python データ サイエンス ツールキットをインストールする必要があります。

  1. #公式アカウントをフォロー: Kuankebang、「ソースコード」と返信すると、この記事の完全なソースコードをダウンロードできます。
  2. numpyをnpとしてインポートする
  3. pandasをpdとしてインポートする
  4. 数学からインポートsqrt
  5. matplotlib.pyplot をpltとしてインポートします。
  6. scipy.statsからnormをインポート
  7. pandas_datareaderからデータをインポートする

分析対象は、2018年の上場から2021年現在までのビリビリ(銘柄コード:BILI)のデータです。データはYahooから提供されています。ここでは、pd.to_datetime を使用して、データ セットの時間を時系列に変換し、株価分析を容易にしています。

  1. BILI = data.DataReader( 'BILI' , 'yahoo' , start= '2018/3/29' ,)
  2. BILI.index =pd.to_datetime( BILI.index )

まず、head() メソッドを使用して、データ セットの構造を確認します。データ セットには、株式の始値、終値、1 日の最小値と最大値、取引量などの情報が含まれています。この記事の下部にある QR コードをスキャンして、完全なソース コードと Jupyter Notebook ファイルをダウンロードしてください。

始値トレンド

matplotlib を使用してデータを視覚化できます。plt.legend は画像の凡例を設定するために使用されます。loc は凡例の位置です。upper right は凡例が右上隅にあることを意味します。チャートからわかるように、ビリビリ株は2020年12月から2021年2月にかけて急成長し、その後株価は下落しました。

  1. plt.figure(図サイズ=(16,6))
  2. BILI[ '開く' ].plot()
  3. plt.legend([ 'BILI' ],loc= '右上' )

株式取引量

株の取引量を見てみましょう。

  1. plt.figure(図サイズ=(16,6))
  2. BILI[ 'ボリューム' ].plot()
  3. plt.legend([ 'BILI' ],loc= '右上' )
  4. plt.xlim( BILI.インデックス[0], BILI.インデックス[ -1])

株式総取引量

以下の銘柄の総取引量を分析してみましょう。グラフを見ると、2021年1月から5月までのある日の総取引額が過去最高を記録したことが一目瞭然です。

  1. BILI[ '総取引量' ]=BILI[ '始値' ]*BILI[ '取引量' ]
  2.  
  3. plt.figure(図サイズ=(16,6))
  4. BILI[ '合計取引' ].plot()
  5.  
  6. plt.legend([ 'BILI' ],loc= '右上' )
  7. plt.xlim( BILI.インデックス[0], BILI.インデックス[ -1])

次に、argmax() を使用して、取引金額が最大となる日付を取得します。

  1. BILI[ '合計取引' ].argmax()

出力は次のようになります。

  1. タイムスタンプ( '2021-02-25 00:00:00' )

ニュースを調べたところ、2021年2月25日に、ビリビリ(NASDAQ: BILI)が2020年12月31日までの第4四半期および通期の監査対象外財務報告書を発表したことがわかりました。財務報告が発表された後、ビリビリの米国株式市場での株価は時間外取引で5%以上上昇した。

終値とその移動平均

BILI 株の終値とその移動平均が以下にプロットされています。移動平均を取得するには、DataFrame の rolling() 関数を使用できます。

  1. BILI[ '閉じる' ].plot(figsize=(16,6),xlim=(BILI.index [ 0],BILI.index [ -1]))
  2. BILI[ 'Close' ].rolling(50).mean().plot(label= 'BILI MA50' )
  3. BILI[ 'Close' ].rolling(200).mean().plot(label= 'BILI MA200' )
  4. plt.凡例()

株式の利益率

以下では、各株の日次リターンを計算し、ヒストグラムで表示します。日次収益率を計算する方法は3つあります。1つ目は計算式を直接使う方法、2つ目は金融分野専用のサードパーティライブラリのffn.to_returns関数をインポートする方法、3つ目はpandasが提供するpct_change(1)関数を使って計算する方法です。この記事の下部にある QR コードをスキャンして、完全なソース コードと Jupyter Notebook ファイルをダウンロードしてください。

  1. #公式アカウントをフォロー:Kuankebang、「ソースコード」と返信すると完全なソースコードが取得でき、計算式を直接使用できます
  2. BILI[ '戻り' ]=(BILI[ '終値' ]-BILI[ '終値' ].shift(1))/BILI[ '終値' ].shift(1)
  3. BILI = BILI.dropna()
  4.  
  5. #金融分野専用のサードパーティライブラリをインポートするffn.to_returns関数の計算
  6. ffnをインポートする
  7. BILI[ '戻る' ] = ffn.to_returns(BILI[ '閉じる' ])
  8.  
  9. #計算にはpandasの独自の関数pct_change(1)を使用する
  10. BILI[ '戻る' ]=BILI[ '閉じる' ].pct_change()
  11. BILI = BILI.dropna()
  12.  
  13. #公式アカウントをフォロー: Kuankebang、「ソースコード」と返信すると、この記事の完全なソースコードをダウンロードできます。
  14. plt.hist(BILI[ 'Return' ],bins=50)

箱ひげ図を使って収益率を観察することもできる

  1. box_df = pd.concat([BILI[ 'Return' ]],axis=1)
  2. box_df.columns = [ 'BILIリターンズ' ]
  3. box_df.plot(種類= 'box' 、図サイズ=(8,11)、カラーマップ= 'jet' )

株式の累積収益をプロットする

  1. BILI[ '累積リターン' ]=(1+BILI[ 'リターン' ]).cumprod()
  2.  
  3. BILI[ '累積リターン' ].plot(label= 'BILI' ,figsize=(16,8),title= '累積リターン' )
  4. plt.凡例()

株式の年間複利成長率と収益の年間変動率

株式の年間複利成長率と収益の年間変動率を計算します。

  1. #公式アカウントをフォロー: Quantcom、「ソースコード」と返信すると完全なソースコードが取得でき、複合年間成長率を計算できます
  2. 日数 = ( BILI.index [-1] - BILI.index [ 0]).日数
  3. cagr = ((((BILI[ 'Adj Close' ][-1]) / BILI[ 'Adj Close' ][1])) ** (365.0/日)) - 1
  4. print ( 'CAGR =' ,str(round(cagr)*100)+ "%" )
  5. ミュー = cagr
  6.  
  7. #リターンの年間変動率を計算する
  8. BILI[ 'リターン' ] = BILI[ '調整終値' ].pct_change()
  9. vol = BILI[ '戻り値' ]*sqrt(252)
  10. print ( "年間ボラティリティ =" ,str(round(vol,4)*100)+ "%" )

CAGR = 71.72%年間変動率 = 65.14%

モンテカルロシミュレーションを使用した株価動向の予測

正規分布に従う毎日の収益のランダム抽出に基づいて、次の取引年 (252 日間) の基礎価格シリーズの進化の単一のシミュレーションを予測してみましょう。最初のグラフに示されている単一の線シリーズによって表されます。 2 番目のグラフは、1 年間にわたるこれらのランダムな毎日のリターンのヒストグラムをプロットします。この記事の下部にある QR コードをスキャンして、完全なソース コードと Jupyter Notebook ファイルをダウンロードしてください。

  1. S = BILI[ 'Adj Close' ][-1] #開始株価(最終日の実際の株価)
  2. T = 252 #取引日数
  3. mu = 0.7172 #年平均成長率
  4. vol = 0.6514 #年間ボラティリティ
  5.  
  6. #公式アカウントをフォロー: Quantcom、「ソースコード」と返信して完全なソースコードを取得し、ランダム正規分布を使用して毎日の収入リストを作成します
  7. daily_returns = np.random.normal((mu/T),vol/math.sqrt(T))+1
  8.  
  9. #公式アカウントをフォロー: Kuankebang、「ソースコード」と返信すると、この記事の完全なソースコードをダウンロードできます。
  10. 価格リスト = [S]
  11.  
  12. daily_returnsxについて:
  13. 価格リスト.append(価格リスト[-1]*x)
  14.  
  15. #価格系列の折れ線グラフを生成する
  16.  
  17. plt.plot(価格リスト)
  18. plt.show()

日次収益のヒストグラムを生成する

  1. plt.hist(毎日の戻り値-1, 100)
  2. plt.show()

ビリビリ株価の今後の動向を予測する1,000回のシミュレーション。

  1. numpyをnpとしてインポートする
  2. インポート数学
  3. matplotlib.pyplot をpltとしてインポートします。
  4. scipy.statsからnormをインポート
  5.  
  6. #公式アカウントをフォロー: Kuankebang、「ソースコード」と返信すると、この記事の完全なソースコードをダウンロードできます。
  7. S = BILI[ 'Adj Close' ][-1] #開始株価(最終日の実際の株価)
  8. T = 252 #取引日数
  9. mu = 0.7172 #年平均成長率
  10. vol = 0.6514 #年間ボラティリティ
  11.  
  12. #シミュレーションの実行回数を選択します - 私は1000を選択しました
  13. iが範囲(1000)内にある場合:
  14. #ランダム正規分布を使用して日次リターンのリストを作成する
  15. daily_returns = np.random.normal(mu/T,vol/math.sqrt(T))+1
  16.      
  17. #開始価格を設定し、上記のランダムな毎日のリターンによって生成された価格リストを作成します
  18. 価格表 = [S]
  19.      
  20. daily_returnsxについて:
  21. 価格リスト.append(価格リスト[-1]*x)
  22.  
  23. # 個々の実行からデータをプロットします。最後にプロットします
  24. plt.plot(価格リスト)
  25.  
  26. #上記で作成した複数の価格シリーズのグラフを表示します
  27. plt.show()

ビリビリ株価の今後の動向を予測する10,000回のシミュレーション。

  1. numpyをnpとしてインポートする
  2. インポート数学
  3. matplotlib.pyplot をpltとしてインポートします。
  4. scipy.statsからnormをインポート
  5.  
  6. #公式アカウントをフォロー: Kuankebang、「ソースコード」と返信すると、この記事の完全なソースコードをダウンロードできます。
  7. 結果 = []
  8.  
  9. #変数を定義する
  10. S = BILI[ 'Adj Close' ][-1] #開始株価(最終日の実際の株価)
  11. T = 252 #取引日数
  12. mu = 0.7172 #年平均成長率
  13. vol = 0.6514 #年間ボラティリティ
  14.  
  15. #シミュレーションする実行回数を選択します - 10000を選択します
  16. iが範囲(10000)内にある場合:
  17. #ランダム正規分布を使用して日次リターンのリストを作成する
  18. daily_returns = np.random.normal(mu/T,vol/math.sqrt(T))+1
  19.      
  20. #開始価格を設定し、上記のランダムな毎日のリターンによって生成された価格リストを作成します
  21. 価格表 = [S]
  22.      
  23. daily_returnsxについて:
  24. 価格リスト.append(価格リスト[-1]*x)
  25.  
  26. # 個々の実行からデータをプロットします。最後にプロットします
  27. plt.plot(価格リスト)
  28.      
  29. #各シミュレーション実行の終了値を、最初に作成した空のリストに追加します
  30. 結果を追加します(価格リスト[-1])
  31.  
  32. #上記で作成した複数の価格シリーズのグラフを表示します
  33. plt.show()

複数のシミュレーション用に、株価の終値のヒストグラムを作成します。

  1. plt.hist(結果、ビン=50)
  2. plt.show()

numpy の mean 関数を使用して平均の分布を計算し、「期待値」を取得します。

  1. print(round(np.mean(結果)))  
  2. 139.18
  3. NumPyの「パーセンタイル」関数を使用して5%と95%の分位数を計算する 
  4. print( "5% の分位数 =" ,np.percentile(result,5))print( "95% の分位数 =" ,np.percentile(result,95))
  5.  
  6. 5% 分位数 = 38.33550814175252  
  7. 95% 分位数 = 326.44060907630484

先ほど計算した 2 つの分位数をヒストグラムにプロットして、視覚的に表現してみましょう。

  1. plt.hist(結果、ビン=100)
  2. plt.axvline(np.percentile(result,5)、色= 'r' 、線のスタイル= '破線' )
  3. plt.axvline(np.percentile(result,95)、色= 'r' 、線のスタイル= '破線' )
  4. plt.show()

上記の結果から、ビリビリ(BILI)の株価が最終的に 38.33 米ドルを下回る確率は 5%、326.44 米ドルを上回る確率は 5% であることがわかります。株価が 326.44 ドルを超えた場合の利益を追いかけるために、株価が 38.33 ドルを下回った場合に 5% の損失を被るリスクを負う覚悟はありますか?

<<:  ウナギの下半身は切り落とされた後もまだ動きます。ロボット: 受け取ってください。

>>:  人工知能は人類の生存を脅かすでしょうか?

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

ワンクリックで顔のピクセル画像を生成し、Animal Crossingにアップロードしましょう!このプロジェクトは楽しい

日本の独立系開発者佐藤氏はアスペルガー症候群のため学校を中退、退職。その後独学でAIを学び、AI画伯...

ネットワークデータセキュリティ管理に関する新たな規制が導入される

顔は機密性の高い個人情報です。一度漏洩すると、個人や財産の安全に大きな損害を与え、公共の安全を脅かす...

1億3000万元の無人公共交通システムの調達に関する簡単な分析:車両のインターネットの商用利用の条件が整っている

最近、鄭州市鄭東新区龍湖区の無人バスシステムプロジェクトの調達入札公告が発表された。自動運転バス路線...

中国では普及していない無人コンビニが、なぜアメリカでは人気があるのか​​?

[[247391]] 2018年1月、米国シアトルのアマゾン本社にアマゾン初の無人コンビニエンスス...

AI導入時に解決すべき無線ネットワークの運用・保守における4つの大きな課題

無線通信ネットワークの発展に伴い、今後のネットワークは周波数帯域やネットワーク構成の面でより複雑化し...

AI Coreの「正体」を1つの記事で理解する

[[251095]] 2018年の初めから年末にかけて、携帯電話業界では人工知能がキーワードとなって...

人工知能はマーケティング業界に破壊的な影響を及ぼすだろう

ビッグデータと人工知能の市場は現在、活況を呈しています。調査会社の最近の予測によると、これら2つの技...

3D生成の中核理論の再構築:VAST、香港大学、清華大学が「ゼロ」のトレーニングデータで3Dモデルを生成

トレーニング データは必要ありません。「宿題をしているバナナマン」などの文をモデルに説明するだけです...

...

機械学習愛好家必読ガイド

[[273182]]このガイドは、機械学習 (ML) に興味があるが、どこから始めればよいかわからな...

...

現在人工知能が適している5つの分野

調査会社IDCが最近発表した「世界の人工知能支出ガイド」によると、世界の人工知能予算は今後4年間で倍...

C# データ構造とアルゴリズムにおける線形テーブルの簡単な分析

C# データ構造とアルゴリズムの線形リストとは何ですか?まず、C# のデータ構造とアルゴリズムにおけ...

精度が極めて低いです! OpenAIがAI検出器を削除、ICMLの傑出した論文が非難される

OpenAI は、わずか半年しかオンラインではなかった独自のテキスト検出器 Classifier を...