【コラム】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/02 15:00)

銘柄
(上場日)
現在値
(初値)
初値比
(金額差)
地合い
グロービング
277A(11/29)
6,760
5,600
+ 20.7
+ 1,160
テラドローン
278A(11/29)
2,530
2,162
+ 17.0
+ 368
ククレブ
276A(11/28)
1,300
1,250
+ 4.0
+ 50
ガーデン
274A(11/22)
2,791
3,060
- 8.8
- 269
Sapeet
269A(10/29)
2,965
2,285
+ 29.8
+ 680
エイチエムコム
265A(10/28)
1,148
1,128
+ 1.8
+ 20
リガク
268A(10/25)
1,061
1,205
- 12.0
- 144
東京メトロ
9023(10/23)
1,677.5
1,630
+ 2.9
+ 48
Schoo
264A(10/22)
1,065
761
+ 39.9
+ 304
伸和HD
7118(10/21)
1,696
1,530
+ 10.8
+ 166
インターメス
262A(10/18)
2,489
2,038
+ 22.1
+ 451
日水コン
261A(10/16)
1,344
1,341
+ 0.2
+ 3
オルツ
260A(10/11)
783
570
+ 37.4
+ 213
ケイ・ウノ
259A(10/8)
1,270
2,134
- 40.5
- 864
シマダヤ
250A(10/1)
1,437
1,760
- 18.4
- 323
Aiロボティクス
247A(9/27)
2,575
2,514
+ 2.4
+ 61
アスア
246A(9/26)
813
1,004
- 19.0
- 191
キッズスター
248A(9/26)
1,452
2,210
- 34.3
- 758
INGS
245A(9/26)
2,276
2,700
- 15.7
- 424
グロースエクスパ
244A(9/26)
2,359
1,841
+ 28.1
+ 518
リプライオリ
242A(9/25)
1,051
1,398
- 24.8
- 347
ROXX
241A(9/25)
1,450
1,941
- 25.3
- 491
CrossE
231A(8/29)
804
1,085
- 25.9
- 281
オプロ
228A(8/21)
1,432
1,673
- 14.4
- 241
ファベル
220A(7/31)
972
1,190
- 18.3
- 218
ハートシード
219A(7/30)
1,505
1,548
- 2.8
- 43
リベラウェア
218A(7/29)
421
454
- 7.3
- 33
タイミー
215A(7/26)
1,210
1,850
- 34.6
- 640
フィットイージー
212A(7/23)
1,739
1,213
+ 43.4
+ 526
カドス
211A(7/18)
2,650
3,210
- 17.4
- 560
PRISMBio
206A(7/2)
338
489
- 30.9
- 151
ロゴスHD
205A(6/28)
2,285
2,290
- 0.2
- 5
豆蔵デジタルHD
202A(6/27)
1,230
1,348
- 8.8
- 118
MFS
196A(6/21)
330
368
- 10.3
- 38
タウンズ
197A(6/20)
548
430
+ 27.4
+ 118
ポストプライム
198A(6/20)
660
450
+ 46.7
+ 210
WOLVES
194A(6/20)
747
875
- 14.6
- 128
ライスカレー
195A(6/19)
725
1,560
- 53.5
- 835
インテグループ
192A(6/18)
3,365
5,940
- 43.4
- 2,575
Chordia
190A(6/14)
259
255
+ 1.6
+ 4
D&Mカンパニー
189A(6/11)
848
1,308
- 35.2
- 460
アストロスケール
186A(6/5)
803
1,281
- 37.3
- 478
学びエイド
184A(5/28)
569
1,282
- 55.6
- 713
コージンバイオ
177A(4/25)
1,703
2,030
- 16.1
- 327
レジル
176A(4/24)
2,065
1,205
+ 71.4
+ 860
ウィルスマート
175A(4/16)
811
1,580
- 48.7
- 769
ハンモック
173A(4/11)
1,455
2,160
- 32.6
- 705
イタミアート
168A(4/8)
913
2,000
- 54.4
- 1,087
アズパートナーズ
160A(4/4)
1,820
2,923
- 37.7
- 1,103
Gモンスター
157A(3/29)
574
1,700
- 66.2
- 1,126
マテリアルG
156A(3/29)
596
1,085
- 45.1
- 489
カウリス
153A(3/28)
1,757
2,875
- 38.9
- 1,118
情報戦略
155A(3/28)
564
1,021
- 44.8
- 457
シンカ
149A(3/27)
752
1,671
- 55.0
- 919
ダイブ
151A(3/27)
2,810
3,225
- 12.9
- 415
コロンビアW
146A(3/27)
3,640
3,745
- 2.8
- 105
エルイズビー
145A(3/26)
620
1,553
- 60.1
- 933
ソラコム
147A(3/26)
1,065
1,563
- 31.9
- 498
ハッチ・ワーク
148A(3/26)
2,242
2,815
- 20.4
- 573
JSH
150A(3/26)
477
893
- 46.6
- 416
イシン
143A(3/25)
910
2,234
- 59.3
- 1,324
STG
5858(3/21)
2,601
3,215
- 19.1
- 614
ジンジブ
142A(3/22)
648
3,980
- 83.7
- 3,332
トライアル
141A(3/21)
3,140
2,215
+ 41.8
+ 925
光フードサービス
138A(2/28)
2,255
5,850
- 61.5
- 3,595
Cocolive
137A(2/28)
1,064
3,990
- 73.3
- 2,926
VRAIN
135A(2/22)
1,820
5,190
- 64.9
- 3,370
VIS
130A(2/8)
850
2,001
- 57.5
- 1,151
SOLIZE
5871(2/7)
1,644
2,020
- 18.6
- 376

一覧へ

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