├── BETA.ipynb
├── Beta_for_PG.ipynb
├── Div_non-div_risk.ipynb
├── Markowitz_algorithm.ipynb
├── Porfolio_returns.ipynb
├── README.md
├── Regression.ipynb
├── Simple_n_log_returns.ipynb
├── Standard_Deviation.ipynb
└── var_cov_correlation.ipynb
/BETA.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import numpy as np\n",
11 | "from pandas_datareader import data as wb\n",
12 | "import matplotlib.pyplot as plt\n",
13 | "import fix_yahoo_finance as yf"
14 | ]
15 | },
16 | {
17 | "cell_type": "code",
18 | "execution_count": 29,
19 | "metadata": {},
20 | "outputs": [
21 | {
22 | "name": "stdout",
23 | "output_type": "stream",
24 | "text": [
25 | "[*********************100%***********************] 1 of 1 downloaded\n",
26 | "[*********************100%***********************] 1 of 1 downloaded\n"
27 | ]
28 | }
29 | ],
30 | "source": [
31 | "#for beta of microsoft\n",
32 | "tickers = ['MSFT','^GSPC']\n",
33 | "\n",
34 | "data = pd.DataFrame()\n",
35 | "\n",
36 | "for t in tickers :\n",
37 | " data[t] = yf.download(t, start = '2012-01-01', end='2017-01-01')['Adj Close']"
38 | ]
39 | },
40 | {
41 | "cell_type": "code",
42 | "execution_count": 30,
43 | "metadata": {},
44 | "outputs": [],
45 | "source": [
46 | "sec_returns = np.log(data/data.shift(1))"
47 | ]
48 | },
49 | {
50 | "cell_type": "code",
51 | "execution_count": 32,
52 | "metadata": {},
53 | "outputs": [
54 | {
55 | "data": {
56 | "text/html": [
57 | "
\n",
58 | "\n",
71 | "
\n",
72 | " \n",
73 | " \n",
74 | " | \n",
75 | " MSFT | \n",
76 | " ^GSPC | \n",
77 | "
\n",
78 | " \n",
79 | " \n",
80 | " \n",
81 | " MSFT | \n",
82 | " 0.053781 | \n",
83 | " 0.018213 | \n",
84 | "
\n",
85 | " \n",
86 | " ^GSPC | \n",
87 | " 0.018213 | \n",
88 | " 0.016362 | \n",
89 | "
\n",
90 | " \n",
91 | "
\n",
92 | "
"
93 | ],
94 | "text/plain": [
95 | " MSFT ^GSPC\n",
96 | "MSFT 0.053781 0.018213\n",
97 | "^GSPC 0.018213 0.016362"
98 | ]
99 | },
100 | "execution_count": 32,
101 | "metadata": {},
102 | "output_type": "execute_result"
103 | }
104 | ],
105 | "source": [
106 | "cov = sec_returns.cov() * 250\n",
107 | "cov"
108 | ]
109 | },
110 | {
111 | "cell_type": "code",
112 | "execution_count": 33,
113 | "metadata": {},
114 | "outputs": [
115 | {
116 | "data": {
117 | "text/plain": [
118 | "0.018212758362452473"
119 | ]
120 | },
121 | "execution_count": 33,
122 | "metadata": {},
123 | "output_type": "execute_result"
124 | }
125 | ],
126 | "source": [
127 | "cov_with_market = cov.iloc[0,1]\n",
128 | "cov_with_market"
129 | ]
130 | },
131 | {
132 | "cell_type": "code",
133 | "execution_count": 34,
134 | "metadata": {},
135 | "outputs": [
136 | {
137 | "data": {
138 | "text/plain": [
139 | "0.016361631022038074"
140 | ]
141 | },
142 | "execution_count": 34,
143 | "metadata": {},
144 | "output_type": "execute_result"
145 | }
146 | ],
147 | "source": [
148 | "market_var = sec_returns['^GSPC'].var()*250\n",
149 | "market_var"
150 | ]
151 | },
152 | {
153 | "cell_type": "code",
154 | "execution_count": 35,
155 | "metadata": {},
156 | "outputs": [
157 | {
158 | "data": {
159 | "text/plain": [
160 | "1.1131383135288315"
161 | ]
162 | },
163 | "execution_count": 35,
164 | "metadata": {},
165 | "output_type": "execute_result"
166 | }
167 | ],
168 | "source": [
169 | "msft_beta = cov_with_market / market_var\n",
170 | "msft_beta"
171 | ]
172 | }
173 | ],
174 | "metadata": {
175 | "kernelspec": {
176 | "display_name": "Python 3",
177 | "language": "python",
178 | "name": "python3"
179 | },
180 | "language_info": {
181 | "codemirror_mode": {
182 | "name": "ipython",
183 | "version": 3
184 | },
185 | "file_extension": ".py",
186 | "mimetype": "text/x-python",
187 | "name": "python",
188 | "nbconvert_exporter": "python",
189 | "pygments_lexer": "ipython3",
190 | "version": "3.6.4"
191 | }
192 | },
193 | "nbformat": 4,
194 | "nbformat_minor": 2
195 | }
196 |
--------------------------------------------------------------------------------
/Beta_for_PG.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import numpy as np\n",
11 | "from pandas_datareader import data as wb\n",
12 | "import matplotlib.pyplot as plt\n",
13 | "import fix_yahoo_finance as yf"
14 | ]
15 | },
16 | {
17 | "cell_type": "code",
18 | "execution_count": 2,
19 | "metadata": {},
20 | "outputs": [
21 | {
22 | "name": "stdout",
23 | "output_type": "stream",
24 | "text": [
25 | "[*********************100%***********************] 1 of 1 downloaded\n",
26 | "[*********************100%***********************] 1 of 1 downloaded\n"
27 | ]
28 | }
29 | ],
30 | "source": [
31 | "#for beta of P&G\n",
32 | "tickers = ['PG','^GSPC']\n",
33 | "\n",
34 | "data = pd.DataFrame()\n",
35 | "\n",
36 | "for t in tickers :\n",
37 | " data[t] = yf.download(t, start = '2012-01-01', end='2017-01-01')['Adj Close']"
38 | ]
39 | },
40 | {
41 | "cell_type": "code",
42 | "execution_count": 3,
43 | "metadata": {},
44 | "outputs": [],
45 | "source": [
46 | "sec_returns = np.log(data/data.shift(1))"
47 | ]
48 | },
49 | {
50 | "cell_type": "code",
51 | "execution_count": 4,
52 | "metadata": {},
53 | "outputs": [
54 | {
55 | "data": {
56 | "text/html": [
57 | "\n",
58 | "\n",
71 | "
\n",
72 | " \n",
73 | " \n",
74 | " | \n",
75 | " PG | \n",
76 | " ^GSPC | \n",
77 | "
\n",
78 | " \n",
79 | " \n",
80 | " \n",
81 | " PG | \n",
82 | " 0.020409 | \n",
83 | " 0.010078 | \n",
84 | "
\n",
85 | " \n",
86 | " ^GSPC | \n",
87 | " 0.010078 | \n",
88 | " 0.016362 | \n",
89 | "
\n",
90 | " \n",
91 | "
\n",
92 | "
"
93 | ],
94 | "text/plain": [
95 | " PG ^GSPC\n",
96 | "PG 0.020409 0.010078\n",
97 | "^GSPC 0.010078 0.016362"
98 | ]
99 | },
100 | "execution_count": 4,
101 | "metadata": {},
102 | "output_type": "execute_result"
103 | }
104 | ],
105 | "source": [
106 | "cov = sec_returns.cov() * 250\n",
107 | "cov"
108 | ]
109 | },
110 | {
111 | "cell_type": "code",
112 | "execution_count": 5,
113 | "metadata": {},
114 | "outputs": [
115 | {
116 | "data": {
117 | "text/plain": [
118 | "0.010078082426284392"
119 | ]
120 | },
121 | "execution_count": 5,
122 | "metadata": {},
123 | "output_type": "execute_result"
124 | }
125 | ],
126 | "source": [
127 | "cov_with_market = cov.iloc[0,1]\n",
128 | "cov_with_market"
129 | ]
130 | },
131 | {
132 | "cell_type": "code",
133 | "execution_count": 6,
134 | "metadata": {},
135 | "outputs": [
136 | {
137 | "data": {
138 | "text/plain": [
139 | "0.016361631022038074"
140 | ]
141 | },
142 | "execution_count": 6,
143 | "metadata": {},
144 | "output_type": "execute_result"
145 | }
146 | ],
147 | "source": [
148 | "market_var = sec_returns['^GSPC'].var()*250\n",
149 | "market_var"
150 | ]
151 | },
152 | {
153 | "cell_type": "code",
154 | "execution_count": 7,
155 | "metadata": {},
156 | "outputs": [
157 | {
158 | "data": {
159 | "text/plain": [
160 | "0.6159582997996873"
161 | ]
162 | },
163 | "execution_count": 7,
164 | "metadata": {},
165 | "output_type": "execute_result"
166 | }
167 | ],
168 | "source": [
169 | "msft_beta = cov_with_market / market_var\n",
170 | "msft_beta"
171 | ]
172 | }
173 | ],
174 | "metadata": {
175 | "kernelspec": {
176 | "display_name": "Python 3",
177 | "language": "python",
178 | "name": "python3"
179 | },
180 | "language_info": {
181 | "codemirror_mode": {
182 | "name": "ipython",
183 | "version": 3
184 | },
185 | "file_extension": ".py",
186 | "mimetype": "text/x-python",
187 | "name": "python",
188 | "nbconvert_exporter": "python",
189 | "pygments_lexer": "ipython3",
190 | "version": "3.6.4"
191 | }
192 | },
193 | "nbformat": 4,
194 | "nbformat_minor": 2
195 | }
196 |
--------------------------------------------------------------------------------
/Div_non-div_risk.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import numpy as np\n",
11 | "from pandas_datareader import data as wb\n",
12 | "import matplotlib.pyplot as plt"
13 | ]
14 | },
15 | {
16 | "cell_type": "code",
17 | "execution_count": 2,
18 | "metadata": {},
19 | "outputs": [],
20 | "source": [
21 | "tickers = ['PG','MSFT']\n",
22 | "\n",
23 | "sec_data = pd.DataFrame()\n",
24 | "\n",
25 | "for t in tickers :\n",
26 | " sec_data[t] = wb.DataReader(t,'quandl','2007-1-1','2018-3-1')['AdjClose']"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 3,
32 | "metadata": {},
33 | "outputs": [
34 | {
35 | "name": "stdout",
36 | "output_type": "stream",
37 | "text": [
38 | "\n",
39 | "DatetimeIndex: 2809 entries, 2018-03-01 to 2007-01-03\n",
40 | "Data columns (total 2 columns):\n",
41 | "PG 2809 non-null float64\n",
42 | "MSFT 2809 non-null float64\n",
43 | "dtypes: float64(2)\n",
44 | "memory usage: 65.8 KB\n"
45 | ]
46 | }
47 | ],
48 | "source": [
49 | "sec_data.info()"
50 | ]
51 | },
52 | {
53 | "cell_type": "code",
54 | "execution_count": 4,
55 | "metadata": {},
56 | "outputs": [
57 | {
58 | "data": {
59 | "text/html": [
60 | "\n",
61 | "\n",
74 | "
\n",
75 | " \n",
76 | " \n",
77 | " | \n",
78 | " PG | \n",
79 | " MSFT | \n",
80 | "
\n",
81 | " \n",
82 | " Date | \n",
83 | " | \n",
84 | " | \n",
85 | "
\n",
86 | " \n",
87 | " \n",
88 | " \n",
89 | " 2007-01-03 | \n",
90 | " NaN | \n",
91 | " NaN | \n",
92 | "
\n",
93 | " \n",
94 | " 2007-01-04 | \n",
95 | " -0.007621 | \n",
96 | " -0.001676 | \n",
97 | "
\n",
98 | " \n",
99 | " 2007-01-05 | \n",
100 | " -0.008624 | \n",
101 | " -0.005719 | \n",
102 | "
\n",
103 | " \n",
104 | " 2007-01-08 | \n",
105 | " 0.002202 | \n",
106 | " 0.009737 | \n",
107 | "
\n",
108 | " \n",
109 | " 2007-01-09 | \n",
110 | " -0.002517 | \n",
111 | " 0.001002 | \n",
112 | "
\n",
113 | " \n",
114 | " 2007-01-10 | \n",
115 | " 0.011901 | \n",
116 | " -0.010064 | \n",
117 | "
\n",
118 | " \n",
119 | " 2007-01-11 | \n",
120 | " 0.006207 | \n",
121 | " 0.034463 | \n",
122 | "
\n",
123 | " \n",
124 | " 2007-01-12 | \n",
125 | " 0.005554 | \n",
126 | " 0.016476 | \n",
127 | "
\n",
128 | " \n",
129 | " 2007-01-16 | \n",
130 | " 0.000000 | \n",
131 | " -0.001603 | \n",
132 | "
\n",
133 | " \n",
134 | " 2007-01-17 | \n",
135 | " 0.010255 | \n",
136 | " -0.001927 | \n",
137 | "
\n",
138 | " \n",
139 | " 2007-01-18 | \n",
140 | " 0.002750 | \n",
141 | " -0.003221 | \n",
142 | "
\n",
143 | " \n",
144 | " 2007-01-19 | \n",
145 | " 0.008357 | \n",
146 | " 0.003542 | \n",
147 | "
\n",
148 | " \n",
149 | " 2007-01-22 | \n",
150 | " -0.005614 | \n",
151 | " -0.012615 | \n",
152 | "
\n",
153 | " \n",
154 | " 2007-01-23 | \n",
155 | " -0.001218 | \n",
156 | " 0.000651 | \n",
157 | "
\n",
158 | " \n",
159 | " 2007-01-24 | \n",
160 | " -0.001982 | \n",
161 | " 0.011321 | \n",
162 | "
\n",
163 | " \n",
164 | " 2007-01-25 | \n",
165 | " -0.009047 | \n",
166 | " -0.020800 | \n",
167 | "
\n",
168 | " \n",
169 | " 2007-01-26 | \n",
170 | " -0.000925 | \n",
171 | " 0.004914 | \n",
172 | "
\n",
173 | " \n",
174 | " 2007-01-29 | \n",
175 | " 0.000308 | \n",
176 | " -0.002290 | \n",
177 | "
\n",
178 | " \n",
179 | " 2007-01-30 | \n",
180 | " -0.004480 | \n",
181 | " -0.001639 | \n",
182 | "
\n",
183 | " \n",
184 | " 2007-01-31 | \n",
185 | " 0.004326 | \n",
186 | " 0.012390 | \n",
187 | "
\n",
188 | " \n",
189 | " 2007-02-01 | \n",
190 | " 0.007219 | \n",
191 | " -0.009769 | \n",
192 | "
\n",
193 | " \n",
194 | " 2007-02-02 | \n",
195 | " 0.000000 | \n",
196 | " -0.012181 | \n",
197 | "
\n",
198 | " \n",
199 | " 2007-02-05 | \n",
200 | " -0.002912 | \n",
201 | " -0.019399 | \n",
202 | "
\n",
203 | " \n",
204 | " 2007-02-06 | \n",
205 | " -0.008633 | \n",
206 | " -0.003383 | \n",
207 | "
\n",
208 | " \n",
209 | " 2007-02-07 | \n",
210 | " -0.001705 | \n",
211 | " -0.004755 | \n",
212 | "
\n",
213 | " \n",
214 | " 2007-02-08 | \n",
215 | " 0.001705 | \n",
216 | " -0.003752 | \n",
217 | "
\n",
218 | " \n",
219 | " 2007-02-09 | \n",
220 | " -0.002480 | \n",
221 | " -0.009615 | \n",
222 | "
\n",
223 | " \n",
224 | " 2007-02-12 | \n",
225 | " -0.004199 | \n",
226 | " -0.001381 | \n",
227 | "
\n",
228 | " \n",
229 | " 2007-02-13 | \n",
230 | " 0.008536 | \n",
231 | " 0.005857 | \n",
232 | "
\n",
233 | " \n",
234 | " 2007-02-14 | \n",
235 | " 0.002624 | \n",
236 | " 0.013354 | \n",
237 | "
\n",
238 | " \n",
239 | " ... | \n",
240 | " ... | \n",
241 | " ... | \n",
242 | "
\n",
243 | " \n",
244 | " 2018-01-18 | \n",
245 | " -0.011247 | \n",
246 | " -0.000444 | \n",
247 | "
\n",
248 | " \n",
249 | " 2018-01-19 | \n",
250 | " 0.009821 | \n",
251 | " -0.001110 | \n",
252 | "
\n",
253 | " \n",
254 | " 2018-01-22 | \n",
255 | " 0.008964 | \n",
256 | " 0.017731 | \n",
257 | "
\n",
258 | " \n",
259 | " 2018-01-23 | \n",
260 | " -0.031394 | \n",
261 | " 0.003161 | \n",
262 | "
\n",
263 | " \n",
264 | " 2018-01-24 | \n",
265 | " -0.008345 | \n",
266 | " -0.000871 | \n",
267 | "
\n",
268 | " \n",
269 | " 2018-01-25 | \n",
270 | " 0.000340 | \n",
271 | " 0.005539 | \n",
272 | "
\n",
273 | " \n",
274 | " 2018-01-26 | \n",
275 | " -0.006929 | \n",
276 | " 0.018564 | \n",
277 | "
\n",
278 | " \n",
279 | " 2018-01-29 | \n",
280 | " -0.009966 | \n",
281 | " -0.001490 | \n",
282 | "
\n",
283 | " \n",
284 | " 2018-01-30 | \n",
285 | " 0.001036 | \n",
286 | " -0.012643 | \n",
287 | "
\n",
288 | " \n",
289 | " 2018-01-31 | \n",
290 | " -0.007040 | \n",
291 | " 0.024182 | \n",
292 | "
\n",
293 | " \n",
294 | " 2018-02-01 | \n",
295 | " -0.005691 | \n",
296 | " -0.007925 | \n",
297 | "
\n",
298 | " \n",
299 | " 2018-02-02 | \n",
300 | " -0.018813 | \n",
301 | " -0.026663 | \n",
302 | "
\n",
303 | " \n",
304 | " 2018-02-05 | \n",
305 | " -0.038599 | \n",
306 | " -0.030196 | \n",
307 | "
\n",
308 | " \n",
309 | " 2018-02-06 | \n",
310 | " 0.016153 | \n",
311 | " 0.025281 | \n",
312 | "
\n",
313 | " \n",
314 | " 2018-02-07 | \n",
315 | " -0.006577 | \n",
316 | " -0.019012 | \n",
317 | "
\n",
318 | " \n",
319 | " 2018-02-08 | \n",
320 | " -0.019993 | \n",
321 | " -0.054111 | \n",
322 | "
\n",
323 | " \n",
324 | " 2018-02-09 | \n",
325 | " -0.003747 | \n",
326 | " 0.037116 | \n",
327 | "
\n",
328 | " \n",
329 | " 2018-02-12 | \n",
330 | " 0.017489 | \n",
331 | " 0.011623 | \n",
332 | "
\n",
333 | " \n",
334 | " 2018-02-13 | \n",
335 | " 0.002088 | \n",
336 | " 0.007823 | \n",
337 | "
\n",
338 | " \n",
339 | " 2018-02-14 | \n",
340 | " -0.010112 | \n",
341 | " 0.010850 | \n",
342 | "
\n",
343 | " \n",
344 | " 2018-02-15 | \n",
345 | " 0.021216 | \n",
346 | " 0.020167 | \n",
347 | "
\n",
348 | " \n",
349 | " 2018-02-16 | \n",
350 | " 0.002303 | \n",
351 | " -0.007148 | \n",
352 | "
\n",
353 | " \n",
354 | " 2018-02-20 | \n",
355 | " -0.015372 | \n",
356 | " 0.007796 | \n",
357 | "
\n",
358 | " \n",
359 | " 2018-02-21 | \n",
360 | " -0.013616 | \n",
361 | " -0.013355 | \n",
362 | "
\n",
363 | " \n",
364 | " 2018-02-22 | \n",
365 | " 0.007450 | \n",
366 | " 0.002729 | \n",
367 | "
\n",
368 | " \n",
369 | " 2018-02-23 | \n",
370 | " 0.002594 | \n",
371 | " 0.024974 | \n",
372 | "
\n",
373 | " \n",
374 | " 2018-02-26 | \n",
375 | " 0.007131 | \n",
376 | " 0.014355 | \n",
377 | "
\n",
378 | " \n",
379 | " 2018-02-27 | \n",
380 | " -0.013443 | \n",
381 | " -0.012868 | \n",
382 | "
\n",
383 | " \n",
384 | " 2018-02-28 | \n",
385 | " -0.025401 | \n",
386 | " -0.004575 | \n",
387 | "
\n",
388 | " \n",
389 | " 2018-03-01 | \n",
390 | " 0.002290 | \n",
391 | " -0.009860 | \n",
392 | "
\n",
393 | " \n",
394 | "
\n",
395 | "
2809 rows × 2 columns
\n",
396 | "
"
397 | ],
398 | "text/plain": [
399 | " PG MSFT\n",
400 | "Date \n",
401 | "2007-01-03 NaN NaN\n",
402 | "2007-01-04 -0.007621 -0.001676\n",
403 | "2007-01-05 -0.008624 -0.005719\n",
404 | "2007-01-08 0.002202 0.009737\n",
405 | "2007-01-09 -0.002517 0.001002\n",
406 | "2007-01-10 0.011901 -0.010064\n",
407 | "2007-01-11 0.006207 0.034463\n",
408 | "2007-01-12 0.005554 0.016476\n",
409 | "2007-01-16 0.000000 -0.001603\n",
410 | "2007-01-17 0.010255 -0.001927\n",
411 | "2007-01-18 0.002750 -0.003221\n",
412 | "2007-01-19 0.008357 0.003542\n",
413 | "2007-01-22 -0.005614 -0.012615\n",
414 | "2007-01-23 -0.001218 0.000651\n",
415 | "2007-01-24 -0.001982 0.011321\n",
416 | "2007-01-25 -0.009047 -0.020800\n",
417 | "2007-01-26 -0.000925 0.004914\n",
418 | "2007-01-29 0.000308 -0.002290\n",
419 | "2007-01-30 -0.004480 -0.001639\n",
420 | "2007-01-31 0.004326 0.012390\n",
421 | "2007-02-01 0.007219 -0.009769\n",
422 | "2007-02-02 0.000000 -0.012181\n",
423 | "2007-02-05 -0.002912 -0.019399\n",
424 | "2007-02-06 -0.008633 -0.003383\n",
425 | "2007-02-07 -0.001705 -0.004755\n",
426 | "2007-02-08 0.001705 -0.003752\n",
427 | "2007-02-09 -0.002480 -0.009615\n",
428 | "2007-02-12 -0.004199 -0.001381\n",
429 | "2007-02-13 0.008536 0.005857\n",
430 | "2007-02-14 0.002624 0.013354\n",
431 | "... ... ...\n",
432 | "2018-01-18 -0.011247 -0.000444\n",
433 | "2018-01-19 0.009821 -0.001110\n",
434 | "2018-01-22 0.008964 0.017731\n",
435 | "2018-01-23 -0.031394 0.003161\n",
436 | "2018-01-24 -0.008345 -0.000871\n",
437 | "2018-01-25 0.000340 0.005539\n",
438 | "2018-01-26 -0.006929 0.018564\n",
439 | "2018-01-29 -0.009966 -0.001490\n",
440 | "2018-01-30 0.001036 -0.012643\n",
441 | "2018-01-31 -0.007040 0.024182\n",
442 | "2018-02-01 -0.005691 -0.007925\n",
443 | "2018-02-02 -0.018813 -0.026663\n",
444 | "2018-02-05 -0.038599 -0.030196\n",
445 | "2018-02-06 0.016153 0.025281\n",
446 | "2018-02-07 -0.006577 -0.019012\n",
447 | "2018-02-08 -0.019993 -0.054111\n",
448 | "2018-02-09 -0.003747 0.037116\n",
449 | "2018-02-12 0.017489 0.011623\n",
450 | "2018-02-13 0.002088 0.007823\n",
451 | "2018-02-14 -0.010112 0.010850\n",
452 | "2018-02-15 0.021216 0.020167\n",
453 | "2018-02-16 0.002303 -0.007148\n",
454 | "2018-02-20 -0.015372 0.007796\n",
455 | "2018-02-21 -0.013616 -0.013355\n",
456 | "2018-02-22 0.007450 0.002729\n",
457 | "2018-02-23 0.002594 0.024974\n",
458 | "2018-02-26 0.007131 0.014355\n",
459 | "2018-02-27 -0.013443 -0.012868\n",
460 | "2018-02-28 -0.025401 -0.004575\n",
461 | "2018-03-01 0.002290 -0.009860\n",
462 | "\n",
463 | "[2809 rows x 2 columns]"
464 | ]
465 | },
466 | "execution_count": 4,
467 | "metadata": {},
468 | "output_type": "execute_result"
469 | }
470 | ],
471 | "source": [
472 | "sec_data = sec_data.iloc[::-1]\n",
473 | "sec_returns = np.log(sec_data / sec_data.shift(1))\n",
474 | "sec_returns"
475 | ]
476 | },
477 | {
478 | "cell_type": "code",
479 | "execution_count": 5,
480 | "metadata": {},
481 | "outputs": [],
482 | "source": [
483 | "weights = np.array([0.5,0.5])"
484 | ]
485 | },
486 | {
487 | "cell_type": "code",
488 | "execution_count": 12,
489 | "metadata": {},
490 | "outputs": [],
491 | "source": [
492 | "PG_var_a = sec_returns['PG'].var() * 250\n",
493 | "MSFT_var_a = sec_returns['MSFT'].var() * 250"
494 | ]
495 | },
496 | {
497 | "cell_type": "code",
498 | "execution_count": 13,
499 | "metadata": {},
500 | "outputs": [
501 | {
502 | "name": "stdout",
503 | "output_type": "stream",
504 | "text": [
505 | "0.03676485457868782\n",
506 | "3.676 %\n"
507 | ]
508 | }
509 | ],
510 | "source": [
511 | "pfolio_var = np.dot(weights.T,np.dot(sec_returns.cov() * 250,weights))\n",
512 | "print(pfolio_var)\n",
513 | "print(str(round(pfolio_var * 100,3)) + ' %')"
514 | ]
515 | },
516 | {
517 | "cell_type": "code",
518 | "execution_count": 9,
519 | "metadata": {},
520 | "outputs": [
521 | {
522 | "name": "stdout",
523 | "output_type": "stream",
524 | "text": [
525 | "1.082 %\n"
526 | ]
527 | }
528 | ],
529 | "source": [
530 | "#diversifiable risk\n",
531 | "dr = pfolio_var - (weights[0] ** 2 * PG_var_a) - (weights[1] ** 2 * MSFT_var_a)\n",
532 | "print(str(round(dr*100,3)) + ' %')"
533 | ]
534 | },
535 | {
536 | "cell_type": "code",
537 | "execution_count": 10,
538 | "metadata": {},
539 | "outputs": [
540 | {
541 | "name": "stdout",
542 | "output_type": "stream",
543 | "text": [
544 | "2.595 %\n"
545 | ]
546 | }
547 | ],
548 | "source": [
549 | "#non-diversifiable risk\n",
550 | "n_dr_1 = pfolio_var - dr\n",
551 | "print(str(round(n_dr_1*100,3)) + ' %')"
552 | ]
553 | },
554 | {
555 | "cell_type": "code",
556 | "execution_count": 14,
557 | "metadata": {},
558 | "outputs": [
559 | {
560 | "name": "stdout",
561 | "output_type": "stream",
562 | "text": [
563 | "2.595 %\n"
564 | ]
565 | }
566 | ],
567 | "source": [
568 | "n_dr_2 = (weights[0] ** 2 * PG_var_a) + (weights[1] ** 2 * MSFT_var_a)\n",
569 | "print(str(round(n_dr_2*100,3)) + ' %')"
570 | ]
571 | }
572 | ],
573 | "metadata": {
574 | "kernelspec": {
575 | "display_name": "Python 3",
576 | "language": "python",
577 | "name": "python3"
578 | },
579 | "language_info": {
580 | "codemirror_mode": {
581 | "name": "ipython",
582 | "version": 3
583 | },
584 | "file_extension": ".py",
585 | "mimetype": "text/x-python",
586 | "name": "python",
587 | "nbconvert_exporter": "python",
588 | "pygments_lexer": "ipython3",
589 | "version": "3.6.4"
590 | }
591 | },
592 | "nbformat": 4,
593 | "nbformat_minor": 2
594 | }
595 |
--------------------------------------------------------------------------------
/Markowitz_algorithm.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import numpy as np\n",
11 | "from pandas_datareader import data as wb\n",
12 | "import matplotlib.pyplot as plt\n",
13 | "%matplotlib inline"
14 | ]
15 | },
16 | {
17 | "cell_type": "code",
18 | "execution_count": 41,
19 | "metadata": {},
20 | "outputs": [],
21 | "source": [
22 | "assets = ['MSFT','GOOGL']\n",
23 | "pf_data = pd.DataFrame()"
24 | ]
25 | },
26 | {
27 | "cell_type": "code",
28 | "execution_count": 42,
29 | "metadata": {},
30 | "outputs": [],
31 | "source": [
32 | "for a in assets :\n",
33 | " pf_data[a] = wb.DataReader(a,'quandl', '2010-1-1', '2018-1-1')['AdjClose']"
34 | ]
35 | },
36 | {
37 | "cell_type": "code",
38 | "execution_count": 54,
39 | "metadata": {},
40 | "outputs": [
41 | {
42 | "data": {
43 | "text/plain": [
44 | ""
45 | ]
46 | },
47 | "execution_count": 54,
48 | "metadata": {},
49 | "output_type": "execute_result"
50 | },
51 | {
52 | "data": {
53 | "image/png": "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\n",
54 | "text/plain": [
55 | ""
56 | ]
57 | },
58 | "metadata": {},
59 | "output_type": "display_data"
60 | }
61 | ],
62 | "source": [
63 | "#pf_data = pf_data.iloc[::-1]\n",
64 | "(pf_data / pf_data.iloc[0] * 100).plot(figsize=(10,5))"
65 | ]
66 | },
67 | {
68 | "cell_type": "code",
69 | "execution_count": 56,
70 | "metadata": {},
71 | "outputs": [
72 | {
73 | "data": {
74 | "text/html": [
75 | "\n",
76 | "\n",
89 | "
\n",
90 | " \n",
91 | " \n",
92 | " | \n",
93 | " MSFT | \n",
94 | " GOOGL | \n",
95 | "
\n",
96 | " \n",
97 | " Date | \n",
98 | " | \n",
99 | " | \n",
100 | "
\n",
101 | " \n",
102 | " \n",
103 | " \n",
104 | " 2010-01-04 | \n",
105 | " NaN | \n",
106 | " NaN | \n",
107 | "
\n",
108 | " \n",
109 | " 2010-01-05 | \n",
110 | " 0.000323 | \n",
111 | " -0.004413 | \n",
112 | "
\n",
113 | " \n",
114 | " 2010-01-06 | \n",
115 | " -0.006156 | \n",
116 | " -0.025532 | \n",
117 | "
\n",
118 | " \n",
119 | " 2010-01-07 | \n",
120 | " -0.010389 | \n",
121 | " -0.023555 | \n",
122 | "
\n",
123 | " \n",
124 | " 2010-01-08 | \n",
125 | " 0.006807 | \n",
126 | " 0.013243 | \n",
127 | "
\n",
128 | " \n",
129 | " 2010-01-11 | \n",
130 | " -0.012802 | \n",
131 | " -0.001513 | \n",
132 | "
\n",
133 | " \n",
134 | " 2010-01-12 | \n",
135 | " -0.006629 | \n",
136 | " -0.017842 | \n",
137 | "
\n",
138 | " \n",
139 | " 2010-01-13 | \n",
140 | " 0.009269 | \n",
141 | " -0.005758 | \n",
142 | "
\n",
143 | " \n",
144 | " 2010-01-14 | \n",
145 | " 0.019900 | \n",
146 | " 0.004690 | \n",
147 | "
\n",
148 | " \n",
149 | " 2010-01-15 | \n",
150 | " -0.003235 | \n",
151 | " -0.016840 | \n",
152 | "
\n",
153 | " \n",
154 | " 2010-01-19 | \n",
155 | " 0.007747 | \n",
156 | " 0.013052 | \n",
157 | "
\n",
158 | " \n",
159 | " 2010-01-20 | \n",
160 | " -0.016698 | \n",
161 | " -0.012346 | \n",
162 | "
\n",
163 | " \n",
164 | " 2010-01-21 | \n",
165 | " -0.018979 | \n",
166 | " 0.004418 | \n",
167 | "
\n",
168 | " \n",
169 | " 2010-01-22 | \n",
170 | " -0.035615 | \n",
171 | " -0.058216 | \n",
172 | "
\n",
173 | " \n",
174 | " 2010-01-25 | \n",
175 | " 0.012354 | \n",
176 | " -0.018367 | \n",
177 | "
\n",
178 | " \n",
179 | " 2010-01-26 | \n",
180 | " 0.006120 | \n",
181 | " 0.004471 | \n",
182 | "
\n",
183 | " \n",
184 | " 2010-01-27 | \n",
185 | " 0.005746 | \n",
186 | " -0.000590 | \n",
187 | "
\n",
188 | " \n",
189 | " 2010-01-28 | \n",
190 | " -0.017339 | \n",
191 | " -0.014512 | \n",
192 | "
\n",
193 | " \n",
194 | " 2010-01-29 | \n",
195 | " -0.034185 | \n",
196 | " -0.008167 | \n",
197 | "
\n",
198 | " \n",
199 | " 2010-02-01 | \n",
200 | " 0.008129 | \n",
201 | " 0.005788 | \n",
202 | "
\n",
203 | " \n",
204 | " 2010-02-02 | \n",
205 | " 0.001758 | \n",
206 | " -0.003571 | \n",
207 | "
\n",
208 | " \n",
209 | " 2010-02-03 | \n",
210 | " 0.005956 | \n",
211 | " 0.018099 | \n",
212 | "
\n",
213 | " \n",
214 | " 2010-02-04 | \n",
215 | " -0.027981 | \n",
216 | " -0.026307 | \n",
217 | "
\n",
218 | " \n",
219 | " 2010-02-05 | \n",
220 | " 0.006445 | \n",
221 | " 0.008529 | \n",
222 | "
\n",
223 | " \n",
224 | " 2010-02-08 | \n",
225 | " -0.010764 | \n",
226 | " 0.004095 | \n",
227 | "
\n",
228 | " \n",
229 | " 2010-02-09 | \n",
230 | " 0.010407 | \n",
231 | " 0.005552 | \n",
232 | "
\n",
233 | " \n",
234 | " 2010-02-10 | \n",
235 | " -0.000714 | \n",
236 | " -0.003726 | \n",
237 | "
\n",
238 | " \n",
239 | " 2010-02-11 | \n",
240 | " 0.004634 | \n",
241 | " 0.003651 | \n",
242 | "
\n",
243 | " \n",
244 | " 2010-02-12 | \n",
245 | " -0.006780 | \n",
246 | " -0.006134 | \n",
247 | "
\n",
248 | " \n",
249 | " 2010-02-16 | \n",
250 | " 0.019501 | \n",
251 | " 0.015227 | \n",
252 | "
\n",
253 | " \n",
254 | " ... | \n",
255 | " ... | \n",
256 | " ... | \n",
257 | "
\n",
258 | " \n",
259 | " 2017-11-16 | \n",
260 | " 0.002648 | \n",
261 | " 0.011569 | \n",
262 | "
\n",
263 | " \n",
264 | " 2017-11-17 | \n",
265 | " -0.009662 | \n",
266 | " -0.012071 | \n",
267 | "
\n",
268 | " \n",
269 | " 2017-11-20 | \n",
270 | " 0.001576 | \n",
271 | " -0.001188 | \n",
272 | "
\n",
273 | " \n",
274 | " 2017-11-21 | \n",
275 | " 0.014316 | \n",
276 | " 0.015003 | \n",
277 | "
\n",
278 | " \n",
279 | " 2017-11-22 | \n",
280 | " -0.007313 | \n",
281 | " 0.001541 | \n",
282 | "
\n",
283 | " \n",
284 | " 2017-11-24 | \n",
285 | " 0.001803 | \n",
286 | " 0.004363 | \n",
287 | "
\n",
288 | " \n",
289 | " 2017-11-27 | \n",
290 | " 0.007300 | \n",
291 | " 0.014555 | \n",
292 | "
\n",
293 | " \n",
294 | " 2017-11-28 | \n",
295 | " 0.011971 | \n",
296 | " -0.008168 | \n",
297 | "
\n",
298 | " \n",
299 | " 2017-11-29 | \n",
300 | " -0.018310 | \n",
301 | " -0.024670 | \n",
302 | "
\n",
303 | " \n",
304 | " 2017-11-30 | \n",
305 | " 0.009910 | \n",
306 | " -0.001167 | \n",
307 | "
\n",
308 | " \n",
309 | " 2017-12-01 | \n",
310 | " 0.001069 | \n",
311 | " -0.010770 | \n",
312 | "
\n",
313 | " \n",
314 | " 2017-12-04 | \n",
315 | " -0.038471 | \n",
316 | " -0.012961 | \n",
317 | "
\n",
318 | " \n",
319 | " 2017-12-05 | \n",
320 | " 0.006270 | \n",
321 | " 0.007610 | \n",
322 | "
\n",
323 | " \n",
324 | " 2017-12-06 | \n",
325 | " 0.014480 | \n",
326 | " 0.012786 | \n",
327 | "
\n",
328 | " \n",
329 | " 2017-12-07 | \n",
330 | " -0.003509 | \n",
331 | " 0.011409 | \n",
332 | "
\n",
333 | " \n",
334 | " 2017-12-08 | \n",
335 | " 0.020043 | \n",
336 | " 0.004594 | \n",
337 | "
\n",
338 | " \n",
339 | " 2017-12-11 | \n",
340 | " 0.012634 | \n",
341 | " 0.002465 | \n",
342 | "
\n",
343 | " \n",
344 | " 2017-12-12 | \n",
345 | " 0.004098 | \n",
346 | " -0.003047 | \n",
347 | "
\n",
348 | " \n",
349 | " 2017-12-13 | \n",
350 | " -0.002691 | \n",
351 | " 0.002495 | \n",
352 | "
\n",
353 | " \n",
354 | " 2017-12-14 | \n",
355 | " -0.007763 | \n",
356 | " 0.005766 | \n",
357 | "
\n",
358 | " \n",
359 | " 2017-12-15 | \n",
360 | " 0.025185 | \n",
361 | " 0.013647 | \n",
362 | "
\n",
363 | " \n",
364 | " 2017-12-18 | \n",
365 | " -0.005426 | \n",
366 | " 0.012137 | \n",
367 | "
\n",
368 | " \n",
369 | " 2017-12-19 | \n",
370 | " -0.006388 | \n",
371 | " -0.004906 | \n",
372 | "
\n",
373 | " \n",
374 | " 2017-12-20 | \n",
375 | " -0.003618 | \n",
376 | " -0.005777 | \n",
377 | "
\n",
378 | " \n",
379 | " 2017-12-21 | \n",
380 | " -0.000234 | \n",
381 | " -0.002528 | \n",
382 | "
\n",
383 | " \n",
384 | " 2017-12-22 | \n",
385 | " 0.000117 | \n",
386 | " -0.001860 | \n",
387 | "
\n",
388 | " \n",
389 | " 2017-12-26 | \n",
390 | " -0.001287 | \n",
391 | " -0.002820 | \n",
392 | "
\n",
393 | " \n",
394 | " 2017-12-27 | \n",
395 | " 0.003623 | \n",
396 | " -0.005315 | \n",
397 | "
\n",
398 | " \n",
399 | " 2017-12-28 | \n",
400 | " 0.000117 | \n",
401 | " -0.004017 | \n",
402 | "
\n",
403 | " \n",
404 | " 2017-12-29 | \n",
405 | " -0.002102 | \n",
406 | " -0.002418 | \n",
407 | "
\n",
408 | " \n",
409 | "
\n",
410 | "
2012 rows × 2 columns
\n",
411 | "
"
412 | ],
413 | "text/plain": [
414 | " MSFT GOOGL\n",
415 | "Date \n",
416 | "2010-01-04 NaN NaN\n",
417 | "2010-01-05 0.000323 -0.004413\n",
418 | "2010-01-06 -0.006156 -0.025532\n",
419 | "2010-01-07 -0.010389 -0.023555\n",
420 | "2010-01-08 0.006807 0.013243\n",
421 | "2010-01-11 -0.012802 -0.001513\n",
422 | "2010-01-12 -0.006629 -0.017842\n",
423 | "2010-01-13 0.009269 -0.005758\n",
424 | "2010-01-14 0.019900 0.004690\n",
425 | "2010-01-15 -0.003235 -0.016840\n",
426 | "2010-01-19 0.007747 0.013052\n",
427 | "2010-01-20 -0.016698 -0.012346\n",
428 | "2010-01-21 -0.018979 0.004418\n",
429 | "2010-01-22 -0.035615 -0.058216\n",
430 | "2010-01-25 0.012354 -0.018367\n",
431 | "2010-01-26 0.006120 0.004471\n",
432 | "2010-01-27 0.005746 -0.000590\n",
433 | "2010-01-28 -0.017339 -0.014512\n",
434 | "2010-01-29 -0.034185 -0.008167\n",
435 | "2010-02-01 0.008129 0.005788\n",
436 | "2010-02-02 0.001758 -0.003571\n",
437 | "2010-02-03 0.005956 0.018099\n",
438 | "2010-02-04 -0.027981 -0.026307\n",
439 | "2010-02-05 0.006445 0.008529\n",
440 | "2010-02-08 -0.010764 0.004095\n",
441 | "2010-02-09 0.010407 0.005552\n",
442 | "2010-02-10 -0.000714 -0.003726\n",
443 | "2010-02-11 0.004634 0.003651\n",
444 | "2010-02-12 -0.006780 -0.006134\n",
445 | "2010-02-16 0.019501 0.015227\n",
446 | "... ... ...\n",
447 | "2017-11-16 0.002648 0.011569\n",
448 | "2017-11-17 -0.009662 -0.012071\n",
449 | "2017-11-20 0.001576 -0.001188\n",
450 | "2017-11-21 0.014316 0.015003\n",
451 | "2017-11-22 -0.007313 0.001541\n",
452 | "2017-11-24 0.001803 0.004363\n",
453 | "2017-11-27 0.007300 0.014555\n",
454 | "2017-11-28 0.011971 -0.008168\n",
455 | "2017-11-29 -0.018310 -0.024670\n",
456 | "2017-11-30 0.009910 -0.001167\n",
457 | "2017-12-01 0.001069 -0.010770\n",
458 | "2017-12-04 -0.038471 -0.012961\n",
459 | "2017-12-05 0.006270 0.007610\n",
460 | "2017-12-06 0.014480 0.012786\n",
461 | "2017-12-07 -0.003509 0.011409\n",
462 | "2017-12-08 0.020043 0.004594\n",
463 | "2017-12-11 0.012634 0.002465\n",
464 | "2017-12-12 0.004098 -0.003047\n",
465 | "2017-12-13 -0.002691 0.002495\n",
466 | "2017-12-14 -0.007763 0.005766\n",
467 | "2017-12-15 0.025185 0.013647\n",
468 | "2017-12-18 -0.005426 0.012137\n",
469 | "2017-12-19 -0.006388 -0.004906\n",
470 | "2017-12-20 -0.003618 -0.005777\n",
471 | "2017-12-21 -0.000234 -0.002528\n",
472 | "2017-12-22 0.000117 -0.001860\n",
473 | "2017-12-26 -0.001287 -0.002820\n",
474 | "2017-12-27 0.003623 -0.005315\n",
475 | "2017-12-28 0.000117 -0.004017\n",
476 | "2017-12-29 -0.002102 -0.002418\n",
477 | "\n",
478 | "[2012 rows x 2 columns]"
479 | ]
480 | },
481 | "execution_count": 56,
482 | "metadata": {},
483 | "output_type": "execute_result"
484 | }
485 | ],
486 | "source": [
487 | "pf_data = pf_data.iloc[::-1]\n",
488 | "log_returns = np.log(pf_data/pf_data.shift(1))\n",
489 | "log_returns"
490 | ]
491 | },
492 | {
493 | "cell_type": "code",
494 | "execution_count": 59,
495 | "metadata": {},
496 | "outputs": [
497 | {
498 | "name": "stdout",
499 | "output_type": "stream",
500 | "text": [
501 | "MSFT 16.429452\n",
502 | "GOOGL 16.216976\n",
503 | "dtype: float64 %\n"
504 | ]
505 | }
506 | ],
507 | "source": [
508 | "print(str((((log_returns.mean() + 1)**250) - 1)*100) + ' %')"
509 | ]
510 | },
511 | {
512 | "cell_type": "code",
513 | "execution_count": 60,
514 | "metadata": {},
515 | "outputs": [
516 | {
517 | "data": {
518 | "text/html": [
519 | "\n",
520 | "\n",
533 | "
\n",
534 | " \n",
535 | " \n",
536 | " | \n",
537 | " MSFT | \n",
538 | " GOOGL | \n",
539 | "
\n",
540 | " \n",
541 | " \n",
542 | " \n",
543 | " MSFT | \n",
544 | " 0.049235 | \n",
545 | " 0.025028 | \n",
546 | "
\n",
547 | " \n",
548 | " GOOGL | \n",
549 | " 0.025028 | \n",
550 | " 0.055883 | \n",
551 | "
\n",
552 | " \n",
553 | "
\n",
554 | "
"
555 | ],
556 | "text/plain": [
557 | " MSFT GOOGL\n",
558 | "MSFT 0.049235 0.025028\n",
559 | "GOOGL 0.025028 0.055883"
560 | ]
561 | },
562 | "execution_count": 60,
563 | "metadata": {},
564 | "output_type": "execute_result"
565 | }
566 | ],
567 | "source": [
568 | "log_returns.cov() *250"
569 | ]
570 | },
571 | {
572 | "cell_type": "code",
573 | "execution_count": 61,
574 | "metadata": {},
575 | "outputs": [
576 | {
577 | "data": {
578 | "text/html": [
579 | "\n",
580 | "\n",
593 | "
\n",
594 | " \n",
595 | " \n",
596 | " | \n",
597 | " MSFT | \n",
598 | " GOOGL | \n",
599 | "
\n",
600 | " \n",
601 | " \n",
602 | " \n",
603 | " MSFT | \n",
604 | " 1.00000 | \n",
605 | " 0.47714 | \n",
606 | "
\n",
607 | " \n",
608 | " GOOGL | \n",
609 | " 0.47714 | \n",
610 | " 1.00000 | \n",
611 | "
\n",
612 | " \n",
613 | "
\n",
614 | "
"
615 | ],
616 | "text/plain": [
617 | " MSFT GOOGL\n",
618 | "MSFT 1.00000 0.47714\n",
619 | "GOOGL 0.47714 1.00000"
620 | ]
621 | },
622 | "execution_count": 61,
623 | "metadata": {},
624 | "output_type": "execute_result"
625 | }
626 | ],
627 | "source": [
628 | "log_returns.corr()"
629 | ]
630 | },
631 | {
632 | "cell_type": "code",
633 | "execution_count": 63,
634 | "metadata": {},
635 | "outputs": [],
636 | "source": [
637 | "num_assets = len(assets)\n",
638 | "weights = np.random.random(num_assets)"
639 | ]
640 | },
641 | {
642 | "cell_type": "code",
643 | "execution_count": 65,
644 | "metadata": {},
645 | "outputs": [
646 | {
647 | "data": {
648 | "text/plain": [
649 | "array([0.51613153, 0.48386847])"
650 | ]
651 | },
652 | "execution_count": 65,
653 | "metadata": {},
654 | "output_type": "execute_result"
655 | }
656 | ],
657 | "source": [
658 | "weights = np.random.random(num_assets)\n",
659 | "weights/=np.sum(weights)\n",
660 | "weights"
661 | ]
662 | },
663 | {
664 | "cell_type": "code",
665 | "execution_count": 66,
666 | "metadata": {},
667 | "outputs": [],
668 | "source": [
669 | "log_annual = ((log_returns.mean() + 1)**250) - 1"
670 | ]
671 | },
672 | {
673 | "cell_type": "code",
674 | "execution_count": 69,
675 | "metadata": {},
676 | "outputs": [
677 | {
678 | "data": {
679 | "text/plain": [
680 | "0.16326641729894442"
681 | ]
682 | },
683 | "execution_count": 69,
684 | "metadata": {},
685 | "output_type": "execute_result"
686 | }
687 | ],
688 | "source": [
689 | "#Expected portfolio returns\n",
690 | "np.sum(weights * log_annual)"
691 | ]
692 | },
693 | {
694 | "cell_type": "code",
695 | "execution_count": 71,
696 | "metadata": {},
697 | "outputs": [
698 | {
699 | "data": {
700 | "text/plain": [
701 | "0.03870036449082226"
702 | ]
703 | },
704 | "execution_count": 71,
705 | "metadata": {},
706 | "output_type": "execute_result"
707 | }
708 | ],
709 | "source": [
710 | " #Expected Portfolio Variance\n",
711 | "np.dot(weights.T, np.dot(log_returns.cov() * 250,weights))"
712 | ]
713 | },
714 | {
715 | "cell_type": "code",
716 | "execution_count": 72,
717 | "metadata": {},
718 | "outputs": [
719 | {
720 | "data": {
721 | "text/plain": [
722 | "0.19672408213236695"
723 | ]
724 | },
725 | "execution_count": 72,
726 | "metadata": {},
727 | "output_type": "execute_result"
728 | }
729 | ],
730 | "source": [
731 | "#Expected Portfolio Volatility\n",
732 | "np.sqrt(np.dot(weights.T,np.dot(log_returns.cov() * 250,weights)))"
733 | ]
734 | },
735 | {
736 | "cell_type": "code",
737 | "execution_count": 108,
738 | "metadata": {},
739 | "outputs": [
740 | {
741 | "name": "stdout",
742 | "output_type": "stream",
743 | "text": [
744 | "Microsoft : 0.5929498477894943 Google : 0.40705015221050567\n",
745 | "Microsoft : 0.5792341086932384 Google : 0.4207658913067615\n",
746 | "Microsoft : 0.5917284264458144 Google : 0.4082715735541857\n",
747 | "Microsoft : 0.5802529990002616 Google : 0.41974700099973844\n",
748 | "Microsoft : 0.5859028374660776 Google : 0.41409716253392226\n",
749 | "Microsoft : 0.587074495600213 Google : 0.412925504399787\n",
750 | "Microsoft : 0.5876933817896055 Google : 0.4123066182103944\n",
751 | "Microsoft : 0.5846175309161378 Google : 0.4153824690838621\n",
752 | "Microsoft : 0.587420322732071 Google : 0.41257967726792893\n",
753 | "Microsoft : 0.5910965722098238 Google : 0.40890342779017624\n",
754 | "Microsoft : 0.5903560955924934 Google : 0.40964390440750664\n",
755 | "Microsoft : 0.5899639866283974 Google : 0.4100360133716026\n",
756 | "Microsoft : 0.590812623493713 Google : 0.40918737650628706\n",
757 | "Microsoft : 0.5835238426319063 Google : 0.4164761573680937\n",
758 | "Microsoft : 0.5848939674770928 Google : 0.4151060325229074\n",
759 | "Microsoft : 0.5907174870343446 Google : 0.4092825129656555\n",
760 | "Microsoft : 0.5914147244204458 Google : 0.40858527557955404\n",
761 | "Microsoft : 0.5877156189308469 Google : 0.41228438106915305\n",
762 | "Microsoft : 0.5811522262205125 Google : 0.41884777377948745\n",
763 | "Microsoft : 0.5805746009939525 Google : 0.4194253990060474\n"
764 | ]
765 | }
766 | ],
767 | "source": [
768 | "pfolio_returns = []\n",
769 | "pfolio_volatilities = []\n",
770 | "for x in range(1000):\n",
771 | " weights = np.random.random(num_assets)\n",
772 | " weights /= np.sum(weights)\n",
773 | " pfolio_returns.append(np.sum(weights * log_annual))\n",
774 | " pfolio_volatilities.append(np.sqrt(np.dot(weights.T,np.dot(log_returns.cov() * 250,weights))))\n",
775 | " if pfolio_returns[x]>0.1634 and pfolio_volatilities[x]<0.1966 :\n",
776 | " print('Microsoft : ' + str(weights[0]) + ' Google : ' + str(weights[1]))\n",
777 | " \n",
778 | "pfolio_returns = np.array(pfolio_returns)\n",
779 | "pfolio_volatilities = np.array(pfolio_volatilities)\n",
780 | "#pfolio_returns,pfolio_volatilities"
781 | ]
782 | },
783 | {
784 | "cell_type": "code",
785 | "execution_count": 78,
786 | "metadata": {},
787 | "outputs": [],
788 | "source": [
789 | "portfolio = pd.DataFrame({'Return': pfolio_returns, 'Volatility': pfolio_volatilities})"
790 | ]
791 | },
792 | {
793 | "cell_type": "code",
794 | "execution_count": 79,
795 | "metadata": {},
796 | "outputs": [
797 | {
798 | "data": {
799 | "text/html": [
800 | "\n",
801 | "\n",
814 | "
\n",
815 | " \n",
816 | " \n",
817 | " | \n",
818 | " Return | \n",
819 | " Volatility | \n",
820 | "
\n",
821 | " \n",
822 | " \n",
823 | " \n",
824 | " 0 | \n",
825 | " 0.163909 | \n",
826 | " 0.205590 | \n",
827 | "
\n",
828 | " \n",
829 | " 1 | \n",
830 | " 0.163127 | \n",
831 | " 0.198139 | \n",
832 | "
\n",
833 | " \n",
834 | " 2 | \n",
835 | " 0.162905 | \n",
836 | " 0.202798 | \n",
837 | "
\n",
838 | " \n",
839 | " 3 | \n",
840 | " 0.163991 | \n",
841 | " 0.208443 | \n",
842 | "
\n",
843 | " \n",
844 | " 4 | \n",
845 | " 0.164170 | \n",
846 | " 0.215816 | \n",
847 | "
\n",
848 | " \n",
849 | "
\n",
850 | "
"
851 | ],
852 | "text/plain": [
853 | " Return Volatility\n",
854 | "0 0.163909 0.205590\n",
855 | "1 0.163127 0.198139\n",
856 | "2 0.162905 0.202798\n",
857 | "3 0.163991 0.208443\n",
858 | "4 0.164170 0.215816"
859 | ]
860 | },
861 | "execution_count": 79,
862 | "metadata": {},
863 | "output_type": "execute_result"
864 | }
865 | ],
866 | "source": [
867 | "portfolio.head()"
868 | ]
869 | },
870 | {
871 | "cell_type": "code",
872 | "execution_count": 80,
873 | "metadata": {},
874 | "outputs": [
875 | {
876 | "data": {
877 | "text/html": [
878 | "\n",
879 | "\n",
892 | "
\n",
893 | " \n",
894 | " \n",
895 | " | \n",
896 | " Return | \n",
897 | " Volatility | \n",
898 | "
\n",
899 | " \n",
900 | " \n",
901 | " \n",
902 | " 995 | \n",
903 | " 0.162644 | \n",
904 | " 0.211787 | \n",
905 | "
\n",
906 | " \n",
907 | " 996 | \n",
908 | " 0.163464 | \n",
909 | " 0.196781 | \n",
910 | "
\n",
911 | " \n",
912 | " 997 | \n",
913 | " 0.163122 | \n",
914 | " 0.198213 | \n",
915 | "
\n",
916 | " \n",
917 | " 998 | \n",
918 | " 0.163386 | \n",
919 | " 0.196470 | \n",
920 | "
\n",
921 | " \n",
922 | " 999 | \n",
923 | " 0.163227 | \n",
924 | " 0.197005 | \n",
925 | "
\n",
926 | " \n",
927 | "
\n",
928 | "
"
929 | ],
930 | "text/plain": [
931 | " Return Volatility\n",
932 | "995 0.162644 0.211787\n",
933 | "996 0.163464 0.196781\n",
934 | "997 0.163122 0.198213\n",
935 | "998 0.163386 0.196470\n",
936 | "999 0.163227 0.197005"
937 | ]
938 | },
939 | "execution_count": 80,
940 | "metadata": {},
941 | "output_type": "execute_result"
942 | }
943 | ],
944 | "source": [
945 | "portfolio.tail()"
946 | ]
947 | },
948 | {
949 | "cell_type": "code",
950 | "execution_count": 92,
951 | "metadata": {},
952 | "outputs": [
953 | {
954 | "data": {
955 | "text/plain": [
956 | "Text(0,0.5,'Expected Return')"
957 | ]
958 | },
959 | "execution_count": 92,
960 | "metadata": {},
961 | "output_type": "execute_result"
962 | },
963 | {
964 | "data": {
965 | "image/png": "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\n",
966 | "text/plain": [
967 | ""
968 | ]
969 | },
970 | "metadata": {},
971 | "output_type": "display_data"
972 | }
973 | ],
974 | "source": [
975 | "portfolios.plot(x='Volatility',y='Return',kind='scatter',figsize=(15,8))\n",
976 | "plt.xlabel('Expected Volatality')\n",
977 | "plt.ylabel('Expected Return')"
978 | ]
979 | },
980 | {
981 | "cell_type": "code",
982 | "execution_count": 94,
983 | "metadata": {},
984 | "outputs": [
985 | {
986 | "data": {
987 | "text/plain": [
988 | "0.19644997010794701"
989 | ]
990 | },
991 | "execution_count": 94,
992 | "metadata": {},
993 | "output_type": "execute_result"
994 | }
995 | ],
996 | "source": [
997 | "min(pfolio_volatilities)"
998 | ]
999 | }
1000 | ],
1001 | "metadata": {
1002 | "kernelspec": {
1003 | "display_name": "Python 3",
1004 | "language": "python",
1005 | "name": "python3"
1006 | },
1007 | "language_info": {
1008 | "codemirror_mode": {
1009 | "name": "ipython",
1010 | "version": 3
1011 | },
1012 | "file_extension": ".py",
1013 | "mimetype": "text/x-python",
1014 | "name": "python",
1015 | "nbconvert_exporter": "python",
1016 | "pygments_lexer": "ipython3",
1017 | "version": "3.6.4"
1018 | }
1019 | },
1020 | "nbformat": 4,
1021 | "nbformat_minor": 2
1022 | }
1023 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Stock-Market-Analysis-With-Python
2 | Performing the Financial Analysis on Historic Stock Market Data such as calculating various risks, returns,etc.
3 |
4 | 1) Simple_n_Log_returns : It predicts the daily and annual returns(simple and logarithmic) based on historic data.
5 |
6 | Note : Simple returns are taken into consideration when we are considering multiple stocks while Logarithmmic return for individual stock consideration.
7 |
8 | 2) Portfolio_returns : Predicting the combined returns of stocks in a portfolio.
9 |
10 | 3) Var_cov_correlation : The variance refers to the spread of the data set—how far apart the numbers are in relation to the mean, for instance. Variance is particularly useful when calculating the probability of future events or performance.
11 | A covariance refers to the measure of how two random variables will change together and is used to calculate the correlation between variables.
12 | Correlation is a statistical measure that indicates the extent to which two or more variables fluctuate together.
13 |
14 | 4) Standard Deviation : Standard deviation is a number used to tell how measurements for a group are spread out from the average (mean), or expected value i.e, what is the percentage that inverstors will be surprised by the result.
15 |
16 | 5) Div_non_Div_risk : It calculates diversifiable risk and non-diversifiable risk i.e, risk that are beyond our control and risk that are organizational and can be controled.
17 |
18 | 6) Regression : The relation between house prices and house area is taken and checked how close is the relation with lots of characteristics to see from.
19 |
20 | 7) Markowitz_Algorithm : The algorithm that determines the best combination of weights in a pportfolio to get the minimum risk and maximum returns.
21 |
22 | 8) BETA and Beta_for_PG : Beta is a variable that tells about how much a stock moves with respect to the market.
23 | If BETA < 1 then stock is defensive , if BETA > 1 then stock is aggressive, if BETA = 0 then there is no relationship.
24 |
--------------------------------------------------------------------------------
/Regression.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [
8 | {
9 | "name": "stderr",
10 | "output_type": "stream",
11 | "text": [
12 | "C:\\Anaconda3\\lib\\site-packages\\statsmodels\\compat\\pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.\n",
13 | " from pandas.core import datetools\n"
14 | ]
15 | }
16 | ],
17 | "source": [
18 | "import pandas as pd\n",
19 | "import numpy as np\n",
20 | "from pandas_datareader import data as wb\n",
21 | "import matplotlib.pyplot as plt\n",
22 | "from scipy import stats\n",
23 | "import statsmodels.api as sm"
24 | ]
25 | },
26 | {
27 | "cell_type": "code",
28 | "execution_count": 5,
29 | "metadata": {},
30 | "outputs": [],
31 | "source": [
32 | "data = pd.read_excel(\"F:\\Housing.xlsx\")"
33 | ]
34 | },
35 | {
36 | "cell_type": "code",
37 | "execution_count": 6,
38 | "metadata": {},
39 | "outputs": [
40 | {
41 | "data": {
42 | "text/html": [
43 | "\n",
44 | "\n",
57 | "
\n",
58 | " \n",
59 | " \n",
60 | " | \n",
61 | " House Price | \n",
62 | " House Size (sq.ft.) | \n",
63 | " State | \n",
64 | " Number of Rooms | \n",
65 | " Year of Construction | \n",
66 | "
\n",
67 | " \n",
68 | " \n",
69 | " \n",
70 | " 0 | \n",
71 | " 1116000 | \n",
72 | " 1940 | \n",
73 | " IN | \n",
74 | " 8 | \n",
75 | " 2002 | \n",
76 | "
\n",
77 | " \n",
78 | " 1 | \n",
79 | " 860000 | \n",
80 | " 1300 | \n",
81 | " IN | \n",
82 | " 5 | \n",
83 | " 1992 | \n",
84 | "
\n",
85 | " \n",
86 | " 2 | \n",
87 | " 818400 | \n",
88 | " 1420 | \n",
89 | " IN | \n",
90 | " 6 | \n",
91 | " 1987 | \n",
92 | "
\n",
93 | " \n",
94 | " 3 | \n",
95 | " 1000000 | \n",
96 | " 1680 | \n",
97 | " IN | \n",
98 | " 7 | \n",
99 | " 2000 | \n",
100 | "
\n",
101 | " \n",
102 | " 4 | \n",
103 | " 640000 | \n",
104 | " 1270 | \n",
105 | " IN | \n",
106 | " 5 | \n",
107 | " 1995 | \n",
108 | "
\n",
109 | " \n",
110 | " 5 | \n",
111 | " 1010000 | \n",
112 | " 1850 | \n",
113 | " IN | \n",
114 | " 7 | \n",
115 | " 1998 | \n",
116 | "
\n",
117 | " \n",
118 | " 6 | \n",
119 | " 600000 | \n",
120 | " 1000 | \n",
121 | " IN | \n",
122 | " 4 | \n",
123 | " 2015 | \n",
124 | "
\n",
125 | " \n",
126 | " 7 | \n",
127 | " 700000 | \n",
128 | " 1100 | \n",
129 | " LA | \n",
130 | " 4 | \n",
131 | " 2014 | \n",
132 | "
\n",
133 | " \n",
134 | " 8 | \n",
135 | " 1100000 | \n",
136 | " 1600 | \n",
137 | " LA | \n",
138 | " 7 | \n",
139 | " 2017 | \n",
140 | "
\n",
141 | " \n",
142 | " 9 | \n",
143 | " 570000 | \n",
144 | " 1000 | \n",
145 | " NY | \n",
146 | " 5 | \n",
147 | " 1997 | \n",
148 | "
\n",
149 | " \n",
150 | " 10 | \n",
151 | " 860000 | \n",
152 | " 2150 | \n",
153 | " NY | \n",
154 | " 9 | \n",
155 | " 1997 | \n",
156 | "
\n",
157 | " \n",
158 | " 11 | \n",
159 | " 1085000 | \n",
160 | " 1900 | \n",
161 | " NY | \n",
162 | " 9 | \n",
163 | " 2000 | \n",
164 | "
\n",
165 | " \n",
166 | " 12 | \n",
167 | " 1250000 | \n",
168 | " 2200 | \n",
169 | " NY | \n",
170 | " 9 | \n",
171 | " 2014 | \n",
172 | "
\n",
173 | " \n",
174 | " 13 | \n",
175 | " 850000 | \n",
176 | " 1100 | \n",
177 | " TX | \n",
178 | " 4 | \n",
179 | " 2017 | \n",
180 | "
\n",
181 | " \n",
182 | " 14 | \n",
183 | " 640000 | \n",
184 | " 860 | \n",
185 | " TX | \n",
186 | " 4 | \n",
187 | " 1997 | \n",
188 | "
\n",
189 | " \n",
190 | " 15 | \n",
191 | " 900000 | \n",
192 | " 1325 | \n",
193 | " TX | \n",
194 | " 6 | \n",
195 | " 1997 | \n",
196 | "
\n",
197 | " \n",
198 | " 16 | \n",
199 | " 730000 | \n",
200 | " 1350 | \n",
201 | " TX | \n",
202 | " 6 | \n",
203 | " 2000 | \n",
204 | "
\n",
205 | " \n",
206 | " 17 | \n",
207 | " 750000 | \n",
208 | " 1600 | \n",
209 | " TX | \n",
210 | " 6 | \n",
211 | " 1992 | \n",
212 | "
\n",
213 | " \n",
214 | " 18 | \n",
215 | " 650000 | \n",
216 | " 950 | \n",
217 | " TX | \n",
218 | " 2 | \n",
219 | " 1987 | \n",
220 | "
\n",
221 | " \n",
222 | " 19 | \n",
223 | " 680000 | \n",
224 | " 1250 | \n",
225 | " TX | \n",
226 | " 4 | \n",
227 | " 2000 | \n",
228 | "
\n",
229 | " \n",
230 | "
\n",
231 | "
"
232 | ],
233 | "text/plain": [
234 | " House Price House Size (sq.ft.) State Number of Rooms \\\n",
235 | "0 1116000 1940 IN 8 \n",
236 | "1 860000 1300 IN 5 \n",
237 | "2 818400 1420 IN 6 \n",
238 | "3 1000000 1680 IN 7 \n",
239 | "4 640000 1270 IN 5 \n",
240 | "5 1010000 1850 IN 7 \n",
241 | "6 600000 1000 IN 4 \n",
242 | "7 700000 1100 LA 4 \n",
243 | "8 1100000 1600 LA 7 \n",
244 | "9 570000 1000 NY 5 \n",
245 | "10 860000 2150 NY 9 \n",
246 | "11 1085000 1900 NY 9 \n",
247 | "12 1250000 2200 NY 9 \n",
248 | "13 850000 1100 TX 4 \n",
249 | "14 640000 860 TX 4 \n",
250 | "15 900000 1325 TX 6 \n",
251 | "16 730000 1350 TX 6 \n",
252 | "17 750000 1600 TX 6 \n",
253 | "18 650000 950 TX 2 \n",
254 | "19 680000 1250 TX 4 \n",
255 | "\n",
256 | " Year of Construction \n",
257 | "0 2002 \n",
258 | "1 1992 \n",
259 | "2 1987 \n",
260 | "3 2000 \n",
261 | "4 1995 \n",
262 | "5 1998 \n",
263 | "6 2015 \n",
264 | "7 2014 \n",
265 | "8 2017 \n",
266 | "9 1997 \n",
267 | "10 1997 \n",
268 | "11 2000 \n",
269 | "12 2014 \n",
270 | "13 2017 \n",
271 | "14 1997 \n",
272 | "15 1997 \n",
273 | "16 2000 \n",
274 | "17 1992 \n",
275 | "18 1987 \n",
276 | "19 2000 "
277 | ]
278 | },
279 | "execution_count": 6,
280 | "metadata": {},
281 | "output_type": "execute_result"
282 | }
283 | ],
284 | "source": [
285 | "data"
286 | ]
287 | },
288 | {
289 | "cell_type": "code",
290 | "execution_count": 7,
291 | "metadata": {},
292 | "outputs": [
293 | {
294 | "data": {
295 | "text/html": [
296 | "\n",
297 | "\n",
310 | "
\n",
311 | " \n",
312 | " \n",
313 | " | \n",
314 | " House Price | \n",
315 | " House Size (sq.ft.) | \n",
316 | "
\n",
317 | " \n",
318 | " \n",
319 | " \n",
320 | " 0 | \n",
321 | " 1116000 | \n",
322 | " 1940 | \n",
323 | "
\n",
324 | " \n",
325 | " 1 | \n",
326 | " 860000 | \n",
327 | " 1300 | \n",
328 | "
\n",
329 | " \n",
330 | " 2 | \n",
331 | " 818400 | \n",
332 | " 1420 | \n",
333 | "
\n",
334 | " \n",
335 | " 3 | \n",
336 | " 1000000 | \n",
337 | " 1680 | \n",
338 | "
\n",
339 | " \n",
340 | " 4 | \n",
341 | " 640000 | \n",
342 | " 1270 | \n",
343 | "
\n",
344 | " \n",
345 | " 5 | \n",
346 | " 1010000 | \n",
347 | " 1850 | \n",
348 | "
\n",
349 | " \n",
350 | " 6 | \n",
351 | " 600000 | \n",
352 | " 1000 | \n",
353 | "
\n",
354 | " \n",
355 | " 7 | \n",
356 | " 700000 | \n",
357 | " 1100 | \n",
358 | "
\n",
359 | " \n",
360 | " 8 | \n",
361 | " 1100000 | \n",
362 | " 1600 | \n",
363 | "
\n",
364 | " \n",
365 | " 9 | \n",
366 | " 570000 | \n",
367 | " 1000 | \n",
368 | "
\n",
369 | " \n",
370 | " 10 | \n",
371 | " 860000 | \n",
372 | " 2150 | \n",
373 | "
\n",
374 | " \n",
375 | " 11 | \n",
376 | " 1085000 | \n",
377 | " 1900 | \n",
378 | "
\n",
379 | " \n",
380 | " 12 | \n",
381 | " 1250000 | \n",
382 | " 2200 | \n",
383 | "
\n",
384 | " \n",
385 | " 13 | \n",
386 | " 850000 | \n",
387 | " 1100 | \n",
388 | "
\n",
389 | " \n",
390 | " 14 | \n",
391 | " 640000 | \n",
392 | " 860 | \n",
393 | "
\n",
394 | " \n",
395 | " 15 | \n",
396 | " 900000 | \n",
397 | " 1325 | \n",
398 | "
\n",
399 | " \n",
400 | " 16 | \n",
401 | " 730000 | \n",
402 | " 1350 | \n",
403 | "
\n",
404 | " \n",
405 | " 17 | \n",
406 | " 750000 | \n",
407 | " 1600 | \n",
408 | "
\n",
409 | " \n",
410 | " 18 | \n",
411 | " 650000 | \n",
412 | " 950 | \n",
413 | "
\n",
414 | " \n",
415 | " 19 | \n",
416 | " 680000 | \n",
417 | " 1250 | \n",
418 | "
\n",
419 | " \n",
420 | "
\n",
421 | "
"
422 | ],
423 | "text/plain": [
424 | " House Price House Size (sq.ft.)\n",
425 | "0 1116000 1940\n",
426 | "1 860000 1300\n",
427 | "2 818400 1420\n",
428 | "3 1000000 1680\n",
429 | "4 640000 1270\n",
430 | "5 1010000 1850\n",
431 | "6 600000 1000\n",
432 | "7 700000 1100\n",
433 | "8 1100000 1600\n",
434 | "9 570000 1000\n",
435 | "10 860000 2150\n",
436 | "11 1085000 1900\n",
437 | "12 1250000 2200\n",
438 | "13 850000 1100\n",
439 | "14 640000 860\n",
440 | "15 900000 1325\n",
441 | "16 730000 1350\n",
442 | "17 750000 1600\n",
443 | "18 650000 950\n",
444 | "19 680000 1250"
445 | ]
446 | },
447 | "execution_count": 7,
448 | "metadata": {},
449 | "output_type": "execute_result"
450 | }
451 | ],
452 | "source": [
453 | "data[['House Price', 'House Size (sq.ft.)']]"
454 | ]
455 | },
456 | {
457 | "cell_type": "code",
458 | "execution_count": 9,
459 | "metadata": {},
460 | "outputs": [],
461 | "source": [
462 | "x = data['House Size (sq.ft.)']\n",
463 | "y = data['House Price']"
464 | ]
465 | },
466 | {
467 | "cell_type": "code",
468 | "execution_count": 10,
469 | "metadata": {},
470 | "outputs": [
471 | {
472 | "data": {
473 | "text/plain": [
474 | "0 1940\n",
475 | "1 1300\n",
476 | "2 1420\n",
477 | "3 1680\n",
478 | "4 1270\n",
479 | "5 1850\n",
480 | "6 1000\n",
481 | "7 1100\n",
482 | "8 1600\n",
483 | "9 1000\n",
484 | "10 2150\n",
485 | "11 1900\n",
486 | "12 2200\n",
487 | "13 1100\n",
488 | "14 860\n",
489 | "15 1325\n",
490 | "16 1350\n",
491 | "17 1600\n",
492 | "18 950\n",
493 | "19 1250\n",
494 | "Name: House Size (sq.ft.), dtype: int64"
495 | ]
496 | },
497 | "execution_count": 10,
498 | "metadata": {},
499 | "output_type": "execute_result"
500 | }
501 | ],
502 | "source": [
503 | "x"
504 | ]
505 | },
506 | {
507 | "cell_type": "code",
508 | "execution_count": 11,
509 | "metadata": {},
510 | "outputs": [
511 | {
512 | "data": {
513 | "text/plain": [
514 | "0 1116000\n",
515 | "1 860000\n",
516 | "2 818400\n",
517 | "3 1000000\n",
518 | "4 640000\n",
519 | "5 1010000\n",
520 | "6 600000\n",
521 | "7 700000\n",
522 | "8 1100000\n",
523 | "9 570000\n",
524 | "10 860000\n",
525 | "11 1085000\n",
526 | "12 1250000\n",
527 | "13 850000\n",
528 | "14 640000\n",
529 | "15 900000\n",
530 | "16 730000\n",
531 | "17 750000\n",
532 | "18 650000\n",
533 | "19 680000\n",
534 | "Name: House Price, dtype: int64"
535 | ]
536 | },
537 | "execution_count": 11,
538 | "metadata": {},
539 | "output_type": "execute_result"
540 | }
541 | ],
542 | "source": [
543 | "y"
544 | ]
545 | },
546 | {
547 | "cell_type": "code",
548 | "execution_count": 15,
549 | "metadata": {},
550 | "outputs": [
551 | {
552 | "data": {
553 | "image/png": "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\n",
554 | "text/plain": [
555 | ""
556 | ]
557 | },
558 | "metadata": {},
559 | "output_type": "display_data"
560 | }
561 | ],
562 | "source": [
563 | "plt.scatter(x,y)\n",
564 | "plt.axis([0, 2500, 0, 1500000])\n",
565 | "plt.ylabel('House Price')\n",
566 | "plt.xlabel('House Size(in sq.ft)')\n",
567 | "plt.show()"
568 | ]
569 | },
570 | {
571 | "cell_type": "code",
572 | "execution_count": 16,
573 | "metadata": {},
574 | "outputs": [],
575 | "source": [
576 | "x1 = sm.add_constant(x)\n",
577 | "reg = sm.OLS(y,x1).fit()"
578 | ]
579 | },
580 | {
581 | "cell_type": "code",
582 | "execution_count": 17,
583 | "metadata": {},
584 | "outputs": [
585 | {
586 | "data": {
587 | "text/html": [
588 | "\n",
589 | "OLS Regression Results\n",
590 | "\n",
591 | " Dep. Variable: | House Price | R-squared: | 0.678 | \n",
592 | "
\n",
593 | "\n",
594 | " Model: | OLS | Adj. R-squared: | 0.660 | \n",
595 | "
\n",
596 | "\n",
597 | " Method: | Least Squares | F-statistic: | 37.95 | \n",
598 | "
\n",
599 | "\n",
600 | " Date: | Tue, 03 Apr 2018 | Prob (F-statistic): | 8.13e-06 | \n",
601 | "
\n",
602 | "\n",
603 | " Time: | 23:27:41 | Log-Likelihood: | -260.43 | \n",
604 | "
\n",
605 | "\n",
606 | " No. Observations: | 20 | AIC: | 524.9 | \n",
607 | "
\n",
608 | "\n",
609 | " Df Residuals: | 18 | BIC: | 526.8 | \n",
610 | "
\n",
611 | "\n",
612 | " Df Model: | 1 | | | \n",
613 | "
\n",
614 | "\n",
615 | " Covariance Type: | nonrobust | | | \n",
616 | "
\n",
617 | "
\n",
618 | "\n",
619 | "\n",
620 | " | coef | std err | t | P>|t| | [0.025 | 0.975] | \n",
621 | "
\n",
622 | "\n",
623 | " const | 2.608e+05 | 9.76e+04 | 2.673 | 0.016 | 5.58e+04 | 4.66e+05 | \n",
624 | "
\n",
625 | "\n",
626 | " House Size (sq.ft.) | 401.9163 | 65.243 | 6.160 | 0.000 | 264.846 | 538.987 | \n",
627 | "
\n",
628 | "
\n",
629 | "\n",
630 | "\n",
631 | " Omnibus: | 1.238 | Durbin-Watson: | 1.810 | \n",
632 | "
\n",
633 | "\n",
634 | " Prob(Omnibus): | 0.538 | Jarque-Bera (JB): | 0.715 | \n",
635 | "
\n",
636 | "\n",
637 | " Skew: | -0.459 | Prob(JB): | 0.699 | \n",
638 | "
\n",
639 | "\n",
640 | " Kurtosis: | 2.884 | Cond. No. | 5.66e+03 | \n",
641 | "
\n",
642 | "
"
643 | ],
644 | "text/plain": [
645 | "\n",
646 | "\"\"\"\n",
647 | " OLS Regression Results \n",
648 | "==============================================================================\n",
649 | "Dep. Variable: House Price R-squared: 0.678\n",
650 | "Model: OLS Adj. R-squared: 0.660\n",
651 | "Method: Least Squares F-statistic: 37.95\n",
652 | "Date: Tue, 03 Apr 2018 Prob (F-statistic): 8.13e-06\n",
653 | "Time: 23:27:41 Log-Likelihood: -260.43\n",
654 | "No. Observations: 20 AIC: 524.9\n",
655 | "Df Residuals: 18 BIC: 526.8\n",
656 | "Df Model: 1 \n",
657 | "Covariance Type: nonrobust \n",
658 | "=======================================================================================\n",
659 | " coef std err t P>|t| [0.025 0.975]\n",
660 | "---------------------------------------------------------------------------------------\n",
661 | "const 2.608e+05 9.76e+04 2.673 0.016 5.58e+04 4.66e+05\n",
662 | "House Size (sq.ft.) 401.9163 65.243 6.160 0.000 264.846 538.987\n",
663 | "==============================================================================\n",
664 | "Omnibus: 1.238 Durbin-Watson: 1.810\n",
665 | "Prob(Omnibus): 0.538 Jarque-Bera (JB): 0.715\n",
666 | "Skew: -0.459 Prob(JB): 0.699\n",
667 | "Kurtosis: 2.884 Cond. No. 5.66e+03\n",
668 | "==============================================================================\n",
669 | "\n",
670 | "Warnings:\n",
671 | "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
672 | "[2] The condition number is large, 5.66e+03. This might indicate that there are\n",
673 | "strong multicollinearity or other numerical problems.\n",
674 | "\"\"\""
675 | ]
676 | },
677 | "execution_count": 17,
678 | "metadata": {},
679 | "output_type": "execute_result"
680 | }
681 | ],
682 | "source": [
683 | "reg.summary()"
684 | ]
685 | },
686 | {
687 | "cell_type": "code",
688 | "execution_count": 18,
689 | "metadata": {},
690 | "outputs": [
691 | {
692 | "data": {
693 | "text/plain": [
694 | "662800"
695 | ]
696 | },
697 | "execution_count": 18,
698 | "metadata": {},
699 | "output_type": "execute_result"
700 | }
701 | ],
702 | "source": [
703 | "260800 + 402 * 1000"
704 | ]
705 | },
706 | {
707 | "cell_type": "code",
708 | "execution_count": 19,
709 | "metadata": {},
710 | "outputs": [],
711 | "source": [
712 | "slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)"
713 | ]
714 | },
715 | {
716 | "cell_type": "code",
717 | "execution_count": 20,
718 | "metadata": {},
719 | "outputs": [
720 | {
721 | "data": {
722 | "text/plain": [
723 | "0.678279986579124"
724 | ]
725 | },
726 | "execution_count": 20,
727 | "metadata": {},
728 | "output_type": "execute_result"
729 | }
730 | ],
731 | "source": [
732 | "r_value**2"
733 | ]
734 | },
735 | {
736 | "cell_type": "code",
737 | "execution_count": 21,
738 | "metadata": {},
739 | "outputs": [
740 | {
741 | "data": {
742 | "text/plain": [
743 | "401.91628631922595"
744 | ]
745 | },
746 | "execution_count": 21,
747 | "metadata": {},
748 | "output_type": "execute_result"
749 | }
750 | ],
751 | "source": [
752 | "slope"
753 | ]
754 | },
755 | {
756 | "cell_type": "code",
757 | "execution_count": 22,
758 | "metadata": {},
759 | "outputs": [
760 | {
761 | "data": {
762 | "text/plain": [
763 | "260806.2360560964"
764 | ]
765 | },
766 | "execution_count": 22,
767 | "metadata": {},
768 | "output_type": "execute_result"
769 | }
770 | ],
771 | "source": [
772 | "intercept"
773 | ]
774 | },
775 | {
776 | "cell_type": "code",
777 | "execution_count": 23,
778 | "metadata": {},
779 | "outputs": [
780 | {
781 | "data": {
782 | "text/plain": [
783 | "65.24299510636492"
784 | ]
785 | },
786 | "execution_count": 23,
787 | "metadata": {},
788 | "output_type": "execute_result"
789 | }
790 | ],
791 | "source": [
792 | "std_err"
793 | ]
794 | },
795 | {
796 | "cell_type": "code",
797 | "execution_count": 24,
798 | "metadata": {},
799 | "outputs": [
800 | {
801 | "data": {
802 | "text/plain": [
803 | "8.129642377231308e-06"
804 | ]
805 | },
806 | "execution_count": 24,
807 | "metadata": {},
808 | "output_type": "execute_result"
809 | }
810 | ],
811 | "source": [
812 | "p_value"
813 | ]
814 | }
815 | ],
816 | "metadata": {
817 | "kernelspec": {
818 | "display_name": "Python 3",
819 | "language": "python",
820 | "name": "python3"
821 | },
822 | "language_info": {
823 | "codemirror_mode": {
824 | "name": "ipython",
825 | "version": 3
826 | },
827 | "file_extension": ".py",
828 | "mimetype": "text/x-python",
829 | "name": "python",
830 | "nbconvert_exporter": "python",
831 | "pygments_lexer": "ipython3",
832 | "version": "3.6.4"
833 | }
834 | },
835 | "nbformat": 4,
836 | "nbformat_minor": 2
837 | }
838 |
--------------------------------------------------------------------------------
/Standard_Deviation.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 2,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import numpy as np\n",
11 | "from pandas_datareader import data as wb\n",
12 | "import matplotlib.pyplot as plt"
13 | ]
14 | },
15 | {
16 | "cell_type": "code",
17 | "execution_count": 3,
18 | "metadata": {},
19 | "outputs": [],
20 | "source": [
21 | "tickers = ['PG','AAPL']\n",
22 | "\n",
23 | "sec_data = pd.DataFrame()\n",
24 | "\n",
25 | "for t in tickers :\n",
26 | " sec_data[t] = wb.DataReader(t,'quandl','2007-1-1','2018-3-1')['AdjClose']"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 4,
32 | "metadata": {},
33 | "outputs": [
34 | {
35 | "data": {
36 | "text/html": [
37 | "\n",
38 | "\n",
51 | "
\n",
52 | " \n",
53 | " \n",
54 | " | \n",
55 | " PG | \n",
56 | " AAPL | \n",
57 | "
\n",
58 | " \n",
59 | " Date | \n",
60 | " | \n",
61 | " | \n",
62 | "
\n",
63 | " \n",
64 | " \n",
65 | " \n",
66 | " 2007-01-03 | \n",
67 | " NaN | \n",
68 | " NaN | \n",
69 | "
\n",
70 | " \n",
71 | " 2007-01-04 | \n",
72 | " -0.007621 | \n",
73 | " 0.021953 | \n",
74 | "
\n",
75 | " \n",
76 | " 2007-01-05 | \n",
77 | " -0.008624 | \n",
78 | " -0.007147 | \n",
79 | "
\n",
80 | " \n",
81 | " 2007-01-08 | \n",
82 | " 0.002202 | \n",
83 | " 0.004926 | \n",
84 | "
\n",
85 | " \n",
86 | " 2007-01-09 | \n",
87 | " -0.002517 | \n",
88 | " 0.079800 | \n",
89 | "
\n",
90 | " \n",
91 | " 2007-01-10 | \n",
92 | " 0.011901 | \n",
93 | " 0.046746 | \n",
94 | "
\n",
95 | " \n",
96 | " 2007-01-11 | \n",
97 | " 0.006207 | \n",
98 | " -0.012448 | \n",
99 | "
\n",
100 | " \n",
101 | " 2007-01-12 | \n",
102 | " 0.005554 | \n",
103 | " -0.012394 | \n",
104 | "
\n",
105 | " \n",
106 | " 2007-01-16 | \n",
107 | " 0.000000 | \n",
108 | " 0.025873 | \n",
109 | "
\n",
110 | " \n",
111 | " 2007-01-17 | \n",
112 | " 0.010255 | \n",
113 | " -0.022391 | \n",
114 | "
\n",
115 | " \n",
116 | " 2007-01-18 | \n",
117 | " 0.002750 | \n",
118 | " -0.063928 | \n",
119 | "
\n",
120 | " \n",
121 | " 2007-01-19 | \n",
122 | " 0.008357 | \n",
123 | " -0.006420 | \n",
124 | "
\n",
125 | " \n",
126 | " 2007-01-22 | \n",
127 | " -0.005614 | \n",
128 | " -0.019511 | \n",
129 | "
\n",
130 | " \n",
131 | " 2007-01-23 | \n",
132 | " -0.001218 | \n",
133 | " -0.012639 | \n",
134 | "
\n",
135 | " \n",
136 | " 2007-01-24 | \n",
137 | " -0.001982 | \n",
138 | " 0.011601 | \n",
139 | "
\n",
140 | " \n",
141 | " 2007-01-25 | \n",
142 | " -0.009047 | \n",
143 | " -0.005204 | \n",
144 | "
\n",
145 | " \n",
146 | " 2007-01-26 | \n",
147 | " -0.000925 | \n",
148 | " -0.010138 | \n",
149 | "
\n",
150 | " \n",
151 | " 2007-01-29 | \n",
152 | " 0.000308 | \n",
153 | " 0.006537 | \n",
154 | "
\n",
155 | " \n",
156 | " 2007-01-30 | \n",
157 | " -0.004480 | \n",
158 | " -0.004548 | \n",
159 | "
\n",
160 | " \n",
161 | " 2007-01-31 | \n",
162 | " 0.004326 | \n",
163 | " 0.002102 | \n",
164 | "
\n",
165 | " \n",
166 | " 2007-02-01 | \n",
167 | " 0.007219 | \n",
168 | " -0.011615 | \n",
169 | "
\n",
170 | " \n",
171 | " 2007-02-02 | \n",
172 | " 0.000000 | \n",
173 | " 0.000118 | \n",
174 | "
\n",
175 | " \n",
176 | " 2007-02-05 | \n",
177 | " -0.002912 | \n",
178 | " -0.009603 | \n",
179 | "
\n",
180 | " \n",
181 | " 2007-02-06 | \n",
182 | " -0.008633 | \n",
183 | " 0.002499 | \n",
184 | "
\n",
185 | " \n",
186 | " 2007-02-07 | \n",
187 | " -0.001705 | \n",
188 | " 0.023489 | \n",
189 | "
\n",
190 | " \n",
191 | " 2007-02-08 | \n",
192 | " 0.001705 | \n",
193 | " 0.000348 | \n",
194 | "
\n",
195 | " \n",
196 | " 2007-02-09 | \n",
197 | " -0.002480 | \n",
198 | " -0.034350 | \n",
199 | "
\n",
200 | " \n",
201 | " 2007-02-12 | \n",
202 | " -0.004199 | \n",
203 | " 0.019150 | \n",
204 | "
\n",
205 | " \n",
206 | " 2007-02-13 | \n",
207 | " 0.008536 | \n",
208 | " -0.002123 | \n",
209 | "
\n",
210 | " \n",
211 | " 2007-02-14 | \n",
212 | " 0.002624 | \n",
213 | " 0.007059 | \n",
214 | "
\n",
215 | " \n",
216 | " ... | \n",
217 | " ... | \n",
218 | " ... | \n",
219 | "
\n",
220 | " \n",
221 | " 2018-01-18 | \n",
222 | " -0.011247 | \n",
223 | " 0.000893 | \n",
224 | "
\n",
225 | " \n",
226 | " 2018-01-19 | \n",
227 | " 0.009821 | \n",
228 | " -0.004473 | \n",
229 | "
\n",
230 | " \n",
231 | " 2018-01-22 | \n",
232 | " 0.008964 | \n",
233 | " -0.008215 | \n",
234 | "
\n",
235 | " \n",
236 | " 2018-01-23 | \n",
237 | " -0.031394 | \n",
238 | " 0.000226 | \n",
239 | "
\n",
240 | " \n",
241 | " 2018-01-24 | \n",
242 | " -0.008345 | \n",
243 | " -0.016057 | \n",
244 | "
\n",
245 | " \n",
246 | " 2018-01-25 | \n",
247 | " 0.000340 | \n",
248 | " -0.018012 | \n",
249 | "
\n",
250 | " \n",
251 | " 2018-01-26 | \n",
252 | " -0.006929 | \n",
253 | " 0.002335 | \n",
254 | "
\n",
255 | " \n",
256 | " 2018-01-29 | \n",
257 | " -0.009966 | \n",
258 | " -0.020916 | \n",
259 | "
\n",
260 | " \n",
261 | " 2018-01-30 | \n",
262 | " 0.001036 | \n",
263 | " -0.005912 | \n",
264 | "
\n",
265 | " \n",
266 | " 2018-01-31 | \n",
267 | " -0.007040 | \n",
268 | " 0.002751 | \n",
269 | "
\n",
270 | " \n",
271 | " 2018-02-01 | \n",
272 | " -0.005691 | \n",
273 | " 0.002088 | \n",
274 | "
\n",
275 | " \n",
276 | " 2018-02-02 | \n",
277 | " -0.018813 | \n",
278 | " -0.045170 | \n",
279 | "
\n",
280 | " \n",
281 | " 2018-02-05 | \n",
282 | " -0.038599 | \n",
283 | " -0.018122 | \n",
284 | "
\n",
285 | " \n",
286 | " 2018-02-06 | \n",
287 | " 0.016153 | \n",
288 | " 0.034572 | \n",
289 | "
\n",
290 | " \n",
291 | " 2018-02-07 | \n",
292 | " -0.006577 | \n",
293 | " -0.021640 | \n",
294 | "
\n",
295 | " \n",
296 | " 2018-02-08 | \n",
297 | " -0.019993 | \n",
298 | " -0.026807 | \n",
299 | "
\n",
300 | " \n",
301 | " 2018-02-09 | \n",
302 | " -0.003747 | \n",
303 | " 0.004176 | \n",
304 | "
\n",
305 | " \n",
306 | " 2018-02-12 | \n",
307 | " 0.017489 | \n",
308 | " 0.042306 | \n",
309 | "
\n",
310 | " \n",
311 | " 2018-02-13 | \n",
312 | " 0.002088 | \n",
313 | " 0.009968 | \n",
314 | "
\n",
315 | " \n",
316 | " 2018-02-14 | \n",
317 | " -0.010112 | \n",
318 | " 0.018269 | \n",
319 | "
\n",
320 | " \n",
321 | " 2018-02-15 | \n",
322 | " 0.021216 | \n",
323 | " 0.033027 | \n",
324 | "
\n",
325 | " \n",
326 | " 2018-02-16 | \n",
327 | " 0.002303 | \n",
328 | " -0.003242 | \n",
329 | "
\n",
330 | " \n",
331 | " 2018-02-20 | \n",
332 | " -0.015372 | \n",
333 | " -0.003369 | \n",
334 | "
\n",
335 | " \n",
336 | " 2018-02-21 | \n",
337 | " -0.013616 | \n",
338 | " -0.004549 | \n",
339 | "
\n",
340 | " \n",
341 | " 2018-02-22 | \n",
342 | " 0.007450 | \n",
343 | " 0.008904 | \n",
344 | "
\n",
345 | " \n",
346 | " 2018-02-23 | \n",
347 | " 0.002594 | \n",
348 | " 0.016976 | \n",
349 | "
\n",
350 | " \n",
351 | " 2018-02-26 | \n",
352 | " 0.007131 | \n",
353 | " 0.019266 | \n",
354 | "
\n",
355 | " \n",
356 | " 2018-02-27 | \n",
357 | " -0.013443 | \n",
358 | " -0.003246 | \n",
359 | "
\n",
360 | " \n",
361 | " 2018-02-28 | \n",
362 | " -0.025401 | \n",
363 | " -0.001515 | \n",
364 | "
\n",
365 | " \n",
366 | " 2018-03-01 | \n",
367 | " 0.002290 | \n",
368 | " -0.017672 | \n",
369 | "
\n",
370 | " \n",
371 | "
\n",
372 | "
2809 rows × 2 columns
\n",
373 | "
"
374 | ],
375 | "text/plain": [
376 | " PG AAPL\n",
377 | "Date \n",
378 | "2007-01-03 NaN NaN\n",
379 | "2007-01-04 -0.007621 0.021953\n",
380 | "2007-01-05 -0.008624 -0.007147\n",
381 | "2007-01-08 0.002202 0.004926\n",
382 | "2007-01-09 -0.002517 0.079800\n",
383 | "2007-01-10 0.011901 0.046746\n",
384 | "2007-01-11 0.006207 -0.012448\n",
385 | "2007-01-12 0.005554 -0.012394\n",
386 | "2007-01-16 0.000000 0.025873\n",
387 | "2007-01-17 0.010255 -0.022391\n",
388 | "2007-01-18 0.002750 -0.063928\n",
389 | "2007-01-19 0.008357 -0.006420\n",
390 | "2007-01-22 -0.005614 -0.019511\n",
391 | "2007-01-23 -0.001218 -0.012639\n",
392 | "2007-01-24 -0.001982 0.011601\n",
393 | "2007-01-25 -0.009047 -0.005204\n",
394 | "2007-01-26 -0.000925 -0.010138\n",
395 | "2007-01-29 0.000308 0.006537\n",
396 | "2007-01-30 -0.004480 -0.004548\n",
397 | "2007-01-31 0.004326 0.002102\n",
398 | "2007-02-01 0.007219 -0.011615\n",
399 | "2007-02-02 0.000000 0.000118\n",
400 | "2007-02-05 -0.002912 -0.009603\n",
401 | "2007-02-06 -0.008633 0.002499\n",
402 | "2007-02-07 -0.001705 0.023489\n",
403 | "2007-02-08 0.001705 0.000348\n",
404 | "2007-02-09 -0.002480 -0.034350\n",
405 | "2007-02-12 -0.004199 0.019150\n",
406 | "2007-02-13 0.008536 -0.002123\n",
407 | "2007-02-14 0.002624 0.007059\n",
408 | "... ... ...\n",
409 | "2018-01-18 -0.011247 0.000893\n",
410 | "2018-01-19 0.009821 -0.004473\n",
411 | "2018-01-22 0.008964 -0.008215\n",
412 | "2018-01-23 -0.031394 0.000226\n",
413 | "2018-01-24 -0.008345 -0.016057\n",
414 | "2018-01-25 0.000340 -0.018012\n",
415 | "2018-01-26 -0.006929 0.002335\n",
416 | "2018-01-29 -0.009966 -0.020916\n",
417 | "2018-01-30 0.001036 -0.005912\n",
418 | "2018-01-31 -0.007040 0.002751\n",
419 | "2018-02-01 -0.005691 0.002088\n",
420 | "2018-02-02 -0.018813 -0.045170\n",
421 | "2018-02-05 -0.038599 -0.018122\n",
422 | "2018-02-06 0.016153 0.034572\n",
423 | "2018-02-07 -0.006577 -0.021640\n",
424 | "2018-02-08 -0.019993 -0.026807\n",
425 | "2018-02-09 -0.003747 0.004176\n",
426 | "2018-02-12 0.017489 0.042306\n",
427 | "2018-02-13 0.002088 0.009968\n",
428 | "2018-02-14 -0.010112 0.018269\n",
429 | "2018-02-15 0.021216 0.033027\n",
430 | "2018-02-16 0.002303 -0.003242\n",
431 | "2018-02-20 -0.015372 -0.003369\n",
432 | "2018-02-21 -0.013616 -0.004549\n",
433 | "2018-02-22 0.007450 0.008904\n",
434 | "2018-02-23 0.002594 0.016976\n",
435 | "2018-02-26 0.007131 0.019266\n",
436 | "2018-02-27 -0.013443 -0.003246\n",
437 | "2018-02-28 -0.025401 -0.001515\n",
438 | "2018-03-01 0.002290 -0.017672\n",
439 | "\n",
440 | "[2809 rows x 2 columns]"
441 | ]
442 | },
443 | "execution_count": 4,
444 | "metadata": {},
445 | "output_type": "execute_result"
446 | }
447 | ],
448 | "source": [
449 | "sec_data = sec_data.iloc[::-1]\n",
450 | "sec_returns = np.log(sec_data / sec_data.shift(1))\n",
451 | "sec_returns"
452 | ]
453 | },
454 | {
455 | "cell_type": "code",
456 | "execution_count": 27,
457 | "metadata": {},
458 | "outputs": [
459 | {
460 | "data": {
461 | "text/plain": [
462 | "0.00018767102795901115"
463 | ]
464 | },
465 | "execution_count": 27,
466 | "metadata": {},
467 | "output_type": "execute_result"
468 | }
469 | ],
470 | "source": [
471 | "sec_returns['PG'].mean()"
472 | ]
473 | },
474 | {
475 | "cell_type": "code",
476 | "execution_count": 7,
477 | "metadata": {},
478 | "outputs": [
479 | {
480 | "data": {
481 | "text/plain": [
482 | "PG 0.000188\n",
483 | "AAPL 0.000985\n",
484 | "dtype: float64"
485 | ]
486 | },
487 | "execution_count": 7,
488 | "metadata": {},
489 | "output_type": "execute_result"
490 | }
491 | ],
492 | "source": [
493 | "daily = sec_returns[['PG','AAPL']].mean()\n",
494 | "daily"
495 | ]
496 | },
497 | {
498 | "cell_type": "code",
499 | "execution_count": 34,
500 | "metadata": {},
501 | "outputs": [
502 | {
503 | "name": "stdout",
504 | "output_type": "stream",
505 | "text": [
506 | "PG 4.803120\n",
507 | "AAPL 27.915995\n",
508 | "dtype: float64%\n"
509 | ]
510 | }
511 | ],
512 | "source": [
513 | "annual = (((daily+1)**250)-1)*100\n",
514 | "print(str(annual) + '%')"
515 | ]
516 | },
517 | {
518 | "cell_type": "code",
519 | "execution_count": 35,
520 | "metadata": {},
521 | "outputs": [
522 | {
523 | "data": {
524 | "text/plain": [
525 | "PG 0.010931\n",
526 | "AAPL 0.020057\n",
527 | "dtype: float64"
528 | ]
529 | },
530 | "execution_count": 35,
531 | "metadata": {},
532 | "output_type": "execute_result"
533 | }
534 | ],
535 | "source": [
536 | "daily_std = sec_returns[['PG','AAPL']].std()\n",
537 | "daily_std"
538 | ]
539 | },
540 | {
541 | "cell_type": "code",
542 | "execution_count": 38,
543 | "metadata": {},
544 | "outputs": [
545 | {
546 | "data": {
547 | "text/plain": [
548 | "PG 0.172832\n",
549 | "AAPL 0.317125\n",
550 | "dtype: float64"
551 | ]
552 | },
553 | "execution_count": 38,
554 | "metadata": {},
555 | "output_type": "execute_result"
556 | }
557 | ],
558 | "source": [
559 | "annual_std = sec_returns[['PG','AAPL']].std()*250**0.5\n",
560 | "annual_std"
561 | ]
562 | }
563 | ],
564 | "metadata": {
565 | "kernelspec": {
566 | "display_name": "Python 3",
567 | "language": "python",
568 | "name": "python3"
569 | },
570 | "language_info": {
571 | "codemirror_mode": {
572 | "name": "ipython",
573 | "version": 3
574 | },
575 | "file_extension": ".py",
576 | "mimetype": "text/x-python",
577 | "name": "python",
578 | "nbconvert_exporter": "python",
579 | "pygments_lexer": "ipython3",
580 | "version": "3.6.4"
581 | }
582 | },
583 | "nbformat": 4,
584 | "nbformat_minor": 2
585 | }
586 |
--------------------------------------------------------------------------------
/var_cov_correlation.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import numpy as np\n",
11 | "from pandas_datareader import data as wb\n",
12 | "import matplotlib.pyplot as plt"
13 | ]
14 | },
15 | {
16 | "cell_type": "code",
17 | "execution_count": 15,
18 | "metadata": {},
19 | "outputs": [],
20 | "source": [
21 | "tickers = ['PG','MSFT']\n",
22 | "\n",
23 | "sec_data = pd.DataFrame()\n",
24 | "\n",
25 | "for t in tickers :\n",
26 | " sec_data[t] = wb.DataReader(t,'quandl','2007-1-1','2018-3-1')['AdjClose']"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 16,
32 | "metadata": {},
33 | "outputs": [
34 | {
35 | "name": "stdout",
36 | "output_type": "stream",
37 | "text": [
38 | "\n",
39 | "DatetimeIndex: 2809 entries, 2018-03-01 to 2007-01-03\n",
40 | "Data columns (total 2 columns):\n",
41 | "PG 2809 non-null float64\n",
42 | "MSFT 2809 non-null float64\n",
43 | "dtypes: float64(2)\n",
44 | "memory usage: 65.8 KB\n"
45 | ]
46 | }
47 | ],
48 | "source": [
49 | "sec_data.info()"
50 | ]
51 | },
52 | {
53 | "cell_type": "code",
54 | "execution_count": 17,
55 | "metadata": {},
56 | "outputs": [
57 | {
58 | "data": {
59 | "text/html": [
60 | "\n",
61 | "\n",
74 | "
\n",
75 | " \n",
76 | " \n",
77 | " | \n",
78 | " PG | \n",
79 | " MSFT | \n",
80 | "
\n",
81 | " \n",
82 | " Date | \n",
83 | " | \n",
84 | " | \n",
85 | "
\n",
86 | " \n",
87 | " \n",
88 | " \n",
89 | " 2007-01-03 | \n",
90 | " NaN | \n",
91 | " NaN | \n",
92 | "
\n",
93 | " \n",
94 | " 2007-01-04 | \n",
95 | " -0.007621 | \n",
96 | " -0.001676 | \n",
97 | "
\n",
98 | " \n",
99 | " 2007-01-05 | \n",
100 | " -0.008624 | \n",
101 | " -0.005719 | \n",
102 | "
\n",
103 | " \n",
104 | " 2007-01-08 | \n",
105 | " 0.002202 | \n",
106 | " 0.009737 | \n",
107 | "
\n",
108 | " \n",
109 | " 2007-01-09 | \n",
110 | " -0.002517 | \n",
111 | " 0.001002 | \n",
112 | "
\n",
113 | " \n",
114 | " 2007-01-10 | \n",
115 | " 0.011901 | \n",
116 | " -0.010064 | \n",
117 | "
\n",
118 | " \n",
119 | " 2007-01-11 | \n",
120 | " 0.006207 | \n",
121 | " 0.034463 | \n",
122 | "
\n",
123 | " \n",
124 | " 2007-01-12 | \n",
125 | " 0.005554 | \n",
126 | " 0.016476 | \n",
127 | "
\n",
128 | " \n",
129 | " 2007-01-16 | \n",
130 | " 0.000000 | \n",
131 | " -0.001603 | \n",
132 | "
\n",
133 | " \n",
134 | " 2007-01-17 | \n",
135 | " 0.010255 | \n",
136 | " -0.001927 | \n",
137 | "
\n",
138 | " \n",
139 | " 2007-01-18 | \n",
140 | " 0.002750 | \n",
141 | " -0.003221 | \n",
142 | "
\n",
143 | " \n",
144 | " 2007-01-19 | \n",
145 | " 0.008357 | \n",
146 | " 0.003542 | \n",
147 | "
\n",
148 | " \n",
149 | " 2007-01-22 | \n",
150 | " -0.005614 | \n",
151 | " -0.012615 | \n",
152 | "
\n",
153 | " \n",
154 | " 2007-01-23 | \n",
155 | " -0.001218 | \n",
156 | " 0.000651 | \n",
157 | "
\n",
158 | " \n",
159 | " 2007-01-24 | \n",
160 | " -0.001982 | \n",
161 | " 0.011321 | \n",
162 | "
\n",
163 | " \n",
164 | " 2007-01-25 | \n",
165 | " -0.009047 | \n",
166 | " -0.020800 | \n",
167 | "
\n",
168 | " \n",
169 | " 2007-01-26 | \n",
170 | " -0.000925 | \n",
171 | " 0.004914 | \n",
172 | "
\n",
173 | " \n",
174 | " 2007-01-29 | \n",
175 | " 0.000308 | \n",
176 | " -0.002290 | \n",
177 | "
\n",
178 | " \n",
179 | " 2007-01-30 | \n",
180 | " -0.004480 | \n",
181 | " -0.001639 | \n",
182 | "
\n",
183 | " \n",
184 | " 2007-01-31 | \n",
185 | " 0.004326 | \n",
186 | " 0.012390 | \n",
187 | "
\n",
188 | " \n",
189 | " 2007-02-01 | \n",
190 | " 0.007219 | \n",
191 | " -0.009769 | \n",
192 | "
\n",
193 | " \n",
194 | " 2007-02-02 | \n",
195 | " 0.000000 | \n",
196 | " -0.012181 | \n",
197 | "
\n",
198 | " \n",
199 | " 2007-02-05 | \n",
200 | " -0.002912 | \n",
201 | " -0.019399 | \n",
202 | "
\n",
203 | " \n",
204 | " 2007-02-06 | \n",
205 | " -0.008633 | \n",
206 | " -0.003383 | \n",
207 | "
\n",
208 | " \n",
209 | " 2007-02-07 | \n",
210 | " -0.001705 | \n",
211 | " -0.004755 | \n",
212 | "
\n",
213 | " \n",
214 | " 2007-02-08 | \n",
215 | " 0.001705 | \n",
216 | " -0.003752 | \n",
217 | "
\n",
218 | " \n",
219 | " 2007-02-09 | \n",
220 | " -0.002480 | \n",
221 | " -0.009615 | \n",
222 | "
\n",
223 | " \n",
224 | " 2007-02-12 | \n",
225 | " -0.004199 | \n",
226 | " -0.001381 | \n",
227 | "
\n",
228 | " \n",
229 | " 2007-02-13 | \n",
230 | " 0.008536 | \n",
231 | " 0.005857 | \n",
232 | "
\n",
233 | " \n",
234 | " 2007-02-14 | \n",
235 | " 0.002624 | \n",
236 | " 0.013354 | \n",
237 | "
\n",
238 | " \n",
239 | " ... | \n",
240 | " ... | \n",
241 | " ... | \n",
242 | "
\n",
243 | " \n",
244 | " 2018-01-18 | \n",
245 | " -0.011247 | \n",
246 | " -0.000444 | \n",
247 | "
\n",
248 | " \n",
249 | " 2018-01-19 | \n",
250 | " 0.009821 | \n",
251 | " -0.001110 | \n",
252 | "
\n",
253 | " \n",
254 | " 2018-01-22 | \n",
255 | " 0.008964 | \n",
256 | " 0.017731 | \n",
257 | "
\n",
258 | " \n",
259 | " 2018-01-23 | \n",
260 | " -0.031394 | \n",
261 | " 0.003161 | \n",
262 | "
\n",
263 | " \n",
264 | " 2018-01-24 | \n",
265 | " -0.008345 | \n",
266 | " -0.000871 | \n",
267 | "
\n",
268 | " \n",
269 | " 2018-01-25 | \n",
270 | " 0.000340 | \n",
271 | " 0.005539 | \n",
272 | "
\n",
273 | " \n",
274 | " 2018-01-26 | \n",
275 | " -0.006929 | \n",
276 | " 0.018564 | \n",
277 | "
\n",
278 | " \n",
279 | " 2018-01-29 | \n",
280 | " -0.009966 | \n",
281 | " -0.001490 | \n",
282 | "
\n",
283 | " \n",
284 | " 2018-01-30 | \n",
285 | " 0.001036 | \n",
286 | " -0.012643 | \n",
287 | "
\n",
288 | " \n",
289 | " 2018-01-31 | \n",
290 | " -0.007040 | \n",
291 | " 0.024182 | \n",
292 | "
\n",
293 | " \n",
294 | " 2018-02-01 | \n",
295 | " -0.005691 | \n",
296 | " -0.007925 | \n",
297 | "
\n",
298 | " \n",
299 | " 2018-02-02 | \n",
300 | " -0.018813 | \n",
301 | " -0.026663 | \n",
302 | "
\n",
303 | " \n",
304 | " 2018-02-05 | \n",
305 | " -0.038599 | \n",
306 | " -0.030196 | \n",
307 | "
\n",
308 | " \n",
309 | " 2018-02-06 | \n",
310 | " 0.016153 | \n",
311 | " 0.025281 | \n",
312 | "
\n",
313 | " \n",
314 | " 2018-02-07 | \n",
315 | " -0.006577 | \n",
316 | " -0.019012 | \n",
317 | "
\n",
318 | " \n",
319 | " 2018-02-08 | \n",
320 | " -0.019993 | \n",
321 | " -0.054111 | \n",
322 | "
\n",
323 | " \n",
324 | " 2018-02-09 | \n",
325 | " -0.003747 | \n",
326 | " 0.037116 | \n",
327 | "
\n",
328 | " \n",
329 | " 2018-02-12 | \n",
330 | " 0.017489 | \n",
331 | " 0.011623 | \n",
332 | "
\n",
333 | " \n",
334 | " 2018-02-13 | \n",
335 | " 0.002088 | \n",
336 | " 0.007823 | \n",
337 | "
\n",
338 | " \n",
339 | " 2018-02-14 | \n",
340 | " -0.010112 | \n",
341 | " 0.010850 | \n",
342 | "
\n",
343 | " \n",
344 | " 2018-02-15 | \n",
345 | " 0.021216 | \n",
346 | " 0.020167 | \n",
347 | "
\n",
348 | " \n",
349 | " 2018-02-16 | \n",
350 | " 0.002303 | \n",
351 | " -0.007148 | \n",
352 | "
\n",
353 | " \n",
354 | " 2018-02-20 | \n",
355 | " -0.015372 | \n",
356 | " 0.007796 | \n",
357 | "
\n",
358 | " \n",
359 | " 2018-02-21 | \n",
360 | " -0.013616 | \n",
361 | " -0.013355 | \n",
362 | "
\n",
363 | " \n",
364 | " 2018-02-22 | \n",
365 | " 0.007450 | \n",
366 | " 0.002729 | \n",
367 | "
\n",
368 | " \n",
369 | " 2018-02-23 | \n",
370 | " 0.002594 | \n",
371 | " 0.024974 | \n",
372 | "
\n",
373 | " \n",
374 | " 2018-02-26 | \n",
375 | " 0.007131 | \n",
376 | " 0.014355 | \n",
377 | "
\n",
378 | " \n",
379 | " 2018-02-27 | \n",
380 | " -0.013443 | \n",
381 | " -0.012868 | \n",
382 | "
\n",
383 | " \n",
384 | " 2018-02-28 | \n",
385 | " -0.025401 | \n",
386 | " -0.004575 | \n",
387 | "
\n",
388 | " \n",
389 | " 2018-03-01 | \n",
390 | " 0.002290 | \n",
391 | " -0.009860 | \n",
392 | "
\n",
393 | " \n",
394 | "
\n",
395 | "
2809 rows × 2 columns
\n",
396 | "
"
397 | ],
398 | "text/plain": [
399 | " PG MSFT\n",
400 | "Date \n",
401 | "2007-01-03 NaN NaN\n",
402 | "2007-01-04 -0.007621 -0.001676\n",
403 | "2007-01-05 -0.008624 -0.005719\n",
404 | "2007-01-08 0.002202 0.009737\n",
405 | "2007-01-09 -0.002517 0.001002\n",
406 | "2007-01-10 0.011901 -0.010064\n",
407 | "2007-01-11 0.006207 0.034463\n",
408 | "2007-01-12 0.005554 0.016476\n",
409 | "2007-01-16 0.000000 -0.001603\n",
410 | "2007-01-17 0.010255 -0.001927\n",
411 | "2007-01-18 0.002750 -0.003221\n",
412 | "2007-01-19 0.008357 0.003542\n",
413 | "2007-01-22 -0.005614 -0.012615\n",
414 | "2007-01-23 -0.001218 0.000651\n",
415 | "2007-01-24 -0.001982 0.011321\n",
416 | "2007-01-25 -0.009047 -0.020800\n",
417 | "2007-01-26 -0.000925 0.004914\n",
418 | "2007-01-29 0.000308 -0.002290\n",
419 | "2007-01-30 -0.004480 -0.001639\n",
420 | "2007-01-31 0.004326 0.012390\n",
421 | "2007-02-01 0.007219 -0.009769\n",
422 | "2007-02-02 0.000000 -0.012181\n",
423 | "2007-02-05 -0.002912 -0.019399\n",
424 | "2007-02-06 -0.008633 -0.003383\n",
425 | "2007-02-07 -0.001705 -0.004755\n",
426 | "2007-02-08 0.001705 -0.003752\n",
427 | "2007-02-09 -0.002480 -0.009615\n",
428 | "2007-02-12 -0.004199 -0.001381\n",
429 | "2007-02-13 0.008536 0.005857\n",
430 | "2007-02-14 0.002624 0.013354\n",
431 | "... ... ...\n",
432 | "2018-01-18 -0.011247 -0.000444\n",
433 | "2018-01-19 0.009821 -0.001110\n",
434 | "2018-01-22 0.008964 0.017731\n",
435 | "2018-01-23 -0.031394 0.003161\n",
436 | "2018-01-24 -0.008345 -0.000871\n",
437 | "2018-01-25 0.000340 0.005539\n",
438 | "2018-01-26 -0.006929 0.018564\n",
439 | "2018-01-29 -0.009966 -0.001490\n",
440 | "2018-01-30 0.001036 -0.012643\n",
441 | "2018-01-31 -0.007040 0.024182\n",
442 | "2018-02-01 -0.005691 -0.007925\n",
443 | "2018-02-02 -0.018813 -0.026663\n",
444 | "2018-02-05 -0.038599 -0.030196\n",
445 | "2018-02-06 0.016153 0.025281\n",
446 | "2018-02-07 -0.006577 -0.019012\n",
447 | "2018-02-08 -0.019993 -0.054111\n",
448 | "2018-02-09 -0.003747 0.037116\n",
449 | "2018-02-12 0.017489 0.011623\n",
450 | "2018-02-13 0.002088 0.007823\n",
451 | "2018-02-14 -0.010112 0.010850\n",
452 | "2018-02-15 0.021216 0.020167\n",
453 | "2018-02-16 0.002303 -0.007148\n",
454 | "2018-02-20 -0.015372 0.007796\n",
455 | "2018-02-21 -0.013616 -0.013355\n",
456 | "2018-02-22 0.007450 0.002729\n",
457 | "2018-02-23 0.002594 0.024974\n",
458 | "2018-02-26 0.007131 0.014355\n",
459 | "2018-02-27 -0.013443 -0.012868\n",
460 | "2018-02-28 -0.025401 -0.004575\n",
461 | "2018-03-01 0.002290 -0.009860\n",
462 | "\n",
463 | "[2809 rows x 2 columns]"
464 | ]
465 | },
466 | "execution_count": 17,
467 | "metadata": {},
468 | "output_type": "execute_result"
469 | }
470 | ],
471 | "source": [
472 | "sec_data = sec_data.iloc[::-1]\n",
473 | "sec_returns = np.log(sec_data / sec_data.shift(1))\n",
474 | "sec_returns"
475 | ]
476 | },
477 | {
478 | "cell_type": "code",
479 | "execution_count": 21,
480 | "metadata": {
481 | "scrolled": true
482 | },
483 | "outputs": [
484 | {
485 | "name": "stdout",
486 | "output_type": "stream",
487 | "text": [
488 | "P&G : 0.029870754208558788\n",
489 | "Microsoft : 0.07392432143310333\n"
490 | ]
491 | }
492 | ],
493 | "source": [
494 | "PG_var = sec_returns['PG'].var() * 250\n",
495 | "MSFT_var = sec_returns['MSFT'].var() * 250\n",
496 | "print('P&G : ' + str(PG_var) + '\\nMicrosoft : '+ str(MSFT_var))"
497 | ]
498 | },
499 | {
500 | "cell_type": "code",
501 | "execution_count": 23,
502 | "metadata": {},
503 | "outputs": [
504 | {
505 | "data": {
506 | "text/html": [
507 | "\n",
508 | "\n",
521 | "
\n",
522 | " \n",
523 | " \n",
524 | " | \n",
525 | " PG | \n",
526 | " MSFT | \n",
527 | "
\n",
528 | " \n",
529 | " \n",
530 | " \n",
531 | " PG | \n",
532 | " 0.029871 | \n",
533 | " 0.021632 | \n",
534 | "
\n",
535 | " \n",
536 | " MSFT | \n",
537 | " 0.021632 | \n",
538 | " 0.073924 | \n",
539 | "
\n",
540 | " \n",
541 | "
\n",
542 | "
"
543 | ],
544 | "text/plain": [
545 | " PG MSFT\n",
546 | "PG 0.029871 0.021632\n",
547 | "MSFT 0.021632 0.073924"
548 | ]
549 | },
550 | "execution_count": 23,
551 | "metadata": {},
552 | "output_type": "execute_result"
553 | }
554 | ],
555 | "source": [
556 | "cov_matrix = sec_returns.cov() *250\n",
557 | "cov_matrix"
558 | ]
559 | },
560 | {
561 | "cell_type": "code",
562 | "execution_count": 24,
563 | "metadata": {},
564 | "outputs": [
565 | {
566 | "data": {
567 | "text/html": [
568 | "\n",
569 | "\n",
582 | "
\n",
583 | " \n",
584 | " \n",
585 | " | \n",
586 | " PG | \n",
587 | " MSFT | \n",
588 | "
\n",
589 | " \n",
590 | " \n",
591 | " \n",
592 | " PG | \n",
593 | " 1.000000 | \n",
594 | " 0.460345 | \n",
595 | "
\n",
596 | " \n",
597 | " MSFT | \n",
598 | " 0.460345 | \n",
599 | " 1.000000 | \n",
600 | "
\n",
601 | " \n",
602 | "
\n",
603 | "
"
604 | ],
605 | "text/plain": [
606 | " PG MSFT\n",
607 | "PG 1.000000 0.460345\n",
608 | "MSFT 0.460345 1.000000"
609 | ]
610 | },
611 | "execution_count": 24,
612 | "metadata": {},
613 | "output_type": "execute_result"
614 | }
615 | ],
616 | "source": [
617 | "corr_matrix = sec_returns.corr()\n",
618 | "corr_matrix"
619 | ]
620 | }
621 | ],
622 | "metadata": {
623 | "kernelspec": {
624 | "display_name": "Python 3",
625 | "language": "python",
626 | "name": "python3"
627 | },
628 | "language_info": {
629 | "codemirror_mode": {
630 | "name": "ipython",
631 | "version": 3
632 | },
633 | "file_extension": ".py",
634 | "mimetype": "text/x-python",
635 | "name": "python",
636 | "nbconvert_exporter": "python",
637 | "pygments_lexer": "ipython3",
638 | "version": "3.6.4"
639 | }
640 | },
641 | "nbformat": 4,
642 | "nbformat_minor": 2
643 | }
644 |
--------------------------------------------------------------------------------