描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121368752丛书名: 大数据金融丛书
内容简介
*章为绪论,介绍量化投资及其相关概念,并论述回测操作方法和实盘操作方法及其相关软件,同时对R语言和Java的相关初级问题进行简单介绍。第二章是R语言基础与实战,介绍在R语言环境下,如何使用不同的方法获取不同来源的数据,并对数据的质量进行相关比较和分析。 第三章是金融数据获取与处理,介绍如何利用R语言实现通达信的相关选股功能,进一步介绍时间序列相关的模型在投资中的运用和简单的策略分析。 第四章是技术性投资策略,具体介绍R语言中以Quantstrat与PortfolioAnalytics为主的工具包系统,以及如何利用此系列的工具包构建策略,进行回测并优化投资组合。 第五章是量化投资策略框架,利用第四章的工具包系统,构建经典和前沿的策略,比如趋势策略、均值反转策略、人工神经网络策略、支持向量机策略和对冲策略。 第六章是系统性投资策略案例,主要介绍基于R语言的量化投资实盘系统及其操作过程。
目 录
第1章 绪论 1
1.1 投资与量化投资 2
1.2 量化投资产生与发展 25
1.3 量化投资工具选择 31
1.4 R语言及其集成开发环境 42
1.5 Java语言及其集成开发环境 60
第2章 R语言基础与实战 71
2.1 语法简介 72
2.2 R语言操作初探 89
2.3 工具包安装 101
2.4 帮助 112
2.5 R语言数据处理实战 119
第3章 金融数据获取与处理 162
3.1 利用quantmod工具包获取数据 163
3.2 下载网易链接数据 170
3.3 网络爬虫抓取新浪数据 182
3.4 获取通达信软件的股票数据 194
3.5 不同来源数据质量比较 206
3.6 获取上市公司财务报表数据 210
3.7 获取期货和外汇数据 211
3.8 金融终端系统化交易 221
第4章 技术性投资策略 224
4.1 相关性分析 225
4.2 排名统计分析 241
4.3 财务报表统计分析 252
4.4 统计模型分析 263
4.5 简单策略构建及分析 274
第5章 量化投资策略框架 292
5.1 量化回测系统——以quantstrat为核心的工具包 293
5.2 投资组合系统——以PortfolioAnalytics为核心的工具包 352
第6章 系统性投资策略案例 369
6.1 系统性策略案例——经典方法 370
6.2 系统性策略案例——前沿方法 416
6.3 投资组合策略案例 448
1.1 投资与量化投资 2
1.2 量化投资产生与发展 25
1.3 量化投资工具选择 31
1.4 R语言及其集成开发环境 42
1.5 Java语言及其集成开发环境 60
第2章 R语言基础与实战 71
2.1 语法简介 72
2.2 R语言操作初探 89
2.3 工具包安装 101
2.4 帮助 112
2.5 R语言数据处理实战 119
第3章 金融数据获取与处理 162
3.1 利用quantmod工具包获取数据 163
3.2 下载网易链接数据 170
3.3 网络爬虫抓取新浪数据 182
3.4 获取通达信软件的股票数据 194
3.5 不同来源数据质量比较 206
3.6 获取上市公司财务报表数据 210
3.7 获取期货和外汇数据 211
3.8 金融终端系统化交易 221
第4章 技术性投资策略 224
4.1 相关性分析 225
4.2 排名统计分析 241
4.3 财务报表统计分析 252
4.4 统计模型分析 263
4.5 简单策略构建及分析 274
第5章 量化投资策略框架 292
5.1 量化回测系统——以quantstrat为核心的工具包 293
5.2 投资组合系统——以PortfolioAnalytics为核心的工具包 352
第6章 系统性投资策略案例 369
6.1 系统性策略案例——经典方法 370
6.2 系统性策略案例——前沿方法 416
6.3 投资组合策略案例 448
前 言
前 言
Excellence is not a singular act,but a habit. You are what you repeatedly do.——Shaquille O’Neal
Excellence is not a singular act,but a habit. You are what you repeatedly do.——Shaquille O’Neal
顺境也好,逆境也好,人生就是一场对种种困难无尽无休的斗争,一场以寡敌众的战斗。——沙奎尔·奥尼尔
毫无疑问,谈到量化投资,市场上讨论最多的是MATLAB、R和Python这三种工具。例如,以MATLAB软件为基础的书籍有Quantitative Trading:How to Build Your Own Algorithmic Trading Business和Neural Networks in Finance:Gaining Predictive Edge in the Market;以R语言为基础的书籍有Quantitative Trading with R和Introduction to R for Quantitative Finance;也有以Python为基础的书籍,如Successful Algorithmic Trading。对这些书籍进行大致浏览,可以初步了解量化投资的基本模式。然而,深入的学习和实践,还需要选择软件。
对于一个量化投资入门者而言,最好选择有比较成熟且免费的一系列模块的某个软件。这些模块包括数据获取、策略构建和结果分析等完整的框架,这样可以依赖别人的框架,自己只负责掌握框架并开发策略。正好R语言能够满足上述要求。
然而,量化投资与一般的技术性投资存在区别。技术性投资只要会看线,掌握支撑位和突破位等技术,再积累经验,就能够获取相应的收益。但是,量化投资完全依赖于计算机和软件,所有这些都依赖于编程,都得从头开始。
虽然笔者是专业研究计量经济学出身,但对于软件其实并不是非常精通。通过几年不停的摸索,慢慢学会利用R语言抓取和处理数据,进行技术性投资分析,运用小波分析、支持向量机和人工神经网络等方法构建投资策略。有些策略sharpe值达到6甚至更高。一阵激动后,静下心来仔细分析发现,sharpe值高可能涉及未来函数、滑点、佣金和数据质量等因素。对策略和其基于的系统性框架进行分析后发现,幸亏用了别人成熟的模块,才避免了未来函数和佣金等一系列问题,要不然自己要走更多的弯路。因为构建系统框架不仅需要花时间和精力,而且很多问题都是凭个人无法解决的。现在回过头来看,这个过程其实就是量化投资的回测阶段。
由于回测过程中滑点和数据质量等问题无法彻底解决,实盘的sharpe值和收益如何,谁都说不准。因此,回测结果的sharpe值再高也没用,还是需要实盘验证。
毫无疑问,如果用R语言就能与实盘互通,而且能够自动化交易,那是最好的。研究良久,答案很令人失望。当然有一种退而求其次的办法,就是半自动化,用R语言回测,甚至买卖都可以用R连接交易API(如IBrokers和Wind),但无法实现完全自动化模式。不过既然是量化,就要想办法依靠程序。买卖时机和交易规模等全部依赖计算机去监测和执行,人工只是去回测策略结果优劣,并且挑选最优策略进行实盘化编程。
笔者经过一段时间的思索,结合自身的情况,最后决定依赖自身力量实盘操作。虽然实盘量化股票的软件有Wind和TradeStation,期货的量化软件有“开拓者”“文化财经”和“金字塔”等,但由于各种原因,尝试了都不满意。于是把眼光瞄准国外,市场上讨论得比较多的就是外汇平台mt4(mt5)、IBrokers,还有JForex外汇平台。经过比较发现,IBrokers和JForex是基于Java语言的,且平台可靠性高,因此是交易首选。
考虑到JForex编程相比IBrokers更简单,因此选择JForex入门。于是下决心努力学Java。其实这是一个很痛苦的过程,需要重新学习对象、类、方法,以及public、local、double和int等入门基础,更重要的是学习JForex框架和方法,一个基本IStrategy框架研究下来就是一个多月。在此过程中,不断申请模拟账号,基于JForex平台练习,过程中不断出现错误,深受打击,不断println处理bug,甚至一个错误调试几天才得以解决,慢慢地能够编写相应的策略。
现在一想,这个实盘操作过程是对的,Java基础知识简单了解就行,更多的是练习,模仿别人敲代码。同时,JForex平台有可视化结果,调试方便,比纯粹用Java-JDK和eclipse等接入IBrokers API编程会容易很多。
然而只会简单的实盘策略远远不够。因为要在投资中立于不败之地,除了会编写策略,更需要盈利策略,还要运用前沿的方法特别是机器学习算法。毫无疑问,路漫漫其修远兮。
回顾整个过程,笔者进入量化投资领域之后不断盲人摸象,从回测过渡到实盘操作,选择了相应的回测和实盘软件,这过程中走了不少弯路。从一个旁观者角度来看,其实这不正是进入量化领域的必经历程吗?
想起经济学者George McCandless,他把DSGE的入门过程总结成The ABCs of RBCs: An Introduction to Dynamic Macroeconomic Models。为何不“东施效颦”,把自己的经历总结一下?一方面对自己的量化经历做个归纳,以便走得更远;另一方面让后来者有所参考,尽量少走弯路,尽快走上量化投资的康庄大道。基于此,笔者把自己的量化投资经历记录下来,并命名为《量化投资基础、方法与策略——R语言实战篇》。考虑到篇幅,本书只研究R语言部分,实盘操作有待后续另起一篇。
本书特色
本书主要特色包括以下五点。
第一,本书大部分内容为原创,具有较强的实践性和针对性。本书从获取数据、处理数据到构建系统性策略都有所涉及,并对策略进行绩效分析和优化,这些是进入量化投资领域必须经历的过程,均为笔者量化投资研究和实践的经验总结。
第二,注重研究思路。本书基于R语言,但没有对R语言进行大篇幅知识性介绍,而是从量化投资的角度,分析如何利用R语言对实际问题进行分析。同时,在研究和编程过程中,重点介绍研究思路及其实现的不同方式,并从中选择一种方式解决问题。
第三,本书有针对R语言系统性的量化投资框架介绍。这部分虽有相关书籍涉及,但笔者至今并没有发现对投资框架进行系统和全面论述的相关研究。量化投资的核心是掌握量化投资系统框架,即如何运用quantstrat和PortfolioAnalytics系列工具包,进行从策略构建、指标生成、信号和规则构建到策略绩效分析的整个过程。这个过程在运行中特别容易出错,自信心备受打击,往往导致半途而废,系统性论述能够给学习者提供建设性意见和参考,从而减少策略构建过程中的阻力。
第四,名人名言和知识汇。这部分作为量化投资和R语言等系统性知识的介绍,以减少没有介绍R语言知识带来的缺陷。具体在每个章节里面穿插实际案例,如西蒙斯、巴菲特等人物及其经营公司的绩效,R语言工具包data.table、quantmod等工具包功能,外汇平台等各方面与R语言和投资相关的知识。
第五,思考与练习。每个章节后面都附有相应的思考和练习,方便读者更好地结合自身背景,对具体内容进行训练和巩固,并进一步解决实际投资中量化的问题。
本书适用群体
本书适用群体比较广泛,主要适用于三部分人群。
? 适用于量化投资入门者和专业化个体投资者,同时可以作为金融机构及对投资感兴趣的读者的实用指南。
? 可以作为R语言入门和提高的指导书。书中全部内容均基于R语言,注重编程中的思路和问题的解决方式,是其他R语言相关书籍所不具备的。
? 适合作为专业课程教材。本书是笔者讲授的“统计专业软件应用”和“量化投资实践”课程自编教程总结。除上述两门课程外,还可以作为“计量经济学”“时间序列分析”“证券投资分析”和“数据挖掘分析”等统计和金融课程的辅助参考资料。
致谢
我深知,本人只是代码和方法的搬运工。在学习R语言过程中,感激那些为R语言做出贡献的团队和个人开发者。特别是R语言专家Hadley Wickham,正是他,我们才有了更快、更方便的数据处理包(dplyr、tidyr、stringr、lubridate、readr和rvest等)和更直观的图形处理能力(ggplot2);还有量化分析团队RFinance,正是他们,我们才有了投资策略分析工具(quantstrat、quantmod、TTR、xts和blotter等)和投资组合分析工具(PortfolioAnalytics);还有Rmetrics Association团队,正是他们,我们才有了一系列以f开头的处理时间序列模型的工具包(如fArma、fAssets、fCopulae和fPortfolio等)。同时也感谢https://www.r-bloggers.com、https://stackoverflow.com和https://www.quora.com等网站,正是它们,让我们对R语言的前沿知识和相应的包都有了更多的了解,并为我们深入研究某个问题给出了建设性参考意见。
同时还要感谢2016级应用统计和经济统计学专业的部分同学,正是他们无私帮忙修改问题语句和错别字,才能使本书更快出版。
还要感谢家人的陪伴和不离不弃,虽然在生活中不断施加压力,但也正是这种压力,不断激励着我前行。
最后,希望本书能给读者带来实实在在的启发与思考,在快乐中学习量化投资和编程。毫无疑问,编写过程中错误难免,希望读者提出批评和指正。本书内容探讨、代码下载和运行等相关问题,请加QQ交流群:9949337,或通过邮箱huiyujuanjuan@
163.com和笔者一起探讨,共同进步。
作者:付志刚
对于一个量化投资入门者而言,最好选择有比较成熟且免费的一系列模块的某个软件。这些模块包括数据获取、策略构建和结果分析等完整的框架,这样可以依赖别人的框架,自己只负责掌握框架并开发策略。正好R语言能够满足上述要求。
然而,量化投资与一般的技术性投资存在区别。技术性投资只要会看线,掌握支撑位和突破位等技术,再积累经验,就能够获取相应的收益。但是,量化投资完全依赖于计算机和软件,所有这些都依赖于编程,都得从头开始。
虽然笔者是专业研究计量经济学出身,但对于软件其实并不是非常精通。通过几年不停的摸索,慢慢学会利用R语言抓取和处理数据,进行技术性投资分析,运用小波分析、支持向量机和人工神经网络等方法构建投资策略。有些策略sharpe值达到6甚至更高。一阵激动后,静下心来仔细分析发现,sharpe值高可能涉及未来函数、滑点、佣金和数据质量等因素。对策略和其基于的系统性框架进行分析后发现,幸亏用了别人成熟的模块,才避免了未来函数和佣金等一系列问题,要不然自己要走更多的弯路。因为构建系统框架不仅需要花时间和精力,而且很多问题都是凭个人无法解决的。现在回过头来看,这个过程其实就是量化投资的回测阶段。
由于回测过程中滑点和数据质量等问题无法彻底解决,实盘的sharpe值和收益如何,谁都说不准。因此,回测结果的sharpe值再高也没用,还是需要实盘验证。
毫无疑问,如果用R语言就能与实盘互通,而且能够自动化交易,那是最好的。研究良久,答案很令人失望。当然有一种退而求其次的办法,就是半自动化,用R语言回测,甚至买卖都可以用R连接交易API(如IBrokers和Wind),但无法实现完全自动化模式。不过既然是量化,就要想办法依靠程序。买卖时机和交易规模等全部依赖计算机去监测和执行,人工只是去回测策略结果优劣,并且挑选最优策略进行实盘化编程。
笔者经过一段时间的思索,结合自身的情况,最后决定依赖自身力量实盘操作。虽然实盘量化股票的软件有Wind和TradeStation,期货的量化软件有“开拓者”“文化财经”和“金字塔”等,但由于各种原因,尝试了都不满意。于是把眼光瞄准国外,市场上讨论得比较多的就是外汇平台mt4(mt5)、IBrokers,还有JForex外汇平台。经过比较发现,IBrokers和JForex是基于Java语言的,且平台可靠性高,因此是交易首选。
考虑到JForex编程相比IBrokers更简单,因此选择JForex入门。于是下决心努力学Java。其实这是一个很痛苦的过程,需要重新学习对象、类、方法,以及public、local、double和int等入门基础,更重要的是学习JForex框架和方法,一个基本IStrategy框架研究下来就是一个多月。在此过程中,不断申请模拟账号,基于JForex平台练习,过程中不断出现错误,深受打击,不断println处理bug,甚至一个错误调试几天才得以解决,慢慢地能够编写相应的策略。
现在一想,这个实盘操作过程是对的,Java基础知识简单了解就行,更多的是练习,模仿别人敲代码。同时,JForex平台有可视化结果,调试方便,比纯粹用Java-JDK和eclipse等接入IBrokers API编程会容易很多。
然而只会简单的实盘策略远远不够。因为要在投资中立于不败之地,除了会编写策略,更需要盈利策略,还要运用前沿的方法特别是机器学习算法。毫无疑问,路漫漫其修远兮。
回顾整个过程,笔者进入量化投资领域之后不断盲人摸象,从回测过渡到实盘操作,选择了相应的回测和实盘软件,这过程中走了不少弯路。从一个旁观者角度来看,其实这不正是进入量化领域的必经历程吗?
想起经济学者George McCandless,他把DSGE的入门过程总结成The ABCs of RBCs: An Introduction to Dynamic Macroeconomic Models。为何不“东施效颦”,把自己的经历总结一下?一方面对自己的量化经历做个归纳,以便走得更远;另一方面让后来者有所参考,尽量少走弯路,尽快走上量化投资的康庄大道。基于此,笔者把自己的量化投资经历记录下来,并命名为《量化投资基础、方法与策略——R语言实战篇》。考虑到篇幅,本书只研究R语言部分,实盘操作有待后续另起一篇。
本书特色
本书主要特色包括以下五点。
第一,本书大部分内容为原创,具有较强的实践性和针对性。本书从获取数据、处理数据到构建系统性策略都有所涉及,并对策略进行绩效分析和优化,这些是进入量化投资领域必须经历的过程,均为笔者量化投资研究和实践的经验总结。
第二,注重研究思路。本书基于R语言,但没有对R语言进行大篇幅知识性介绍,而是从量化投资的角度,分析如何利用R语言对实际问题进行分析。同时,在研究和编程过程中,重点介绍研究思路及其实现的不同方式,并从中选择一种方式解决问题。
第三,本书有针对R语言系统性的量化投资框架介绍。这部分虽有相关书籍涉及,但笔者至今并没有发现对投资框架进行系统和全面论述的相关研究。量化投资的核心是掌握量化投资系统框架,即如何运用quantstrat和PortfolioAnalytics系列工具包,进行从策略构建、指标生成、信号和规则构建到策略绩效分析的整个过程。这个过程在运行中特别容易出错,自信心备受打击,往往导致半途而废,系统性论述能够给学习者提供建设性意见和参考,从而减少策略构建过程中的阻力。
第四,名人名言和知识汇。这部分作为量化投资和R语言等系统性知识的介绍,以减少没有介绍R语言知识带来的缺陷。具体在每个章节里面穿插实际案例,如西蒙斯、巴菲特等人物及其经营公司的绩效,R语言工具包data.table、quantmod等工具包功能,外汇平台等各方面与R语言和投资相关的知识。
第五,思考与练习。每个章节后面都附有相应的思考和练习,方便读者更好地结合自身背景,对具体内容进行训练和巩固,并进一步解决实际投资中量化的问题。
本书适用群体
本书适用群体比较广泛,主要适用于三部分人群。
? 适用于量化投资入门者和专业化个体投资者,同时可以作为金融机构及对投资感兴趣的读者的实用指南。
? 可以作为R语言入门和提高的指导书。书中全部内容均基于R语言,注重编程中的思路和问题的解决方式,是其他R语言相关书籍所不具备的。
? 适合作为专业课程教材。本书是笔者讲授的“统计专业软件应用”和“量化投资实践”课程自编教程总结。除上述两门课程外,还可以作为“计量经济学”“时间序列分析”“证券投资分析”和“数据挖掘分析”等统计和金融课程的辅助参考资料。
致谢
我深知,本人只是代码和方法的搬运工。在学习R语言过程中,感激那些为R语言做出贡献的团队和个人开发者。特别是R语言专家Hadley Wickham,正是他,我们才有了更快、更方便的数据处理包(dplyr、tidyr、stringr、lubridate、readr和rvest等)和更直观的图形处理能力(ggplot2);还有量化分析团队RFinance,正是他们,我们才有了投资策略分析工具(quantstrat、quantmod、TTR、xts和blotter等)和投资组合分析工具(PortfolioAnalytics);还有Rmetrics Association团队,正是他们,我们才有了一系列以f开头的处理时间序列模型的工具包(如fArma、fAssets、fCopulae和fPortfolio等)。同时也感谢https://www.r-bloggers.com、https://stackoverflow.com和https://www.quora.com等网站,正是它们,让我们对R语言的前沿知识和相应的包都有了更多的了解,并为我们深入研究某个问题给出了建设性参考意见。
同时还要感谢2016级应用统计和经济统计学专业的部分同学,正是他们无私帮忙修改问题语句和错别字,才能使本书更快出版。
还要感谢家人的陪伴和不离不弃,虽然在生活中不断施加压力,但也正是这种压力,不断激励着我前行。
最后,希望本书能给读者带来实实在在的启发与思考,在快乐中学习量化投资和编程。毫无疑问,编写过程中错误难免,希望读者提出批评和指正。本书内容探讨、代码下载和运行等相关问题,请加QQ交流群:9949337,或通过邮箱huiyujuanjuan@
163.com和笔者一起探讨,共同进步。
作者:付志刚
评论
还没有评论。