【コラム】AIを使ってIPOの初値を予測する

 IPO初値を予想するには、事業の内容やIPOの規模、価格設定などから予想していくことになりますが、必ずしも適正な初値水準というのがあるわけではありません。過去に上場した類似のIPOの初値は参考値として有用ではありますが、それでも全く同じ条件のIPOは存在しません。

 ここでは、過去のIPOの初値データをもとに、「AI(機械学習)」を利用して、初値の予測モデルを構築していきます

1AIと機械学習

 AIを使って予測モデルを構築する前に、簡単にAIについて確認しておきましょう。

AIとは 

 AIは「Artificial Intelligence(アーティフィシャル・インテリジェンス)」の略で、日本語では「人工知能」と訳されます。一般的に、人間と同じように学習や認識、判断するようなコンピューターのことを指す場合が多いですが、明確な定義があるわけではありません

 また、AIを語る上でよく使われる言葉に「機械学習(Machine Learning)」があります。機械学習は、データから一定の規則(パターン)や法則(ルール)を、コンピュータ自身が抽出する技術のことをいいます。つまり、AIは広義の概念であり、機械学習はAIが稼働するための必要な要素の1つといえます

機械学習の種類 

 機械学習では、データから規則性や判断基準を学習し、それに基づき未知のものを予測、判断していくことになります。また、機械学習には、「教師あり学習」「教師なし学習」「強化学習」の3種類の方法があります。

 IPOの初値を予測するモデルでは、特に「教師あり学習」で分析を進めていくことになります。

2予測モデルの構築

 今回は機械学習のオープンソースライブラリである「scikit-learn」を使用してモデルを構築していきます。scikit-learnは、Pythonの機械学習ライブラリで、誰でも無料で利用することができます。また、プログラムを実行するツールとして、機械学習ではおなじみの「Jupyter Notebook」を利用します。

 データ解析と予測については、大きく5つのステップに分けて進めていきます。

データの取得 

 今回使用するデータは、2008年1月から2021年6月の間に上場した企業の初値データ890件のうち、初値騰落率が全体の平均から(標準偏差の2倍)以上離れた45件を除く、845件のデータとしました。また、データの中身は、以下の構成としています

データ説明
OP公開価格(円)※上場時の単元数は100株に統一
MSIPO規模(投資家の資金供給額(億円)
POR募集株数における公募株数の割合(%)
EPS1株あたり利益(円)
BPS1株あたり純資産(円)
SGR直近の売上高成長率(%)
ROE直近の自己資本利益率(%)
GA類似グループの平均初値騰落率(%)
RA直近(上場承認日時点)の平均初値騰落率(%)
PD想定価格と公開価格の乖離率(%)
OSP初値(円)

 これらのデータをJupyter Notebookにインポートします。

  1. # データをインポート
  2. import pandas as pd
  3. import io
  4. df = pd.read_csv(io.StringIO(uploaded[‘ipo-data(2008-2021.6).csv’].decode(‘utf-8’)))

データの分割 

 インポートしたデータについて、目的変数特徴量を定義します。今回予測したいデータは初値になるので「OSP」が目的変数、それ以外が特徴量となります。また、845件のデータを訓練用テスト用のデータに分割します。今回は、それぞれ8:2の割合で分割しています。

  1. # 変数の組み合わせ
  2. X_train = train[[“OP”,”MS”,”POR”,”EPS”,”BPS”,”SGR”,”ROE”,”GA”,”RA”]]
  3. Y_train = train[“OSP”]
  4. X_test = test[[“OP”,”MS”,”POR”,”EPS”,”BPS”,”SGR”,”ROE”,”GA”,”RA”]]
  5. Y_test = test[“OSP”]
  6.  
  7. # 訓練用とテスト用に分割
  8. from sklearn.model_selection import train_test_split
  9. train, test = train_test_split(df,test_size=0.2,random_state=100)

モデルの作成 

 機械学習のモデルには、重回帰ランダムフォレストなど、いろいろな学習モデルがありますが、ここでは、複数のモデルを融合させて1つの学習モデルを生成する「アンサンブル学習」で予測モデルを作成していきます。今回は、XGboostランダムフォレスト重回帰の3つのモデルのアンサンブルで学習を行います。なお、学習で使うデータは訓練用のデータになります。

  1. # モデルの作成
  2. reg1 = xgb.XGBRegressor(colsample_bytree=1.0,eta=0.01,gamma=1,max_depth=7,min_child_weight=1,subsample=0.8)
  3. reg2 = RandomForestRegressor(random_state=1,n_estimators=100)
  4. reg3 = LinearRegression(normalize=True)
  5. ereg = VotingRegressor(estimators=[(‘xgb’,reg1),(‘rf’,reg2), (‘lr’,reg3)])
  6.  
  7. ereg = ereg.fit(X_train, Y_train)

モデルの評価 

 作成したモデルについて、テスト用のデータを使って予測精度を評価していきます。ここでは、決定係数(R2)平均誤差率を計算します。なお、決定係数は、0〜1の範囲の値をとり、値が1に近いほど予測精度が高いモデルということになります。結果を見ると、訓練用データの決定係数は93.7%、テスト用データでは84.5%と乖離は小さく、予測モデルとしてはまずまずの精度といえます。また、この予測モデルの誤差率は18.6%となっています。

  1. # 評価指標
  2. yhat_test = model.predict(X_test)
  3. return
  4. “adjusted_r2(test):” + str(adjusted_r2(X_test,Y_test,model)),
  5. “平均誤差率(test):” + str(np.mean(abs(Y_test / yhat_test – 1)))

 また、テスト用データを使って、実際の初値とモデルが予測した初値がどれほど一致しているかグラフでも確認してみます。(横軸:実際の初値縦軸:モデルが予測した初値

  1. # グラフ描画
  2. plt.figure()
  3. ax = sns.regplot(x=Y_test, y=ereg.predict(X_test), fit_reg=False,color=’#4F81BD’)
  4. ax.set_xlabel(u”opening share price”)
  5. ax.set_ylabel(u”(Predicted) opening share price”)
  6. ax.get_xaxis().set_major_formatter(ticker.FuncFormatter(lambda x, p: format(int(x), ‘,’)))
  7. ax.get_yaxis().set_major_formatter(ticker.FuncFormatter(lambda y, p: format(int(y), ‘,’)))
  8. ax.plot([0,10,20,30,40,50],[0,10,20,30,40,50], linewidth=2, color=”#C0504D”,ls=”–“)

モデルの利用 

 最後に、構築したモデルをもとに2021年7月に上場予定のランドネットの初値を予測してみます。なお、予測時点で公開価格が決定していない場合は、想定価格と公開価格は同じ価格とみなして予測します。

  1. # 初値予測の実行
  2. submission = pd.DataFrame({
  3. ‘Prediction(OSP)’: ereg.predict(X_df2)})

 今回構築したモデルによると、ランドネットの初値は5,510円と予測されました。

関連記事

セカンダリー

24年1月以降のIPO銘柄

(24/12/17 15:00)

銘柄
(上場日)
現在値
(初値)
初値比
(金額差)
地合い
リスキル
291A(12/17)
4,540
4,840
- 6.2
- 300
黒田グループ
287A(12/17)
875
885
- 1.1
- 10
ラクサス
288A(12/13)
405
426
- 4.9
- 21
ユカリア
286A(12/12)
880
975
- 9.7
- 95
インフォメティス
281A(12/9)
1,017
993
+ 2.4
+ 24
TMH
280A(12/4)
1,412
2,128
- 33.6
- 716
グロービング
277A(11/29)
7,320
5,600
+ 30.7
+ 1,720
テラドローン
278A(11/29)
1,849
2,162
- 14.5
- 313
ククレブ
276A(11/28)
1,090
1,250
- 12.8
- 160
ガーデン
274A(11/22)
2,829
3,060
- 7.5
- 231
Sapeet
269A(10/29)
2,481
2,285
+ 8.6
+ 196
エイチエムコム
265A(10/28)
1,186
1,128
+ 5.1
+ 58
リガク
268A(10/25)
887
1,205
- 26.4
- 318
東京メトロ
9023(10/23)
1,553.0
1,630
- 4.7
- 77
Schoo
264A(10/22)
1,109
761
+ 45.7
+ 348
伸和HD
7118(10/21)
2,100
1,530
+ 37.3
+ 570
インターメス
262A(10/18)
2,603
2,038
+ 27.7
+ 565
日水コン
261A(10/16)
1,403
1,341
+ 4.6
+ 62
オルツ
260A(10/11)
585
570
+ 2.6
+ 15
ケイ・ウノ
259A(10/8)
1,341
2,134
- 37.2
- 793
シマダヤ
250A(10/1)
1,404
1,760
- 20.2
- 356
Aiロボティクス
247A(9/27)
2,760
2,514
+ 9.8
+ 246
アスア
246A(9/26)
671
1,004
- 33.2
- 333
キッズスター
248A(9/26)
1,382
2,210
- 37.5
- 828
INGS
245A(9/26)
2,565
2,700
- 5.0
- 135
グロースエクスパ
244A(9/26)
2,044
1,841
+ 11.0
+ 203
リプライオリ
242A(9/25)
941
1,398
- 32.7
- 457
ROXX
241A(9/25)
1,298
1,941
- 33.1
- 643
CrossE
231A(8/29)
734
1,085
- 32.4
- 351
オプロ
228A(8/21)
1,301
1,673
- 22.2
- 372
ファベル
220A(7/31)
974
1,190
- 18.2
- 216
ハートシード
219A(7/30)
2,778
1,548
+ 79.5
+ 1,230
リベラウェア
218A(7/29)
499
454
+ 9.9
+ 45
タイミー
215A(7/26)
1,373
1,850
- 25.8
- 477
フィットイージー
212A(7/23)
2,060
1,213
+ 69.8
+ 847
カドス
211A(7/18)
2,487
3,210
- 22.5
- 723
PRISMBio
206A(7/2)
293
489
- 40.1
- 196
ロゴスHD
205A(6/28)
2,390
2,290
+ 4.4
+ 100
豆蔵デジタルHD
202A(6/27)
1,273
1,348
- 5.6
- 75
MFS
196A(6/21)
318
368
- 13.6
- 50
タウンズ
197A(6/20)
512
430
+ 19.1
+ 82
ポストプライム
198A(6/20)
646
450
+ 43.6
+ 196
WOLVES
194A(6/20)
693
875
- 20.8
- 182
ライスカレー
195A(6/19)
649
1,560
- 58.4
- 911
インテグループ
192A(6/18)
3,430
5,940
- 42.3
- 2,510
Chordia
190A(6/14)
265
255
+ 3.9
+ 10
D&Mカンパニー
189A(6/11)
800
1,308
- 38.8
- 508
アストロスケール
186A(6/5)
768
1,281
- 40.0
- 513
学びエイド
184A(5/28)
499
1,282
- 61.1
- 783
コージンバイオ
177A(4/25)
1,652
2,030
- 18.6
- 378
レジル
176A(4/24)
1,715
1,205
+ 42.3
+ 510
ウィルスマート
175A(4/16)
775
1,580
- 50.9
- 805
ハンモック
173A(4/11)
1,371
2,160
- 36.5
- 789
イタミアート
168A(4/8)
942
2,000
- 52.9
- 1,058
アズパートナーズ
160A(4/4)
1,742
2,923
- 40.4
- 1,181
Gモンスター
157A(3/29)
560
1,700
- 67.1
- 1,140
マテリアルG
156A(3/29)
559
1,085
- 48.5
- 526
カウリス
153A(3/28)
1,569
2,875
- 45.4
- 1,306
情報戦略
155A(3/28)
537
1,021
- 47.4
- 484
シンカ
149A(3/27)
742
1,671
- 55.6
- 929
ダイブ
151A(3/27)
2,796
3,225
- 13.3
- 429
コロンビアW
146A(3/27)
3,880
3,745
+ 3.6
+ 135
エルイズビー
145A(3/26)
605
1,553
- 61.0
- 948
ソラコム
147A(3/26)
969
1,563
- 38.0
- 594
ハッチ・ワーク
148A(3/26)
2,049
2,815
- 27.2
- 766
JSH
150A(3/26)
417
893
- 53.3
- 476
イシン
143A(3/25)
871
2,234
- 61.0
- 1,363
STG
5858(3/21)
2,300
3,215
- 28.5
- 915
ジンジブ
142A(3/22)
555
3,980
- 86.1
- 3,425
トライアル
141A(3/21)
2,725
2,215
+ 23.0
+ 510
光フードサービス
138A(2/28)
2,375
5,850
- 59.4
- 3,475
Cocolive
137A(2/28)
999
3,990
- 75.0
- 2,991
VRAIN
135A(2/22)
1,722
5,190
- 66.8
- 3,468
VIS
130A(2/8)
700
2,001
- 65.0
- 1,301
SOLIZE
5871(2/7)
1,477
2,020
- 26.9
- 543

一覧へ

アーカイブ
にほんブログ村 株ブログへ
ページ上部へ戻る