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

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

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

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

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

ブログ    

推薦する

...

百度地図のデータ収集リンクの80%はAIベースになっており、旅行業界はインテリジェントにアップグレードされている

人工知能時代の地図データ制作はどのような変化を遂げるのでしょうか?7月3日、「Baidu Creat...

人工知能は個人情報詐欺の蔓延に対する優れた解決策である

オンライン詐欺は長い間、継続的な問題となっています。今日ではテクノロジーはより洗練されているかもしれ...

過剰に防御的?モスクワのバス運転手は中国人乗客の身元を手動で確認し、顔認識システムの使用も許可されている。

最近、モスクワのバス運転手たちは少々パニックになっている。チャットグループでは、「バスの中でアジア人...

あなたの頭上に「ロボット」がやって来ます!起業家の知恵:リアルタイムで位置を特定し、自動的に警報を鳴らすスマートヘルメットの開発

[[317160]]建設作業中には、火災、電気、機械など、多くの潜在的な安全上の危険が存在します。安...

企業における人工知能: 8 つの誤解を解明

[[264444]]私たちはどんな新しいテクノロジーについても誤解しがちです。これは特にAI分野で顕...

人工知能は医療と健康分野に破壊的な革命をもたらすだろう

ヘルスケア分野への人工知能 (AI) の導入は、今日の国際医療における最も先進的な取り組みの 1 つ...

...

...

「初の顔認証事件」の最終判決がこちら

[[392244]] 4月9日午後3時、「初の顔認識事件」は杭州市中級人民法院で二審判決を受けた。こ...

クルーズの自動運転意思決定・計画技術の分析

クルーズ社の自動運転意思決定計画および制御部門の責任者であるブランドン・バッソ氏は、コロンビア大学で...

よく使われる6つのクラスタリング評価指標

クラスタリング結果の妥当性を評価すること、つまりクラスタリング評価または検証は、クラスタリング アプ...

AIは人間を失業させるのか? ジャック・マーとポニー・マーはそうは思わない

[[212627]] 【今後30年間、インターネットをうまく活用した企業は驚異的な発展を遂げるでしょ...

マイクロソフトリサーチアジアと教育省が協力し、AI産業と教育の統合に向けた双方にメリットのあるエコシステムの構築に取り組んでいます。

マイクロソフトリサーチアジアは、「中国の大学における人工知能人材の国際トレーニングプログラム」に関す...

PULSE: 暗黙の空間に基づく画像超解像アルゴリズム

CVPR 2020 に採択された論文「PULSE: 生成モデルの潜在空間探索による自己教師あり写真ア...