├── README.md
├── daily_399001_2.csv
├── daily_399001_2.xlsx
├── lecture01_金融数据图形展示.ipynb
├── lecture02_复杂金融数据图形.ipynb
├── lecture03_如何获取金融数据.ipynb
├── lecture04_金融数据的储存.ipynb
├── lecture05_金融数据的统计分析.ipynb
└── lecture06_金融数据的相关性和线性回归分析.ipynb
/README.md:
--------------------------------------------------------------------------------
1 | # Python_Financial_Data_Analysis_PKUJohnson
2 | 在学习B站上[python金融数据分析]('https://www.bilibili.com/video/av20727707')视频时写的一些笔记.
3 |
4 | ## 一点建议
5 |
6 | 我把课程简要地过了一遍,发现整个视频中授课者几乎就在推广自己的python库。
7 |
8 | 这让人有点难受,毕竟`Tushare`的库已经很好用了。确实没必要重复造轮子。
9 |
10 | 如果你有兴趣去看看课程或者我的笔记,看02/03/04/06就可以了。
11 |
12 |
13 |
14 | Breifly get througth these lectures but find out that the lecturer was basically promoted his own python-lib througthout the lectures.
15 | It make me a little uncomfortable because we already had **'Tushare'** and it is powerful and handy.
16 |
17 | So if your want to look at the videos or look through my notebooks, pick lecture 02/03/04/06 are enough.
--------------------------------------------------------------------------------
/daily_399001_2.csv:
--------------------------------------------------------------------------------
1 | date,open,high,close,low,volume,price_change,p_change,ma5,ma10,ma20,v_ma5,v_ma10,v_ma20
2 | 2018-02-28,10705.81,10875.71,10828.73,10656.36,186638944.0,21.2,0.2,10770.71,10531.359,10773.274,171891308.8,159470362.4,173845233.2
3 | 2018-02-27,10898.29,10915.36,10807.53,10791.95,195932768.0,-88.03,-0.81,10691.346,10473.183,10812.216,154580008.0,159342959.2,175050047.6
4 | 2018-02-26,10731.31,10920.21,10895.56,10670.17,200183504.0,232.77,2.18,10602.326,10430.191,10849.602,143826923.2,159437423.2,173962847.6
5 | 2018-02-23,10667.81,10700.11,10662.79,10578.79,140530848.0,3.85,0.04,10481.59,10424.26,10880.478,132789454.4,154289594.4,173007413.2
6 | 2018-02-22,10547.81,10667.8,10658.94,10526.98,136170480.0,227.03,2.18,10349.278,10450.497,10912.152,143397553.6,158699165.6,175152334.8
7 | 2018-02-14,10381.16,10433.09,10431.91,10319.15,100082440.0,69.48,0.67,10292.008,10471.037,10945.201,147049416.0,167563984.8,176124316.4
8 | 2018-02-13,10367.68,10486.81,10362.43,10350.17,142167344.0,70.55,0.69,10255.02,10543.814,10988.804,164105910.4,177035236.8,181795990.4
9 | 2018-02-12,10059.86,10325.68,10291.88,10059.86,144996160.0,290.65,2.91,10258.056,10635.449,11040.028,175047923.2,178615827.2,184330794.4
10 | 2018-02-09,10096.47,10172.78,10001.23,9868.83,193571344.0,-371.36,-3.58,10366.93,10741.533,11090.807,175789734.4,184082819.2,188302672.8
11 | 2018-02-08,10219.39,10411.2,10372.59,10219.21,154429792.0,125.62,1.23,10551.716,10897.192,11163.845,174000777.6,182286859.2,187925179.2
12 | 2018-02-07,10563.31,10599.54,10246.97,10173.66,185364912.0,-130.64,-1.26,10650.066,11015.189,11218.425,188078553.6,188220104.0,189698585.6
13 | 2018-02-06,10603.53,10685.16,10377.61,10377.61,196877408.0,-458.64,-4.23,10832.608,11151.249,11277.931,189964563.2,190757136.0,190247475.2
14 | 2018-02-05,10761.08,10873.24,10836.25,10741.85,148705216.0,-88.91,-0.81,11012.842,11269.013,11331.405,182183731.2,188488272.0,189607696.8
15 | 2018-02-02,10794.13,10933.15,10925.16,10663.54,184626560.0,60.82,0.56,11116.136,11336.696,11358.728,192375904.0,191725232.0,192352639.2
16 | 2018-02-01,11145.41,11171.36,10864.34,10836.35,224818672.0,-295.34,-2.65,11242.668,11373.807,11379.613,190572940.8,191605504.0,192518818.4
17 |
--------------------------------------------------------------------------------
/daily_399001_2.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybNero/Python-FinancialDataAnalysis-PKUJohnson/9ee5472a9eb01fe8aa89aa08412314ba3ce10dbd/daily_399001_2.xlsx
--------------------------------------------------------------------------------
/lecture01_金融数据图形展示.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# lecture01_金融数据图形展示\n",
8 | "B站链接:https://www.bilibili.com/watchlater/#/av20727707\n",
9 | "\n",
10 | "**几个主要的知识点:**\n",
11 | "- datatime时间格式的转换\n",
12 | "- 柱状图、折线图、饼图的常用作图设置"
13 | ]
14 | },
15 | {
16 | "cell_type": "markdown",
17 | "metadata": {},
18 | "source": [
19 | "## 画GDP的柱状图(1)\n",
20 | "1. 将数据保存到list数据结构中 `数据来源: 国家统计局网站`"
21 | ]
22 | },
23 | {
24 | "cell_type": "code",
25 | "execution_count": 1,
26 | "metadata": {},
27 | "outputs": [
28 | {
29 | "data": {
30 | "text/plain": [
31 | "[2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017]"
32 | ]
33 | },
34 | "execution_count": 1,
35 | "metadata": {},
36 | "output_type": "execute_result"
37 | }
38 | ],
39 | "source": [
40 | "list_year = []\n",
41 | "for x in range(2006,2018):\n",
42 | " list_year.append(x)\n",
43 | "list_year"
44 | ]
45 | },
46 | {
47 | "cell_type": "code",
48 | "execution_count": 2,
49 | "metadata": {},
50 | "outputs": [],
51 | "source": [
52 | "list_gdp = [219438.50, 270232.30, 319515.50, \n",
53 | " 349081.40, 413030.30, 489300.60, 540367.40, \n",
54 | " 595244.40, 643974.00, 689052.10, \n",
55 | " 744127.20, 827122.00]"
56 | ]
57 | },
58 | {
59 | "cell_type": "markdown",
60 | "metadata": {},
61 | "source": [
62 | "2. 使用matplotlib画图"
63 | ]
64 | },
65 | {
66 | "cell_type": "code",
67 | "execution_count": 3,
68 | "metadata": {},
69 | "outputs": [],
70 | "source": [
71 | "import matplotlib.pyplot as plt\n",
72 | "%matplotlib inline"
73 | ]
74 | },
75 | {
76 | "cell_type": "code",
77 | "execution_count": 4,
78 | "metadata": {},
79 | "outputs": [
80 | {
81 | "data": {
82 | "image/png": "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\n",
83 | "text/plain": [
84 | ""
85 | ]
86 | },
87 | "metadata": {
88 | "needs_background": "light"
89 | },
90 | "output_type": "display_data"
91 | }
92 | ],
93 | "source": [
94 | "# 画柱状图\n",
95 | "plt.bar(list_year, list_gdp)\n",
96 | "\n",
97 | "# 标识标题及坐标轴信息\n",
98 | "plt.title('gdp amount from 2006 to 2017')\n",
99 | "plt.xlabel('year')\n",
100 | "plt.ylabel('gdp amount')\n",
101 | "\n",
102 | "plt.show()"
103 | ]
104 | },
105 | {
106 | "cell_type": "markdown",
107 | "metadata": {},
108 | "source": [
109 | "## 画上证指数折线图"
110 | ]
111 | },
112 | {
113 | "cell_type": "code",
114 | "execution_count": 5,
115 | "metadata": {},
116 | "outputs": [],
117 | "source": [
118 | "import tushare as ts\n",
119 | "import matplotlib.pyplot as plt\n",
120 | "import datetime"
121 | ]
122 | },
123 | {
124 | "cell_type": "code",
125 | "execution_count": 50,
126 | "metadata": {
127 | "scrolled": false
128 | },
129 | "outputs": [
130 | {
131 | "data": {
132 | "text/html": [
133 | "\n",
134 | "\n",
147 | "
\n",
148 | " \n",
149 | " \n",
150 | " | \n",
151 | " open | \n",
152 | " high | \n",
153 | " close | \n",
154 | " low | \n",
155 | " volume | \n",
156 | " price_change | \n",
157 | " p_change | \n",
158 | " ma5 | \n",
159 | " ma10 | \n",
160 | " ma20 | \n",
161 | " v_ma5 | \n",
162 | " v_ma10 | \n",
163 | " v_ma20 | \n",
164 | "
\n",
165 | " \n",
166 | " date | \n",
167 | " | \n",
168 | " | \n",
169 | " | \n",
170 | " | \n",
171 | " | \n",
172 | " | \n",
173 | " | \n",
174 | " | \n",
175 | " | \n",
176 | " | \n",
177 | " | \n",
178 | " | \n",
179 | " | \n",
180 | "
\n",
181 | " \n",
182 | " \n",
183 | " \n",
184 | " 2017-10-09 | \n",
185 | " 3403.25 | \n",
186 | " 3410.17 | \n",
187 | " 3374.38 | \n",
188 | " 3366.97 | \n",
189 | " 1917360.62 | \n",
190 | " 25.44 | \n",
191 | " 0.76 | \n",
192 | " 3350.362 | \n",
193 | " 3352.654 | \n",
194 | " 3362.748 | \n",
195 | " 1523516.70 | \n",
196 | " 1691388.70 | \n",
197 | " 1937210.16 | \n",
198 | "
\n",
199 | " \n",
200 | " 2017-10-10 | \n",
201 | " 3373.34 | \n",
202 | " 3384.03 | \n",
203 | " 3382.99 | \n",
204 | " 3358.80 | \n",
205 | " 1794238.38 | \n",
206 | " 8.61 | \n",
207 | " 0.26 | \n",
208 | " 3358.244 | \n",
209 | " 3355.269 | \n",
210 | " 3362.682 | \n",
211 | " 1617107.18 | \n",
212 | " 1679682.85 | \n",
213 | " 1918645.61 | \n",
214 | "
\n",
215 | " \n",
216 | " 2017-10-11 | \n",
217 | " 3381.49 | \n",
218 | " 3395.78 | \n",
219 | " 3388.28 | \n",
220 | " 3379.16 | \n",
221 | " 1814767.00 | \n",
222 | " 5.29 | \n",
223 | " 0.16 | \n",
224 | " 3366.846 | \n",
225 | " 3357.497 | \n",
226 | " 3362.826 | \n",
227 | " 1693886.68 | \n",
228 | " 1668962.89 | \n",
229 | " 1894838.57 | \n",
230 | "
\n",
231 | " \n",
232 | " 2017-10-12 | \n",
233 | " 3385.53 | \n",
234 | " 3390.20 | \n",
235 | " 3386.10 | \n",
236 | " 3372.53 | \n",
237 | " 1618093.75 | \n",
238 | " -2.18 | \n",
239 | " -0.06 | \n",
240 | " 3376.138 | \n",
241 | " 3360.326 | \n",
242 | " 3363.856 | \n",
243 | " 1718616.83 | \n",
244 | " 1633323.56 | \n",
245 | " 1865183.92 | \n",
246 | "
\n",
247 | " \n",
248 | " 2017-10-13 | \n",
249 | " 3384.49 | \n",
250 | " 3395.75 | \n",
251 | " 3390.52 | \n",
252 | " 3383.24 | \n",
253 | " 1399547.62 | \n",
254 | " 4.42 | \n",
255 | " 0.13 | \n",
256 | " 3384.454 | \n",
257 | " 3364.125 | \n",
258 | " 3365.120 | \n",
259 | " 1708801.47 | \n",
260 | " 1594044.31 | \n",
261 | " 1835958.71 | \n",
262 | "
\n",
263 | " \n",
264 | "
\n",
265 | "
"
266 | ],
267 | "text/plain": [
268 | " open high close low volume price_change \\\n",
269 | "date \n",
270 | "2017-10-09 3403.25 3410.17 3374.38 3366.97 1917360.62 25.44 \n",
271 | "2017-10-10 3373.34 3384.03 3382.99 3358.80 1794238.38 8.61 \n",
272 | "2017-10-11 3381.49 3395.78 3388.28 3379.16 1814767.00 5.29 \n",
273 | "2017-10-12 3385.53 3390.20 3386.10 3372.53 1618093.75 -2.18 \n",
274 | "2017-10-13 3384.49 3395.75 3390.52 3383.24 1399547.62 4.42 \n",
275 | "\n",
276 | " p_change ma5 ma10 ma20 v_ma5 v_ma10 \\\n",
277 | "date \n",
278 | "2017-10-09 0.76 3350.362 3352.654 3362.748 1523516.70 1691388.70 \n",
279 | "2017-10-10 0.26 3358.244 3355.269 3362.682 1617107.18 1679682.85 \n",
280 | "2017-10-11 0.16 3366.846 3357.497 3362.826 1693886.68 1668962.89 \n",
281 | "2017-10-12 -0.06 3376.138 3360.326 3363.856 1718616.83 1633323.56 \n",
282 | "2017-10-13 0.13 3384.454 3364.125 3365.120 1708801.47 1594044.31 \n",
283 | "\n",
284 | " v_ma20 \n",
285 | "date \n",
286 | "2017-10-09 1937210.16 \n",
287 | "2017-10-10 1918645.61 \n",
288 | "2017-10-11 1894838.57 \n",
289 | "2017-10-12 1865183.92 \n",
290 | "2017-10-13 1835958.71 "
291 | ]
292 | },
293 | "execution_count": 50,
294 | "metadata": {},
295 | "output_type": "execute_result"
296 | }
297 | ],
298 | "source": [
299 | "# 使用tushare模块的get_hist_data()方法获取上证指数从2017年10月到2017年12月的历史行情数据:\n",
300 | "date = ts.get_hist_data('sh',start='2017-10-01',end='2017-12-01').sort_index()\n",
301 | "date.head()"
302 | ]
303 | },
304 | {
305 | "cell_type": "code",
306 | "execution_count": 48,
307 | "metadata": {
308 | "scrolled": true
309 | },
310 | "outputs": [
311 | {
312 | "data": {
313 | "text/plain": [
314 | "Index(['2017-10-09', '2017-10-10', '2017-10-11', '2017-10-12', '2017-10-13',\n",
315 | " '2017-10-16', '2017-10-17', '2017-10-18', '2017-10-19', '2017-10-20',\n",
316 | " '2017-10-23', '2017-10-24', '2017-10-25', '2017-10-26', '2017-10-27',\n",
317 | " '2017-10-30', '2017-10-31', '2017-11-01', '2017-11-02', '2017-11-03',\n",
318 | " '2017-11-06', '2017-11-07', '2017-11-08', '2017-11-09', '2017-11-10',\n",
319 | " '2017-11-13', '2017-11-14', '2017-11-15', '2017-11-16', '2017-11-17',\n",
320 | " '2017-11-20', '2017-11-21', '2017-11-22', '2017-11-23', '2017-11-24',\n",
321 | " '2017-11-27', '2017-11-28', '2017-11-29', '2017-11-30', '2017-12-01'],\n",
322 | " dtype='object', name='date')"
323 | ]
324 | },
325 | "execution_count": 48,
326 | "metadata": {},
327 | "output_type": "execute_result"
328 | }
329 | ],
330 | "source": [
331 | "date.index"
332 | ]
333 | },
334 | {
335 | "cell_type": "code",
336 | "execution_count": 44,
337 | "metadata": {
338 | "scrolled": true
339 | },
340 | "outputs": [],
341 | "source": [
342 | "# date['close']"
343 | ]
344 | },
345 | {
346 | "cell_type": "code",
347 | "execution_count": 49,
348 | "metadata": {
349 | "scrolled": true
350 | },
351 | "outputs": [],
352 | "source": [
353 | "# datetime数据格式的转换\n",
354 | "\n",
355 | "list_tradedate = date.index.tolist()\n",
356 | "# list_tradeday\n",
357 | "list_tradedate1 = []\n",
358 | "for date in list_tradedate:\n",
359 | " dt_tradedate = datetime.datetime.strptime(\n",
360 | " str(date), '%Y-%m-%d')\n",
361 | " list_tradedate1.append(dt_tradedate)\n"
362 | ]
363 | },
364 | {
365 | "cell_type": "code",
366 | "execution_count": 51,
367 | "metadata": {},
368 | "outputs": [],
369 | "source": [
370 | "list_closeprice = date['close'].tolist()\n",
371 | "# list_closeprice"
372 | ]
373 | },
374 | {
375 | "cell_type": "code",
376 | "execution_count": 62,
377 | "metadata": {},
378 | "outputs": [
379 | {
380 | "name": "stderr",
381 | "output_type": "stream",
382 | "text": [
383 | "No handles with labels found to put in legend.\n"
384 | ]
385 | },
386 | {
387 | "data": {
388 | "image/png": "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\n",
389 | "text/plain": [
390 | ""
391 | ]
392 | },
393 | "metadata": {
394 | "needs_background": "light"
395 | },
396 | "output_type": "display_data"
397 | }
398 | ],
399 | "source": [
400 | "# 先确认画框大小,再作图\n",
401 | "plt.figure(figsize=(12,8))\n",
402 | "# 画折线图\n",
403 | "plt.plot(list_tradedate1, list_closeprice)\n",
404 | "\n",
405 | "plt.title('Shanghai stock exchange index')\n",
406 | "plt.xlabel('trade date')\n",
407 | "plt.ylabel('close price')\n",
408 | "\n",
409 | "\n",
410 | "plt.show()"
411 | ]
412 | },
413 | {
414 | "cell_type": "markdown",
415 | "metadata": {},
416 | "source": [
417 | "## 画中国2017年GDP的构成饼图"
418 | ]
419 | },
420 | {
421 | "cell_type": "code",
422 | "execution_count": 8,
423 | "metadata": {},
424 | "outputs": [],
425 | "source": [
426 | "# 数据来源:新闻报道\n",
427 | "gdp_2017 = {\n",
428 | " 'primary industry' : 65468,\n",
429 | " 'secondary industry' : 334623,\n",
430 | " 'tertiary industry' : 427032\n",
431 | "}"
432 | ]
433 | },
434 | {
435 | "cell_type": "code",
436 | "execution_count": 9,
437 | "metadata": {},
438 | "outputs": [],
439 | "source": [
440 | "# 分别取出 gdp类别列表 和 gdp值列表\n",
441 | "labels = gdp_2017.keys()\n",
442 | "values = gdp_2017.values()"
443 | ]
444 | },
445 | {
446 | "cell_type": "code",
447 | "execution_count": 13,
448 | "metadata": {
449 | "scrolled": true
450 | },
451 | "outputs": [
452 | {
453 | "data": {
454 | "image/png": "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tj5dNv2mJs3lJ5Lf8chVzUEAOgKAY3b2Ho1K49V3e2/atCli7ty5rb777juPdiG2Wq3axx57LP7LL788Wdt1rm08WRezZs2KffXVV8/XdT1vxCMV1vjM+iCY9S8CSEMVBaXcXaof+0TB5lcN9nzVidwTyXmleRGyc3hSWVntpjgxGAxldSkoDTV//vxKzye6XC44nV5d16/DRYU1LrO+P4DdAGYD0Na0OBGavaud71OXiPorh8uhPZ13usvZgrPxlZ1rycvLU910000JiYmJSZ07d05evHhxJAD88MMPuhtuuCExOTm52+DBgzunp6drAWD//v3BKSkpXRITE5OSkpK6HThwINjlcuHRRx9t27lz5+QuXboklW9j06ZNEf37908cNWpUxw4dOiSPGzeuQ3n/rXXr1jXr0KFDct++fRPXrVvXvDzPd999p+vdu3fXbt26JfXu3bvr3r17gwFlBDF69OiOI0aMSBgyZEiXO++8s8OqVauurDdu3LgOq1evvqp55JEjR4I6d+6cXL7+rbfe2mnIkCGd27dv3/2xxx67coXiW2+91cJgMHS/4YYbEnfs2BFe/vjdd99tWLZs2ZXDiDqdrjcApKena/v165fYtWvXpM6dOyd/+eWX4dOnT4+z2+2qrl27Jo0bN67DkSNHgjp27Jg8adKkdsnJyUnPPfdc66lTp8aXb2vu3LnR06ZN89qrJPnwF2s8Zv3TAOagjr9nA1WHBhko87RVtI6veWnW2HJLclsWlRU1iwuPO6nT6q50AP73v//dLDY2tmzr1q3HASA7O1ttt9vpqaeeard58+bjbdq0cSxevDhy5syZcWvXrrVOmDChw8yZM8+npqbmFhUVkdPppJUrVza3WCyhhw4dOpCZmanp379/t1tvvbUAAA4dOhS6Z8+ekwaDoaxv375dv/rqq/AhQ4YUPvHEE4avvvrqSHJysn3s2LEdy/P07Nmz5Jdffjms1WrxySefRDz33HNtt2zZcgIAdu/eHb5v374DrVq1cm7evDl83rx5rSZNmpSbnZ2tTktLC1+/fv2p6n4GBw8e1O3du/dgaGioKyEhofvMmTMvaLVavPrqq23S0tIORUVFOVNSUhK7d+9e7TnBpUuXRt188822OXPmnHc4HMjPz1eNGjWqYPny5S0PHz58EFAKWkPb+8vERYV5nlkfAeXcyT31WZ0I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\n",
455 | "text/plain": [
456 | ""
457 | ]
458 | },
459 | "metadata": {},
460 | "output_type": "display_data"
461 | }
462 | ],
463 | "source": [
464 | "# plt.figure(figsize-(6,6))\n",
465 | "\n",
466 | "# 画饼图\n",
467 | "# startangle表示饼图的起始角度\n",
468 | "plt.pie(values,\n",
469 | " labels=labels,\n",
470 | " autopct='%.1f%%',\n",
471 | " startangle=90\n",
472 | " )\n",
473 | "# 设置样式\n",
474 | "plt.axis('equal')\n",
475 | "# 显示图例\n",
476 | "plt.legend()\n",
477 | "\n",
478 | "plt.show()"
479 | ]
480 | },
481 | {
482 | "cell_type": "code",
483 | "execution_count": null,
484 | "metadata": {},
485 | "outputs": [],
486 | "source": []
487 | },
488 | {
489 | "cell_type": "code",
490 | "execution_count": null,
491 | "metadata": {},
492 | "outputs": [],
493 | "source": []
494 | }
495 | ],
496 | "metadata": {
497 | "kernelspec": {
498 | "display_name": "Python 3",
499 | "language": "python",
500 | "name": "python3"
501 | },
502 | "language_info": {
503 | "codemirror_mode": {
504 | "name": "ipython",
505 | "version": 3
506 | },
507 | "file_extension": ".py",
508 | "mimetype": "text/x-python",
509 | "name": "python",
510 | "nbconvert_exporter": "python",
511 | "pygments_lexer": "ipython3",
512 | "version": "3.7.0"
513 | }
514 | },
515 | "nbformat": 4,
516 | "nbformat_minor": 2
517 | }
518 |
--------------------------------------------------------------------------------
/lecture02_复杂金融数据图形.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# lecture02_复杂金融数据图形\n",
8 | "b站链接:https://www.bilibili.com/video/av20727707/?p=4\n",
9 | "\n",
10 | "本节重点:\n",
11 | "- 画双坐标轴图形\n",
12 | "- 同时画多幅子图\n",
13 | "- 图片中显示中文"
14 | ]
15 | },
16 | {
17 | "cell_type": "markdown",
18 | "metadata": {},
19 | "source": [
20 | "## 画双坐标图形"
21 | ]
22 | },
23 | {
24 | "cell_type": "code",
25 | "execution_count": 1,
26 | "metadata": {},
27 | "outputs": [
28 | {
29 | "data": {
30 | "text/plain": [
31 | "[2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017]"
32 | ]
33 | },
34 | "execution_count": 1,
35 | "metadata": {},
36 | "output_type": "execute_result"
37 | }
38 | ],
39 | "source": [
40 | "list_year = []\n",
41 | "for year in range(2006,2018):\n",
42 | " list_year.append(year)\n",
43 | "list_year"
44 | ]
45 | },
46 | {
47 | "cell_type": "code",
48 | "execution_count": 2,
49 | "metadata": {},
50 | "outputs": [],
51 | "source": [
52 | "list_gdp = [219438.50, 270232.30, 319515.50, \n",
53 | " 349081.40, 413030.30, 489300.60, 540367.40, \n",
54 | " 595244.40, 643974.00, 689052.10, \n",
55 | " 744127.20, 827122.00]"
56 | ]
57 | },
58 | {
59 | "cell_type": "code",
60 | "execution_count": 3,
61 | "metadata": {},
62 | "outputs": [],
63 | "source": [
64 | "list_gdp_growth = [12.70, 14.20, 9.70, \n",
65 | " 9.40, 10.60, 9.50, 7.90, \n",
66 | " 7.80, 7.30, 6.90,6.70, 6.90]"
67 | ]
68 | },
69 | {
70 | "cell_type": "code",
71 | "execution_count": 4,
72 | "metadata": {},
73 | "outputs": [],
74 | "source": [
75 | "import matplotlib.pyplot as plt"
76 | ]
77 | },
78 | {
79 | "cell_type": "code",
80 | "execution_count": 12,
81 | "metadata": {
82 | "scrolled": false
83 | },
84 | "outputs": [],
85 | "source": [
86 | "# plt.figure(figsize=(8,6))\n",
87 | "\n",
88 | "# plt.bar(list_year, list_gdp)\n",
89 | "# plt.plot(list_year, list_gdp_growth, color='red')\n",
90 | "\n",
91 | "# plt.title('gdp amount / growth form 2006 to 2017')\n",
92 | "# plt.xlabel('year')\n",
93 | "# plt.ylabel('gdp amount / growth')\n",
94 | "\n",
95 | "# plt.show()\n",
96 | "\n",
97 | "# # 如图所示,折线图部分由于y轴的数值太大,几乎无法显示"
98 | ]
99 | },
100 | {
101 | "cell_type": "code",
102 | "execution_count": 11,
103 | "metadata": {
104 | "scrolled": false
105 | },
106 | "outputs": [
107 | {
108 | "data": {
109 | "image/png": "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1q1LdRgiIiJFwsw2uHuXPI4pR0hino3WZgNYamYN3H1J1I9mWZyqGfyxoCyENcUm7nrUO9OtJREREdlJtFTFE8C37n5XzK7RhIkPiR7fjFN9HHCMmdWMRjUdwx+LkxYqJTIiIiIST3fCivJHmNmMaDseGA4cbWZzgaOj15hZFzN7HMDdVxKWhZkabbdEZYVOw68j6enprltLIiKyuzCz9e6enuo4dpX6yORiy5YtZGRksHFj3GVrJIkqVqxI48aNKVeuXKpDEZFCpu/WolXav091RSYS74rMggULqFq1KrVr1ybBXtpSCNydFStWsGbNGpo3b57qcESkkOm7tejk9n1aWq7IqI9MLjZu3Kj/aClgZtSuXVt/rYmUUvpuLTq7w/epEpk86D9aauhzFynd9H+86JT2z1qJTCmwcOFC2rZtm+owCmTixIl88sknqQ5DRGQnxfG7dcaMGYwdO3b765tvvpkRI0akMKLUU2fffGg2dEyhnm/h8BMK9Xwl0cSJE6lSpQoHH3xwqkMRESkSmZmZpKUV7NfvjBkzmDZtGscff3whR1Vy6YpMMXfrrbeyzz77cPTRR9OvX7/tmfcXX3xB+/btOeigg3jwwQe3Hz9q1Cj69OlDr169aN26NX//+9/jnveSSy6hS5cutGnThmHDhm0vb9asGX/961856KCD6NKlC9OnT+fYY4+lZcuWPPLII0DoPHbNNdfQtm1b9t9/f1588UUgJCUnnnji9nMNHjyYUaNGbT/vsGHD6NSpE/vvvz9z5sxh4cKFPPLII9x999106NCBjz76qFA/OxGRnCTru/WJJ55g77335rDDDuPCCy9k8ODBAAwcOJAhQ4Zw+OGHc91117Fy5Ur69u1Lu3btOPDAA5k5cyYA+++/P6tWrcLdqV27Ns888wwA5557Lu+99x433XQTL774Ih06dNj+3Tt79mwOO+wwWrRowX333Ze0z6y40hWZYmzatGm8+uqrfPnll2RmZtKpUyc6d+4MwHnnncf9999Pz549ueaaa3ao9/nnn/PNN99QuXJlunbtygknnECXLjvOQn3bbbdRq1Yttm7dypFHHsnMmTNp164dAE2aNGHKlClcddVVDBw4kI8//piNGzfSpk0bLr74Yl577TVmzJjBV199xfLly+natSs9evTI8/3UqVOH6dOn89BDDzFixAgef/xxLr74YqpUqcJf/vKXQvrURKREufJKmDGjcM/ZoQPcc0+Ou5P13bp48WJuvfVWpk+fTtWqVTniiCNo37799v3ff/89//vf/yhbtiyXX345HTt25I033uD999+nf//+zJgxg+7du/Pxxx/TtGlTWrRowUcffUT//v359NNPefjhh7nllluYNm0aDzzwABBuLc2ZM4cPPviANWvW0Lp1ay655JJSO9Q6Hl2RKcYmT55Mnz59qFSpElWrVuWkk04CYPXq1axatYqePXsCIVOPdfTRR1O7dm0qVarEKaecwuTJk3c690svvUSnTp3o2LEjs2bNYvbs2dv39e7dGwh/GRxwwAFUrVqVunXrUrFiRVatWsXkyZPp168fZcuWpX79+vTs2ZOpU6fm+X5OOeUUADp37szChQsL9JmIiOyqZH23fv755/Ts2ZNatWpRrlw5TjvttB32n3baaZQtW3Z7DFnnP+KII1ixYgWrV6/m0EMPZdKkSUyaNIlLLrmEr7/+mp9//platWpRpUqVuO/nhBNOoEKFCtSpU4d69eqxdOnSXf+QShBdkSnGcprjx91z7YWefV/21wsWLGDEiBFMnTqVmjVrMnDgwB2G5lWoUAGAMmXKbH+e9TozMzPHuNLS0ti2bdv219mH+2Wdq2zZsmRmZuYYv4jsRnK5cpIsyfpuzWtetvT0P6ZsiXesmdGjRw8efPBBfvrpJ2677TZef/11XnnlFQ499NAczxv7Pb07fr/qikwxdsghh/DWW2+xceNG1q5dy5gxobNxjRo1qF69+va/Bp599tkd6o0fP56VK1eyYcMG3njjDbp3777D/t9//5309HSqV6/O0qVLeeedd/IVV48ePXjxxRfZunUrv/76K5MmTaJbt240bdqU2bNns2nTJlavXs2ECRPyPFfVqlVZs2ZNvtoXEdkVhfXdWm+vdszMWLV9q9K4Nf97/wMmf7OQ6QuX88xzL7J87SZmZqzit3Wb+XHFuu3H7tfpAO586AlmZqziiZffJr16TRb+vo3frCo//7KMmbPmsLZ8LVru35l/3X4HTfbtBOg7Mx5dkSnGunbtSu/evWnfvj1NmzalS5cuVK9eHYCnnnqK888/n8qVK3PsscfuUO+QQw7h3HPPZd68eZx11lk79Y9p3749HTt2pE2bNrRo0WKnRCcvJ598MlOmTKF9+/aYGXfccQd77LEH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\n",
110 | "text/plain": [
111 | ""
112 | ]
113 | },
114 | "metadata": {
115 | "needs_background": "light"
116 | },
117 | "output_type": "display_data"
118 | }
119 | ],
120 | "source": [
121 | "fig = plt.figure(figsize=(8,6))\n",
122 | "\n",
123 | "# 先画柱状图\n",
124 | "ax1 = fig.add_subplot(1,1,1)\n",
125 | "ax1.bar(list_year, list_gdp, label='gdp amount')\n",
126 | "ax1.legend(loc='upper left')\n",
127 | "ax1.set_xlabel('year')\n",
128 | "ax1.set_ylabel('gdp amount')\n",
129 | "\n",
130 | "# 再画折线图\n",
131 | "ax2 = ax1.twinx()\n",
132 | "ax2.plot(list_year, list_gdp_growth, color='red', label='gdp growth')\n",
133 | "ax2.legend(loc='upper right')\n",
134 | "ax2.set_ylabel('gdp growth')\n",
135 | "ax2.set_ylim(0, 20)\n",
136 | "\n",
137 | "plt.title('gdp amount / growth form 2006 to 2017')\n",
138 | "\n",
139 | "plt.show()"
140 | ]
141 | },
142 | {
143 | "cell_type": "markdown",
144 | "metadata": {},
145 | "source": [
146 | "## 同时画多幅子图\n",
147 | "同理,可以画121,122的图,子图格式跟matlab一样"
148 | ]
149 | },
150 | {
151 | "cell_type": "code",
152 | "execution_count": 13,
153 | "metadata": {},
154 | "outputs": [
155 | {
156 | "data": {
157 | "image/png": "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PmD+/PnceuutXH/99XTv3p2XXnoprW0nIiJ1V8aGqNz9CzO7DlgArAOeBWYBK919Y8xWDLSPn9sDn8djN5rZKqBNTH81oejEYz4vld43HlPWObZiZmOBsQA777xz1S40g4qKinjooYd488032bhxIz179qRXr14AnHLKKdx4440MHjyY888/f6vjXn/9dd59912aNWtG7969GT58OIWFhVvlueqqq2jdujWbNm3iwAMP5O2332bfffcFoGPHjsycOZNf//rXjBkzhpdffpn169ez1157cfrpp/Pwww8zZ84c3nrrLZYtW0bv3r0ZNGhQhdfTtm1bZs+ezc0338x1113H7bffzumnn07z5s35zW9+k6ZWExERyewQVStC70tnYCdgG8JwUmleckgZ+9KV/sNE9/HuXujuhdttl5aHl6bVjBkzGDlyJE2bNqWgoIAjjjgCgFWrVrFy5UoGDx4MwEknnbTVcUOHDqVNmzY0bdqUUaNGMWPGjB+U/cADD9CzZ0969OjBe++9x9y5c7fsGzFiBAD77LMPffv2paCggO22244mTZqwcuVKZsyYwfHHH0/9+vVp164dgwcP5o033qjwekaNGgVAr169mD9/fpXaREREJBWZnGR8EPCZuy8FMLOHgR8DLc2sQexh6QAsjPmLgY5AcRzSagGsSEgvkXhMsvRl5ZyjVnFPGpfh7uUuoy69r/T2Z599xnXXXccbb7xBq1atGDNmzFb3nGncuDEA9erV2/K5ZHvjxo1l1qtBgwZs3rx5y3bp+9iUlFW/fn02btyIiIhIpmRyDs4CoJ+ZNYvzYg4E5gIvAEfHPKOBx+LnKXGbuP95D9+kU4DjzKxxXB21K/A68Aawq5l1NrNGhInIU+IxZZ2jVhk4cCCPP/4469evZ82aNTz5ZFjF1bJlS1q0aLGlZ+buu+/e6ripU6eyYsUK1q1bx6OPPsqAAQO22v/111+zzTbb0KJFCxYvXszTTz9dqXoNGjSI+++/n02bNrF06VKmT59Onz592GWXXZg7dy7ffvstq1at4rnnnquwrIKCAlavXl2p84uIiFQkk3NwXjOzBwnLtDcCbwLjgSeB+8zsyph2RzzkDuAuM5tH6Lk5Lpbznpk9QAiONgJnuvsmADMbBzxDWKE1wd3fi2VdUMY5qqWmb2zUu3dvRowYQbdu3dhll10oLCykRYsW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MzPatGmT8d4yBTh1zapVcNNN0L07dO0Kp54agh0RkTpOwU3NqYm2VoBTF7jDa6+FYGbHHWHcOGjQAE44ASZPhj/9Kds1FBERSSsFOPls1Sq4+ebQW9OvHzzwAPzsZ1BUBLNmwT//CT/9KVx4IUzRSnoRkVw3f/589t5772xXYytz5szhqae+X9dz6aWXct11ZT4yssYowMk37vD663DaabDTTnDmmVC/Ptx6KyxaBOPHQ69eIa8ZTJwYtk84Ad5+O7t1FxGRrNi4cWOVjy0d4OQKBTj5YtUquOUW6NED+vaF+++HE08MvTWzZ8MvfwnJZuQ3bQqPPQYtWsARR8CSJTVfdxER4YorrmD33Xdn6NChnHLKKVt6QWbNmkW3bt3o378/N91005b8kyZNYuTIkQwbNoyuXbty2WWXJS33jjvuYLfddmPIkCH84he/YNy4cQCMGTOGc889l/33358LLriAFStWcOSRR7LvvvvSr18/3o5/9O6zzz6sXLkSd6dNmzZMnjwZgJNOOolnn32WP/zhD9x///10796d+++/H4C5c+cyZMgQunTpwg033JCxNiuPlonXZu7wxhtw221w332wdm0IcG69FY4/HrbdNrVydtopBDmDBsGoUfDcc9C4cWbrLiKSq371K5gzJ71ldu8Of/1rmbuLiop46KGHePPNN9m4cSPdu3enX79+AJxyyinceOONDB48mPPPP3+r415//XXeffddmjVrRu/evRk+fDiFhYVb9i9cuJArrriC2bNnU1BQwAEHHEC3bt227P/oo4/4z3/+Q/369TnrrLPo0aMHjz76KM8//zwnn3wyc+bMYcCAAbz88svssssudOnShZdeeomTTz6ZV199lVtuuYXLL7+coqIi/v73vwNhiOqDDz7ghRdeYPXq1XTt2pUzzjgjo/e8SUY9OLXR11+H3pqePb/vrTnhhBDszJoVemtSDW5KFBbCpEnw8svheK2sEhGpMTNmzGDkyJE0bdqUgoICDj30UABWrVrFypUrGTx4MBB6TRINHTqUNm3a0LRpU0aNGsWMGTO22v/6668zePBgWrduTcOGDTnmmGO22n/MMcdQv379LXUoKf+AAw5g+fLlrFq1iv3224/p06czffp0zjjjDN555x2++OILWrduTfPmzZNez/Dhw2ncuDFt27Zl++23Z/HixdVvpEpSD05t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\n",
158 | "text/plain": [
159 | ""
160 | ]
161 | },
162 | "metadata": {
163 | "needs_background": "light"
164 | },
165 | "output_type": "display_data"
166 | }
167 | ],
168 | "source": [
169 | "fig = plt.figure(figsize=(8,6))\n",
170 | "\n",
171 | "# 先画柱状图\n",
172 | "ax1 = fig.add_subplot(2,1,1)\n",
173 | "ax1.bar(list_year, list_gdp, label='gdp amount')\n",
174 | "ax1.legend(loc='upper left')\n",
175 | "ax1.set_xlabel('year')\n",
176 | "ax1.set_ylabel('gdp amount')\n",
177 | "ax1.set_title('gdp amount form 2006 to 2017')\n",
178 | "\n",
179 | "# 再画折线图\n",
180 | "ax2 = fig.add_subplot(2,1,2)\n",
181 | "ax2.plot(list_year, list_gdp_growth, color='red', label='gdp growth')\n",
182 | "ax2.legend(loc='upper right')\n",
183 | "ax2.set_ylabel('gdp growth')\n",
184 | "ax2.set_ylim(0, 15)\n",
185 | "ax2.set_title('gdp growth form 2006 to 2017')\n",
186 | "ax2.grid(True)\n",
187 | "\n",
188 | "# 调整子图之间的间距\n",
189 | "plt.tight_layout()\n",
190 | "\n",
191 | "plt.title('gdp amount / growth form 2006 to 2017')\n",
192 | "\n",
193 | "plt.show()"
194 | ]
195 | },
196 | {
197 | "cell_type": "markdown",
198 | "metadata": {},
199 | "source": [
200 | "## 坐标使用中文"
201 | ]
202 | },
203 | {
204 | "cell_type": "code",
205 | "execution_count": 16,
206 | "metadata": {},
207 | "outputs": [],
208 | "source": [
209 | "from matplotlib.pylab import mpl\n",
210 | "# 指定默认字体\n",
211 | "mpl.rcParams['font.sans-serif'] = ['FangSong']\n",
212 | "\n",
213 | "# 解决保存图像是负号‘-’显示为方块的问题\n",
214 | "mpl.rcParams['axes.unicode_minus'] = False"
215 | ]
216 | },
217 | {
218 | "cell_type": "code",
219 | "execution_count": 17,
220 | "metadata": {},
221 | "outputs": [
222 | {
223 | "data": {
224 | "image/png": "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BAbHl3sB7wEvJJTluvt84FWgf0xyCtx9E/C1mXUwszbAjFhWYGaNgX7A66k6DhEREck8qbwOzhnAgWZ2LGEOzmlArpn9Epjk7hvM7CngajPrATwY3zcWGAMcDdwSy64jrJ7aCNwQy26I9RoDV6bwOERERCTDpHKS8a3ArSWKryhRpwj4bYmyVcBFJcrms2V5eHHZdGB6TcUrIiIi2UO3ahAREZGsowRHREREso4SHBEREck6SnBEREQk6yjBERERkayjBEdERESyjhIcERERyTpKcERERCTrKMERERGRrKMER0RERLKOEhwRERHJOkpwREREJOsowREREZGsowRHREREso4SHBEREck6SnBEREQk6yjBERERkayjBEdERESyjhIcERERyTpKcERERCTrKMERERGRrKMER0RERLKOEhwRERHJOkpwREREJOsowREREZGsowRHREREso4SHBEREck6SnBEREQk6zRKdwDVZWZjgGVAgbuPT3M4IiIiUgdkdA+OmfUH1rn7zcAQM2uS7phEREQk/TI6wQGGAW/Fx98Ag9IYi4iIiNQR5u7pjqHKzOx24BZ3/9LMRgPL3P2xhNdHA6Pj0z7Al2kIsyLtge/THUQGUXtVjtqrctRelaP2qhy1V/J2BH7v7mOruoGMn4OTwICtsrXYMFVunNpgZlPcfWC648gUaq/KUXtVjtqrctRelaP2qhwzm0I1zuGZPkT1HSEjBmgLLEhjLCIiIlJHZHqC8wIwOD7uBbyXxlhERESkjsjoBMfdPwByzeyXwCR335DumKqgTg+h1UFqr8pRe1WO2qty1F6Vo/aqnGq1V0ZPMhYREREpTUb34IiIiIiURgmOiIiIZJ1sWiZep5hZQ+B/CbeR6Ofufy55W4lY51pgMTDd3V80swbAecByYEd3vyo9R1C7qtFeewD9gB+AQnefkJ4jqF3JtFdC3ZPd/ZGE923VhrUefBpUo71aACcDK4FO8arpWa+q7ZVQdiSwg7vfV3tRp0912svMzgRWAwPc/Te1G3l6VOP3sRtwGLAUyHX3h8rbj3pwUudwYLm7PwmsMbMD2fa2EscBU9z9euDU+L6RwH/jBzw/HYGnSVXba7i7j48XeOyflsjTo8L2iv/+Fzgy4X2ltWF9UNX2+h/gw/jzlW9mrWo/9LSoanthZgYcX/shp1WV2svMBgML4gn8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\n",
225 | "text/plain": [
226 | ""
227 | ]
228 | },
229 | "metadata": {
230 | "needs_background": "light"
231 | },
232 | "output_type": "display_data"
233 | }
234 | ],
235 | "source": [
236 | "fig = plt.figure(figsize=(8,6))\n",
237 | "\n",
238 | "# 先画柱状图\n",
239 | "ax1 = fig.add_subplot(2,1,1)\n",
240 | "ax1.bar(list_year, list_gdp, label='gdp总量')\n",
241 | "ax1.legend(loc='upper left')\n",
242 | "ax1.set_xlabel('年份')\n",
243 | "ax1.set_ylabel('gdp总量')\n",
244 | "ax1.set_title('gdp amount form 2006 to 2017')\n",
245 | "\n",
246 | "# 再画折线图\n",
247 | "ax2 = fig.add_subplot(2,1,2)\n",
248 | "ax2.plot(list_year, list_gdp_growth, color='red', label='gdp增长率')\n",
249 | "ax2.legend(loc='upper right')\n",
250 | "ax2.set_ylabel('gdp增长率')\n",
251 | "ax2.set_ylim(0, 15)\n",
252 | "ax2.set_title('gdp growth form 2006 to 2017')\n",
253 | "ax2.grid(True)\n",
254 | "\n",
255 | "# 调整子图之间的间距\n",
256 | "plt.tight_layout()\n",
257 | "\n",
258 | "plt.title('2006 至 2017 中国GDP 总量 / 增长率 示意图')\n",
259 | "\n",
260 | "plt.show()"
261 | ]
262 | }
263 | ],
264 | "metadata": {
265 | "kernelspec": {
266 | "display_name": "Python 3",
267 | "language": "python",
268 | "name": "python3"
269 | },
270 | "language_info": {
271 | "codemirror_mode": {
272 | "name": "ipython",
273 | "version": 3
274 | },
275 | "file_extension": ".py",
276 | "mimetype": "text/x-python",
277 | "name": "python",
278 | "nbconvert_exporter": "python",
279 | "pygments_lexer": "ipython3",
280 | "version": "3.7.0"
281 | }
282 | },
283 | "nbformat": 4,
284 | "nbformat_minor": 2
285 | }
286 |
--------------------------------------------------------------------------------
/lecture03_如何获取金融数据.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# lecture03_如何获取金融数据\n",
8 | "b站链接:https://www.bilibili.com/video/av20727707/?p=5\n",
9 | "\n",
10 | "本节重点:\n",
11 | "- 利用tushare获取金融数据: www.tushare.org\n",
12 | "- 通过quantos获取金融数据\n",
13 | "- 通过爬虫获取金融数据\n",
14 | "- pandas DataFrame的相关知识"
15 | ]
16 | },
17 | {
18 | "cell_type": "markdown",
19 | "metadata": {},
20 | "source": [
21 | "## 通过tushare获取金融数据"
22 | ]
23 | },
24 | {
25 | "cell_type": "code",
26 | "execution_count": 2,
27 | "metadata": {},
28 | "outputs": [],
29 | "source": [
30 | "import tushare as ts\n",
31 | "\n",
32 | "df = ts.get_hist_data(\n",
33 | " '600030', \n",
34 | " start='2018-01-01', \n",
35 | " end='2018-01-31'\n",
36 | ")"
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "execution_count": 3,
42 | "metadata": {
43 | "collapsed": true
44 | },
45 | "outputs": [
46 | {
47 | "data": {
48 | "text/html": [
49 | "\n",
50 | "\n",
63 | "
\n",
64 | " \n",
65 | " \n",
66 | " | \n",
67 | " open | \n",
68 | " high | \n",
69 | " close | \n",
70 | " low | \n",
71 | " volume | \n",
72 | " price_change | \n",
73 | " p_change | \n",
74 | " ma5 | \n",
75 | " ma10 | \n",
76 | " ma20 | \n",
77 | " v_ma5 | \n",
78 | " v_ma10 | \n",
79 | " v_ma20 | \n",
80 | "
\n",
81 | " \n",
82 | " date | \n",
83 | " | \n",
84 | " | \n",
85 | " | \n",
86 | " | \n",
87 | " | \n",
88 | " | \n",
89 | " | \n",
90 | " | \n",
91 | " | \n",
92 | " | \n",
93 | " | \n",
94 | " | \n",
95 | " | \n",
96 | "
\n",
97 | " \n",
98 | " \n",
99 | " \n",
100 | " 2018-01-31 | \n",
101 | " 21.45 | \n",
102 | " 21.70 | \n",
103 | " 21.31 | \n",
104 | " 20.94 | \n",
105 | " 2472534.0 | \n",
106 | " -0.32 | \n",
107 | " -1.48 | \n",
108 | " 21.954 | \n",
109 | " 21.791 | \n",
110 | " 20.668 | \n",
111 | " 2652434.90 | \n",
112 | " 3008657.20 | \n",
113 | " 2506280.92 | \n",
114 | "
\n",
115 | " \n",
116 | " 2018-01-30 | \n",
117 | " 21.91 | \n",
118 | " 22.34 | \n",
119 | " 21.65 | \n",
120 | " 21.53 | \n",
121 | " 2451540.0 | \n",
122 | " -0.46 | \n",
123 | " -2.08 | \n",
124 | " 22.278 | \n",
125 | " 21.755 | \n",
126 | " 20.534 | \n",
127 | " 3172105.30 | \n",
128 | " 3259291.50 | \n",
129 | " 2458637.67 | \n",
130 | "
\n",
131 | " \n",
132 | " 2018-01-29 | \n",
133 | " 22.47 | \n",
134 | " 22.73 | \n",
135 | " 22.12 | \n",
136 | " 22.01 | \n",
137 | " 2644808.5 | \n",
138 | " -0.22 | \n",
139 | " -0.98 | \n",
140 | " 22.204 | \n",
141 | " 21.616 | \n",
142 | " 20.374 | \n",
143 | " 3353126.30 | \n",
144 | " 3247210.83 | \n",
145 | " 2405724.90 | \n",
146 | "
\n",
147 | " \n",
148 | " 2018-01-26 | \n",
149 | " 22.33 | \n",
150 | " 22.74 | \n",
151 | " 22.35 | \n",
152 | " 22.21 | \n",
153 | " 2519975.0 | \n",
154 | " 0.02 | \n",
155 | " 0.09 | \n",
156 | " 22.024 | \n",
157 | " 21.348 | \n",
158 | " 20.172 | \n",
159 | " 3186164.10 | \n",
160 | " 3206865.40 | \n",
161 | " 2305660.55 | \n",
162 | "
\n",
163 | " \n",
164 | " 2018-01-25 | \n",
165 | " 22.50 | \n",
166 | " 22.85 | \n",
167 | " 22.34 | \n",
168 | " 22.24 | \n",
169 | " 3173317.0 | \n",
170 | " -0.58 | \n",
171 | " -2.53 | \n",
172 | " 21.812 | \n",
173 | " 21.046 | \n",
174 | " 19.961 | \n",
175 | " 3408204.45 | \n",
176 | " 3059471.71 | \n",
177 | " 2230712.51 | \n",
178 | "
\n",
179 | " \n",
180 | "
\n",
181 | "
"
182 | ],
183 | "text/plain": [
184 | " open high close low volume price_change p_change \\\n",
185 | "date \n",
186 | "2018-01-31 21.45 21.70 21.31 20.94 2472534.0 -0.32 -1.48 \n",
187 | "2018-01-30 21.91 22.34 21.65 21.53 2451540.0 -0.46 -2.08 \n",
188 | "2018-01-29 22.47 22.73 22.12 22.01 2644808.5 -0.22 -0.98 \n",
189 | "2018-01-26 22.33 22.74 22.35 22.21 2519975.0 0.02 0.09 \n",
190 | "2018-01-25 22.50 22.85 22.34 22.24 3173317.0 -0.58 -2.53 \n",
191 | "\n",
192 | " ma5 ma10 ma20 v_ma5 v_ma10 v_ma20 \n",
193 | "date \n",
194 | "2018-01-31 21.954 21.791 20.668 2652434.90 3008657.20 2506280.92 \n",
195 | "2018-01-30 22.278 21.755 20.534 3172105.30 3259291.50 2458637.67 \n",
196 | "2018-01-29 22.204 21.616 20.374 3353126.30 3247210.83 2405724.90 \n",
197 | "2018-01-26 22.024 21.348 20.172 3186164.10 3206865.40 2305660.55 \n",
198 | "2018-01-25 21.812 21.046 19.961 3408204.45 3059471.71 2230712.51 "
199 | ]
200 | },
201 | "execution_count": 3,
202 | "metadata": {},
203 | "output_type": "execute_result"
204 | }
205 | ],
206 | "source": [
207 | "df.head()"
208 | ]
209 | },
210 | {
211 | "cell_type": "markdown",
212 | "metadata": {},
213 | "source": [
214 | "## 通过quantos获取金融数据\n",
215 | "- 基础数据,主要是一些基础信息,包括证券信息,行业代码,指数信息,交易日历等。\n",
216 | "- 市场信息,即由市场行情产生的数据,包括实时行情、实时分钟线、历史tick、历史日线、历史分钟线等。\n",
217 | "- 参考数据,包括股票的复权因子、分红、停复牌、行业分类,指数的成份股,公募基金的净值等。\n",
218 | "\n",
219 | "\n",
220 | "- `通过pip安装jasq`"
221 | ]
222 | },
223 | {
224 | "cell_type": "code",
225 | "execution_count": null,
226 | "metadata": {},
227 | "outputs": [],
228 | "source": [
229 | "# 导入DataApi\n",
230 | "from jasq.data import DataApi\n",
231 | "\n",
232 | "# 初始化api\n",
233 | "api = DataApi('tcp://data.quantos.org:8910')\n",
234 | "\n",
235 | "# 获取用户名和密码\n",
236 | "import os\n",
237 | "user = os.environ.get('QUANTOS_USER')\n",
238 | "token = os.environ.get('QUANTOS_TOKEN')\n",
239 | "\n",
240 | "# 登录\n",
241 | "info, msg = api.login(user, token)\n",
242 | "print(info, msg)"
243 | ]
244 | },
245 | {
246 | "cell_type": "code",
247 | "execution_count": null,
248 | "metadata": {},
249 | "outputs": [],
250 | "source": [
251 | "# 查询日收盘价信息\n",
252 | "df, msg = api.daily(\n",
253 | " symbol='399001.SZ',\n",
254 | " start_date='2018-02-01',\n",
255 | " end_date='2018-02-28',\n",
256 | " fields=open,high,low,close\n",
257 | ")"
258 | ]
259 | },
260 | {
261 | "cell_type": "code",
262 | "execution_count": null,
263 | "metadata": {},
264 | "outputs": [],
265 | "source": []
266 | },
267 | {
268 | "cell_type": "markdown",
269 | "metadata": {},
270 | "source": [
271 | "## 通过爬虫获取金融数据\n",
272 | "- 请求参数\n",
273 | "- 请求方法:post/get\n",
274 | "- 返回结果和字符集"
275 | ]
276 | },
277 | {
278 | "cell_type": "code",
279 | "execution_count": 4,
280 | "metadata": {},
281 | "outputs": [],
282 | "source": [
283 | "import requests"
284 | ]
285 | },
286 | {
287 | "cell_type": "code",
288 | "execution_count": 5,
289 | "metadata": {},
290 | "outputs": [],
291 | "source": [
292 | "# 准备好请求的数据\n",
293 | "URL = 'http://www.chinamoney.com.cn/dqs/rest/dqs-u-fx/RefRateHis'\n",
294 | "data = {'lang' : 'CN',\n",
295 | " 'startDateTool' : '13 Mar 2018',\n",
296 | " 'endDateTool' : '13 Mar 2018',\n",
297 | " 'currencyCide' : 'USD.CNY'\n",
298 | " }"
299 | ]
300 | },
301 | {
302 | "cell_type": "code",
303 | "execution_count": 8,
304 | "metadata": {},
305 | "outputs": [
306 | {
307 | "data": {
308 | "text/plain": [
309 | "'{\"head\":{\"version\":\"2.0\",\"provider\":\"CWAP\",\"req_code\":\"\",\"rep_code\":\"200\",\"rep_message\":\"\",\"ts\":1545298988001,\"producer\":\"\",\"tstext\":\"2018-12-20 17:43:08\"},\"data\":{\"currencyList\":[{\"currValue\":\"ALL\",\"currValueDesc\":\"全部\"},{\"currValue\":\"USD.CNY\",\"currValueDesc\":\"USD/CNY\"},{\"currValue\":\"EUR.CNY\",\"currValueDesc\":\"EUR/CNY\"},{\"currValue\":\"JPY.CNY\",\"currValueDesc\":\"100JPY/CNY\"},{\"currValue\":\"GBP.CNY\",\"currValueDesc\":\"GBP/CNY\"}],\"message\":\"\",\"flag\":\"0\",\"endDateTool\":\"13 Mar 2018\",\"startDateTool\":\"13 Mar'"
310 | ]
311 | },
312 | "execution_count": 8,
313 | "metadata": {},
314 | "output_type": "execute_result"
315 | }
316 | ],
317 | "source": [
318 | "# request header\n",
319 | "USER_AGENT = \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36\"\n",
320 | "\n",
321 | "# simulate http request\n",
322 | "session = requests.Session()\n",
323 | "session.headers['User-Agent'] = USER_AGENT\n",
324 | "res = session.get(URL, params=data)\n",
325 | "if res.status_code != 200:\n",
326 | " print('query_error, status_code = ', res.status_code)\n",
327 | " \n",
328 | "# display http response\n",
329 | "rsp = res.text\n",
330 | "rsp[:500]"
331 | ]
332 | },
333 | {
334 | "cell_type": "code",
335 | "execution_count": 7,
336 | "metadata": {},
337 | "outputs": [
338 | {
339 | "name": "stdout",
340 | "output_type": "stream",
341 | "text": [
342 | "6.3244\n",
343 | "7.8006\n",
344 | "5.9425\n",
345 | "8.7908\n"
346 | ]
347 | }
348 | ],
349 | "source": [
350 | "import json\n",
351 | "\n",
352 | "# 载入数据并记录\n",
353 | "rsp_json = json.loads(rsp)\n",
354 | "raw_record = rsp_json['records']\n",
355 | "\n",
356 | "for record in raw_record:\n",
357 | " print(record['rateOf11hour'])"
358 | ]
359 | },
360 | {
361 | "cell_type": "code",
362 | "execution_count": 1,
363 | "metadata": {},
364 | "outputs": [
365 | {
366 | "name": "stderr",
367 | "output_type": "stream",
368 | "text": [
369 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:179: UserWarning: You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored.\n",
370 | " warnings.warn(\"You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored.\")\n"
371 | ]
372 | }
373 | ],
374 | "source": [
375 | "# 用bs4来解析html网页\n",
376 | "\n",
377 | "from bs4 import BeautifulSoup\n",
378 | "\n",
379 | "html_doc = \"\"\"\n",
380 | " The Dormouse's story\n",
381 | " \n",
382 | " Elsie,\n",
383 | " Lacie and\n",
384 | " Tillie;\n",
385 | "\"\"\"\n",
386 | "\n",
387 | "soup = BeautifulSoup(html_doc, 'html.parser', from_encoding='utf-8')"
388 | ]
389 | },
390 | {
391 | "cell_type": "code",
392 | "execution_count": 2,
393 | "metadata": {},
394 | "outputs": [
395 | {
396 | "name": "stdout",
397 | "output_type": "stream",
398 | "text": [
399 | "测试1:获取所有的链接\n",
400 | "a http://example.com/elsie Elsie\n",
401 | "a http://example.com/lacie Lacie\n",
402 | "a http://example.com/tillie Tillie\n"
403 | ]
404 | }
405 | ],
406 | "source": [
407 | "print('测试1:获取所有的链接')\n",
408 | "links = soup.find_all('a')\n",
409 | "for link in links:\n",
410 | " print(link.name, link['href'], link.get_text())"
411 | ]
412 | },
413 | {
414 | "cell_type": "code",
415 | "execution_count": 3,
416 | "metadata": {},
417 | "outputs": [
418 | {
419 | "name": "stdout",
420 | "output_type": "stream",
421 | "text": [
422 | "\n",
423 | "测试2:获取Lacie的链接\n",
424 | "a http://example.com/lacie Lacie\n"
425 | ]
426 | }
427 | ],
428 | "source": [
429 | "print('\\n测试2:获取Lacie的链接')\n",
430 | "link_node = soup.find('a', href='http://example.com/lacie')\n",
431 | "print(link_node.name, link_node['href'], link_node.get_text())"
432 | ]
433 | },
434 | {
435 | "cell_type": "code",
436 | "execution_count": null,
437 | "metadata": {},
438 | "outputs": [],
439 | "source": []
440 | },
441 | {
442 | "cell_type": "code",
443 | "execution_count": null,
444 | "metadata": {},
445 | "outputs": [],
446 | "source": []
447 | }
448 | ],
449 | "metadata": {
450 | "kernelspec": {
451 | "display_name": "Python 3",
452 | "language": "python",
453 | "name": "python3"
454 | },
455 | "language_info": {
456 | "codemirror_mode": {
457 | "name": "ipython",
458 | "version": 3
459 | },
460 | "file_extension": ".py",
461 | "mimetype": "text/x-python",
462 | "name": "python",
463 | "nbconvert_exporter": "python",
464 | "pygments_lexer": "ipython3",
465 | "version": "3.7.0"
466 | }
467 | },
468 | "nbformat": 4,
469 | "nbformat_minor": 2
470 | }
471 |
--------------------------------------------------------------------------------
/lecture04_金融数据的储存.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# lecture04_金融数据的储存\n",
8 | "b站链接:https://www.bilibili.com/video/av20727707/?p=6\n",
9 | "\n",
10 | "本节重点:\n",
11 | "- 通过csv、excel存储数据\n",
12 | "- 通过mysql存储数据\n",
13 | "- 通过MongoDB存储数据\n",
14 | "- 通过HDF5存储数据"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 8,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import tushare as ts\n",
24 | "\n",
25 | "df = ts.get_hist_data(\n",
26 | " '399001', \n",
27 | " start='2018-02-01', \n",
28 | " end='2018-02-28'\n",
29 | ")"
30 | ]
31 | },
32 | {
33 | "cell_type": "code",
34 | "execution_count": 11,
35 | "metadata": {},
36 | "outputs": [
37 | {
38 | "data": {
39 | "text/html": [
40 | "\n",
41 | "\n",
54 | "
\n",
55 | " \n",
56 | " \n",
57 | " | \n",
58 | " open | \n",
59 | " high | \n",
60 | " close | \n",
61 | " low | \n",
62 | " volume | \n",
63 | " price_change | \n",
64 | " p_change | \n",
65 | " ma5 | \n",
66 | " ma10 | \n",
67 | " ma20 | \n",
68 | " v_ma5 | \n",
69 | " v_ma10 | \n",
70 | " v_ma20 | \n",
71 | "
\n",
72 | " \n",
73 | " date | \n",
74 | " | \n",
75 | " | \n",
76 | " | \n",
77 | " | \n",
78 | " | \n",
79 | " | \n",
80 | " | \n",
81 | " | \n",
82 | " | \n",
83 | " | \n",
84 | " | \n",
85 | " | \n",
86 | " | \n",
87 | "
\n",
88 | " \n",
89 | " \n",
90 | " \n",
91 | " 2018-02-28 | \n",
92 | " 10705.81 | \n",
93 | " 10875.71 | \n",
94 | " 10828.73 | \n",
95 | " 10656.36 | \n",
96 | " 186638944.0 | \n",
97 | " 21.20 | \n",
98 | " 0.20 | \n",
99 | " 10770.710 | \n",
100 | " 10531.359 | \n",
101 | " 10773.274 | \n",
102 | " 171891308.8 | \n",
103 | " 159470362.4 | \n",
104 | " 173845233.2 | \n",
105 | "
\n",
106 | " \n",
107 | " 2018-02-27 | \n",
108 | " 10898.29 | \n",
109 | " 10915.36 | \n",
110 | " 10807.53 | \n",
111 | " 10791.95 | \n",
112 | " 195932768.0 | \n",
113 | " -88.03 | \n",
114 | " -0.81 | \n",
115 | " 10691.346 | \n",
116 | " 10473.183 | \n",
117 | " 10812.216 | \n",
118 | " 154580008.0 | \n",
119 | " 159342959.2 | \n",
120 | " 175050047.6 | \n",
121 | "
\n",
122 | " \n",
123 | " 2018-02-26 | \n",
124 | " 10731.31 | \n",
125 | " 10920.21 | \n",
126 | " 10895.56 | \n",
127 | " 10670.17 | \n",
128 | " 200183504.0 | \n",
129 | " 232.77 | \n",
130 | " 2.18 | \n",
131 | " 10602.326 | \n",
132 | " 10430.191 | \n",
133 | " 10849.602 | \n",
134 | " 143826923.2 | \n",
135 | " 159437423.2 | \n",
136 | " 173962847.6 | \n",
137 | "
\n",
138 | " \n",
139 | " 2018-02-23 | \n",
140 | " 10667.81 | \n",
141 | " 10700.11 | \n",
142 | " 10662.79 | \n",
143 | " 10578.79 | \n",
144 | " 140530848.0 | \n",
145 | " 3.85 | \n",
146 | " 0.04 | \n",
147 | " 10481.590 | \n",
148 | " 10424.260 | \n",
149 | " 10880.478 | \n",
150 | " 132789454.4 | \n",
151 | " 154289594.4 | \n",
152 | " 173007413.2 | \n",
153 | "
\n",
154 | " \n",
155 | " 2018-02-22 | \n",
156 | " 10547.81 | \n",
157 | " 10667.80 | \n",
158 | " 10658.94 | \n",
159 | " 10526.98 | \n",
160 | " 136170480.0 | \n",
161 | " 227.03 | \n",
162 | " 2.18 | \n",
163 | " 10349.278 | \n",
164 | " 10450.497 | \n",
165 | " 10912.152 | \n",
166 | " 143397553.6 | \n",
167 | " 158699165.6 | \n",
168 | " 175152334.8 | \n",
169 | "
\n",
170 | " \n",
171 | "
\n",
172 | "
"
173 | ],
174 | "text/plain": [
175 | " open high close low volume price_change \\\n",
176 | "date \n",
177 | "2018-02-28 10705.81 10875.71 10828.73 10656.36 186638944.0 21.20 \n",
178 | "2018-02-27 10898.29 10915.36 10807.53 10791.95 195932768.0 -88.03 \n",
179 | "2018-02-26 10731.31 10920.21 10895.56 10670.17 200183504.0 232.77 \n",
180 | "2018-02-23 10667.81 10700.11 10662.79 10578.79 140530848.0 3.85 \n",
181 | "2018-02-22 10547.81 10667.80 10658.94 10526.98 136170480.0 227.03 \n",
182 | "\n",
183 | " p_change ma5 ma10 ma20 v_ma5 \\\n",
184 | "date \n",
185 | "2018-02-28 0.20 10770.710 10531.359 10773.274 171891308.8 \n",
186 | "2018-02-27 -0.81 10691.346 10473.183 10812.216 154580008.0 \n",
187 | "2018-02-26 2.18 10602.326 10430.191 10849.602 143826923.2 \n",
188 | "2018-02-23 0.04 10481.590 10424.260 10880.478 132789454.4 \n",
189 | "2018-02-22 2.18 10349.278 10450.497 10912.152 143397553.6 \n",
190 | "\n",
191 | " v_ma10 v_ma20 \n",
192 | "date \n",
193 | "2018-02-28 159470362.4 173845233.2 \n",
194 | "2018-02-27 159342959.2 175050047.6 \n",
195 | "2018-02-26 159437423.2 173962847.6 \n",
196 | "2018-02-23 154289594.4 173007413.2 \n",
197 | "2018-02-22 158699165.6 175152334.8 "
198 | ]
199 | },
200 | "execution_count": 11,
201 | "metadata": {},
202 | "output_type": "execute_result"
203 | }
204 | ],
205 | "source": [
206 | "df.head()"
207 | ]
208 | },
209 | {
210 | "cell_type": "markdown",
211 | "metadata": {},
212 | "source": [
213 | "## 通过csv和excel存储数据"
214 | ]
215 | },
216 | {
217 | "cell_type": "code",
218 | "execution_count": 12,
219 | "metadata": {},
220 | "outputs": [],
221 | "source": [
222 | "# save to csv\n",
223 | "\n",
224 | "df.to_csv('daily_399001_2.csv')"
225 | ]
226 | },
227 | {
228 | "cell_type": "code",
229 | "execution_count": 13,
230 | "metadata": {},
231 | "outputs": [],
232 | "source": [
233 | "# save to excel\n",
234 | "\n",
235 | "df.to_excel('daily_399001_2.xlsx')"
236 | ]
237 | },
238 | {
239 | "cell_type": "code",
240 | "execution_count": 14,
241 | "metadata": {},
242 | "outputs": [
243 | {
244 | "name": "stdout",
245 | "output_type": "stream",
246 | "text": [
247 | "2018-02-28 10705.81 10828.73\n",
248 | "2018-02-27 10898.29 10807.53\n",
249 | "2018-02-26 10731.31 10895.56\n",
250 | "2018-02-23 10667.81 10662.79\n",
251 | "2018-02-22 10547.81 10658.94\n",
252 | "2018-02-14 10381.16 10431.91\n",
253 | "2018-02-13 10367.68 10362.43\n",
254 | "2018-02-12 10059.86 10291.88\n",
255 | "2018-02-09 10096.47 10001.23\n",
256 | "2018-02-08 10219.39 10372.59\n",
257 | "2018-02-07 10563.31 10246.97\n",
258 | "2018-02-06 10603.53 10377.61\n",
259 | "2018-02-05 10761.08 10836.25\n",
260 | "2018-02-02 10794.13 10925.16\n",
261 | "2018-02-01 11145.41 10864.34\n"
262 | ]
263 | }
264 | ],
265 | "source": [
266 | "# read from csv\n",
267 | "\n",
268 | "import csv\n",
269 | "csv_reader =csv.DictReader(open('daily_399001_2.csv', 'r'))\n",
270 | "for record in csv_reader:\n",
271 | " print(record['date'], record['open'], record['close'])"
272 | ]
273 | },
274 | {
275 | "cell_type": "code",
276 | "execution_count": 17,
277 | "metadata": {},
278 | "outputs": [
279 | {
280 | "data": {
281 | "text/html": [
282 | "\n",
283 | "\n",
296 | "
\n",
297 | " \n",
298 | " \n",
299 | " | \n",
300 | " date | \n",
301 | " open | \n",
302 | " high | \n",
303 | " close | \n",
304 | " low | \n",
305 | " volume | \n",
306 | " price_change | \n",
307 | " p_change | \n",
308 | " ma5 | \n",
309 | " ma10 | \n",
310 | " ma20 | \n",
311 | " v_ma5 | \n",
312 | " v_ma10 | \n",
313 | " v_ma20 | \n",
314 | "
\n",
315 | " \n",
316 | " \n",
317 | " \n",
318 | " 0 | \n",
319 | " 2018-02-28 | \n",
320 | " 10705.81 | \n",
321 | " 10875.71 | \n",
322 | " 10828.73 | \n",
323 | " 10656.36 | \n",
324 | " 186638944.0 | \n",
325 | " 21.20 | \n",
326 | " 0.20 | \n",
327 | " 10770.710 | \n",
328 | " 10531.359 | \n",
329 | " 10773.274 | \n",
330 | " 171891308.8 | \n",
331 | " 159470362.4 | \n",
332 | " 173845233.2 | \n",
333 | "
\n",
334 | " \n",
335 | " 1 | \n",
336 | " 2018-02-27 | \n",
337 | " 10898.29 | \n",
338 | " 10915.36 | \n",
339 | " 10807.53 | \n",
340 | " 10791.95 | \n",
341 | " 195932768.0 | \n",
342 | " -88.03 | \n",
343 | " -0.81 | \n",
344 | " 10691.346 | \n",
345 | " 10473.183 | \n",
346 | " 10812.216 | \n",
347 | " 154580008.0 | \n",
348 | " 159342959.2 | \n",
349 | " 175050047.6 | \n",
350 | "
\n",
351 | " \n",
352 | " 2 | \n",
353 | " 2018-02-26 | \n",
354 | " 10731.31 | \n",
355 | " 10920.21 | \n",
356 | " 10895.56 | \n",
357 | " 10670.17 | \n",
358 | " 200183504.0 | \n",
359 | " 232.77 | \n",
360 | " 2.18 | \n",
361 | " 10602.326 | \n",
362 | " 10430.191 | \n",
363 | " 10849.602 | \n",
364 | " 143826923.2 | \n",
365 | " 159437423.2 | \n",
366 | " 173962847.6 | \n",
367 | "
\n",
368 | " \n",
369 | " 3 | \n",
370 | " 2018-02-23 | \n",
371 | " 10667.81 | \n",
372 | " 10700.11 | \n",
373 | " 10662.79 | \n",
374 | " 10578.79 | \n",
375 | " 140530848.0 | \n",
376 | " 3.85 | \n",
377 | " 0.04 | \n",
378 | " 10481.590 | \n",
379 | " 10424.260 | \n",
380 | " 10880.478 | \n",
381 | " 132789454.4 | \n",
382 | " 154289594.4 | \n",
383 | " 173007413.2 | \n",
384 | "
\n",
385 | " \n",
386 | " 4 | \n",
387 | " 2018-02-22 | \n",
388 | " 10547.81 | \n",
389 | " 10667.80 | \n",
390 | " 10658.94 | \n",
391 | " 10526.98 | \n",
392 | " 136170480.0 | \n",
393 | " 227.03 | \n",
394 | " 2.18 | \n",
395 | " 10349.278 | \n",
396 | " 10450.497 | \n",
397 | " 10912.152 | \n",
398 | " 143397553.6 | \n",
399 | " 158699165.6 | \n",
400 | " 175152334.8 | \n",
401 | "
\n",
402 | " \n",
403 | "
\n",
404 | "
"
405 | ],
406 | "text/plain": [
407 | " date open high close low volume \\\n",
408 | "0 2018-02-28 10705.81 10875.71 10828.73 10656.36 186638944.0 \n",
409 | "1 2018-02-27 10898.29 10915.36 10807.53 10791.95 195932768.0 \n",
410 | "2 2018-02-26 10731.31 10920.21 10895.56 10670.17 200183504.0 \n",
411 | "3 2018-02-23 10667.81 10700.11 10662.79 10578.79 140530848.0 \n",
412 | "4 2018-02-22 10547.81 10667.80 10658.94 10526.98 136170480.0 \n",
413 | "\n",
414 | " price_change p_change ma5 ma10 ma20 v_ma5 \\\n",
415 | "0 21.20 0.20 10770.710 10531.359 10773.274 171891308.8 \n",
416 | "1 -88.03 -0.81 10691.346 10473.183 10812.216 154580008.0 \n",
417 | "2 232.77 2.18 10602.326 10430.191 10849.602 143826923.2 \n",
418 | "3 3.85 0.04 10481.590 10424.260 10880.478 132789454.4 \n",
419 | "4 227.03 2.18 10349.278 10450.497 10912.152 143397553.6 \n",
420 | "\n",
421 | " v_ma10 v_ma20 \n",
422 | "0 159470362.4 173845233.2 \n",
423 | "1 159342959.2 175050047.6 \n",
424 | "2 159437423.2 173962847.6 \n",
425 | "3 154289594.4 173007413.2 \n",
426 | "4 158699165.6 175152334.8 "
427 | ]
428 | },
429 | "execution_count": 17,
430 | "metadata": {},
431 | "output_type": "execute_result"
432 | }
433 | ],
434 | "source": [
435 | "# 直接用pandas方便些\n",
436 | "import pandas as pd\n",
437 | "df2 = pd.read_csv('daily_399001_2.csv')\n",
438 | "df2.head()"
439 | ]
440 | },
441 | {
442 | "cell_type": "code",
443 | "execution_count": 19,
444 | "metadata": {
445 | "scrolled": true
446 | },
447 | "outputs": [
448 | {
449 | "data": {
450 | "text/html": [
451 | "\n",
452 | "\n",
465 | "
\n",
466 | " \n",
467 | " \n",
468 | " | \n",
469 | " date | \n",
470 | " open | \n",
471 | " high | \n",
472 | " close | \n",
473 | " low | \n",
474 | " volume | \n",
475 | " price_change | \n",
476 | " p_change | \n",
477 | " ma5 | \n",
478 | " ma10 | \n",
479 | " ma20 | \n",
480 | " v_ma5 | \n",
481 | " v_ma10 | \n",
482 | " v_ma20 | \n",
483 | "
\n",
484 | " \n",
485 | " \n",
486 | " \n",
487 | " 0 | \n",
488 | " 2018-02-28 | \n",
489 | " 10705.81 | \n",
490 | " 10875.71 | \n",
491 | " 10828.73 | \n",
492 | " 10656.36 | \n",
493 | " 186638944 | \n",
494 | " 21.20 | \n",
495 | " 0.20 | \n",
496 | " 10770.710 | \n",
497 | " 10531.359 | \n",
498 | " 10773.274 | \n",
499 | " 171891308.8 | \n",
500 | " 159470362.4 | \n",
501 | " 173845233.2 | \n",
502 | "
\n",
503 | " \n",
504 | " 1 | \n",
505 | " 2018-02-27 | \n",
506 | " 10898.29 | \n",
507 | " 10915.36 | \n",
508 | " 10807.53 | \n",
509 | " 10791.95 | \n",
510 | " 195932768 | \n",
511 | " -88.03 | \n",
512 | " -0.81 | \n",
513 | " 10691.346 | \n",
514 | " 10473.183 | \n",
515 | " 10812.216 | \n",
516 | " 154580008.0 | \n",
517 | " 159342959.2 | \n",
518 | " 175050047.6 | \n",
519 | "
\n",
520 | " \n",
521 | " 2 | \n",
522 | " 2018-02-26 | \n",
523 | " 10731.31 | \n",
524 | " 10920.21 | \n",
525 | " 10895.56 | \n",
526 | " 10670.17 | \n",
527 | " 200183504 | \n",
528 | " 232.77 | \n",
529 | " 2.18 | \n",
530 | " 10602.326 | \n",
531 | " 10430.191 | \n",
532 | " 10849.602 | \n",
533 | " 143826923.2 | \n",
534 | " 159437423.2 | \n",
535 | " 173962847.6 | \n",
536 | "
\n",
537 | " \n",
538 | " 3 | \n",
539 | " 2018-02-23 | \n",
540 | " 10667.81 | \n",
541 | " 10700.11 | \n",
542 | " 10662.79 | \n",
543 | " 10578.79 | \n",
544 | " 140530848 | \n",
545 | " 3.85 | \n",
546 | " 0.04 | \n",
547 | " 10481.590 | \n",
548 | " 10424.260 | \n",
549 | " 10880.478 | \n",
550 | " 132789454.4 | \n",
551 | " 154289594.4 | \n",
552 | " 173007413.2 | \n",
553 | "
\n",
554 | " \n",
555 | " 4 | \n",
556 | " 2018-02-22 | \n",
557 | " 10547.81 | \n",
558 | " 10667.80 | \n",
559 | " 10658.94 | \n",
560 | " 10526.98 | \n",
561 | " 136170480 | \n",
562 | " 227.03 | \n",
563 | " 2.18 | \n",
564 | " 10349.278 | \n",
565 | " 10450.497 | \n",
566 | " 10912.152 | \n",
567 | " 143397553.6 | \n",
568 | " 158699165.6 | \n",
569 | " 175152334.8 | \n",
570 | "
\n",
571 | " \n",
572 | "
\n",
573 | "
"
574 | ],
575 | "text/plain": [
576 | " date open high close low volume \\\n",
577 | "0 2018-02-28 10705.81 10875.71 10828.73 10656.36 186638944 \n",
578 | "1 2018-02-27 10898.29 10915.36 10807.53 10791.95 195932768 \n",
579 | "2 2018-02-26 10731.31 10920.21 10895.56 10670.17 200183504 \n",
580 | "3 2018-02-23 10667.81 10700.11 10662.79 10578.79 140530848 \n",
581 | "4 2018-02-22 10547.81 10667.80 10658.94 10526.98 136170480 \n",
582 | "\n",
583 | " price_change p_change ma5 ma10 ma20 v_ma5 \\\n",
584 | "0 21.20 0.20 10770.710 10531.359 10773.274 171891308.8 \n",
585 | "1 -88.03 -0.81 10691.346 10473.183 10812.216 154580008.0 \n",
586 | "2 232.77 2.18 10602.326 10430.191 10849.602 143826923.2 \n",
587 | "3 3.85 0.04 10481.590 10424.260 10880.478 132789454.4 \n",
588 | "4 227.03 2.18 10349.278 10450.497 10912.152 143397553.6 \n",
589 | "\n",
590 | " v_ma10 v_ma20 \n",
591 | "0 159470362.4 173845233.2 \n",
592 | "1 159342959.2 175050047.6 \n",
593 | "2 159437423.2 173962847.6 \n",
594 | "3 154289594.4 173007413.2 \n",
595 | "4 158699165.6 175152334.8 "
596 | ]
597 | },
598 | "execution_count": 19,
599 | "metadata": {},
600 | "output_type": "execute_result"
601 | }
602 | ],
603 | "source": [
604 | "df3 = pd.read_excel('daily_399001_2.xlsx')\n",
605 | "df3.head()"
606 | ]
607 | },
608 | {
609 | "cell_type": "code",
610 | "execution_count": 1,
611 | "metadata": {
612 | "ExecuteTime": {
613 | "end_time": "2018-12-23T09:37:16.771493Z",
614 | "start_time": "2018-12-23T09:37:16.596426Z"
615 | }
616 | },
617 | "outputs": [
618 | {
619 | "ename": "ModuleNotFoundError",
620 | "evalue": "No module named 'MySQLdb'",
621 | "output_type": "error",
622 | "traceback": [
623 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
624 | "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
625 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mimport\u001b[0m \u001b[0mMySQLdb\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;31m# # 创建数据库\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;31m# create database test;\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;31m# create table daily_info(\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
626 | "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'MySQLdb'"
627 | ]
628 | }
629 | ],
630 | "source": [
631 | "import MySQLdb\n",
632 | "\n",
633 | "# # 创建数据库\n",
634 | "# create database test;\n",
635 | "# create table daily_info(\n",
636 | "# date int,\n",
637 | "# close decimal(10,2),\n",
638 | "# freq varchar(10),\n",
639 | "# symbol varchar(32)\n",
640 | "# );\n",
641 | "\n",
642 | "conn = MySQLdb.connect(\n",
643 | " '127.0.0.1', 'root', '123456',\n",
644 | " 'test', 3306, 'utf8'\n",
645 | ")\n",
646 | "\n",
647 | "# begin a transaction\n",
648 | "conn.begin()\n",
649 | "\n",
650 | "# read from csv\n",
651 | "import csv\n",
652 | "csv_reader = csv.DictReader(open('daily_399001_2.csv', 'r'))\n",
653 | "\n",
654 | "cursor = conn.cursor()\n",
655 | "for record in csv_reader:\n",
656 | " trade_date = int(record['trade date'])\n",
657 | " close_price = float(record['close'])\n",
658 | " freq = record['freq']\n",
659 | " symbol = record['symbol']\n",
660 | " sql = 'insert into daily_info values (%d, %.2f, '%s', '%s')' \\\n",
661 | " % (trade_date, close_price, freq, symbol)\n",
662 | " cursor.execute(sql)\n",
663 | " \n",
664 | "cursor.close()\n",
665 | "\n",
666 | "# commit a transaction\n",
667 | "conn.commit()"
668 | ]
669 | },
670 | {
671 | "cell_type": "code",
672 | "execution_count": null,
673 | "metadata": {},
674 | "outputs": [],
675 | "source": []
676 | },
677 | {
678 | "cell_type": "code",
679 | "execution_count": null,
680 | "metadata": {},
681 | "outputs": [],
682 | "source": []
683 | },
684 | {
685 | "cell_type": "code",
686 | "execution_count": null,
687 | "metadata": {},
688 | "outputs": [],
689 | "source": []
690 | }
691 | ],
692 | "metadata": {
693 | "hide_input": false,
694 | "kernelspec": {
695 | "display_name": "Python 3",
696 | "language": "python",
697 | "name": "python3"
698 | },
699 | "language_info": {
700 | "codemirror_mode": {
701 | "name": "ipython",
702 | "version": 3
703 | },
704 | "file_extension": ".py",
705 | "mimetype": "text/x-python",
706 | "name": "python",
707 | "nbconvert_exporter": "python",
708 | "pygments_lexer": "ipython3",
709 | "version": "3.7.0"
710 | },
711 | "toc": {
712 | "base_numbering": 1,
713 | "nav_menu": {},
714 | "number_sections": true,
715 | "sideBar": true,
716 | "skip_h1_title": false,
717 | "title_cell": "Table of Contents",
718 | "title_sidebar": "Contents",
719 | "toc_cell": false,
720 | "toc_position": {},
721 | "toc_section_display": true,
722 | "toc_window_display": false
723 | },
724 | "varInspector": {
725 | "cols": {
726 | "lenName": 16,
727 | "lenType": 16,
728 | "lenVar": 40
729 | },
730 | "kernels_config": {
731 | "python": {
732 | "delete_cmd_postfix": "",
733 | "delete_cmd_prefix": "del ",
734 | "library": "var_list.py",
735 | "varRefreshCmd": "print(var_dic_list())"
736 | },
737 | "r": {
738 | "delete_cmd_postfix": ") ",
739 | "delete_cmd_prefix": "rm(",
740 | "library": "var_list.r",
741 | "varRefreshCmd": "cat(var_dic_list()) "
742 | }
743 | },
744 | "types_to_exclude": [
745 | "module",
746 | "function",
747 | "builtin_function_or_method",
748 | "instance",
749 | "_Feature"
750 | ],
751 | "window_display": false
752 | }
753 | },
754 | "nbformat": 4,
755 | "nbformat_minor": 2
756 | }
757 |
--------------------------------------------------------------------------------
/lecture06_金融数据的相关性和线性回归分析.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# lecture06_金融数据的相关性和线性回归分析\n",
8 | "b站链接:https://www.bilibili.com/video/av20727707/?p=8\n",
9 | "\n",
10 | "本节重点:\n",
11 | "- 相关性分析(不同标的、指数之间)\n",
12 | "- 线性回归分析(一元、多元)\n",
13 | "- beta值计算(CAPM模型)"
14 | ]
15 | },
16 | {
17 | "cell_type": "markdown",
18 | "metadata": {},
19 | "source": [
20 | "## 相关性分析\n",
21 | "`相关性分析(correlation analysis)`是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相关方向以及相关程度,是研究随机变量之间的相关关系的一种统计方法。\n",
22 | "\n",
23 | "$$R = \\frac{\\sum({X_i} - \\overline{X})({Y_i} - \\overline{Y})}{\\sqrt{\\sum({X_i} - \\overline{X})^2 \\sum({Y_i} - \\overline{Y})^2}}$$\n",
24 | "$$相关系数$$\n",
25 | "\n",
26 | "`散点图`"
27 | ]
28 | },
29 | {
30 | "cell_type": "markdown",
31 | "metadata": {},
32 | "source": [
33 | "### 数据选择:标的每日的对数收益率"
34 | ]
35 | },
36 | {
37 | "cell_type": "code",
38 | "execution_count": null,
39 | "metadata": {},
40 | "outputs": [],
41 | "source": [
42 | "import numpy as np\n",
43 | "\n",
44 | "start_date = '2017-01-01'\n",
45 | "end_date = '2017-12-31'\n",
46 | "\n",
47 | "def get_daily_return(api, symbol, start_date, end_date):\n",
48 | " # 查询日收盘价信息\n",
49 | " df, msg = api.daily(\n",
50 | " symbol=symbol,\n",
51 | " start_date=start_date,\n",
52 | " end_date=end_date,\n",
53 | " fields='close',\n",
54 | " freq='id',\n",
55 | " adjust_code='post'\n",
56 | " )\n",
57 | " \n",
58 | " df.set_index('trade_date', inplace=True)\n",
59 | " \n",
60 | " # 计算每日的对数收益率\n",
61 | " change = df['close'] / df['close'].shift(1)\n",
62 | " df['ret'] = np.log(change)\n",
63 | " \n",
64 | " # 删除第一个NA值\n",
65 | " df.dropna(inplace=True)\n",
66 | " return df['ret']"
67 | ]
68 | },
69 | {
70 | "cell_type": "markdown",
71 | "metadata": {},
72 | "source": [
73 | "### 指数之间的相关性(1)\n",
74 | "分析上证50与50ETF的相关性"
75 | ]
76 | },
77 | {
78 | "cell_type": "code",
79 | "execution_count": null,
80 | "metadata": {},
81 | "outputs": [],
82 | "source": [
83 | "\n",
84 | "\n",
85 | "df_etf = get_daily_return(api, '500050.SH', start_date, end_date)\n",
86 | "df_index = get_daily_return(api, '000016.SH', start_date, end_date)\n",
87 | "\n",
88 | "np.corrcoef(df_etf, df_index)\n",
89 | "\n",
90 | "\n",
91 | "import matplotlib.pyplot as plt\n",
92 | "\n",
93 | "plt.scatter(df_etf, df_index)\n",
94 | "\n",
95 | "# 输出相关系数矩阵"
96 | ]
97 | },
98 | {
99 | "cell_type": "markdown",
100 | "metadata": {},
101 | "source": [
102 | "### 指数之间的相关性(2)\n",
103 | "分析沪深300与300ETF的相关性"
104 | ]
105 | },
106 | {
107 | "cell_type": "code",
108 | "execution_count": null,
109 | "metadata": {},
110 | "outputs": [],
111 | "source": [
112 | "df_etf = get_daily_return(api, '510300.SH', start_date, end_date)\n",
113 | "df_index = get_daily_return(api, '000300.SH', start_date, end_date)\n",
114 | "\n",
115 | "np.corrcoef(df_etf, df_index)\n",
116 | "\n",
117 | "\n",
118 | "import matplotlib.pyplot as plt\n",
119 | "\n",
120 | "plt.scatter(df_etf, df_index)\n",
121 | "\n",
122 | "# 输出相关系数矩阵"
123 | ]
124 | },
125 | {
126 | "cell_type": "markdown",
127 | "metadata": {},
128 | "source": [
129 | "### 指数之间的相关性(3)\n",
130 | "分析上证50与沪深300的相关性"
131 | ]
132 | },
133 | {
134 | "cell_type": "markdown",
135 | "metadata": {},
136 | "source": [
137 | "### 股票之间的相关性\n",
138 | "分析贵州茅台(600519)与五粮液(000858)的相关性"
139 | ]
140 | },
141 | {
142 | "cell_type": "code",
143 | "execution_count": null,
144 | "metadata": {},
145 | "outputs": [],
146 | "source": []
147 | },
148 | {
149 | "cell_type": "code",
150 | "execution_count": null,
151 | "metadata": {},
152 | "outputs": [],
153 | "source": []
154 | },
155 | {
156 | "cell_type": "markdown",
157 | "metadata": {},
158 | "source": [
159 | "## 一元线性回归\n",
160 | "linear regression
\n",
161 | "$y = ax + b$
\n",
162 | "search for $(a,b)$ to minimize estimation error"
163 | ]
164 | },
165 | {
166 | "cell_type": "code",
167 | "execution_count": null,
168 | "metadata": {},
169 | "outputs": [],
170 | "source": [
171 | "import sicpy.stats\n",
172 | "result = sicpy.stats.linregress(df_stock1, df_stock2)\n",
173 | "print(result)"
174 | ]
175 | },
176 | {
177 | "cell_type": "code",
178 | "execution_count": null,
179 | "metadata": {},
180 | "outputs": [],
181 | "source": [
182 | "x = np.arrange(-0.07, 0.07, 0.001)\n",
183 | "y = x * result.slope + result.intercept # result是线性回归的结果,slope斜率,intercept截距\n",
184 | "\n",
185 | "plt.scatter(df_stock1, df_stock2)\n",
186 | "plt.plot(x,y, color='r')"
187 | ]
188 | },
189 | {
190 | "cell_type": "markdown",
191 | "metadata": {},
192 | "source": [
193 | "## 多元线性回归\n",
194 | "$Y=\\beta_0 + \\beta_1X_1 + \\beta_2X_2+......+\\beta_mX_m+\\varepsilon$"
195 | ]
196 | },
197 | {
198 | "cell_type": "code",
199 | "execution_count": null,
200 | "metadata": {},
201 | "outputs": [],
202 | "source": [
203 | "# 沪深300,中证500,中证800\n",
204 | "idx_hs500 = get_daily_return(api, '000300', start_date, end_date)\n",
205 | "idx_zz500 = get_daily_return(api, '000905', start_date, end_date)\n",
206 | "idx_zz800 = get_daily_return(api, '000906', start_date, end_date)"
207 | ]
208 | },
209 | {
210 | "cell_type": "code",
211 | "execution_count": null,
212 | "metadata": {},
213 | "outputs": [],
214 | "source": [
215 | "fig = plt.figure()\n",
216 | "ax = fig.add_subplot(111, projection='3d')\n",
217 | "ax.scatter(idx_hs300, idx_zz500, idx_zz800)"
218 | ]
219 | },
220 | {
221 | "cell_type": "markdown",
222 | "metadata": {},
223 | "source": [
224 | "### 最小二乘法OLS\n",
225 | "F-Test:显著\n",
226 | "\n",
227 | "参数: 显著"
228 | ]
229 | },
230 | {
231 | "cell_type": "code",
232 | "execution_count": null,
233 | "metadata": {},
234 | "outputs": [],
235 | "source": [
236 | "import statsmodels.api as sm\n",
237 | "import pandas as pd"
238 | ]
239 | },
240 | {
241 | "cell_type": "code",
242 | "execution_count": null,
243 | "metadata": {},
244 | "outputs": [],
245 | "source": [
246 | "x =pd.concat([idx_hs300, idx_zz500, idx_zz800], axis=1)\n",
247 | "x.columns = ['idx_hs300', 'idx_zz500']\n",
248 | "\n",
249 | "x = sm.add_constant(x)\n",
250 | "model = sm.OLS(idx_zz800,x)\n",
251 | "results = model.fit()\n",
252 | "results.summary()"
253 | ]
254 | },
255 | {
256 | "cell_type": "markdown",
257 | "metadata": {},
258 | "source": [
259 | "### beta系数\n",
260 | "贝塔系数(Beta Coefficient)是一种评估证券系统性风险的工具,用以度量一种证券或者一个投资证券组合相对总体市场的波动性。\n",
261 | "$$\\beta_a=\\frac{Cov(r_a,r_m)}{\\sigma^2_m}【公式法】$$\n",
262 | "$$R=\\alpha+\\beta R_m+\\epsilon【CAPM模型,回归法】$$\n"
263 | ]
264 | },
265 | {
266 | "cell_type": "markdown",
267 | "metadata": {},
268 | "source": [
269 | "#### beta系数的计算\n",
270 | "- beta系数的定义\n",
271 | "- $return of stock - \\beta*(return of market)+\\alpha$\n",
272 | "- CAPM model\n",
273 | "- beta系数计算更适合用月度收益数据"
274 | ]
275 | },
276 | {
277 | "cell_type": "code",
278 | "execution_count": null,
279 | "metadata": {},
280 | "outputs": [],
281 | "source": [
282 | "def get_monthly_return(api, symbol, start_date, end_date):\n",
283 | " # 查询月收盘价信息\n",
284 | " df, msg = api.daily(\n",
285 | " symbol=symbol,\n",
286 | " start_date=start_date,\n",
287 | " end_date=end_date,\n",
288 | " fields='close',\n",
289 | " freq-'1m',\n",
290 | " adjust_mode='post'\n",
291 | " )\n",
292 | " df.set_index('trade_date', inplace=True)\n",
293 | " \n",
294 | " # 计算每月的收益率\n",
295 | " df['ret'] = df['close'] / df['close'].shift(1)-1\n",
296 | " \n",
297 | " # 删除第一个NA值\n",
298 | " df.dropna(inplace=True)\n",
299 | "return df['ret']"
300 | ]
301 | },
302 | {
303 | "cell_type": "code",
304 | "execution_count": null,
305 | "metadata": {},
306 | "outputs": [],
307 | "source": [
308 | "# 用线性回归计算beta\n",
309 | "def calc_beta(stock, index, start_date, end_date):\n",
310 | " df_stock = get_monthly_return(api, stock, start_date, end_date)\n",
311 | " df_index = get_monthly_return(api, index, start_date, end_date)\n",
312 | " \n",
313 | " # linear regression\n",
314 | " import scipy.stats\n",
315 | " result = scipy.stats.linregress(df_stock, df_index)\n",
316 | " print('beta of %s vs %s is %.3f' %(stock, index, result.slope))"
317 | ]
318 | },
319 | {
320 | "cell_type": "markdown",
321 | "metadata": {},
322 | "source": [
323 | "使用线性回归计算beta的参数选择:\n",
324 | "1. 使用月度收益率的数据;\n",
325 | "2. 有研究表明,周期最好是4-6年;"
326 | ]
327 | },
328 | {
329 | "cell_type": "markdown",
330 | "metadata": {},
331 | "source": [
332 | "#### 几个例子比较"
333 | ]
334 | },
335 | {
336 | "cell_type": "code",
337 | "execution_count": null,
338 | "metadata": {},
339 | "outputs": [],
340 | "source": [
341 | "start_date = '2013-01-01'\n",
342 | "end_date = '2017-12-31'"
343 | ]
344 | },
345 | {
346 | "cell_type": "code",
347 | "execution_count": null,
348 | "metadata": {},
349 | "outputs": [],
350 | "source": [
351 | "# 贵州茅台相对于沪深300的beta (取一个周期内的)\n",
352 | "calc_beta('600519', '000300', start_date, end_date)"
353 | ]
354 | },
355 | {
356 | "cell_type": "code",
357 | "execution_count": null,
358 | "metadata": {},
359 | "outputs": [],
360 | "source": [
361 | "# 乐视网相对于上证50的beta\n",
362 | "calc_beta('300104', '000016', start_date, end_date)"
363 | ]
364 | },
365 | {
366 | "cell_type": "code",
367 | "execution_count": null,
368 | "metadata": {},
369 | "outputs": [],
370 | "source": []
371 | },
372 | {
373 | "cell_type": "code",
374 | "execution_count": null,
375 | "metadata": {},
376 | "outputs": [],
377 | "source": []
378 | }
379 | ],
380 | "metadata": {
381 | "kernelspec": {
382 | "display_name": "Python 3",
383 | "language": "python",
384 | "name": "python3"
385 | },
386 | "language_info": {
387 | "codemirror_mode": {
388 | "name": "ipython",
389 | "version": 3
390 | },
391 | "file_extension": ".py",
392 | "mimetype": "text/x-python",
393 | "name": "python",
394 | "nbconvert_exporter": "python",
395 | "pygments_lexer": "ipython3",
396 | "version": "3.7.0"
397 | },
398 | "toc": {
399 | "base_numbering": 1,
400 | "nav_menu": {},
401 | "number_sections": true,
402 | "sideBar": true,
403 | "skip_h1_title": false,
404 | "title_cell": "Table of Contents",
405 | "title_sidebar": "Contents",
406 | "toc_cell": false,
407 | "toc_position": {},
408 | "toc_section_display": true,
409 | "toc_window_display": true
410 | }
411 | },
412 | "nbformat": 4,
413 | "nbformat_minor": 2
414 | }
415 |
--------------------------------------------------------------------------------