---
# System prepended metadata

title: AIpos

---

# AIpos

## アプリ概要
IPO(新規公開株式）の自動抽選申し込みアプリ
ユーザーは証券取引に必要な情報（各証券ID/PW, 取引PW)を登録するだけで、忘れてしまいがちなIPOの抽選を自動化することができる。

詳しくはこちらのURL
https://drive.google.com/file/d/1PEXKN7qQeZOapXOWxD3qSFOL_tQBhFM0/view?usp=sharing

## 背景
- [ ] IPOに当選する確率（抽選確率）
IPOは公募価格より初値が上回る場合がほとんど*1なので、抽選に受かりさえすれば（& 初値で売れば)、確実に儲かる仕組み.

ただし、IPOに当選する確率は低いらしい(データはなし-> データ調査)

*1 ![](https://i.imgur.com/DWmGh5S.png)
[出典] https://hedge.guide/feature/ipo-investment-for-beginners.html


*2 IPO 公募 初値まとめ
https://docs.google.com/spreadsheets/d/1BeOkhJkkKJ1h5fZVQJPR-QxbHhX2K7Zn8BRDMkwwcaA/edit#gid=1476491541




### カスタマージャーニー
- [ ] 漏れ抜けを見つける

1. アカウントを登録する（サービスアカウントのID/PWを登録する）
2. 月額課金制のサービスなので、クレジットカードの情報を入力する。
3. 証券アカウントのログインID/PW, 取引PWを入力し、自動で抽選申し込みができる
4. 抽選の当たり外れのプッシュ通知を受け取る
5. 結果を確認するために、サービスログインする。
6. 4→5を繰り返す
7. 当選すると、ランク, 購入期間, 公募価格などを確認し、購入リンクへ遷移する

### ビジネスモデル
- [ ] 月額料金の決定ロジックを記載する

月額+従量課金制？

|証券口座の数|1|<=3|<=5|
|----|----|----|----|
|月額料金|1980円|3980円|5980円|

月額料金の決定ロジック

月にIPOで儲かる金額の期待値(人手) + 自動化のサービス手数料
* 月にIPOで儲かる金額の期待値(人手)
    * IPOに当選する確率 * IPOに当選したとして得られる利益
* 自動化のサービス手数料

大体1年で90件 当選確率は？ 


### システムの概要
![](https://i.imgur.com/6PdJeXe.png)


### 画面設計
|ページ|内容|
|----|----|----|
|IPO情報一覧画面||
|抽選状況確認画面||
|購入スケジュール画面||
|ユーザー設定画面||
|ログイン画面||
|スプラッシュ画面||




### DB設計
iOSキーチェーンおよびAndroid google password managerに保存する各証券会社のログイン情報
|変数名|型|内容|
|----|----|----|
|loginID|String|証券会社のログインID|
|loginPW|String|証券会社のログインパスワード|
|transactionPW|Int|取引パスワード|


#### Accounts
|変数名|型|内容|使用シーン|外部キー制約|備考|
|----|----|----|----|----|----|
|id|String|本アプリのログインID|ログイン時|||
|mailAddress|String|登録メールアドレス|ログイン時|||
|password|String|ログインパスワード|ログイン時|||
|name|String|アカウント名|マイページ?||必要？|
|avatar||アカウント名|マイページ?||必要？|
メモ
* ユーザー同士のインタラクティブが将来発生するときに、必要かも？
* メールアドレスに連絡するときに名前の情報あった方が良さそう。

#### SecuritiesCompanies
|変数名|型|内容|使用シーン|外部キー制約|備考|
|----|----|----|----|----|----|
|id|String|本アプリのログインID|ログイン時|||
|name|String|証券会社|ログイン時|||

#### SecuritiesCompaniesAccountsRegistered
|変数名|型|内容|使用シーン|外部キー制約|備考|
|----|----|----|----|----|----|
|id|String|本アプリのログインID|ログイン時|||
|account_id(FK)|String|-|-|主キー: Accounts#id|-|
|securitiescompanies_id(FK)|String|本アプリのログインID|ログイン時|||


#### Payments(Stripes)
|変数名|型|内容|使用シーン|外部キー制約|備考|
|----|----|----|----|----|----|
|id|String|-|ログイン時|||
|strype_id(FK)|Int|ストライプで契約しているID|-|-|-|

#### Ipos
|変数名|型|内容|使用シーン|外部キー制約|備考
|----|----|----|---|---|----|
|id|Int|-|-|||
|listingDate|Date|上場する日程|-|||
|stockCode|Int|銘柄コード|-|||
|stockName|String|銘柄名|-|||
|market|String|上場する市場|-|||
|publicOfferingPrice|Int|公募価格|-|||
|openingPrice|Int|公開価格|-|||
|provisionalCondition|String|仮条件|-|||
|managingUnderWriter(FK)|Int|主幹事Id|-|SecuritiesCompanies#id||

#### BookBuildingStatus
|変数名|型|内容|使用シーン|外部キー制約|備考|
|----|----|----|---|----|----|
|id|Int|-|-|||
|ipos_id(FK)|Int|-|-|主キー: Ipos#id|-|
|account_id(FK)|Int|-|-|主キー: Accounts#id|-|
|bookBuildingStartDate|Date|抽選申し込み開始日|-|-|-|
|bookBuildingEndDate|Date|抽選申し込み終了日|-|-|-|
|bookBuildingStatus(FK)|Int|抽選申し込みの状態|-|主キー: ApplyStatus#id|-|


#### PurchaseStatus
|変数名|型|内容|使用シーン|外部キー制約|備考
|----|----|----|---|----|---|
|id|Int|-|-|||
|ipos_id(FK)|Int|-|-|主キー: Ipos#id|||
|account_id(FK)|Int|-|-|主キー: Accounts#id||
|purchaseOfferingStartDate|Date|購入申し込み開始日|-||
|purchaseOfferingEndDate|Date|購入申し込み終了日|-||
|purchaseOfferingLink|String|購入申し込みリンク|-|-|-|

#### ApplyStatus(もしかしたらenumで宣言？)
|変数名|型|内容|使用シーン|外部キー制約|備考|
|----|----|----|---|----|----|
|id|Int|-|-|||
|status|String|{0:未申込, 1:申込中, 2:申込済み}|-|||




```
楽天証券の場合、ログインしなくても新規公開株式の情報は取得できる
```

## ipo-client

## ipo-api

### URL設計
|URL|ページ名|内容|
|----|----|----|
|----|----|----|


### スクレイピング情報

#### IPO情報の取得
https://www.rakuten-sec.co.jp/web/domestic/ipo/

#### IPO申し込み
楽天証券トップページ: 
https://www.rakuten-sec.co.jp/

ログイン後のページ: 
https://member.rakuten-sec.co.jp/app/Login.do


新規公開株式

セッションIDが毎回ログイン時に切り替わる
↓

* https://member.rakuten-sec.co.jp/app/ord_jp_ipo_entry_list.do;BV_SessionID=2A96CE5703874F55E3E1D56C441A5FD0.467ec72c?eventType=init&bbType=1&gmn=J&smn=05&lmn=01&fmn=01

* https://member.rakuten-sec.co.jp/app/ord_jp_ipo_entry_list.do;BV_SessionID=1F79DD075D29F7E61DBE764F42D1B099.411c7530?eventType=init&bbType=1&gmn=J&smn=05&lmn=01&fmn=01

* https://member.rakuten-sec.co.jp/app/ord_jp_ipo_entry_list.do;BV_SessionID=D08206F917567BC2090BD7D0F3E5FCE1.47a66bab?eventType=init&bbType=1&gmn=J&smn=05&lmn=01&fmn=01


### メモ
* Golang
```
* Goでは、変数と関数はキャメルケースが使われています。
* Goでは、publicにしたいプロパティ/関数を大文字を使います。privateにしたいプロパティ/関数は小文字にし、違うパッケージからのアクセスすることはできません。
```