本书首先讲解了Python量化炒股快速入门,即量化炒股的定义、特点、优势、不足和主要内容,Python语言的开发环境,以及量化炒股的注意事项。其次讲解量化炒股开发语言Python,即讲解Python语言的基本语法、选择结构、循环结构、常用数据结构、函数及应用和面向对象程序设计。接着讲解量化炒股中的3个常用包,即Numpy、Pandas和Matplotlib包。然后讲解如何利用Python编写量化炒股策略、量化炒股的获取数据函数、财务因子量化选股、数据信息获取、量化择时的技术指标函数、量化炒股的统计数据图、量化炒股策略的回测、量化炒股策略的因子分析。很后讲解Python量化炒股策略实战案例。 在讲解过程中既考虑读者的学习习惯,又通过具体实例剖析Python量化炒股实际交易过程中的热点问题、关键问题及种种难题。 本书适用于各种不同的投资者,如股民、中小散户、职业操盘手和专业金融评论人士,更适用于那些有志于在这个充满风险、充满寂寞的征程上默默前行的征战者和屡败屡战、愈挫愈奋并很终战胜失败、战胜自我的勇者。
章 Python量化炒股快速入门 / 11.1 初识量化炒股 / 21.1.1 什么是量化炒股 / 21.1.2 量化炒股的特点 / 21.1.3 量化炒股的优势 / 41.1.4 量化炒股的不足 / 51.2 量化炒股的内容 / 51.2.1 量化选股 / 51.2.2 量化择时 / 61.2.3 算法交易 / 61.2.4 股指期货套利交易 / 81.3 量化炒股的开发语言Python / 81.3.1 为什么使用Python来开发量化炒股 / 81.3.2 Python的下载和安装 / 91.3.3 Python的环境变量配置 / 121.3.4 编写Python程序 / 151.4 量化炒股与普通炒股的比较 / 181.5 量化炒股的注意事项 / 18第2章 Python编程的初步知识 / 212.1 变量 / 222.1.1 什么是变量 / 222.1.2 变量命名规则 / 222.1.3 变量的赋值 / 232.2 变量的基本数据类型 / 242.2.1 数值类型 / 242.2.2 字符串类型 / 272.3 运算符 / 292.3.1 算术运算符 / 292.3.2 赋值运算符 / 312.3.3 位运算符 / 322.4 Python 的语法规则 / 332.4.1 大小写敏感性 / 342.4.2 代码缩进 / 342.4.3 代码注释 / 352.4.4 空行 / 352.4.5 同一行显示多条语句 / 36第3章 Python 编程的选择结构 / 373.1 if...else 语句 / 383.1.1 if 语句的一般格式 / 383.1.2 if 语句的注意事项 / 383.1.3 实例:游戏登录判断系统 / 383.1.4 实例:输入一个正数,判断是偶数还是奇数 / 393.2 多个if...else 语句 / 403.2.1 实例:每周计划系统 / 413.2.2 实例:企业奖金发放系统 / 423.3 关系运算符 / 443.3.1 关系运算符及意义 / 443.3.2 实例:学生成绩评语系统 / 443.3.3 实例:分解一个不多于5 位的正整数 / 463.4 逻辑运算符 / 473.4.1 逻辑运算符及意义 / 473.4.2 实例:闰年和平年 / 473.4.3 实例:剪刀、石头、布游戏 / 493.5 嵌套if 语句 / 503.5.1 嵌套if 语句的一般格式 / 503.5.2 实例:后台用户登录系统 / 503.5.3 实例:判断一个数是否是2 或3 的倍数 / 51第4章 Python 编程的循环结构 / 534.1 while 循环 / 544.1.1 while 循环的一般格式 / 544.1.2 实例:计算1+2+3+…+120 的和 / 544.1.3 实例:显示150 之内的自然数 / 554.2 while 循环中使用else 语句 / 554.2.1 while 循环中使用else 语句的一般格式 / 564.2.2 实例:计算120 之内偶数的和 / 564.2.3 实例:随机产生15 个随机数,并显示最小的数 / 564.2.4 实例:阶乘求和 / 584.3 无限循环 / 594.3.1 实例:可以玩多次的剪刀、石头、布游戏 / 604.3.2 实例:可以查多次的学生成绩评语系统 / 614.4 for 循环 / 644.4.1 for 循环的一般格式 / 644.4.2 实例:遍历显示学生的姓名 / 644.5 在for 循环中使用range() 函数 / 654.5.1 range() 函数 / 654.5.2 实例:显示150 之内的奇数 / 664.5.3 实例:求两个正整数的优选公约数 / 664.6 循环嵌套 / 684.6.1 实例:9×9 乘法表 / 684.6.2 实例:绘制※ 的菱形 / 684.6.3 实例:弗洛伊德三角形 / 694.7 break 语句 / 704.8 continue 语句 / 71第5章 Python 编程的常用数据结构 / 735.1 列表 / 745.1.1 什么是列表 / 745.1.2 显示列表中的数据信息 / 745.1.3 修改列表 / 755.1.4 删除列表 / 765.1.5 列表的函数 / 765.1.6 列表的方法 / 775.1.7 实例:排序随机数 / 795.2 元组 / 805.2.1 什么是元组 / 805.2.2 显示元组中的数据信息 / 815.2.3 连接元组 / 825.2.4 删除整个元组 / 825.2.5 元组的函数 / 835.2.6 实例:显示用户名和密码信息 / 845.3 字典 / 855.3.1 什么是字典 / 855.3.2 显示字典中的值和键 / 855.3.3 修改字典 / 865.3.4 字典的函数 / 875.3.5 实例:利用字典实现用户注册功能 / 885.3.6 实例:利用字典实现用户登录功能 / 905.4 集合 / 935.4.1 什么是集合 / 935.4.2 集合的两个基本功能 / 935.4.3 集合的运算符 / 945.4.4 实例:利用集合实现无重复的随机数排序 / 95第6章 Python 编程的函数 / 976.1 初识函数 / 986.2 内置函数 / 986.2.1 数学函数 / 986.2.2 随机函数 / 996.2.3 三角函数 / 1016.2.4 字符串函数 / 1036.3 自定义函数 / 1076.3.1 函数的定义 / 1076.3.2 调用自定义函数 / 1076.3.3 函数的参数传递 / 1096.3.4 函数的参数类型 / 1116.4 匿名函数 / 1156.5 递归函数 / 1166.6 实例:计算一个数为两个质数之和 / 1176.7 实例:利用内置函数实现小学四则运算 / 118第7章 Python 编程的面向对象 / 1217.1 面向对象概述 / 1227.1.1 什么是对象 / 1227.1.2 什么是类 / 1227.1.3 面向对象程序设计的优点 / 1227.1.4 面向对象程序设计的特点 / 1237.2 类的定义和对象的创建 / 1247.2.1 类的定义 / 1247.2.2 对象的创建 / 1247.3 类的构造方法和self 参数 / 1257.4 类的继承 / 1267.4.1 类继承的语法格式 / 1267.4.2 类继承实例 / 1277.4.3 类的多继承 / 1287.5 类的多态 / 1307.6 模块 / 1317.6.1 Python 中的自定义模块 / 1327.6.2 自定义模块的调用 / 1327.6.3 import 语句 / 1337.6.4 标准模块 / 1357.7 包 / 1367.7.1 Python 的自定义包 / 1387.7.2 在自定义包创建模块 / 1407.7.3 调用自定义包中的模块 / 141第8章 Python 量化炒股常用的Numpy 包 / 1438.1 初识Numpy 包及量化炒股平台 / 1448.1.1 Numpy 包概述 / 1448.1.2 量化炒股平台 / 1448.2 ndarray 数组基础 / 1468.2.1 Numpy 数组的创建 / 1468.2.2 Numpy 特殊数组 / 1498.2.3 Numpy 序列数组 / 1508.2.4 利用下标索引显示Numpy 数组中元素的值 / 1518.2.5 Numpy 数组运算 / 1528.3 Numpy 的矩阵 / 1538.4 Numpy 的线性代数 / 1548.4.1 两个数组的点积 / 1548.4.2 两个向量的点积 / 1558.4.3 数组的向量内积 / 1568.4.4 矩阵的行列式 / 1578.4.5 矩阵的逆 / 158第9章 Python 量化炒股常用的Pandas 包 / 1619.1 Pandas 的数据结构 / 1629.2 一维数组系列(Series) / 1629.2.1 利用ndarray 创建系列(Series) / 1629.2.2 利用字典创建系列(Series) / 1639.2.3 访问系列(Series)中的值 / 1649.3 二维数组DataFrame / 1659.3.1 二维数组DataFrame 的创建 / 1659.3.2 利用DataFrame 显示不同类型证券信息 / 1669.3.3 利用DataFrame 显示某只股票的报价信息 / 1689.3.4 股票数据信息的行选择和列选择 / 1709.3.5 利用标签选择股票数据信息 / 1739.3.6 利用条件选择股票数据信息 / 1759.3.7 函数的运用 / 1779.4 三维数组Panel / 1800章 Python 量化炒股常用的Matplotlib 包 / 18310.1 Matplotlib 包的特点 / 18410.2 figure() 函数 / 18410.2.1 figure() 函数的各参数意义 / 18410.2.2 figure() 函数的实例 / 18510.3 plot() 函数 / 18610.3.1 plot() 函数的各参数意义 / 18610.3.2 利用plot() 函数绘制图形 / 18810.3.3 利用plot() 函数显示股票的收盘价图形 / 18910.3.4 利用dataframe 的plot() 函数显示股票的图形 / 18910.4 subplot() 函数 / 19010.4.1 subplot() 函数的各参数意义 / 19110.4.2 利用subplot() 函数绘制多个图形 / 19110.4.3 利用subplot() 函数绘制股票图形 / 19210.5 add_axes() 函数 / 19310.5.1 add_axes() 函数的应用 / 19310.5.2 利用add_axes() 函数绘制股票图形 / 19410.6 legend() 函数 / 19510.6.1 利用legend() 函数为绘制图形添加图题 / 19610.6.2 利用legend() 函数为股票图形添加图题 / 19710.7 grid () 函数 / 19810.7.1 利用grid () 函数为绘制图形添加网格线 / 19910.7.2 利用grid () 函数为绘制股票图形添加网格线 / 1991章 利用Python 编写量化炒股策略 / 20111.1 Python 量化炒股策略的基本组成 / 20211.1.1 初始化函数(initialize) / 20311.1.2 开盘前运行函数(before_market_open) / 20411.1.3 开盘时运行函数(market_open) / 20511.1.4 收盘后运行函数(after_market_close) / 20611.2 Python 量化炒股策略的设置函数 / 20611.2.1 设置基准函数set_benchmark() / 20611.2.2 设置佣金/ 印花税函数set_order_cost() / 20711.2.3 设置滑点函数set_slippage() / 20811.2.4 设置动态复权( 真实价格) 模式use_real_price / 20911.2.5 设置是否开启盘口撮合模式match_with_order_book / 20911.2.6 设置成交量比例order_volume_ratio / 20911.2.7 设置要操作的股票池函数set_universe() / 21011.3 Python 量化炒股策略的下单函数 / 21011.3.1 按股数下单函数 / 21011.3.2 目标股数下单函数 / 21111.3.3 按价值下单函数 / 21111.3.4 目标价值下单函数 / 21111.3.5 获取未完成订单函数 / 21211.3.6 撤单函数 / 21211.3.7 获取订单信息函数 / 21211.4 Python 量化炒股策略的常用对象 / 21311.4.1 订单对象Order / 21311.4.2 全局对象g / 21411.4.3 一次交易对象Trade / 21511.4.4 分时图盘面对象tick / 21511.4.5 回测对象Context / 21611.4.6 持有标的信息对象Position / 21711.4.7 子账户信息对象SubPortfolio / 21811.4.8 账户信息对象Portfolio / 21811.4.9 股票的数据对象SecurityUnitData / 21911.5 Python 量化炒股策略的日志log / 22011.5.1 设定log 级别 / 22011.5.2 log.info / 22011.6 Python 量化炒股策略的定时函数 / 22111.6.1 定时函数的定义及分类 / 22111.6.2 定时函数各项参数的意义 / 22111.6.3 定时函数的注意事项 / 22211.6.4 定时函数的实例 / 2232章 Python 量化炒股的获取数据函数 / 22512.1 获取多只股票单个数据字段函数history() / 22612.1.1 各项参数的意义 / 22612.1.2 利用函数history() 显示单只股票的信息 / 22812.1.3 利用函数history() 显示多只股票的开盘价信息 / 22912.2 获取一只股票多个数据字段函数attribute_history () / 23212.2.1 利用函数attribute_history () 显示股票的报价信息 / 23212.2.2 利用函数attribute_history () 显示股票满足条件的报价信息 / 23412.3 查询单个交易日账务数据函数get_fundamentals() / 23612.3.1 各项参数的意义 / 23612.3.2 query 的基本查询方式 / 23712.3.3 显示一只股票单个交易日的财务数据 / 23712.3.4 显示多只股票单个交易日的财务数据 / 23912.4 查询多个交易日账务数据函数get_fundamentals_continuously () / 24112.5 获取当前时间的股票数据函数get_current_data() / 24312.6 获取指数成分股代码函数get_index_stocks () / 24312.6.1 各项参数的意义 / 24412.6.2 显示某指数的成分股代码及应用 / 24512.7 获取指数成分股权重函数get_index_weights () / 24712.8 获取行业成分股代码函数get_industry_stocks() / 24812.8.1 各项参数的意义 / 24812.8.2 显示某行业的成分股代码及应用 / 24912.9 查询股票所属行业函数get_industry () / 25112.10 获取概念成分股代码函数get_concept_stocks() / 25312.10.1 各项参数的意义 / 25312.10.2 显示某概念板块的成分股代码及应用 / 25412.11 查询股票所属概念板块函数get_concept () / 25612.12 获取一只股票信息函数get_security_info () / 25712.13 获取龙虎榜数据函数get_billboard_list () / 25712.13.1 各项参数的意义 / 25812.13.2 get_billboard_list() 函数的应用实例 / 25812.14 获取限售解禁数据函数get_locked_shares () / 2593章 Python 量化炒股的财务因子选股 / 26113.1 初识财务因子选股 / 26213.2 成长类因子选股 / 26213.2.1 营业收入同比增长率(inc_revenue_year_on_year)选股 / 26313.2.2 营业收入环比增长率(inc_revenue_annual)选股 / 26613.2.3 净利润同比增长率(inc_net_profit_year_on_year)选股 / 26713.2.4 净利润环比增长率(inc_net_profit_annual)选股 / 26813.2.5 营业利润率(operation_profit_to_total_revenue)选股 / 27013.2.6 销售净利率(net_profit_margin)选股 / 27113.2.7 销售毛利率(gross_profit_margin)选股 / 27313.3 规模类因子选股 / 27413.3.1 总市值(market_cap)选股 / 27413.3.2 流通市值(circulating_market_cap)选股 / 27613.3.3 总股本(capitalization)选股 / 27813.3.4 流通股本(circulating_cap)选股 / 27913.4 价值类因子选股 / 28013.4.1 市净率(pb_ratio)选股 / 28113.4.2 市销率(ps_ratio)选股 / 28113.4.3 市现率(pcf_ratio)选股 / 28313.4.4 动态市盈率(pe_ratio)选股 / 28413.4.5 静态市盈率(pe_ratio_lyr)选股 / 28513.5 质量类因子选股 / 28713.5.1 净资产收益率(roe)选股 / 28713.5.2 总资产净利率(roa)选股 / 28813.6 财务因子量化选股的注意事项 / 2904章 Python 量化炒股的数据信息获取 / 29314.1 获取上市公司概况信息 / 29414.1.1 获取上市公司员工情况信息 / 29414.1.2 获取上市公司基本信息 / 29714.1.3 获取上市公司状态变动信息 / 29914.1.4 获取股票上市信息 / 30114.1.5 获取股票简称变更情况信息 / 30314.1.6 获取公司管理人员任职情况信息 / 30414.2 获取上市公司股东和股本信息 / 30514.2.1 获取上市公司的十大股东信息 / 30514.2.2 获取上市公司的十大流通股东信息 / 30814.2.3 获取股东股份质押信息 / 30914.2.4 获取股东股份冻结信息 / 31014.2.5 股东户数信息 / 31214.2.6 大股东减持信息 / 31314.2.7 上市公司股本变动信息 / 31414.3 获取上市公司分红送股数据信息 / 31514.4 获取沪深股市每日成交概况信息 / 3175章 Python 量化择时的技术指标函数 / 31915.1 量化择时概述 / 32015.2 趋向指标函数 / 32115.2.1 MACD 指标函数 / 32115.2.2 EMV 指标函数 / 32315.2.3 UOS 指标函数 / 32415.2.4 GDX 指标函数 / 32515.2.5 JS 指标函数 / 32715.2.6 MA 指标函数 / 32815.2.7 EXPMA 指标函数 / 32915.2.8 VMA 指标函数 / 33015.3 反趋向指标函数 / 33115.3.1 KD 指标函数 / 33115.3.2 MFI 指标函数 / 33315.3.3 RSI 指标函数 / 33415.3.4 OSC 指标函数 / 33515.3.5 WR 指标函数 / 33615.3.6 CCI 指标函数 / 33715.4 压力支撑指标函数 / 33815.4.1 BOLL 指标函数 / 33815.4.2 MIKE 指标函数 / 33915.4.3 XS 指标函数 / 34115.5 量价指标函数 / 34315.5.1 OBV 指标函数 / 34315.5.2 VOL 指标函数 / 34415.5.3 MASS 指标函数 / 34515.5.4 VR 指标函数 / 3466章 Python 量化炒股的统计数据图 / 34916.1 Seaborn 包概述 / 35016.2 单只股票的收益统计图 / 35016.2.1 查看单只股票的收盘价信息 / 35016.2.2 利用pct_change() 函数计算收益率情况 / 35116.2.3 利用dropna() 函数处理空值 / 35216.2.4 利用distplot() 函数绘制收益统计图 / 35316.2.5 显示宝钢股份(600019)近一年来的收益统计图 / 35516.3 股票的相关性分析图 / 35616.3.1 利用jointplot() 函数绘制两只股票的相关性分析图 / 35616.3.2 利用pairplot() 函数绘制多只股票的相关性分析图 / 3597章 Python 量化炒股策略的回测 / 36517.1 量化炒股策略回测的流程 / 36617.2 利用Python 编写量化炒股策略并回测 / 36717.2.1 量化炒股策略的编辑页面 / 36717.2.2 量化炒股策略的初始化函数 / 37017.2.3 量化炒股策略的单位时间调用函数 / 37017.2.4 量化炒股策略的回测参数设置 / 37117.2.5 量化炒股策略的回测详情 / 37417.3 量化炒股策略的风险指标 / 37717.3.1 阿尔法(Alpha) / 37717.3.2 贝塔(Beta) / 37817.3.3 夏普比率(Sharpe) / 37917.3.4 索提诺比率(Sortino) / 37917.3.5 信息比率(Information Ratio) / 38017.3.6 波动率(Volatility) / 38117.3.7 基准波动率(Benchmark Volatility) / 38217.3.8 优选回撤(Max Drawdown) / 3838章 Python 量化炒股策略的因子分析 / 38518.1 初识因子分析 / 38618.1.1 因子的类型 / 38618.1.2 因子分析的作用 / 38618.2 利用Python 代码实现因子分析 / 38618.2.1 因子分析中变量的含义 / 38718.2.2 在因子分析中可以使用的基础因子 / 38718.2.3 calc() 方法的参数及返回值 / 38918.3 新建因子并查看因子分析结果 / 38918.3.1 新建因子 / 38918.3.2 因子的收益分析 / 39218.3.3 因子的IC 分析 / 39518.3.4 因子的换手分析 / 39618.4 因子在研究和回测中的运用技巧 / 39718.4.1 calc_factors() 函数的语法格式 / 39818.4.2 因子在研究和回测中的运用实例 / 39818.5 基本面因子应用实例 / 3999章 Python 量化炒股策略实战案例 / 40319.1 均线量化炒股策略 / 40419.1.1 均线量化炒股策略的初始化函数 / 40419.1.2 均线量化炒股策略的单位时间调用函数 / 40519.1.3 均线量化炒股策略的回测 / 40519.2 多均线量化炒股策略 / 40619.2.1 多均线量化炒股策略的初始化函数 / 40719.2.2 多均线量化炒股策略的交易程序函数 / 40719.2.3 多均线量化炒股策略的回测 / 40819.3 随机指标量化炒股策略 / 40919.3.1 随机指标量化炒股策略的初始化函数 / 41019.3.2 随机指标量化炒股策略的开盘前运行函数 / 41019.3.3 随机指标量化炒股策略的开盘时运行函数 / 41119.3.4 随机指标量化炒股策略的收盘后运行函数 / 41119.3.5 随机指标量化炒股策略的回测 / 41219.4 布林通道线指标量化炒股策略 / 41219.4.1 布林通道线指标量化炒股策略的初始化函数 / 41319.4.2 布林通道线指标量化炒股策略的开盘前运行函数 / 41319.4.3 布林通道线指标量化炒股策略的开盘时运行函数 / 41419.4.4 布林通道线指标量化炒股策略的收盘后运行函数 / 41519.4.5 布林通道线指标量化炒股策略的回测 / 41519.5 多股票持仓均线量化炒股策略 / 41619.5.1 多股票持仓均线量化炒股策略的初始化函数 / 41619.5.2 多股票持仓均线量化炒股策略的单位时间调用函数 / 41719.5.3 多股票持仓均线量化炒股策略的回测 / 41819.6 白酒板块轮动量化炒股策略 / 41819.6.1 白酒板块轮动量化炒股策略的初始化函数 / 41919.6.2 白酒板块轮动量化炒股策略的选股函数 / 41919.6.3 白酒板块轮动量化炒股策略的交易函数 / 42019.6.4 白酒板块轮动量化炒股策略的回测 / 42019.7 多个小市值股票量化炒股策略 / 42119.7.1 多个小市值股票量化炒股策略的初始化函数 / 42119.7.2 多个小市值股票量化炒股策略的选股函数 / 42219.7.3 多个小市值股票量化炒股策略的过滤停牌股票函数 / 42219.7.4 多个小市值股票量化炒股策略的交易函数 / 42319.7.5 多个小市值股票量化炒股策略的回测 / 423
王征
多年行业投资经验,具备证券投资分析师,期货投资分析师,注册国家投资分析师等资格,曾就职于某大型券商担任行业研究员。可为个人投资者及机构提供分析、投资咨询,交易指导,理财培训等多方位的专业服务。擅长综合分析,动态决策,定点出击。
(1)任职期间多次在和讯、中国黄金网、青岛新闻网业内专业媒体发表股票、大宗商品的市场研究报告。
(2)半岛都市报《今理财》、青岛早报《财经》股票、大宗商品投资专栏撰稿人。