Pythonで宝くじを当てよう #5

ROTO6の当選番号の予測はできるのか

なにを今更寝ぼけた話を・・・ということになるが
前回は開発環境を変えて、配列のライブラリの使い方を勉強して、これまでの当選番号には若干バラツキがあるが、ほぼ均等にそれぞれの番号は出現しているらしいことが分かった。

しかし、問題はその出現の仕方である。全くランダムに出てきているなら、せいぜいこれまでの出現回数の多寡くらいしか予測の情報は無いことになる。

出現回数の変動

これまでの当選番号の出現の仕方について少し整理してみる。
下の図は、各番号のこれまでの累計の回数の変動図である。


43個は多くて煩雑になるので、1~5番までを図化した。
赤い直線が平均出現率であるので、1~5番は全体にこれまで出現回数が少ないグループになる。
1番(青)は、当初ほぼ平均的に出現していたが600回くらいから回数が減っていき、1100回あたりから回復傾向を示している。
2番(赤)は、200回目くらいから400回目にかけて低迷するが、その後持ち直し、800回目くらいからは平均的な回数を維持する・・・・というように、それぞれの特徴がある。

それをもう少しわかりやすく整理した。

同じデータを平均との差として整理したもので、出現回数の増減がわかりやすいと思う。
この図で番号毎の出現回数の出方にそれぞれ特徴があることが分かる。
もし、この図でそれぞれが出現回数0の付近で鋸の歯のようにギザギザで現れるなら打つ手は無いがこのようにある傾向を持って現れるなら、ある程度予測が可能(言い過ぎ?)になりそう。

この図を見て閃くのが株や為替のチャートである。それぞれの銘柄が経済ショックや某大臣の失言などで上がったり下がったりする、あれである。
(民主党政権の時、プライムレートの数値は絶対に事前に漏らしてはいけないものだが、政権を担ったことが無い悲しさ、つい得意になって事前に漏らしてしまって大騒ぎになったことがあった。)
それぞれの銘柄で上がり下がりにつれ売ったり買ったり。

しかし、トレードしている人もただ呆然とトレードしている訳では無くそれなりにチャートの変化に伴い自分のお気に入りのインジケーターに自分なりのパラメータを採用して。
インジケータを採用できる原則としては、データに方向性があること。下がり始めたらしばらくは下がり続け、平行移動の場合は暫く平行移動で、上がり始めたら少しの間は上がり続ける、という方向性である。
あっち行ったりこっち行ったりバラバラに動いてはインジケータで予想は困難。
本来、ROTO6はサイコロと同じようなものでバラバラに動くものと思っていたが、思いのほか方向性を持っている。
株などでは200日移動平均線などを基準とし200日移動平均線から離れていってもまた、帰ってくる。母船のような意味合いを持たせているが、ROTO6の場合は平均変動率0へ必ず戻る。
この2つの特徴があるので、インジケータの採用は可能であると考える。

MACD

ROTO6の当たり予想番号にもこのインジケーターを使おう。
幸い(?)為替もやっており(勿論稼いでいないが)インジケータに関しても多少の知識はある。
移動平均(MA)、MACD、一目均衡表などなど。
今回は、MACDで行ってみよう。

MACDの計算方法はプログラムの段階で述べるが、番号の変動率をデータとして1番と2番でMACDを引いてみた。

為替ではMACD(赤)がSignal(青)を上回ったときゴールデンクロスと云い”買い”の合図、逆にMACDがSignalを下回るとデッドクロス”売り”の合図である。
今回は、売り買いのポイントを探す訳では無い。
MACDが教えてくれるのは、MACDがSignalの上にあるときは変動率が上昇している、反対の場合は下降している、ということ。
変動率が上昇していると云うことは、最近になって良く出現している、ということである。

この図は(MACD-Signal)の変動図。
MACDのインジケータが位置情報とするなら、これは変動率の速度を表していることになる。
速度が大きいと云うことは、そのときは上昇している。つまりその頃良くその目は出ているということである。
上の変動率の図と比較するとわかりやすい。

この図は、(MACD-Signalの変化)の変化率。
先の例で云えば加速度になる。
MACD-Signalは上昇しているが、その上昇が鈍ってくるとこの値が小さくなってくる、減速してくる。
つまり、(MACD-Signal)は上昇しており、その上昇が加速度的に増加しているところがねらい目と考える。

SCORE

以上の変動率の値、MACD-Signalの上昇速度、MACD-Signalの加速度の拡散・収束の値から何らかの方法で43個の現在の状態にSCOREというランクを付ける。
そのSCOREの並びから優先的な番号数字を選んでいく。

SCORE = 変動率*a + (MACD - Signal)*b * (MACD - Signal)' * c

という形になる。
このパラメータa,b,cを決める決定的手段は無い。
あえてするなら、a,b,cを変化させて過去データに放り込み最も成績の良い数値を算出するのが正当だろうが、ここでは取りあえず(MACD – Signal)が重さが大きいと考えb:50%,残りa,c:25%という配分にしておく。

1~43番のSCOREが決まったところで、ROTO6には6つの枠が有り左が一番小さく右に向かって大きくなるという取り決めがある。
そして一度使った数字は2度は使わない(これは本当だろうか、正確なルールは確認していないが)。
つまり、1番枠に39番以上は入らないし、6番枠に5以下は入らないし、1,1,1,1,1,1や33,33,33,33,33,33等も無いということである。

すると各枠には何番までを振り分ければ良いか。算数で算出する方法もあるだろうが、統計的に処理することとした。
すなわち、これまでの結果を統計的に1枠で出現した数字を頻度グラフとして処理し、±σの範囲を主に出てくる数字として範囲を決める。
当然1枠の始まりは1,6枠の終わりは43とする。

最初に1枠の範囲の中からSCOREの高い数字を選ぶ、2枠の始まりは1枠の番号+1となり終わりまでの範囲でSCOREの高い番号を選ぶ、として順繰りに予想番号を決めていく。

今回はPythonのパの字も出てこなかったが、当たり予想番号を決定する考え方を決めた。
次回から、それをソースにしていく、かなり長いソースになると思うので何回かに分けることになる。

これで良いのか

”ROTO6で宝くじを当てよう”、という企画で順次進めているが、進めている本人が疲れている。
見ている人が居るとすれば余計疲れるだろうな。
おもんないもんな。

これでいいのかな、なんて思うが、レレレ♪これで良いのだ~♪これでいいのだ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です