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

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

[[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% の損失を被るリスクを負う覚悟はありますか?

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

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

ブログ    
ブログ    
ブログ    

推薦する

これら5つのコアテクノロジーを理解すれば、人工知能はもうあなたの身近な存在に

人工知能は現在最も注目されている産業であり、将来的にはロボット、スマートセンサー、ウェアラブルデバイ...

LLaVA: GPT-4V(ision) のオープンソース代替品

LLaVA (Large Language and Vision Assistant) は、画像翻訳...

26億のパラメータ、智源と清華が中国の大規模事前トレーニングモデルをオープンソース化

最近、北京人工知能研究院と清華大学の研究チームは共同で、中国語を中核とした大規模な事前学習済み言語モ...

2021年の中国の医療人工知能産業の展望

医療用人工知能製品は多様化しており、下流の需要は強い医療人工知能産業の上流は、主に医療データマイニン...

1.2兆パラメータ:Googleの汎用スパース言語モデルGLaM、小サンプル学習がGPT-3を上回る

[[439859]]近年、モデルの規模はどんどん大きくなっています。例えば、2018年に登場したGP...

ニューラルネットワーク技術の進化について

ニューラル ネットワークとディープラーニング技術は、今日の高度なインテリジェント アプリケーションの...

ディープラーニングに基づく画像マッチング技術の概要

画像マッチング応用:ターゲット認識、ターゲット追跡、超解像度画像再構成、視覚ナビゲーション、画像ステ...

販売禁止の影で、国産GPGPUがその穴を埋めることはできるのか?

今年初め、ChatGPTはAIアプリケーションの開発を刺激する火花のようなもので、AI業界は開発の急...

製造業に人工知能を適用するにはどうすればよいでしょうか?

現在、製造企業で使用されている人工知能技術は、主にインテリジェント音声対話製品、顔認識、画像認識、画...

量子コンピューティングがサプライチェーン管理を改善する方法

サプライチェーン業務における量子コンピューティングのユースケースでは、意思決定モデル内の複雑で不可能...

中国の科学者が色を変えることができる柔らかいロボットを開発

ああ、これはまだ私が知っているロボットですか? 「カモフラージュして色を変える」と「柔らかく変形する...

AI動画がまた爆発!写真+音が動画に、アリババがソラのヒロインに歌わせ、レオがラップ

ソラに続いて、実は新しいAI動画モデルが登場し、とても素晴らしいのでみんなが転送して絶賛しています!...

成長痛に遭遇: 2017 年の AI およびビッグデータ業界のレビュー

2017 年、人工知能とビッグデータの開発では次の 10 の成長痛が発生しました。 [[216307...

機械学習により整形外科画像分析がさらに進化

医療画像解析に機械学習 (ML) を実装することは新しいことではありません。放射線科医は、自動化ツー...

Python ベースのパーセプトロン分類アルゴリズムの実践

[[374354]]パーセプトロンは、バイナリ分類タスク用の線形機械学習アルゴリズムです。これは、人...