本文是量化交易零基础入门教程中的一篇,点击蓝字连接可查看该系列详情。
摘要
- 投资研究功能简介
- 新建notebook
- 单元格及其类型
- 命令模式与编辑模式
- 应用举例
- 这里讲的研究是聚宽量化交易平台中投资研究功能,实质上是有独立空间的python环境,意思是不光是做量化交易,python支持做的事这里几乎都可以做,比如统计分析、数据可视化、数据预处理、机器学习等。投资研究功能入口在导航栏-我的策略-投资研究。
新建 notebook
- notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。官方文档:Jupyter Notebook
- 新建notebook的方法如下图,可以看到有多个版本,目前就先选python2这个版本吧。这些版本有什么区别见这个文章,如果对此还有不明白的地方可以在那个文章下留言问或反馈相关建议,比如我就反馈过。
单元格及其类型
- notebook中的一个个格子就是单元格,单元格类型有两种主要类型code(代码)和markdown,可以在工具类查看并改变当前单元格的类型,如下图。不妨自己顺便看下工具栏里的各个按钮。
- 代码类型的单元格用来进行代码编写、运行代码、显示结果等。多个单元格之间的代码虽然被单元格分开,但是是一体的,运行某个单元格后产生的影响并不局限在一个单元格中,而是对当前notebook的所有单元格有效,比如变量的值改变了,其他格中的同一变量的值也改变;定义了某个函数,其他格中可以直接用等等。重点注意,有些API不能在研究中使用,有些则不能直接使用,需要加载模块后使用,有些能直接用,但参数默认值不同,具体看API文档注意事项与API用法说明。
- markdown类型的单元格用来进行文档编写,编写语法为markdown语法,运行单元格,将根据markdown语法进行自动排版。markdown语法比较简单,聚宽社区也是使用markdown的,参考这个文章了解下。
-
命令模式与编辑模式
- 命令模式是操作notebook的模式,识别方法是单元格边框为灰色,左侧粗边为绿色,看不到编辑光标,如下图。按enter转为编辑模式。
-
编辑模式是编辑单元格里内容的模式,识别方法是单元格边框为绿色,左侧粗边为绿色,可以看到编辑光标,如下图(截图截不到光标)。按esc转为命令模式。
-
在导航栏-帮助中可以查看快捷键,建议都至少看一遍。重点提几个:
- 命令模式下按z,可以撤销被删除的单元格,从而拯救被你误删的整个单元格。
- 命令模式下按d、d,可以删除当前单元格。
- 命令模式下按b,可以在当前单元格下方增加单元格。
- 命令模式下按y, 修改单元格类型为code。
- 命令模式下按m, 修改单元格类型为markdown。
- 编辑模式下按ctrl+enter,可以运行当前单元格。
-
应用举例
获取格力电器和美的集团两个股票近400日市值数据
- 提示阅读API文档:get_fundamentals_continuously()以及panel类型数据怎么处理。
- 还是那句话,基本内容学差不多了,应考虑有自学能力了,另外,思考如果没有提示将如何,毕竟以后难免需要去阅读他人的代码并学习。
- 代码如下:
-
# APIget_fundamentals_continuously() scu=['000651.XSHE', '000333.XSHE'] date='2018-07-01' n=400
q=query( valuation.market_cap ).filter( valuation.code.in_(scu) ) df=get_fundamentals_continuously(q, end_date=date,count=n) # [panel类型数据怎么处理](https://joinquant.com/post/9375) df=df['market_cap',:,:] # 显示结果 # notebook中单独的变量视为命令:显示该变量 df
code | 000333.XSHE | 000651.XSHE |
---|---|---|
day | ||
2016-11-10 | 1778.9700 | 1347.5200 |
2016-11-11 | 1769.9500 | 1347.5200 |
2016-11-14 | 1748.7000 | 1347.5200 |
2016-11-15 | 1742.2700 | 1347.5200 |
2016-11-16 | 1738.4301 | 1347.5200 |
2016-11-17 | 1742.3400 | 1373.9900 |
2016-11-18 | 1750.7500 | 1354.7400 |
2016-11-21 | 1779.8000 | 1371.5900 |
2016-11-22 | 1770.8101 | 1397.4500 |
2016-11-23 | 1810.2100 | 1537.0200 |
2016-11-24 | 1870.2600 | 1586.9500 |
2016-11-25 | 1871.6200 | 1638.0800 |
2016-11-28 | 1943.9900 | 1712.6801 |
2016-11-29 | 2031.1801 | 1712.6801 |
2016-11-30 | 1954.5000 | 1712.6801 |
2016-12-01 | 1991.5000 | 1840.2100 |
2016-12-02 | 1928.3400 | 1730.1200 |
2016-12-05 | 1847.7600 | 1556.8700 |
2016-12-06 | 1863.9600 | 1583.9399 |
2016-12-07 | 1865.3199 | 1575.5200 |
2016-12-08 | 1879.5800 | 1578.5300 |
2016-12-09 | 1948.7400 | 1623.6500 |
2016-12-12 | 1891.3000 | 1524.3900 |
2016-12-13 | 1859.7100 | 1536.4200 |
2016-12-14 | 1833.9200 | 1521.9800 |
2016-12-15 | 1797.1600 | 1488.8900 |
2016-12-16 | 1885.6500 | 1503.3300 |
2016-12-19 | 1863.0699 | 1453.4000 |
2016-12-20 | 1823.0500 | 1443.7800 |
2016-12-21 | 1832.7400 | 1455.8101 |
... | ... | ... |
2018-05-18 | 3550.1040 | 2903.7932 |
2018-05-21 | 3554.0566 | 2883.9414 |
2018-05-22 | 3467.4939 | 2815.3621 |
2018-05-23 | 3412.9788 | 2780.4707 |
2018-05-24 | 3353.8423 | 2743.7749 |
2018-05-25 | 3333.4963 | 2751.5952 |
2018-05-28 | 3422.5503 | 2805.1353 |
2018-05-29 | 3393.0447 | 2771.4473 |
2018-05-30 | 3341.6448 | 2726.9309 |
2018-05-31 | 3486.6187 | 2857.4722 |
2018-06-01 | 3436.7046 | 2802.1274 |
2018-06-04 | 3558.7542 | 2876.1208 |
2018-06-05 | 3623.9751 | 2920.6372 |
2018-06-06 | 3609.2573 | 2912.2153 |
2018-06-07 | 3580.6230 | 2886.3477 |
2018-06-08 | 3604.7749 | 2896.5745 |
2018-06-11 | 3714.4561 | 2943.4971 |
2018-06-12 | 3772.0862 | 3031.9285 |
2018-06-13 | 3759.3374 | 3000.6465 |
2018-06-14 | 3680.0955 | 2944.0986 |
2018-06-15 | 3714.0586 | 2948.3098 |
2018-06-19 | 3604.9099 | 2847.2454 |
2018-06-20 | 3637.3328 | 2880.3318 |
2018-06-21 | 3586.5007 | 2879.1289 |
2018-06-22 | 3553.5083 | 2891.1604 |
2018-06-25 | 3504.1943 | 2873.1130 |
2018-06-26 | 3467.0208 | 2845.4407 |
2018-06-27 | 3344.4526 | 2735.3528 |
2018-06-28 | 3319.2766 | 2717.9072 |
2018-06-29 | 3459.7329 | 2836.4170 |
400 rows × 2 columns
市值走势图
<matplotlib.axes._subplots.AxesSubplot at 0x7fb20da6b5d0>
<matplotlib.axes._subplots.AxesSubplot at 0x7fb20da6b5d0>
- 此处使用的数据可视化方法是 x.plot(figsize=(长,宽)),用来画折线图,其中长宽可以自己调整,需要注意的是变量x需要是dataframe类型。
- python数据可视化学习之旅很不平坦,对新手很不友好,此处仅进行简单演示,提供几个参考资料供深入学习。
- # 画折线图
- df.plot(figsize=(18,8))
市值比值走势图
此处,作图方法同上,计算比值的操作是dataframe类型数据基本操作,还不熟悉的参考pandas.dataframe 专题使用指南。 思考,如果你持有格力电器与美的集团这两个股票,根据得到市值比值走势图,你应当以怎样的策略调整两者之间的持有比例?能否由此写出一个策略。
df2.plot(figsize=(18,8))
# 计算格力电器市值比上美的集团市值
df['mc_ratio']=df['000651.XSHE']/df['000333.XSHE']
# 取出比值作为新的变量df2,并维持其类型为dataframe
df2=df[['mc_ratio']]
# 作图
<matplotlib.axes._subplots.AxesSubplot at 0x7fb20d904e10>
其他应用案例
以下应用案例选自聚宽社区
- 统计研究:统计了一下熔断的历史数据,我对小头爸爸报以深刻的同情
- 心得&教程:数据类型之元组、集合
- 统计&绘制K线图:根据扣非净益率筛选白马股,并绘制K线图
- 自动并行回测&参数调优&回测与研究间文件读取:多回测运行和参数分析框架
- 数据统计:全市场估值-等权PE PB
- 机器学习:一只兔子帮你理解 kNN
- 数学规划:无约束的非线性规划问题 -- 线搜索方法
- 数据预处理:一键即得标准化、规范化、二值化等多种机器学习数据预处理方式
- 学习笔记&机器学习:《机器学习》从零开始学 目录
- 自定义模块:自定义python库
自测与自学
- 亲手使用下投资研究功能
- 大致浏览下文中其他应用案例
- 是否理解并学会文中的美的与格力的应用案例
- 在市值比值走势图部分提到的思考是否有答案,提示一下,在比值比较低的时候多持有一个股票,在比值比较高的时候持有另一个股票。