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

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

[[419019]]

この記事では、主に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 =データ.DataReader('BILI', 'yahoo',開始= '29/3/2018' ,)  
  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. plt.figure(図サイズ=(16,6))  
  3. BILI['合計取引'].plot()  
  4. plt.legend(['BILI'], loc = '右上' )  
  5. plt.xlim(BILI.インデックス[0],BILI.インデックス[-1])

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

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

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

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

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

終値とその移動平均

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

  1. BILI['閉じる'].plot(図サイズ=(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 = BILI.dropna()  
  4. #金融分野専用のサードパーティライブラリをインポートするffn.to_returns関数の計算 
  5. ffnをインポートする 
  6. BILI['戻る']=ffn.to_returns(BILI['閉じる'])  
  7. #計算にはpandasの独自の関数pct_change(1)を使用する 
  8. BILI['戻る']=BILI['閉じる'].pct_change()
  9. BILI BILI = BILI.dropna()  
  10. #公式アカウントをフォロー: Kuankebang、「ソースコード」と返信すると、この記事の完全なソースコードをダウンロードできます。  
  11. plt.hist(BILI['Return'],ビン= 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. BILI['累積リターン'].plot( label = 'BILI' , figsize =(16,8), title = '累積リターン' )  
  3. plt.凡例()

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

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

  1. #公式アカウントをフォロー: Quantcom、「ソースコード」と返信すると完全なソースコードが取得でき、複合年間成長率を計算できます 
  2. 日数= (BILI.index[-1] - BILI.index[0]).日数 
  3. cagr = ((((BILI['Adj Close'][-1]) / BILI['Adj Close'][1])) ** (365.0/日)) - 1  
  4. 印刷 (' CAGR =',str(round(cagr)*100)+"%")  
  5. ミュー= cagr    
  6. #リターンの年間変動率を計算する 
  7. BILI['リターン'] = BILI['調整終値'].pct_change()  
  8. vol = BILI ['戻り値']*sqrt(252)  
  9. 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. #公式アカウントをフォロー: Quantcom、「ソースコード」と返信して完全なソースコードを取得し、ランダム正規分布を使用して毎日の収入リストを作成します 
  6. daily_returns = np .random.normal((mu/T),vol/math.sqrt(T))+1  
  7. #公式アカウントをフォロー: Kuankebang、「ソースコード」と返信すると、この記事の完全なソースコードをダウンロードできます。  
  8. 価格表= [S]  
  9. daily_returns の x について:  
  10. 価格リスト.append(価格リスト[-1]*x)  
  11. #価格系列の折れ線グラフを生成する 
  12. plt.plot(価格リスト)  
  13. 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. #公式アカウントをフォロー: Kuankebang、「ソースコード」と返信すると、この記事の完全なソースコードをダウンロードできます。  
  6. S = BILI ['Adj Close'][-1] #開始株価(つまり最終日の実際の株価)  
  7. T = 252 #取引日数 
  8. mu = 0.7172 #年平均成長率 
  9. vol = 0.6514 #年間ボラティリティ 
  10. #シミュレーションの実行回数を選択します - 私は1000を選択しました 
  11. iが範囲(1000)内にある場合:  
  12. #ランダム正規分布を使用して日次リターンのリストを作成する 
  13. daily_returns = np .random.normal(mu/T,vol/math.sqrt(T))+1  
  14.   #開始価格を設定し、上記のランダムな毎日のリターンによって生成された価格リストを作成します 
  15. 価格表= [S]    
  16.   daily_returns の x について:  
  17. 価格リスト.append(価格リスト[-1]*x)  
  18. # 個々の実行からデータをプロットします。最後にプロットします 
  19. plt.plot(価格リスト)  
  20. #上記で作成した複数の価格シリーズのグラフを表示します 
  21. plt.show()

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

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

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

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

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

  1. print(round(np.mean(結果)))

139.18

NumPyの「パーセンタイル」関数を使用して5%と95%の分位数を計算する

  1. print("5%分位数=",np.percentile(result,5))  
  2. print("95%分位数=",np.percentile(result,95))

5% 分位数 = 38.33550814175252

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

<<:  アルゴリズムを拒否することができます

>>:  AIプロジェクトでKubernetesを使用する方法

ブログ    
ブログ    
ブログ    

推薦する

AIとMLに対する5つの潜在的な致命的な脅威とその解決方法

[[267669]] [51CTO.com 速訳] 人工知能(AI)と機械学習(ML)は、この時代の...

新しい報告書によると、AIはディープフェイクから人々を保護できない

Data & Society の新しいレポートでは、機械学習を使用して改変されるディープフェ...

Google AIのスターがPika: ビデオ生成Lumiereの創設科学者に就任

動画世代が猛スピードで進化する中、ピカは偉大なる将軍を迎える―― Google の研究者である Om...

OpenAI GPTストアは来週開始予定

OpenAI は 2024 年に出発する準備が整っているようです。 ChatGPT の背後にある会社...

ディープラーニングのためのヘテロジニアスアクセラレーション技術(I):AIにはどれくらい大きな「心」が必要か?

1. 概要: 一般的 = 非効率的汎用プロセッサであるCPU(中央処理装置)は、コンピュータに欠か...

Google の Bard チャットボットがアップデートされ、リアルタイムで応答を生成できるようになりました

10 月 29 日現在、大規模言語モデル (LLM) では即座に回答を出すことができないため、質問を...

...

Xiaolin が LRU アルゴリズムを破壊!

[[411501]]この記事はWeChatの公開アカウント「Xiao Lin Coding」から転...

オープン性とクローズ性の戦い: Baidu と Google のどちらの AI プラットフォームが優れているか?

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

GPT-4 は生物兵器を作成できません! OpenAIの最新の実験では、大規模モデルはほぼ0であることが証明されている

GPT-4 は生物兵器の開発を加速させるでしょうか? AIが世界を支配することを心配する前に、人類は...

知湖橋プラットフォームにおける大型モデルの応用と実践

1. 事業の状況及び背景まずはブリッジプラットフォームを紹介します。 Bridge は、Zhihu ...

Linux環境で仮想化技術を使用する方法

仮想化テクノロジーは、物理ホストが複数の仮想コンピューティング環境を同時に実行できるように、コンピュ...

誰でも簡単にウェブサイトを構築できる 5 つの AI ウェブサイトビルダー

今日は、5 つの AI ウェブサイト ビルダー ツールをご紹介します。これらの AI ツールを使用す...

スマートカーのステアバイワイヤ技術の詳細な説明

電動化とインテリジェント化という2つの大きな発展の流れの下、わが国は機能車からスマート車への転換点に...

フェイフェイ・リーがリストに載っています!バイデン氏、AI研究者にデータを公開するため12人からなるタスクフォースを設置

バイデン政権は木曜日、国家人工知能研究リソース(NAIRR)作業部会の設立を発表した。ワーキンググル...