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年から2020年の間に上場した企業の初値データ866件のうち、初値騰落率が全体の平均から(標準偏差の3倍)以上離れた44件を除く、822件のデータになります。また、データの中身は、以下の構成としています

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

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

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

データの分割 

 インポートしたデータについて、目的変数特徴量を定義します。今回予測したいデータは初値になるので「OSP」が目的変数、それ以外が特徴量となります。また、822件のデータを訓練用テスト用のデータに分割します。今回は、それぞれ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に近いほど予測精度が高いモデルということになります

  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年4月に上場予定の表示灯の初値を予測してみます。なお、予測時点では公開価格が決定していないため、想定価格を公開価格とみなして予測しています。

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

 今回構築したモデルによると、表示灯の初値は1,946円と予測することができました。

関連記事

IPOセカンダリー記録

Total損益(税引前) +4,811円
勝敗 12勝 6敗 2分
平均リターン +9.4%
平均保有日数 3.5日
銘柄数 10銘柄

※各銘柄への投資を一律1株として計算。

投資記録

10/12
勝ち サンアスタリ +600円(収益率+22.6%
10/12
引分 まぐまぐ -5円(収益率-0.1%
10/8
負け rakumo -100円(収益率-2.6%
10/8
負け タスキ -395円(収益率-7.6%
10/6
勝ち インタファク +610円(収益率+12.0%
9/29
勝ち まぐまぐ +1,000円(収益率+32.8%
9/17
勝ち インタファク +270円(収益率+4.7%
9/2
勝ち ューラル +10円(収益率+0.1%
9/2
勝ち サンアスタリ +1,350円(収益率+54.0%
9/1
負け インタファク -20円(収益率-0.3%
8/28
負け インタファク -40円(収益率-0.7%
8/27
勝ち Speee +90円(収益率+1.5%
8/27
勝ち 日本情報C +533円(収益率+24.2%
8/20
勝ち Bエンジニア +587円(収益率+28.1%
8/18
引分 サンアスタリ +6円(収益率+0.3%
8/13
負け モダリス -120円(収益率-4.6%
8/7
勝ち サンアスタリ +343円(収益率+22.1%
7/29
勝ち Speee +50円(収益率+1.3%
7/16
負け Bエンジニア -378円(収益率-13.3%
7/10
勝ち Bエンジニア +420円(収益率+14.0%

※日付はポジションを解消した日。

最新IPO情報

  1.  サーキュレーション(7379)のマザーズへの新規上場が承認されました。ここでは、サーキュレーション…
  2.  オムニ・プラス・システム・リミテッド(7699)のマザーズ(外国株)への新規上場が承認されました。…
  3.  コンフィデンス(7374)のマザーズへの新規上場が承認されました。ここでは、コンフィデンスのIPO…
  4.  日本電解(5759)のマザーズへの新規上場が承認されました。ここでは、日本電解のIPOに関する基本…
  5.  ランドネット(2991)のジャスダックへの新規上場が承認されました。ここでは、ランドネットのIPO…
  6.  ステムセル研究所(7096)のマザーズへの新規上場が承認されました。ここでは、ステムセル研究所のI…

証券会社紹介

  1. 2021/3/10

    SBI証券
    1SBI証券 ▌IPOを始めるなら必須の証券会社  口座数500万口座を超えるネット…
  2. 2マネックス証券 ▌IPOの取扱数はトップクラス  口座数190万口座のネット証券の…
  3. 2021/3/10

    SMBC日興証券
    3SMBC日興証券 ▌IPOの当選狙うなら外せない証券会社  口座数350万口座を超…
  4. 2021/3/10

    楽天証券
    4楽天証券 ▌人気のネット証券でIPOを狙う  口座数500万口座を超える、今一番勢…
  5. 5岡三オンライン証券 ▌穴場ネット証券からIPOを狙う  老舗岡三グループのネット専…
  6. 2021/3/10

    大和証券
    6大和証券 ▌安心の総合証券からIPOを狙う  口座数330万口座を超える、大手総合…
  7. 2021/3/10

    野村證券
    7野村證券 ▌業界トップの総合証券でIPOを狙う  口座数530万口座を超える、証券…

IPOセカンダリー投資

  1. 人気IPO株の初値買いはあり?   ここ数年のIPO市場を最も賑わせているのは、『AI(エ…
  2.  IPO株を初値で買おうとする場合に、一番最初に悩むのが、果たして初値が大きく上昇したIPO株は買う…
  3.  IPO投資がしたくても抽選に当たらずになかなかできない、セカンダリーでIPO株を買っても値動きが大…
  4.  ペイロール(4489)のマザーズへの新規上場が承認されました。ここでは、ペイロールのIPOに関する…
  5.  rakumoが9月28日に東証マザーズに上場しました。ここでは、まぐまぐのセカンダリー投資の実践日…
  6.  まぐまぐが9月24日に東証マザーズに上場しました。ここでは、まぐまぐのセカンダリー投資の実践日記を…

アーカイブ

ページ上部へ戻る