質問編集履歴

5

インデントの追記をしました。

2020/11/24 14:39

投稿

yurai0522
yurai0522

スコア0

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  平均異常リターン、累積異常リターンは出ています。
4
4
 
5
-
5
+ 以下コードとなります。
6
6
 
7
7
  import matplotlib.pyplot as plt
8
8
 
@@ -10,11 +10,15 @@
10
10
 
11
11
  import pandas as pd
12
12
 
13
+
14
+
13
15
  1306 東証ETF TOPIX連動型上場投資信託(ETF)
14
16
 
15
17
  df =pd.read_csv("C:/Users/Desktop/stock_data/topix_2018-2019.csv", encoding="shift-jis")
16
18
 
17
19
  df.set_index("日付")
20
+
21
+
18
22
 
19
23
  plt.figure(figsize=(12.2,4.5)) #width = 12.2in, height = 4.5
20
24
 
@@ -32,17 +36,27 @@
32
36
 
33
37
  df["return"] = (df["終値調整値"] - df["終値調整値"].shift(1))/ df["終値調整値"].shift(1)
34
38
 
39
+
40
+
35
41
  df = pd.read_csv("C:/Users/Desktop/stock_data/rakuten_2018-2019.csv", encoding="shift-jis")
42
+
43
+
36
44
 
37
45
  楽天10/1ポイント還元ニュース日
38
46
 
39
47
  df[df["日付"] == "2019/9/17"]
40
48
 
49
+
50
+
41
51
  楽天10/1ポイント還元ニュース日をt=0としたときの他の日のt
42
52
 
43
53
  df["t"]= [i for i in range(-415, 71)]
44
54
 
55
+
56
+
45
57
  df["r_i"] = (df["終値調整値"] - df["終値調整値"].shift(1))/ df["終値調整値"].shift(1)
58
+
59
+
46
60
 
47
61
  etf = pd.read_csv("C:/Users/Desktop/stock_data/topix_2018-2019.csv", encoding="shift-jis")
48
62
 
@@ -52,13 +66,19 @@
52
66
 
53
67
  df["r_m"] = etf["r_m"]
54
68
 
69
+
70
+
55
71
  推定期間スタート
56
72
 
57
73
  df[df["t"] == -200]
58
74
 
75
+
76
+
59
77
  推定期間エンド
60
78
 
61
79
  df[df["t"] == -21]
80
+
81
+
62
82
 
63
83
  rakuten = df[["r_i"]][215:394]
64
84
 
@@ -98,15 +118,9 @@
98
118
 
99
119
  X = market[["r_m"]]
100
120
 
101
-
102
-
103
121
  clf.fit(X,Y)
104
122
 
105
-
106
-
107
123
  print(f"傾き : {clf.coef_[0][0]}")
108
-
109
-
110
124
 
111
125
  print(f"切片 : {clf.intercept_[0]}")
112
126
 
@@ -150,29 +164,21 @@
150
164
 
151
165
  import matplotlib.pyplot as plt
152
166
 
153
-
154
-
155
167
  plt.plot(df["t"].values[410:425], car_li[410:425], marker="o", label="CAR")
156
168
 
157
-
158
-
159
- 凡例の表示
169
+ 凡例の表示
160
170
 
161
171
  plt.legend()
162
172
 
163
-
164
-
165
173
  装飾
166
-
167
-
168
174
 
169
175
  plt.ylabel('CAR')
170
176
 
177
+ プロット表示(設定の反映)
178
+
179
+ plt.show()
171
180
 
172
181
 
173
- プロット表示(設定の反映)
174
-
175
- plt.show()
176
182
 
177
183
  listA = df["t"].values[410:425]
178
184
 
@@ -182,4 +188,6 @@
182
188
 
183
189
  df1[1] = listb
184
190
 
191
+
192
+
185
193
  この図表にt期それぞれのt値を求めたいです。

4

変更しました

2020/11/24 14:39

投稿

yurai0522
yurai0522

スコア0

test CHANGED
File without changes
test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
  result = model.fit()
86
86
 
87
- #result.summary()
87
+ result.summary()
88
88
 
89
89
 
90
90
 

3

コードを追加しました。

2020/11/24 14:14

投稿

yurai0522
yurai0522

スコア0

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  import pandas as pd
12
12
 
13
- #1306 東証ETF TOPIX連動型上場投資信託(ETF)
13
+ 1306 東証ETF TOPIX連動型上場投資信託(ETF)
14
14
 
15
15
  df =pd.read_csv("C:/Users/Desktop/stock_data/topix_2018-2019.csv", encoding="shift-jis")
16
16
 
@@ -34,11 +34,11 @@
34
34
 
35
35
  df = pd.read_csv("C:/Users/Desktop/stock_data/rakuten_2018-2019.csv", encoding="shift-jis")
36
36
 
37
- #楽天10/1ポイント還元ニュース日
37
+ 楽天10/1ポイント還元ニュース日
38
38
 
39
39
  df[df["日付"] == "2019/9/17"]
40
40
 
41
- #楽天10/1ポイント還元ニュース日をt=0としたときの他の日のt
41
+ 楽天10/1ポイント還元ニュース日をt=0としたときの他の日のt
42
42
 
43
43
  df["t"]= [i for i in range(-415, 71)]
44
44
 
@@ -52,11 +52,11 @@
52
52
 
53
53
  df["r_m"] = etf["r_m"]
54
54
 
55
- #推定期間スタート
55
+ 推定期間スタート
56
56
 
57
57
  df[df["t"] == -200]
58
58
 
59
- #推定期間エンド
59
+ 推定期間エンド
60
60
 
61
61
  df[df["t"] == -21]
62
62
 
@@ -66,9 +66,9 @@
66
66
 
67
67
 
68
68
 
69
- from sklearn import linear_model # 線形モデル関係
69
+ from sklearn import linear_model 線形モデル関係
70
70
 
71
- import statsmodels.api as smf # 統計量計算
71
+ import statsmodels.api as smf 統計量計算
72
72
 
73
73
 
74
74
 
@@ -78,7 +78,7 @@
78
78
 
79
79
 
80
80
 
81
- #単回帰分析モデルの作成
81
+ 単回帰分析モデルの作成
82
82
 
83
83
  model = smf.OLS(Y,X)
84
84
 
@@ -112,7 +112,7 @@
112
112
 
113
113
 
114
114
 
115
- #回帰式
115
+ 回帰式
116
116
 
117
117
  print(f"回帰式 : y = {clf.intercept_[0]} + {clf.coef_[0][0]}x")
118
118
 
@@ -146,7 +146,7 @@
146
146
 
147
147
 
148
148
 
149
- #検証期間中の累積異常リターンを描画
149
+ 検証期間中の累積異常リターンを描画
150
150
 
151
151
  import matplotlib.pyplot as plt
152
152
 
@@ -156,21 +156,21 @@
156
156
 
157
157
 
158
158
 
159
- # 凡例の表示
159
+ 凡例の表示
160
160
 
161
- #plt.legend()
161
+ plt.legend()
162
162
 
163
163
 
164
164
 
165
- #装飾
165
+ 装飾
166
166
 
167
167
 
168
168
 
169
- #plt.ylabel('CAR')
169
+ plt.ylabel('CAR')
170
170
 
171
171
 
172
172
 
173
- # プロット表示(設定の反映)
173
+ プロット表示(設定の反映)
174
174
 
175
175
  plt.show()
176
176
 

2

コードを追加しました。

2020/11/24 14:13

投稿

yurai0522
yurai0522

スコア0

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  df =pd.read_csv("C:/Users/Desktop/stock_data/topix_2018-2019.csv", encoding="shift-jis")
16
16
 
17
- #df.set_index("日付")
17
+ df.set_index("日付")
18
18
 
19
19
  plt.figure(figsize=(12.2,4.5)) #width = 12.2in, height = 4.5
20
20
 
@@ -36,7 +36,7 @@
36
36
 
37
37
  #楽天10/1ポイント還元ニュース日
38
38
 
39
- #df[df["日付"] == "2019/9/17"]
39
+ df[df["日付"] == "2019/9/17"]
40
40
 
41
41
  #楽天10/1ポイント還元ニュース日をt=0としたときの他の日のt
42
42
 
@@ -54,11 +54,11 @@
54
54
 
55
55
  #推定期間スタート
56
56
 
57
- #df[df["t"] == -200]
57
+ df[df["t"] == -200]
58
58
 
59
59
  #推定期間エンド
60
60
 
61
- #df[df["t"] == -21]
61
+ df[df["t"] == -21]
62
62
 
63
63
  rakuten = df[["r_i"]][215:394]
64
64
 
@@ -114,7 +114,7 @@
114
114
 
115
115
  #回帰式
116
116
 
117
- #print(f"回帰式 : y = {clf.intercept_[0]} + {clf.coef_[0][0]}x")
117
+ print(f"回帰式 : y = {clf.intercept_[0]} + {clf.coef_[0][0]}x")
118
118
 
119
119
  df["expect"] = list(map(lambda x: clf.intercept_[0] + clf.coef_[0][0] * x, df["r_m"].values))
120
120
 
@@ -152,7 +152,7 @@
152
152
 
153
153
 
154
154
 
155
- #plt.plot(df["t"].values[410:425], car_li[410:425], marker="o", label="CAR")
155
+ plt.plot(df["t"].values[410:425], car_li[410:425], marker="o", label="CAR")
156
156
 
157
157
 
158
158
 
@@ -172,7 +172,7 @@
172
172
 
173
173
  # プロット表示(設定の反映)
174
174
 
175
- #plt.show()
175
+ plt.show()
176
176
 
177
177
  listA = df["t"].values[410:425]
178
178
 

1

コードを追加しました。

2020/11/24 14:11

投稿

yurai0522
yurai0522

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,185 @@
1
1
  イベントスタディにおいて、イベント日を0としその前後も含めた時点でのt値の求め方を教えていただきたいです。
2
2
 
3
3
  平均異常リターン、累積異常リターンは出ています。
4
+
5
+
6
+
7
+ import matplotlib.pyplot as plt
8
+
9
+ import numpy as np
10
+
11
+ import pandas as pd
12
+
13
+ #1306 東証ETF TOPIX連動型上場投資信託(ETF)
14
+
15
+ df =pd.read_csv("C:/Users/Desktop/stock_data/topix_2018-2019.csv", encoding="shift-jis")
16
+
17
+ #df.set_index("日付")
18
+
19
+ plt.figure(figsize=(12.2,4.5)) #width = 12.2in, height = 4.5
20
+
21
+ plt.plot(df.index,df["終値調整値"], label='Close Price')
22
+
23
+ plt.title('Close Price History')
24
+
25
+ plt.xlabel('2018/1/4-2020/10/30',fontsize=18)
26
+
27
+ plt.ylabel('stock price',fontsize=18)
28
+
29
+ plt.show()
30
+
31
+
32
+
33
+ df["return"] = (df["終値調整値"] - df["終値調整値"].shift(1))/ df["終値調整値"].shift(1)
34
+
35
+ df = pd.read_csv("C:/Users/Desktop/stock_data/rakuten_2018-2019.csv", encoding="shift-jis")
36
+
37
+ #楽天10/1ポイント還元ニュース日
38
+
39
+ #df[df["日付"] == "2019/9/17"]
40
+
41
+ #楽天10/1ポイント還元ニュース日をt=0としたときの他の日のt
42
+
43
+ df["t"]= [i for i in range(-415, 71)]
44
+
45
+ df["r_i"] = (df["終値調整値"] - df["終値調整値"].shift(1))/ df["終値調整値"].shift(1)
46
+
47
+ etf = pd.read_csv("C:/Users/Desktop/stock_data/topix_2018-2019.csv", encoding="shift-jis")
48
+
49
+ etf["r_m"] = (etf["終値調整値"] - etf["終値調整値"].shift(1))/ etf["終値調整値"].shift(1)
50
+
51
+
52
+
53
+ df["r_m"] = etf["r_m"]
54
+
55
+ #推定期間スタート
56
+
57
+ #df[df["t"] == -200]
58
+
59
+ #推定期間エンド
60
+
61
+ #df[df["t"] == -21]
62
+
63
+ rakuten = df[["r_i"]][215:394]
64
+
65
+ market = df[["r_m"]][215:394]
66
+
67
+
68
+
69
+ from sklearn import linear_model # 線形モデル関係
70
+
71
+ import statsmodels.api as smf # 統計量計算
72
+
73
+
74
+
75
+ Y = rakuten["r_i"]
76
+
77
+ X = market["r_m"]
78
+
79
+
80
+
81
+ #単回帰分析モデルの作成
82
+
83
+ model = smf.OLS(Y,X)
84
+
85
+ result = model.fit()
86
+
87
+ #result.summary()
88
+
89
+
90
+
91
+ from sklearn import linear_model
92
+
93
+ clf = linear_model.LinearRegression()
94
+
95
+
96
+
97
+ Y = seven[["r_i"]]
98
+
99
+ X = market[["r_m"]]
100
+
101
+
102
+
103
+ clf.fit(X,Y)
104
+
105
+
106
+
107
+ print(f"傾き : {clf.coef_[0][0]}")
108
+
109
+
110
+
111
+ print(f"切片 : {clf.intercept_[0]}")
112
+
113
+
114
+
115
+ #回帰式
116
+
117
+ #print(f"回帰式 : y = {clf.intercept_[0]} + {clf.coef_[0][0]}x")
118
+
119
+ df["expect"] = list(map(lambda x: clf.intercept_[0] + clf.coef_[0][0] * x, df["r_m"].values))
120
+
121
+
122
+
123
+ df["ar"] = df["r_i"].values - df["expect"].values
124
+
125
+
126
+
127
+ ar = round(df[df["t"] == 0]["ar"].values[0] * 100, 1)
128
+
129
+ car =( df[df["t"] == -1]["ar"].values[0]
130
+
131
+ +df[df["t"] == 0]["ar"].values[0]
132
+
133
+ +df[df["t"] == 1]["ar"].values[0])
134
+
135
+ car_li = []
136
+
137
+
138
+
139
+ value = 0
140
+
141
+ for i in df["ar"].values[1:] :
142
+
143
+ value += i
144
+
145
+ car_li.append(value)
146
+
147
+
148
+
149
+ #検証期間中の累積異常リターンを描画
150
+
151
+ import matplotlib.pyplot as plt
152
+
153
+
154
+
155
+ #plt.plot(df["t"].values[410:425], car_li[410:425], marker="o", label="CAR")
156
+
157
+
158
+
159
+ # 凡例の表示
160
+
161
+ #plt.legend()
162
+
163
+
164
+
165
+ #装飾
166
+
167
+
168
+
169
+ #plt.ylabel('CAR')
170
+
171
+
172
+
173
+ # プロット表示(設定の反映)
174
+
175
+ #plt.show()
176
+
177
+ listA = df["t"].values[410:425]
178
+
179
+ listb = df["ar"].values[410:425]
180
+
181
+ df1 = pd.DataFrame(listA, index=car_li[410:425])
182
+
183
+ df1[1] = listb
184
+
185
+ この図表にt期それぞれのt値を求めたいです。