ランダム・ウォーク 07 Java 02 日立 信越化学
2018 05 23 (Wed)前回は、java で乱数を発生させて「ランダム・ウォーク」のテストをした。
今回は、乱数発生プログラムを、実際の株価を使用するように変える。
次に、日立製作所と信越化学の週足データーで株価の動きを追う。
週足データ読み込むためのプログラム
class A06Con {
int p[] = { // 日立製作所の週足データ
/*9511*/ 1070, 1030, 1050, 1010, 1040, 1050, 995, 979, 1040,
// 紙面を節約のために、途中を省略
/*1801*/ 896, 912, 931, 927, 895, 796, 818, 827, 799, 796, 796, 768, 772, 770, 784, 783, 799, 861, 868, 842, // here Hitachi 6501
0};
int DOWN=0; int UP=1;
int FT[][] = new int [2][100]; // 連続下落度数 FT[DOWN][d] = 下落連続 d 回 度数
// 連続上昇度数 FT[UP][u] = 上昇連続 u 回 度数
void start01(){
for(int i=0; i<100; i++){FT[DOWN][i]=FT[UP][i]=0;}
}
void start02(){
int nod=0; // データ数
int mode=DOWN;
int counter=1; // 回数
if(p[0] < p[1]){mode = UP;}
for(int i=1; p[i+1]>0; i++){ // 連続上昇・連続下落度数計算
if((p[i] < p[i+1]) &(mode == UP)){counter++;}
else if((p[i] < p[i+1]) &(mode == DOWN)){FT[DOWN][counter]++; mode=UP; counter=1;}
else if((p[i] > p[i+1]) &(mode == UP)){FT[UP][counter]++; mode=DOWN; counter=1;}
else if((p[i] > p[i+1]) &(mode == DOWN)){counter++;}
nod = i;
}
System.out.println("nod=" + nod);
}
void start03(){ // 表示
for(int i=0; i<2; i++){
if(i==DOWN) System.out.println("\n連続下降日度数");
if(i==UP) System.out.println("\n連続上昇日度数");
for(int j=0; j<100; j++){
if(FT[i][j]>0) System.out.println(j + "回連続=" + FT[i][j]);
}
}
}
} // A06Con
このプログラムを実行する。日立の20年間の週足データの連続上昇頻度と連続下降の頻度が表示される。
連続下降日度数
1回連続=155
2回連続=61
3回連続=37
4回連続=15
5回連続=11
6回連続=4
7回連続=5
8回連続=1
連続上昇日度数
1回連続=151
2回連続=68
3回連続=35
4回連続=16
5回連続=8
6回連続=6
7回連続=2
8回連続=3
信越化学の20年間の週足データでプログラムを実行する。
連続下降日度数
1回連続=159
2回連続=79
3回連続=37
4回連続=15
5回連続=5
6回連続=2
7回連続=1
11回連続=1
連続上昇日度数
1回連続=141
2回連続=85
3回連続=39
4回連続=21
5回連続=2
6回連続=2
7回連続=2
8回連続=3
9回連続=2
12回連続=1
業種(電気、化学)が異なるが、長期(20年超)の週足データで見ると、連続して上昇する頻度も連続して 下降する頻度も似たような傾向を示す。
統計学的検証は省略するが、前回アップした「乱数」モデルに似ている。
つまり、長期20年(企業データ・モデル)、30年(乱数モデル)でみると、ランダム・ウォークであると言える。
これは、景気や企業の業績の波動=サイクル(3年、7年、7年)が相殺される結果であろう。
それでも4-7年ごとにバブルとバブル崩壊を繰り返しており、月足や週足チャートでひとつの景気(波動)サイクルに 着目すると明らかに、「上昇モード」や「下降モード」が存在する。
だが、バブルは崩壊しなければバブルとはわからない。そのバブルがいつ崩壊するかは予想できない。
それを与件として、いかに「左うちわシステム」を構築するか?
つづく