「単元未満株」と楽天銀行の「株式配当金受取プログラム」を組み合わせたときに一番お得な組み合わせは何かPythonで計算してみようと思います。
数年前、単元未満株(S株やミニ株)は購入手数料を考えると個人的にはあまりお得ではなかったのですが、今は手数料が0円の証券会社もあるようなのでシュミレーションしてみることにしました。
シュミレーションの前提条件
シュミレーションとして下記の条件を考えてみようと思います。
・合計購入金額は11万円以内
・1銘柄・1回の配当につき10円もらえると仮定 (株式配当金受取プログラム)
・ETFは株式配当金受取プログラムから除外 (分配金として振り込まれていた気がするので)
・1銘柄1株のみ購入すると仮定 (計算が複雑になりそうなので、、)
・購入/配当/分配/にかかる手数料や税金は0円と仮定
・配当回数も大事なのだがとりあえず1銘柄1回でやる。配当回数のデータ取得したらもう一度シュミレーションし直してみる
どの銘柄を購入するとリターンが最大するかという「組み合わせ最適化問題」になるのかなと思いました。
組み合わせ最適化に関しては京都大学(数理工学)のオープンキャンパスの資料が分かりやすかったです。
ナップサック問題
おそらく今回のシミュレーションはナップサック問題に近いのかなと思いました。
ナップサック問題(ナップサックもんだい、Knapsack problem)は、計算複雑性理論における計算の難しさの議論の対象となる問題の一つで、n種類の品物(各々、価値 vi、重量 wi)が与えられたとき、重量の合計が Wを超えない範囲で品物のいくつかをナップサックに入れて、その入れた品物の価値の合計を最大化するには入れる品物の組み合わせをどのように選べばよいか」という整数計画問題である
引用: https://ja.wikipedia.org/wiki/ナップサック問題
ナップサック問題では可能な商品の組合せは2n通りになるようで、単純にn=30種類ほどの品物でも1073741824通りになるようです。
上場会社数が22/11/29時点で3849社*1なので、計算してみると可能な組み合わせは4.6E+1158という結果になり、総当たりで最適解を求めることは難しそうです。
そのため、近似解として下記のパターンを試してみようと思います。
-
シュミレーションの条件とはズレますが、各銘柄を予算内で買えるだけ買った場合の配当金総額
-
ランダムにピックアップした銘柄を1銘柄ずつ合計11万円分を購入
-
利回りが高い順に1銘柄ずつ合計11万円分を購入
-
株価が安い順に1銘柄ずつ合計11万円分を購入
-
配当金が高い順に1銘柄ずつ合計11万円分を購入
まとめ
今回はアイディアをまとめてみました。
次回からシュミレーションしてみたいと思います。