◆ |
第1章 金融市场概述 |
◆ |
本章为全书开篇,主要介绍如何使用R语言做量化投资的思路和方法。量化投资是跨学科知识结合的一个方向,包括R语言技术层面的知识、基础学科的应用和金融市场的情况。R语言社区提供了丰富的金融工具包,可以让我们快速构建量化投资的体系结构。本章内容是以我个人的从业经验为基础,从数据的角度观察中国的金融市场,发现机会,找到风口。
问题
为什么用R语言进行量化投资?
引言
做数据分析的朋友,一定知道R语言。R语言是一门统计语言,在数据分析领域具有非常明显的优势。金融本身是重视数据的行业,而R的最大优势就是数据分析,所以将R语言与金融相结合,用R来做量化投资的策略,真的很配,不仅顺手而且方便,用了你就会知道。
本章以“R语言为量化而生”作为本书的开篇,主要强调了R语言在量化投资领域有着广阔的应用场景,而且是重要的量化投资工具。
R语言是一门面向数据的编程语言,早期只是在统计领域被统计学家所使用。近年来随着大数据技术的发展,以及R语言自身生态的快速壮大,不仅在统计领域,在各大行业领域中都能看到R语言的身影,包括互联网、数据科学、人工智能、机器学习、生物医疗、游戏、电子商务、全球地理科学、数据可视化等。
R语言不仅能把数据分析做好,而且能通过数据连接到我们每个人的日常生活,让我们能够有更多的思考。比如,去超市购物,你购买的东西会记录在你的购物小票中,如果把这些购物小票都收集起来,通过Apriori关联规则的频繁项集算法,就可以分析出你的购物习惯。
再比如,我们经常会收到各种推销的骚扰电话,有时候是卖房,有时候是银行贷款,有时候是股票推荐,有时候是代开发票,还有时候是“猜猜我是谁”,此时我们可以收集自己的通话记录,通过电话号码、号码注册位置、通话时长来分析一下,哪些是有用通话,哪些是浪费时间的通话,从而计算出我们每一天会浪费多少时间,通过Bayes算法把有效通话和无效通话进行二元分类,从而阻止骚扰电话的入侵。
如果我们不仅能够收集自己的通话记录,还能把亲戚朋友或更多人的通话记录都收集起来,组建成一个数据库,再把统计出来的骚扰电话统一标记,做成黑名单,然后把黑名单公开出来,就可以让更多的人免受骚扰电话的影响。
人们的衣食住行都会产生数据,产生数据的地方,就需要做数据分析。通过数据分析,可以提高生活的效率,为我们节约宝贵的个人时间。
在人类社会中,人们除了衣食住行的基本需求外,更多是对钱的需求。我们每天都会跟钱打交道,会有消费的需求,月底会有工资收入,当收入大于消费,资金积累到一定阶段的时候,我们就会有投资的需求。中国人的投资一般就几种,买房、买黄金、买股票、买保险、买理财。投资时,很多人是不理性的,心血来潮就买了,也不仔细观察行情,买完很容易被套住,像“中国大妈抢购黄金”“中国大妈是救市的主力军”等事件都一度被新闻媒体热炒。
在金融市场中最不缺的就是机会,不管投资什么,如果能在交易的时候多思考一下,结果说不定就会不一样。运用我们数据分析的知识和对金融市场规则的理解,通过R语言进行数据分析,抓住机会,就会让我们辛辛苦苦赚到的钱得到保值和增值。
R语言与其他编程语言的最大不同在于,R语言是面向数据的,这一点很重要,甚至影响了我们的思维模式。我写了10多年的Java程序,程序员的思维模式在我的脑子里根深蒂固。我习惯用面向对象的思想来建模,把现实世界中的物体、行为、连接都用面向对象的方法来表达。我也习惯了IT项目的开发模式,从架构设计到开发的自上而下的设计思路,再到完全由需求驱动的敏捷开发,以及为业务随需而变的开发路径。作为程序员,我有理想,我自认为技术能改变世界,而这一切都是程序化思维在影响着我。如果你还不熟悉什么是面向对象,请参考《R的极客理想——高级开发篇》第4章。
后来,当我接触了R语言,通过另一扇门理解世界的时候,我发现世界是不一样的。在没有程序的世界里,你可以通过文字来表达你做事的方法,你可以感性地认识世界,也可以让数据来说出这个世界的意义。你可以天天看新闻联播,了解国家大事;也可以看微博、朋友圈的爆料,及时了解身边的消息。这并不是程序员的思维,而是大众化社会的想法。在这个社会里,程序员只是小众群体。
改变世界的方法,除了技术还有别的,比如,政策、资本、市场、法律、人事等,从公司运作的层面看,似乎哪个都比技术更重要。也许程序员并不关心这些,但面对市场时,再牛的技术也会被其他因素所制约。
我经历过创业,一个很深刻的教训就是,要让自己跳出原有的思维定式,通过多维的视角看世界、看自己。R语言帮我打开了通过数据看世界的窗口。我的能力提升不再局限于如何把程序写得多么漂亮,或是在时间复杂度上用O(log(N))解决O(N^2)的问题,而是开始关注怎么收集数据,怎么提高数据质量,来解决实际的业务问题。当然,由于程序员与生俱来的职业强迫性,我也会要求自己熬夜一晚上把50行代码优化成40行。
由上可见,问题被转化了,虽说术业要有专攻,但作为一个有理想的极客,全面掌握跨领域的知识才是我们的目标。我创业时经常被投资人问到,做量化投资的项目有多难?招几个金融背景的人才,再招几个IT背景的人才,捣鼓个项目,不是很快就做出来了吗?其实不然,不同行业背景的人是很难交流和沟通的,尤其是金融和IT行业:一种是封闭不愿意分享,一种是开放毫无保留;一种是先把话说出来,一种是先把事情做起来;一种是所有人都要为我服务,一种是只专注于自己的兴趣。所以,如果不是能够跨界通吃的人,是做不好量化项目的。
我们要立志做个跨学科的人,这才是最核心的点,是不可被替代的。从IT技术出发,你需要扎实的编程功底及架构思想、科学的项目管理方法、严谨的产品设计逻辑;你还需要具备统计、数学等基础学科的知识,以及数据挖掘与机器学习的数据处理经验;最重要的,不管是量化投资或其他的领域,你要能结合业务,理解市场的规则(如图1-1所示)。
这听起来很难,实际上也确实很难!虽然很难,但不光是对你,对所有人都是这么难。只要你能坚持下来,一定能通过知识改变命运。
图1-1 跨界结合
做量化投资,R语言的优势在哪?R语言可以帮助我们从多种维度去理解量化投资。R语言本身就是我们需要掌握的IT技术,是一个需要编程的技术活,但却极大地降低了对编程的要求,短短20~30行R语言代码,已经能干很多事情了。R语言是面向数据的,可以让我们方便地对数据进行处理,同时对数学、统计等基础学科有丰富的函数支持,还提供多种数据挖掘和机器学习的算法库,让我们可以直接使用。
量化领域更是R语言的强项,有针对投资研究的包,有做回测分析的包,有做金融产品定价的包,有做投资组合优化的包,还有风险管理的包,涵盖了量化投资的方方面面,只是有些包的使用要针对中国市场的特点进行改进和优化。
R语言为量化投资提供了丰富的工具包,具体分类如下。与R语言相比,再也没有哪种语言会拥有这种支持了。
·数据管理:包括数据集抓取、存储、读取、时间序列、数据处理等,涉及的R包有zoo(时间序列对象)、xts(时间序列处理)、timeSeries(Rmetrics系时间序列对象)、timeDate(Rmetrics系时间序列处理)、data.table(数据处理)、quantmod(数据下载和图形可视化)、RQuantLib(QuantLib数据接口)、WindR(Wind数据接口)、RJDBC(数据库访问接口)、rhadoop(Hadoop访问接口)、rhive(Hive访问接口)、rredis(Redis访问接口)、rmongodb(MongoDB访问接口)、SparkR(Spark访问接口)、fImport(Rmetrics系数据访问接口)等。
·指标计算:包括金融市场的技术指标的各种计算方法,涉及的R包有TTR(技术指标)、TSA(时间序列计算)、urca(单位根检验)、fArma(Rmetrics系ARMA计算)、fAsianOptions(Rmetrics系亚洲期权定价)、fBasics(Rmetrics系计算工具)、fCopulae(Rmetrics系财务分析)、fExoticOptions(Rmetrics系期权计算)、fGarch(Rmetrics系Garch模型)、fNonlinear(Rmetrics系非线模型)、fOptions(Rmetrics系期权定价)、fRegression(Rmetrics系回归分析)、fUnitRoots(Rmetrics系单位根检验)等。
·回测交易:包括金融数据建模,并验证历史数据验证模型的可靠性,涉及的R包有FinancialInstrument(金融产品)、quantstrat(策略模型和回测)、blotter(账户管理)、fTrading(Rmetrics系交易分析)等。
·投资组合:对多策略或多模型进行管理和优化,涉及的R包有PortfolioAnalytics(组合分析和优化)、stockPortfolio(股票组合管理)、fAssets(Rmetrics系组合管理)等。
·风险管理:对持仓进行风险指标的计算和风险提示,涉及的R包有Performance-Analytics(风险分析)、fPortfolio(Rmetrics系组合优化)、fExtremes(Rmetrics系数据处理)等。
在《R的极客理想》系列图书中,分别对这些包做了介绍。请大家对照包名进行参考。
利用R语言的便利性,我们可以很容易地通过上面介绍的这些工具包做一个交易模型。构建一个简单的投资策略,甚至都不需要有太多的代码。
接下来,我就举例说明一下怎样把R语言提供的程序包结合在一起使用。按照下面的步骤做一个简单的交易策略,即基于移动平均线MACD做一个针对全球指数的投资方案。如果你还是金融新手,不了解MACD策略,那么请参考《R的极客理想——高级开发篇》的2.3节。
本文所使用的系统环境:
·Win1064bit
·R:3.2.3 x86_64-w64-mingw32/x64 b4bit
下面是一个简化的量化策略的研究过程,分为如下6步进行。
1)用quantmod包下载数据;
2)用zoo包和xts包进行数据格式标准化;
3)用TTR包进行模型计算;
4)用PerformanceAnalytics包进行指标风险;
5)用ggplot2包进行可视化输出;
6)最后,进行结果分析。
首先,我们要获取数据:个人用户可以通过互联网免费下载数据,专业机构通常都是买专业数据库。这里我们通过quantmod包从Yahoo财经下载数据。我选择了全球5个市场的指数进行比较,代码和名称对应关系如表1-1所示。
表1-1 指数名称和代码
下面我们通过R语言代码,来完成这个交易策略模型的构建。当然,这里只是为了说明整个过程,给大家一个直观的感觉,会省略对于策略的细节处理。
# 加载程序库 > library(quantmod) > library(TTR) > library(PerformanceAnalytics) > library(ggplot2) > library(scales) # 从Yahoo财经下载各全球指数数据 > options(stringsAsFactors = FALSE) > symbols<-c("^GSPC","^N225","^HSI","^STI","000001.SS") > suppressWarnings(getSymbols(symbols,src = "yahoo",from="2012-01-01")) [1] "GSPC" "N225" "HSI" "STI" "000001.SS" # 取指数价格调整后的数据,合并数据集 > df<-merge(GSPC$GSPC.Adjusted,HSI$HSI.Adjusted,N225$N225.Adjusted,STI$STI.Adjusted,`000001.SS`$`000001.SS.Adjusted`) # 对列重命名 > names(df)<-c("GSPC","HSI","N225","STI","SSE")
接下来,让我们看看数据是什么样子的,并画出全球指数,如图1-2所示。
# 查看数据前6行 > head(df) GSPC HSI N225 STI SSE 2012-01-03 1277.06 18877.41 NA 2688.36 NA 2012-01-04 1277.30 18727.31 8560.11 2711.02 2169.39 2012-01-05 1281.06 18813.41 8488.71 2713.02 2148.45 2012-01-06 1277.81 18593.06 8390.35 2715.59 2163.40 2012-01-09 1280.70 18865.72 NA 2691.28 2225.89 2012-01-10 1292.08 19004.28 8422.26 2719.83 2285.74 # 查看数据最后6行 > tail(df) GSPC HSI N225 STI SSE 2017-02-24 2367.34 23965.70 19283.54 3117.03 3253.43 2017-02-27 2369.73 23925.05 19107.47 3108.62 3228.66 2017-02-28 2363.64 23740.73 19118.99 3096.61 3241.73 2017-03-01 2395.96 23776.49 19393.54 3122.77 3246.93 2017-03-02 2381.92 23728.07 19564.80 3136.48 3230.03 2017-03-03 2383.12 23552.72 19469.17 3122.34 3218.31 # 查看数据类型,为xts > class(df) [1] "xts" "zoo"
整个数据集采用从2012年01月03日到2017年03月03日之间数据,数据为xts类型(xts类型是R语言中专用的时间序列类型)。关于xts的详细介绍,可以参考《R的极客理想——工具篇》的2.2节。
# 画出全球指数 > g<-ggplot(aes(x=Index,y=Value, colour=Series),data=fortify(df,melt=TRUE)) > g<-g+geom_line(size=1) > g<-g+scale_y_continuous(breaks = seq(1000,30000,4000)) > g<-g+ggtitle("Gloabel Index") > g
图1-2 全球指数
由于各国指数成立时间不同,成份股也不同,导致指数值有的很大,有的相对比较小,所以我们不能用指数大小来判断好坏。通常情况下,我们会转换成收益率进行比较,通过收益率进行度量后,所有标的便都是在同一个维度了。
# 全球指数的每日累计收益率 > ret_df<-Return.calculate(df, method="discrete") > chart.CumReturns(ret_df,legend.loc="topleft", main="Cumulative Daily Returns for Gloabel Index")
收益率越高,说明指数在这期间是表现越多的,我们越应该去投资。图1-3中,日经225(N225)指数大幅超越了其他指数,中国的上证综指(SSE)一起一落波动非常大,标普500(GSPC)走势稳健。
接下来计算指数的平均年化收益率,如果我们把钱一直投资在这些指数上面,那么每年的平均回报是多少呢?
> Return.annualized(ret_df) GSPC HSI N225 STI SSE Annualized Return 0.1133813 0.0619811 0.1927681 0.03696703 0.04817027
图1-3 全球指数累计收益率
这里日经指数(N225)年化回报率是最高的,每年平均有19.28%的年化收益率,与图1-3的累计收益率走势相符。而中国的上证综指(SSE)仅有4.82%的年化收益率,回报不算高,且波动太大。综合来看,标普500(GSPC)其实是投资的首选,11.34%年化收益率,平均波动率也不是太高,所以风险和收益都是相对不错的。
接下来,我们构建一个简单的MACD模型,通过MACD策略再对上面5个指数构建交易策略。
> # MACD 策略模型 > MACD<-function(dt,n=30){ + names(dt)<-c('close') + + # MACD移动平均均线 + dat<-na.locf(dt) + dat$ma<-SMA(dat$close,n) + + # 交易信号 + sig_buy<-which(dat$ma-dat$close>0) + sig_Sell<-which(dat$ma-dat$close<0) + sig_buy<-sig_buy[which(diff(sig_buy)>1)] + sig_Sell<-sig_Sell[which(diff(sig_Sell)>1)] + if(f irst(sig_Sell)<f irst(sig_buy)) sig_Sell<-sig_Sell[-1] + if(last(sig_Sell)<last(sig_buy)) sig_buy<-sig_buy[-length(sig_buy)] + + # 交易清单 + trade_dat<-do.call(rbind.data.frame, apply(cbind(sig_buy,sig_Sell),1,function(row){ + dt[row[1]:row[2],] + })) + + # 计算收益率 + ret_trade<-Return.calculate(trade_dat, method="discrete") + return(ret_trade) + } # MACD策略每日收益率 > macd_ret<-lapply(df, function(col) MACD(col,30)) # MACD策略,年化收益率 > t(do.call(rbind.data.frame, lapply(macd_ret,Return.annualized))) GSPC HSI N225 STI SSE close 0.2137435 0.2406476 0.2261996 0.01869112 0.2817241
我们写了一个MACD的策略函数,相当于建模的过程,函数的输出即策略的收益率。然后,我们把指数数据传给MACD()函数,经过计算输出策略收益率。最后,把策略收益率与纯指数收益率放到一起来进行对比,如表1-2所示。
表1-2 收益率对比
从表1-2中我们可以很明显地看出,用一根均线的MACD策略,平均年收益率会大幅优于纯指数的收益率,也就是说,如果我们这样交易,就可以赚到更多的钱。其实,这就是量化投资的思想,从数据中发现规律。可能上面的过程和代码会让你觉得很迷惑,怎么就能赚到钱了?别着急,本节只是本书的开篇,等你仔细阅读了全书,就能领悟到这里的玄机了。
上面的实例用40行左右的代码就完成了很多事情。如果要把整个操作都细分列举出来,包括数据采集、数据清洗、数据标准化、指标计算、数据建模、历史回测、投资组合构建、组合优化、计算结果评价、数据可视化等组成部分,其操作步骤如图1-4所示。
图1-4 量化程序操作步骤
要搭建一套量化交易的系统,主要就是完成图1-4所示的这些步骤。对于个人玩家来说,按照上面R语言代码的思路,就已经可以实现了。如果你想做得更好,不仅是个人玩,而是通过成立公司把系统做大做强,为更多的用户提供量化服务,那么你还需要有一整套的平台架构方案,同时配合你要做的金融业务。
R语言很强大,但R语言不是万能的。如果要搭建完整的量化投资平台,我们不仅需要R的建模部分,更多的还需要依赖IT部分来搭建起整套系统架构。下面我们先来了解一个量化投资平台需要哪些平台化的模块,如图1-5所示。
图1-5 量化交易平台系统架构
图1-5中各业务模块定义如下:
·数据采集系统:主要用于采集证券、期货等金融产品的交易数据,证券产品的财务数据,以及宏观指标数据和互联网数据等。
·数据平台系统:用于数据存储和数据访问,实现统一的数据访问的接口。
·在线研发系统:让开发者通过API进行在线策略开发,开发者可以直接使用平台的数据,策略提交后自动化完成策略回测。
·回测系统:对用户已提交的策略进行历史数据的回测,并进行打分和评估。
·策略系统:把回测验证后的策略,进行信号的可视化展示,在交易时间实现实时数据刷新,帮助开发者更直观地理解策略信号。
·优选系统:从回测已验证的策略中,选出符合一定条件的策略进行模拟交易。
·模拟交易系统:运行策略产生策略信号,进行模拟买卖。
·模拟会计系统:对模拟交易进行每日的会计核算。
·策略超市:从模拟会计系统选出符合一定条件的策略,放入策略超市,开放给投资人。
·投资组合:投资人从策略超市中选出多个策略,组建投资组合。
·实盘交易系统:根据投资组合中的策略信号,进行实盘的自动化交易。
·实盘会计系统:对实盘交易进行每日的会计核算。
·风控系统:对实盘的策略进行风险监控,一旦实盘策略遇到黑天鹅事件,将马上切断交易,并通知投资人调整投资组合。
·指标系统:以宏观数据为基础,让用户可以通过自定义的方式,创建自己理解的指标,并以个人的名义进行发布和分享。
·策略周刊:每周选出平台中公开的、表现比较好的策略,以报告形式进行发布和推广。
·BBS社区:在BBS社区进行沟通,解决用户在软件使用中的各种问题。
接下来我们换一个角度,从系统架构看,整套IT系统主要分为4大模块:数据部分、计算部分、展示部分、交易部分。我们把图1-5的内容转化为用技术架构来描述,如图1-6所示。
图1-6 技术架构
·数据部分主要包括2类数据,历史数据和实时数据。历史数据的特点是种类繁多,数据量巨大,用于回测和建模。实时数据的特点是及时性要求高,用于交易。数据部分主要通过Java来构建,以保证系统的可靠性、稳定性和高性能。
·计算部分主要是各种算法的应用,包括指标计算、历史回测、实时估值、数据挖掘等(这些是R语言擅长的,并且用Docker进行隔离,可以有效地分配计算资源)。计算部分主要通过R来完成。R让建模变得简单,几分钟就可以把想法落地变成模型。
·展示部分主要是把计算的结果在PC或手机上进行可视化,以友好的方式将收益和风险水平反馈给用户。展示部分主要是用Javascript来完成,可以让可视化有更好的体验。
·交易部分主要是对接交易所的交易通道,让我们可以用真钱去交易,让分析结果得到价值的体现,让技术得以变现。交易部分主要是用C++技术,以保证交易的及时性。
从整体的结构来看,R语言是大脑,是帮助我们决策的最核心的部分,而决策也是量化投资过程中最复杂的部分。量化投资本身是一个跨学科的领域,需要系统的、科学的方法才能把这些事情做好。
本书是一个起点,希望大家跟着我的思路,从R语言入手,体会R语言建模的乐趣,并真正地把技术变现。我认为R语言是非常好的一门语言,从量化投资的角度,我会一直推动R语言在中国的发展,并把它当成一项事业来做。同时,本书也会译成英文版在全球发行,让中国的技术走出去。加油!!
问题
算法,如何改变命运?
引言
近年来,随着大数据的飞跃式发展,各种大数据的衍生产品已经开始越来越深地影响我们的生活,例如,社交有腾讯大数据,购物有阿里大数据,搜索有百度大数据,出行有滴滴大数据,等等。当数据积累得越来越多,就需要算法来挖掘出数据的价值。特别是进入大数据时代后,算法显得越来越重要。
让死的数据变得有价值,就是算法的力量。进入全民大数据的时代后,数据已经不再是门槛儿,最重要的是算法,算法才能真正创造生产力。相应的,算法工程师的价值也会越来越大,但是你们真得发掘到自己的价值了吗?
大数据的兴起冲击着各行各业,带来机遇也带来挑战。可以说,没有数据你就没有核心价值。当有了数据作为基础,你还需要继续思考如何让数据变得有价值。2016年的投资市场很惨淡,唯有人工智能大火了一把。从深度挖掘(Deep Learning)技术在图像识别领域的精确识别,迭代决策树(GBDT)在数据挖掘算法比赛中频繁获奖,到AlphaGo在围棋领域打败人类选手,百度小度机器人在“最强大脑”的舞台上挑战人类脑王,等等,这些事件都是算法领域的突破。
算法,真的已经应用到了各行各业,在慢慢改变着人们的生活和习惯,比如图像识别、自动驾驶、用户行为、金融征信、量化投资等领域,都在发生着变化。
在图像识别领域,深度学习算法异军突起,其不仅可以进行准确的人脸识别、指纹识别,还可以进行复杂的图像对比。我深刻记得,在2016年的光谷人工智能大会上,西安电子科技大学公茂果教授分享的“深度神经网络稀疏特征学习与空时影像变化检测”主题,他利用图像识别技术,对比汶川地震前后的卫星照片和光感照片,准确地找到了受到地震影响最严重的区域,即震前和震后地貌发生变化最大的区域,快速地为救援队定位到最需要帮助的地点,解救伤者,投放救援物资。
在自动驾驶领域,可以通过识别路面的状况来实现自动驾驶、自动停车。Uber无人驾驶汽车已经在匹兹堡上路测试,自动驾驶汽车配备了各式传感器,包括雷达、激光扫描仪以及高分辨率摄像头,以便绘制周边环境的细节。自动驾驶汽车有望改善人类的生活质量,也可挽救百万人的生命,为人们提供更多的出行方便。5年前,我在听斯坦福大学Andrew Ng的机器学习公开课时,就被当时的自动驾驶视频介绍所震撼,科幻电影中的世界就快变成现实了。
在用户行为分析领域,人类有各种各样的行为和需求。衣食住行,吃喝玩乐,都是人最基本的行为。大多数人的行为是共性的,商家可以收集这些行为数据,通过数据挖掘算法找到人们行为共性的规律。根据用户的购物行为,商家可以为用户推荐喜欢的商品,这样就有了推荐系统;根据用户对信息的查询行为,可以发现用户对信息的需求,这样就有了搜索引擎;根据用户位置的变化,可以发现用户的出行需求,这样就有了地图应用;根据用户个性化的行为,可以给用户打上标签,用来标注用户的特征或身份,这样就有了用户画像。用户行为分析,让商家了解用户习惯,同时也让用户了解自己,具有巨大的商业价值。
在金融领域也有很多算法应用的场景。
在金融征信领域,传统信贷业务是银行的核心业务,但由于中国人口众多且小客户居多,银行无法负担为小客户服务的高成本,导致民间信贷的兴起。2014年年底互联网金融P2P开始爆发,但在贷款需求被满足的同时,却暴露出了违约风险。征信体系缺失,导致很多P2P公司坏账率很高,到2016年年底P2P公司跑路的多达数千家。征信需求,变得非常迫切。比如,某个人想买车但现金不够,这时就需要进行贷款。商家给用户进行贷款时,通过信用风险的评级就能判断出这个用户的还款能力,从而决定贷给他多少钱,以什么周期还款,从而减少违约风险。支付宝的芝麻信用分,是目前被市场一致认可的信用评分模型。
量化投资领域,是我认为的所有领域中最复杂、最具有挑战性,同时也最有意思的领域。通过量化算法模型实现赚钱,这是最容易变现的一种方法。在金融投资领域中,有各式各样的数据可以反映各种金融市场的规则,有宏观数据、经济数据、股票数据、债券数据、期货数据、新闻数据以及情绪数据等。金融宽客(Quant)通过分析各式各样的数据,判断出国家的经济形势和个股的走势,结合投资组合算法,从而实现投资的盈利。
看到这里,我想问问大家,结合脑子里那些聪明的想法,你们有没有被金融行业的魅力撩动呢?
上面各个行业的算法应用都有很广阔的应用前景。作为一个算法的研究者,我们究竟投身到哪个行业更好呢?
这其实要从多个方面进行考虑,我们的目标是个人价值最大化。那么,你要选择一个自己能够接触到的、完全竞争的、短流程的渠道,利用你的算法技术和对业务的理解实现变现。
其实,满足个人变现的渠道非常有限,你很难通过一个图像识别的算法直接面向市场进行收钱,你需要有一个承载的产品,而产品研发的过程是非常漫长的。同样的,自动驾驶算法需要汽车生产厂商的验证;用户行为分析算法,需要电子商务平台以用户购买行为进行验证。
金融交易,是具备上述特征的一个渠道,你可以用个人账号在中国金融二级市场开户,完成交易的过程。这种方式不涉及太多中间环节,你可以获得交易所的数据,自己编写算法模型,然后用自己的钱去交易,完全自己把握。只要算法有稳定的收益率,就可以赚到钱。这种变现方法,其实就是量化投资,从金融的角度入手才是最靠谱的一种变现方法。
作为IT人,我们懂编程、懂算法,只要再了解金融市场的规则,就能去金融市场“抢钱”了。中国的金融二级投资交易市场是一个不成熟的市场。在市场中,每天都存在着大量的交易机会,也会有“乌龙指”的情况。量化投资的技术,可以帮助我们发现这些由于信息不对称出现的机会,赚取超额的收益。
图1-7 金融!金融!金融!
那么到底如何做量化投资呢?
下面举个例子,一个私募基金,募集了1亿资金准备进入金融市场。基金经理决定按照投资组合的建模思路,对各类金融资产进行组合配置。图1-8反应了各类资产以均值—方差的标准来创建投资组合,符合资本资产定价模型(CAPM)的原理。关于资本资产定价模型详细介绍,请参考2.1节。
图1-8 投资组合,收益方差
图1-8中,x轴为收益率的标准差,y轴为收益率的均值,图中的点构建了可投资区域,每个点代表一个可投资产品,而每条虚线连接的点的集合就是一个有效的投资组合。
对于图中近百个点来说,假设每次要配置5种资产做投资组合,那么就是75287520种组合方法;如果配置10种资产,可选方案就是一个天文数字了。
我可以用R语言来计算一下投资组合的数量。
# 100个选5个,做组合 > choose(100,5) [1] 75287520 # 100个选10个,做组合 > choose(100,10) [1] 1.731031e+13
对于金融市场来说,有非常多的金融资产可供我们选择。中国A股有股票3000多只、基金2000多只、债券3000多只、期货100多只,还有大综商品、货币市场产品、汇率产品、海外投资市场等。如果把这么多种资产进行组合,将有无限多的投资组合可供选择,是一个无限大的计算量。因此,我们需要利用算法进行组合优化,从而找到市场上最优的投资组合。算法本身,才是最能体现价值的部分。
那么传统的基金是如何进行投资组合的呢?大多都是靠投资经理的主观投资经验来完成的。在金融市场里,每只基金都配置了不同的资产做组合。我们这里以华夏成长基金为例,看看它的投资组合是如何配置的。华夏成长(000001.OF)基金是股债混合型的。以下数据来源于万得资讯,2017年2月8日。
从图1-9华夏成长(000001.OF)的业绩表现来看,这只基金最辉煌的时期是在2006年~2007年,连续6个月回报101.49%,但最近1年表现就比较差,不仅落后于沪深300指数,整体排名也都在后面。今年以来收益率0.58%,同类排名144/507;1年收益率-1.45%,同类排名400/487;3年收益率11.67%,同类排名378/426;5年收益率39.96%,同类排名290/352。
图1-9 华夏成长(000001.OF)业绩表现
我们再来看一下这只基金的组合成分,主要是股票和债券。
债券占比(见表1-3):
表1-3 债券占比
股票占比(见表1-4):
表1-4 股票占比
之前都是基金经理从市场上几千只股票和债券中进行选择,并配置不同的权重,现在我们用算法一样也可以做到,并且用算法模型构建的组合业绩可能会更好。如果我们用算法模型可以取代年薪几百万的基金经理的工作,那么我们就能够获得这个收益,最终实现个人价值,从而用算法改变命运。所以,通过金融变现才是最靠谱的。
快来加入用算法改变命运的队伍吧,让知识变成财富!
问题
技术大牛如何寻找下一个风口?
引言
从大学毕业到现在,我做了10年IT编程的工作,从程序员到架构师,一路走来感触颇多,但我一直坚持用程序改变世界的想法。虽然自己对于编程的理解有一定深度,但随着年龄的增长,越来越觉得力不从心。从早期的Java编程,1天写5000行的代码还精神头十足,到现在用R语言,1周写500行代码,更多会用来思考。代码虽然越写越少,但知识却得以积累。
不知不觉地就过了30岁,也经历过一些事,开过公司,拉过风投,出了几本书,在大学里教过课,带过自己的团队,也在家里做过饭。创业最后虽然失败了,但失败的原因并不在技术,而在于对一个领域的认知和对“人性”的理解。
寻找下一个风口,是每一个不甘于现状、想要拼搏的年轻人所追逐的目标。我从2013年开始准备创业,在家技术储备将近2年的时间。我把创业目标定位在量化投资:在技术上,把R、Nodejs、Java、Hadoop一路打通;在知识上,补充数学、统计、金融、计量等基础学科理论;在业务上,开通所有交易账户,用真钱去实操交易,个人能接触到的交易市场,我基本都玩过。
随着中国股市从2014年底开始一路牛气冲天,仅8个月就从2300点一路冲到了5100多点。我也算是赶着潮流处在了风口浪尖之上,顺利地拿到了第一笔投资。这就是风口效应,你只要站在风口上,就会获得极大的机会。
可是好景不长,2015年下半年股票市场开始崩盘,经历股市危机1.0和2.0后,2016年年初全球经济危机突然就来了,两次熔断造成了股市危机3.0的沉痛打击,让股民再也不敢进入这个市场。股民大都惨淡收场,私募也在各种监管下越来越难,市场泡沫迅速地被打爆,创业就这么失败了。
图1-10为上证综指在股灾期间的日K线走势情况。
图1-10 上证综指股灾期间日K线
站在风口时,你会被吹上天。一旦风向变了,而你还没做好准备,你就会掉下来摔得很惨,我就是那个摔下来的人。
近年来由资本推动的互联网行业,带来了各种商业模式的蓬勃发展。互联网风口一直在轮动,财务自由的牛人比比皆是。从2011年兴起的社交网络,代表公司为人人网、开心网、新浪微博;再到后面的团购,经历百团大战洗礼之后,活下来的并不多,代表公司为美团、大众点评团、百度糯米等;紧接着互联网金融P2P如雨后春笋般出现,而1年后又数千家跑路;继团购之后O2O继续炒作,但没能度过资本的寒冬相继死掉;再到2016年VR、直播、人工智能、共享单车等,一波接一波继续被资本推动。
2016年整个互联网和移动互联经营惨淡,除了不断在新闻中看到相关的负面报道,朋友圈中也可以看到一大串关门公司的名单。互联网行业不仅停止了疯狂地扩张,连电梯中的广告都没有了创业公司的身影。从中证移动互联指数(399970)能够清楚地看出国内互联网行业的市场状况,对比2014年年底到2015年的大牛市,2016年简直是惨不忍睹。
图1-11为中证移动互联指数(399970)周K线截图,方框区域为2016年的指数走势。
图1-11 中证移动互联指数(399970)周K线
从2015年下半年开始,创业投资明显减少,而面对资本寒冬进行的并购和重组逐渐增加。据统计2016年上半年中国互联网行业共完成了260起并购交易,如美团和大众点评,58同城与赶集,滴滴、快的和Uber中国,携程和去哪儿,世纪佳缘和百合网,蘑菇街和美丽说。这些并购事件标志着整个互联网行业正在洗牌,移动互联、O2O、移动游戏、移动视频,都已经进入了成熟期。
有很多大牛在互联网行业洗牌的时候获得了财务自由,那么我们应该如何抓住下一个风口呢?
所有面向C端用户的互联网通道都已经被行业大佬封死了,创业公司很难再有突破。目前形成了几大格局,包括原有的BAT阵营,以及京东、小米等第二梯队。依托于互联网创业已经有越来越难的趋势,创业的方向已经不再是原来单打独斗的模式,你要依靠大的平台,为平台提供个性化的服务。未来会越来越生态化,也就是各行各业都术业有专攻。
在央视财经《对话》节目上,各位互联网界的大佬给出了下一个风口是什么的答案。
刘强东说:“风口可能不是在互联网,而是在传统行业。”
李彦宏说:“互联网即将迎来发展的下一幕,而推动其发展的动力不是大数据,也不是云计算,而是人工智能。”
马云说:“数据将会是未来创新社会最重要的生产资料,人类将会离不开数据,我们必须在数据技术的投入和发展上,不惜一切投入发展。”
马化腾更是一口气给出了一个长长的,不加标点符号的回答。
马化腾:“我可以用一句话把他们全部串起来——未来是传统行业利用互联网技术在云端用人工智能的方式处理大数据。”
所有大佬都在说人工智能,人工智能就是下一个风口!
技术成熟度曲线,又称光环曲线,炒作周期,指的是企业用来评估新科技的可见度,利用时间轴与市面上的可见度决定要不要采用新科技的一种工具。技术成熟度曲线分成几个阶段,包括科技诞生的促动期,过高期望的峰值期,泡沫化的低谷期,稳步爬升的光明期,实质生产的高峰期五个阶段。
2016年7月,Gartner公司发布了年度新兴技术成熟度曲线。根据Gartner技术成熟曲线,有三个趋势非常突出:一是感知智能机器时代来临;二是透明的身临其境的体验更加优化;三是平台革命正在酝酿。
感知智能机器,是处理大数据的计算能力和智能算法的高效整合技术,使企业能够充分利用数据,面对复杂的需求,解决前人无法解决的问题。这个领域包括:智能微尘、机器学习、虚拟个人助理、认知专家顾问、智能数据挖掘、智能工作空间、会话用户界面、智能机器人、商业无人机、自动驾驶汽车、自然语言问答、个人分析、企业分类法及自然管理、数据经纪人PaaS和情境经纪等方向。
图1-12 2016年Gartner技术成熟曲线
接下来,我们以金融行业为例,FinTech=金融+科技。在互联网金融的创新阶段,当单一的技术驱动型公司或金融驱动型公司在无法提高创新驱动力的时候,金融与科技的结合便成为公司新的发展方向。一时间,大家都开始喊转型,有人做交易,有人做投研,有人做跟单,有人做配资,有人做牛人直播,有人做投资组合,有人做舆情监控,等等。
虽然,2016年整个大环境不好,但是从心态上大家都在积累修炼内功,坚持把寒冬抗过去,这需要我们有更理性的定位需求,耐心做技术的积累,提高人员的认知能力,特别是让技术人员去理解金融。理解金融非常重要,这不是“互联网+金融”,而是“金融+互联网”,即用互联网的技术提高金融的效率,用互联网的连接打通与客户的沟通,从而加速金融的创新。
如今,从人工智能如何辅助量化交易到智能投资顾问,FinTech已经深入金融领域。
传统投资顾问服务,是以人工方式进行的,要雇佣大量理财经理,付出很高的人力成本,所以进入的门槛相对较高,只面向高净值人士开设,如银行中私人银行的业务。
智能投资顾问,则是用人工智能算法来为用户提供投资建议,以最少的人工干涉方式进行投资组合管理,成本降低,所以不再是高净值人士的专属服务。智能投资顾用采用机器学习的方法进行建模,运用人工智能的技术对大量客户进行财富画像,为每一位客户提供量身定制的资产管理投资方案。2016年12月,招商银行推出了“摩羯智投”应用,揭开了银行在人工智能领域竞争的序幕。
不仅是银行,蚂蚁金服、京东、腾讯、百度,还有更多的互联网创业公司都在向这个方向发展。对于创业的风口来说,当大的机构进入时,创业公司根本没有拼的能力。如果我们换一个思路,当大的机构都在抢一个方向时,to B业务就是创业公司的机会。
有句老生常谈的话:“你是想做淘金的,还是卖水的?”看准机会,认清自己,找到目标,努力一把,我们还年轻,还有机会。
问题
国内有哪些量化投资工具?
引言
中国市场是一个很奇妙的市场,受市场的影响,更受政策的影响。股市上涨的时候,配资、杠杆、高频,什么都可以有;当股市不好的时候,新股停、股指期货停、融券停、熔断二次千股跌停。
相对于金融二级市场的特殊秩序,各种交易工具也是五花八门。本节就来聊聊中国市场的各种量化交易工具。
在二级市场做交易,我们首先要了解市场的规则和交易工具的使用方法,下面将逐一介绍可以使用的交易工具。
由于金融市场的独立性,我们通常所说的量化交易可以分为证券交易和期货交易。通过证券账户,我们可以交易股票、债券、回购、开放式基金、分级基金、质押、融资融券、大宗商品、券商理财等。通过期货账户,我们可以交易商品期货和金融期货。
在中国玩量化,主要就是期货、股票、债券、基金的量化交易。对于个人账户来说,只有期货是可以实现全自动化量化交易的,而证券类金融产品由于多种限制很难实现全自动化,一般情况下只有机构账户才有交易接口,所以证券交易的量化,大多都停留在量化选股和回测上面。
图1-13完整地介绍了我们做量化投资时经常要使用的工具,包括自动化交易和手工交易两个部分。
图1-13 金融市场交易工具
由于图1-13比较复杂,我们需要把图分成几个部分单独进行说明。
A:从中间的交易所数据开始看,所有的数据都来源于交易所,原始数据包括价格、交易量、买方报价、卖方报价、竞价、资金流入、资金流出等。
B:当你在证券公司或期货公司开户后,券商会给你提供证券客户端工具或期货客户端工具,利用券商提供的客户端就能够进行手工下单的交易了。如果你觉得券商的客户端不太好用,可以自己下载同花顺、大智慧、东方财富、万得财经等第三方辅助交易工具,把你的券商账户配置进去,用这些第三方的交易工具来交易。第三方的辅助交易工具一般都会有更好的操作界面和选股推荐,还有更多的人工服务,帮助散户快速了解市场。但也存在很大的安全隐患,就是你的个人信息会被第三方拿到,有被泄露的风险。
C:期货市场是目前程序化水平最高的市场,主要是因为期货开放的程序化接口CTP。你只要开通了期货账户,就可以马上申请开通期货的CTP交易接口。通过CTP接口,你可以免费获得期货的实时行情,同时可以自己编程实现程序化下单,这样就打通了期货全自动化交易的流程。
D:期货交易有5个主要的量化交易软件,分别是文华财经、MultiCharts(MC)、交易开拓者(TB)、金字塔决策交易系统和TradeStation(TS)。这5个软件已经封装了行情、交易、回测、账户管理、策略模板等功能,同时提供独立的脚本语言,让开发者可以编写自己的交易策略模型。利用这类软件在特定的环境进行脚本开发,是非常快速、方便的。开发完成的脚本,如果回测效果非常好,不用修改代码直接就可以进行实盘交易了。在市场程序化成熟度还不太高的时候,很多小私募和期货公司大量使用这种方法做量化交易是非常有效的。
E:证券市场的程序化交易,基本都被政策所限制。虽然有程序化的交易通道,但都属于机构专用,一般都需要3千万以上资金的机构用户才能申请。自2015年股市过山车似的大起大落之后,证监会直接叫停了所有新基金的程序化交易通道,当前市场上能够进行自动化交易的机构,应该都是在2015年5月之前成立的基金产品。所以,高门槛和严监管,让证券自动化难以实现。
F:从2015年开始,很多互联网金融平台兴起,开始利用互联网技术优势,抢占金融的市场。互联网金融方向,除了P2P和支付,另外一个分支就是量化投资。目前国内在线编程交易模型比较主流的平台就是聚宽(JoinQuant)、优矿(uqer)、米筐(RiceQuant)。这种模式主要模仿的是国外Quantopian(https://www.quantopian.com),利用互联网来打破金融量化的壁垒,让外部知识来冲击原有的金融领域固化的投资思路,通过互联网的群体来贡献新的策略,转而进行投资赚钱。我在2015年创业也是做的这个模式,当然我是利用R语言来作为算法引擎,其他的平台大多都是基于Python的。关于编程语言的问题,我就不争论了,各有各的好。
G:还有一种最专业的玩法,就是什么平台都不用。直接获得数据后,自己开发程序做回测、做交易、做会计、做风控……交易的原始数据主要是交易所来提供,但是个人或公司和交易所是无法对话的,中间就产生了数据服务商。万得已经是中国最大的金融付费数据的服务商了,聚源同样提供数据服务,先被恒生收购,恒生后又被阿里收购,应用是阿里系在金融的布局。另外,还有一种免费的数据获得方法,就是从新浪财经免费抓取。网上有各种程序教你怎么爬取数据,后来有人把互联网爬取数据的方法统一写成了一个Python的库,就是TuShare。你可以利用这个库,爬取到比较全的金融数据。
我想说的是,做专业的事情,还是要用专业的数据库才会稳妥,特别是和钱有关的事情。互联网上的数据虽然免费,但你写程序爬取、网络速度、数据结构、数据更新等操作,维护的成本也很高,免费的数据经常还会出点错,多一行或少一行。如果你依靠用免费的数据所实现的策略,自己都不一定敢放钱去交易。
H:一旦我们获得了标准化的市场数据,后面就好办了。我可以用R做个回归分析,或者做个基于MACD的趋势分析,再设计一个alpha的对冲策略,想怎么干都行了。这种方式是最灵活的,你不需要受到市场或者工具的限制,完全自己掌握。我觉得随着量化的成熟度越来越高,这种通过数据自建交易平台的模式会越来越多,这才是核心知识、核心技术。而且平台化的通用策略模型,最终可能会在完全竞争的市场中成为历史。当然,这会需要很多年的时间!
J:其实量化投资的目标,只有两个,一个是回测,一个是交易。我们要根据自己的目标来选择工具,你是想交易赚钱,还是想通过回测发现市场机会,或者两个都想。目标明确,选择顺手的工具,才能让你事半功倍。
我们把框架思路讲完了,下面就分别详细介绍一下列举的这些工具怎么用吧。
要进行证券或期货的交易,首先就需要去券商开户,然后由券商提供给你交易客户端。每个券商的软件操作界面都是不一样的。
1.证券交易客户端
股民在证券公司进行开户,证券公司一般要负责向用户进行股票或期货交易的入门培训,并告知风险,同时帮助股民开通交易所账号,打通银行的资金通道,进行银证转账等。
每个证券公司,都有一些自己的特色,比如股票交易的手续费打折、为融券操作提供足够多的券、远程开户等。记得2010年的时候,万分之七点五的股票佣金已经很低了,到2016年随着互联网的冲击,互联网券商可以给出的佣金是万分之二。现在更是到了底线,可见券商这块已经没有利润了。
有的证券公司,提供投票推荐服务,给你选股的建议。有的证券公司,理财类的金融产品做得很好,不仅风险低,而且还有不错的回报。有的证券公司,主打服务,定期安排知识讲座,并与股民互动。在2000年以前个人计算机不发达的时代,大家都去股票大厅,一起交流。现在基本都在家里交易,年轻人没有时间长期盯盘,一般都通过手机来交易。
关于证券开户的问题,上海证券交易所只能开一个账户,深证证券交易所可以开多个账户。到2014年年底,股市开始活跃时,证监会放开了开户许可,不再对开户的数量进行限制,你可以在每家券商都开户。后来,在股市经历2015年的三起三落,以及2016年的持续震荡后,证监会从政策上又把开户数量限制为3个。这大概就是政策大于市场的体现,也许隐含着什么信号。我自己开了3个证券账户,有一个账户手续费最便宜,有一个账户是最早开通的,还有一个账户提供上门服务。
证券的客户端截图如下,分别是如图1-14所示的招商证券客户端和如图1-15所示的华泰证券客户端。
图1-14 招商证券客户端
图1-15 华泰证券客户端
证券客户端的操作界面上,通常都会分为两个部分,行情部分和账号与交易部分。行情部分一般都由第三方软件公司提供,主要的两个行情软件供应商分别是通达信和同花顺。招商证券客户端的行情界面是通达信的,而华泰证券客户端的提供商是同花顺的。账号与交易部分一般都是券商自己制定的,比较个性化,每个券商的交易部分的界面,都是完全不同的。招商证券客户端,交易部分的界面默认是嵌入在行情界面下方的。而华泰证券客户端,交易部分是另外一个独立软件程序,与行情界面是完全分离的。
第三方证券客户端软件,包括个人用户版本大智慧、同花顺、东方财富,以及专业用户版本的万得财经等。
·大智慧官方推行的理念:更专业的策略方案,更安全的风控策略,更权威的投资平台。
·同花顺官方推行的理念:让投资变得更简单,人工智能+炒股软件。
·万得财经官方推行的理念:全方位洞察金融咨询,覆盖全球金融市场的数据与信息。
从软件的界面设计以及操作感觉,就能体会到每个软件的差异化定位和市场侧重点。下面分别是第三方客户端的截图:大智慧客户端(图1-16)、同花顺客户端(图1-17)、万得财经客户端(图1-18)。
图1-16 大智慧客户端
不管是券商的客户端,还是第三方的客户端,总有一款是最适合你的。
2.期货交易客户端
如果做期货,你需要下载期货公司提供的客户端软件。如图1-19所示是国信期货的客户端软件界面,界面设计得中规中矩,交易时需要的视图都有,就是用户体验不够友好。
图1-17 同花顺客户端
图1-18 万得财经客户端
另外,还有一款第三方期货软件——快期(如图1-20所示),是比较受大家欢迎的。快期,一切以快速交易为核心,所有功能都围绕着快速交易而设置。快期提供界面自由配置、多种下单板选择、报价块下单、鼠标快速下单、键盘快速下单、快速撤单、自动开平、账户交易报告等功能。通过界面的自由配置,客户可以调配出符合自己使用习惯的界面布局,提高客户使用的舒适度。
图1-19 国信期货客户端
图1-20 快期客户端
如果你想做量化投资,数据是非常关键的。在中国,有很多数据服务商可以供我们选择,有收费的数据,也有免费的数据。
1.收费数据服务
万得提供了中国最全面的财经数据库,但是收费也是相当高的。除了万得,还有聚源数据库,巨灵金融数据库,财汇数据库,朝阳永续数据库,中诚信数据库等。当然每种数据库都有自己的定位,有综合的、有侧重宏观数据的、有侧重交易所数据的、有侧重债券数据的、有侧重私募数据的、也有侧重VC/PE数据的。如果你对这一大堆数据库摸不着头脑的话,还可以选择第三方数据平台,比如通联数据,通过平台来发现你需要的数据,再进行购买和使用。
图1-21 专业金融数据库
2.免费数据服务
互联网上也存在很多免费金融数据。新浪财经很早就开始提供免费的数据接口,供互联网用户下载股票行情。R语言中集成的quantmod包,可以从Yahoo财经抓取数据,本书中的很多例子都是用这种方式做的。随着互联网化的普及,很多网站都提供实时的交易大盘。一般的,只要是能在网页上看到的内容,数据都是可以爬到的。大多数网页都是通过Ajax技术传输JSON格式数据,如果你熟悉Javascript语言,通过chrome浏览器看一下代码怎么写的,很容易就能把数据爬下来,不过自己来维护程序,还是比较麻烦的。
TuShare工具包,解决了爬数据的问题。你可以直接使用TuShare工具包来爬取互联网数据,这样就省去了自己维护爬虫的工作,能更加专注于数据分析。
最后,还有一种中国特色的数据方案,就是去就淘宝买数据。数据价格也很便宜,是个人可以接受的,而且质量比从互联网爬取更有保证。
图1-22 TuShare工具包
聚宽(JoinQuant)、米筐(RiceQuant)、优矿(Uqer),是从互联网兴起的3个做在线策略研发的平台。如果你还是量化小白,可以先去这3个平台上玩一下,在每个平台社区中都有不少的好东西,可以让自己快速了解量化是怎么做的。各种量化模拟的交易大赛,也能让你快速结实同道中人,对于新手起步还是很好的。当你过了入门期,随着对量化的理解和实践经验的提升,后面的修行就需要以专业化的知识作为积累,比如本书就比较适合了。
图1-23至图1-25分别是3个平台的回测运行的截图,聚宽与米筐非常相似,完全就是quantopian的中国版,而优矿的设计结合了投研报告,是一种IT和金融的结合方案。面向不同的互联网用户,不知道哪种设计会更吸引人呢?
图1-23 聚宽在线平台
图1-24 米筐在线平台
图1-25 优矿在线平台
这3个平台都提供Python的API,都是基于Docker容器的自动化资源分配方案,且都不能直接下载数据。Docker是一个开源的、系统级的、轻量的虚拟化技术,关于Docker技术的详细介绍,请参考本书4.3节。
随着在线策略研发平台的兴起,也导致了在线策略交易平台在走下坡路,如中量网、微量网正面临巨大的转型压力。
文华财经、MultiCharts(MC)、交易开拓者(TB)、金字塔、TradeStation(TS),是以软件形式提供的量化客户端程序,你的策略开发过程需要把数据下载到本地,然后利用你本机的资源进行计算。
那么本地软件与互联网平台有什么区别呢?从软件架构设计上考虑的主要问题是,数据在哪保存、计算在哪完成。
互联网平台通常都不需要下载数据,用户在线写好代码,直接提交就行了。服务器端后台会为用户启动一个Docker容器,根据配置分配好内存、CPU等计算资源,计算完成后把结果通过浏览器再展示给用户。整个过程都在服务器端完成,用户不需要自己的计算机有多高的配置,只要能上网,并有个支持H5特性的浏览器就行了。互联网平台的系统架构思路如图1-26所示。
图1-26 互联网平台架构思路
而客户端软件架构的思路是完全不同的,如图1-27所示,所有的数据都必须下载到本地,然后再运行,这样会用到本地计算资源。用户的回测程序的计算速度受本地计算机的性能影响,这时用户就需要配备一台高配计算机。虽然这种方式会把数据下载到本地,但也只能在这个软件内部用,因为数据是加密的,没有文档,也没有数据格式说明。
图1-27 软件平台架构思路
利用文华财经软件,你可以边编程,边通过可视化的界面,直观地看到交易信号,同时还有完整的策略分析报告,这个设计非常方便。图1-28和图1-29是文华财经的wh8软件截图,包括编程和回测界面,以及策略报告。
图1-28 wh8编程和回测界面
图1-29 wh8策略报告
文华财经的一大特点,是把交易策略分为趋势交易、套利交易、盘口交易,再针对不同的交易模式提供特殊的函数来支持。其他的几个量化软件,与文华wh8功能上是类似的,大家可以根据自己的兴趣或者培训课程自行下载使用。
最后我要介绍的方法就是专业人员的做法了,同时也是有编程背景的人最突出的优势点。通过交易接口和行情接口,自己动手编程来构建整套的投研体系和交易体系。这种方法是需要一个团队来完成的,涉及的知识点很多,而且工作量是巨大的。
市场上,开放的交易接口主要有CTP、REM等,同样的,每种工具各有特点。
CTP(Comprehensive Transaction Platform,综合交易平台)是专门为期货公司开发的一套期货经纪业务管理系统,由交易、风控和结算三大系统组成。CTP交易系统主要负责订单处理、行情转发及银期转账业务;结算系统负责交易管理、账户管理、经纪人管理、资金管理、费率设置、日终结算、信息查询以及报表管理等;风控系统则主要在盘中进行高速的实时试算,以及时揭示并控制风险。系统能够同时连通国内四家期货交易所,支持国内商品期货和股指期货的交易结算业务,并能自动生成、报送保证金监控文件和反洗钱监控文件。
REM是盛立极速柜台交易系统,是以硬件FPGA技术来处理核心事前风控业务和交易管理业务的系统。REM系统的主要业务功能将分为两部分:交易和风险控制。系统在提供严密事前风控的同时又保证了超低延迟,成就专业和机构投资者最安全又最快的交易。
CTP可以在期货公司直接开通,比较成熟,而REM只是特定的期货服务商才有,而且只有基础API功能。CTP是通用期货交易接口,支持连接4个期货交易所,REM重点支持上海期货交易所,不支持中国金融交易所。速度上,CTP延迟在20ms左右,REM延迟在5ms左右,这些都是在机房的测速,远程连接延迟都在500ms以上。
不管接入CTP或REM,都是需要C++编程的。这些程序使用的都是异步回调的机制,你还需要了解Callback的程序设计方法。直接用C++进行程序开发,对于一般的程序员来说也是相对复杂的。你至少需要2个独立的进程处理行情和交易,在交易时,你可能需要用最新价挂单,这时进程之间是需要传递数据的。你研发的策略模型,有可能是用R语言和Matlab来编写的,然后把交易信号传给C++的下单程序去交易。另外,针对不同的交易策略,比如同一时间,一个做TF1706空单,一个做TF1706多单,你就应该在系统内部进行撮合,有记账、而不进行实际交易。当你要下多于500手大单子的时候,你的系统也应该能够帮你把大单拆散,以每秒5手的速度下单,从而减少对市场的冲击。如果按照我上面列出来的要求开发一套系统,你的系统的复杂度就会变得很高了。当然,如果你的资产规模有几个亿,这一切都是值得的。
做量化有这么多的选择,为什么我要用R语言?在本书开篇1.1节我已经强调过了,R语言并不是万能的,我用R来解决建模的问题,当然你也可以用Python或Matlab来做,各有各的好。Matlab很方便,但是收费;Python虽说什么都可以干,但当你用Python去解决一个非工程化的问题的时候,可能找不到思考的方向。
明确你的目标,选择顺手的工具,发挥自己和工具的特点,去创造价值吧!
问题
低风险投资怎么做?
引言
低风险套利策略一直是人们所追求的投资、理财的重要手段。在证券市场上,有很多种低风险套利策略,可以帮助个人把资金利用起来,达到年化10%以上的收益。
本节就针对国内交易市场的规则,介绍适合中国市场各种低风险的交易策略。
企业债是一种低风险金融产品,有着不错的收益水平,且风险相对较低。目前,市场上一般企业债的年化收益率都在6%左右,高于国债、存储、银行理财。企业债主要的风险来自于利率风险、流动性风险、信用风险、再投资风险、回售性风险和通货膨胀风险等。
企业债实战交易,请参考本书5.2节。
1.企业债分析
企业债的收益来自两个方面:票面利息和差价。
票面利息一般是固定的,在债券公告里可以看到,比如,你花1万元,以每张100元的价格,买了100张票面利息为6%的企业债,利息在派息日当天会扣除20%的利息税后派给你,而国债派息是免税的,每年派息日你的账户应会收到480元利息=10000×6%×(1-20%)。如果债券不违约,7年后到期时,企业会按每张100元的价格,将100张债券的本金还给你,即每年会得到4.8%的净收益。
差价,即交易价格变化造成的买卖价差。企业债跟股票一样,可在证券市场交易。当市场可获得的大多金融产品的收益低于企业债利率时,人们愿意为得到较高的利息收益,花高于100元/张的价格买入债券,此时债券价格就会上涨超过100元;相反,当市场可获得的金融产品的年收益高于某企业债时,很多人就会想抛出这些债券,去购买其他产品,这时债券价格就会下跌低于100元。通过价格的变化进行交易,从而获得价差收益。
债券具有价值回归的特点,到期时要还本付息。只要债券不违约,在到期时,都会回到100元/张的价格水平,所以债券要比股票安全得多。
债券交易的特点是净价交易,全价结算。全价=净价+利息。报价时,是以净价来看,而进行买卖交易结算时,是按全价结算的,包括利息。由于年利息是固定的,每日利息都会增加约定利息的1/365。
影响债券净价涨跌的因素:
·利率调整:债券价格的涨跌与利率的升降成反向关系。央行加息时,债券的利息优势被削弱,资金离场,债券价格下跌;降息时,债券的利息优势明显,资金进场,债券价格上涨。另外,当相同风险等级的金融产品的年化收益上涨时,债券价格会受影响下跌;反之上涨。
·即期利率:债券价格与即期利率是负相关的,属于典型的跷跷板关系。债券价格上涨会使得即期利率下降,当即期利率降到与市场平均收益接近或更低时,资金离场,债券价格下跌;当债券价格下跌后,即期利率升高,资金将再次进场,债券价格上涨。
·股市行情:债市与股市通常是负相关的。股市行情好时,资金进入股市,债市下跌;相反,股市下跌时往往推动债市的牛市。当然,2015年初的股债双牛和2016年初的股债双杀都打破了这条规律,可见市场由多方面的资金博弈形成。
·通胀程度:在轻度的通货膨胀下,人们希望资产保值,所以会增持债券,有利于债券价格上涨;但在恶性通胀来临,债券利息收益抵御不了通胀时,人们会将资金移到更安全的地方,比如黄金、实物资产、囤积商品、境外等,导致债券价格下跌。
·派息日:当派过息后,即期利率会上涨,同时必然引起债券价格上涨。
·久期:债券的久期越长,其价格对利率的变化越敏感。加息(或降息)时,久期长的债券的净价跌幅(或涨幅)比久期短的要大。
·信用利差:债市整体看多时,信用评级对价格的影响不大;在债市恐慌时,信用利差会扩大,资质好的债券要比差的抗跌。
·回购折算率:债市牛市时,可质押回购的债券会更受青睐,以通过更高折算率获得更多的融资。
2.规避风险
企业债券有两种风险,是我们应该尽量规避的。
利息税
债券一年只派一次息,债券交易过程中都是以全价进行结算的,也就是说,会带着一笔先行垫付的利息。当你买入债券的同时,必须先垫付这个利息,所以你交易债券的钱是结算价全价,全价=净价+利息。因为企业债的利息收益要交20%的利息税,这笔税在企业派息时会被扣除,持有人实际收到的利息是票面利息的80%,但是他先行垫付的是100%的利息。
为了避税,节省20%的成本,有两种方法:
1)在派息日前将债券抛掉,除息日后再买入债券。由于机构是不扣税的,所以会有机构来接盘。
2)通过债券大宗交易,在派息日当天让机构代你持有债券,除息日后再还给你。当然,机构提供这种服务也会收一定的服务费用。大宗交易平台有交易量的门槛,沪市债要求单笔10000张起,深市债要求单笔5000张起。
对于小散户来说,如果没有多少资金,是很难找到机构来帮你代持的,通常就是先卖掉再买回来。
信用风险
2014年3月4日,首单实质性违约的债券出现。*ST超日发布公告称,“11超日债(112061)本期利息将无法于原定付息日2014年3月7日按期全额支付8980万元,仅能够按期支付共计人民币400万元”。
所以在选择债券的时候,我们要精心挑选,避免违约的出现!评级要AA、AA+以上的;有实物抵押担保;政府背景;最近两年业绩不能出现亏损;正回购折算率越高越好。
可转债,是一种可以转换股票的债券。在转换之前它是债券,和其他债券一样有价值回归的特点,也可以获得票面利息,转换后,就兑换成了相应数量的股票,股市的上涨也会带动可转债价格上涨。可转债兼有股和债的双重特性。
可转债的套利操作,请参考本书5.3节。
1.可转债分析
债市与股市通常是呈负相关的,而可转债价格与正股价格通常是正相关的。当正股大涨时,为保持转债与正股溢价率的平衡关系,转债也会随之大涨;当正股连续大跌时,可转债因其债券属性,下跌会在一个平稳的区间内,或是触发回售条款。
可转债为T+0交易,即当天买入可以当天卖出,而且部分可转债可以质押。可转债和债券一样有价值回归的特点,在不违约的情况下,到期时会还本付息,包括100元的本金和票面利息。
回售条款:当股票大跌时,即可转债的转换价值远低于债券面值100元时,投资人可以要求发行公司以100元面额加计利息补偿金的价格收回可转债。
赎回条款:在一定条件下,公司可以按事先约定的价格买回未转股的可转债,用于降低发行公司的发行成本,赎回价格一般要远远小于转换价值,主要的作用就是实现强制性转股。
下调转股价:不论是回售或赎回,都与正股和转股价有关系。发行公司有权调低转股价格(无权调高),当股票大跌,发行公司可能会下调转股价,以保障投资人转股收益不会因为股票价格下跌大幅萎缩,避免出现投资人要求回售的情况。因为一旦触发回售条件,企业就要提前面临清偿债务的问题。转股价格下调意味着100元的债券可以转换成更多数量的股票。
2.规避风险
由于可转债的特殊性条款——赎回条款,赎回价格一般要远远低于转换价值,所以需要进行合理的风险规避。
在转股期间,连续30个交易日内,正股股价超过转股价130%时,就会触发赎回条款。这时候我们就要注意了,要随时关注公司公告,务必在强制赎回前,卖出可转债或进行转股。
一般只有在大牛市的行情下,才会出现强制赎回的条件。
比如下面的情况:
“东华转债”于2014年2月7日起可转换为公司发行的A股股票(股票简称“东华软件”,代码002065)。公司A股股票自2015年2月7日至2015年4月24日连续30个交易日中,超过15个交易日的公司A股收盘价格高于当期转股价格(11.78元/股)的130%(15.31元/股),已触发《东华软件发行可转换公司债券募集说明书》(以下简称“《募集说明书》”)中约定的有条件赎回条款。经公司第五届董事会第十九次会议审议通过了《关于实施“东华转债”赎回事宜议案》,公司决定行使“东华转债”提前赎回权,全部赎回截至赎回日尚未转股的“东华转债”。
3.可转债套利
由于可转债的特殊性,让可转债有很多的套利机会。
(1)负溢价率套利
负溢价率套利是最基本的套利方法,已经被市场所熟知。当股市上涨,可转债转换成股票的价值大于可转债的价格时,就出现了套利机会,这时的溢价率是负的。这种情况一般很难出现,大部分时间都反过来,即可转债转股价值小于可转债价格。如果收盘前,转债保持负溢价率,那么我们可以买进转债,然后马上转股,第二天开盘时卖出正股股票,获得溢价率的收益。但这是有风险的,如果第二天开盘正股股价低开,跌破溢价率的价格,就会把“套利”变成“套住”。
想做到完全无风险套利,需要配合融券一起操作。但想融券时不一定有券给你融,而且融券的费率年化8%也不低,需要有更大的负溢价率的空间,这时就需要精细化地计量了。
(2)回售套利
当正股价跌得太多,触发回售条件时,持有人有权将手中的债以约定的回售价卖回给发行方。回售是持有人的权利,但不是义务,你可以卖,也可以不卖继续持有。通过市场不理性的抛售,我们可以买入超跌的可转债,再回售给发行方。
需要注意的是,持有人在每个计息年度内,可在约定条件首次满足时行使回售权一次,但若首次不实施回售,该计息年度将不得再行使回售权。
(3)下调转股价套利
当正股连续大跌面临回售危机时,很多时候公司会选择下调转股价。发行方马上就没有了回售压力,而对投资者来说,每一次下调转股价,可转债的转换价值也就随之上升了。虽然转债价格低了,但转股后,可以获得更多的正股股票。所以,每次下调转股价时,基本都是送钱。
证券市场中,当有机构或个人想借钱的时候,他们可以将手里的债券进行抵押,向证券市场中的其他人借钱。借入钱的就是买方,以回购的实时报价计算利息,到期还本付息,这个操作是正回购。借出钱的是卖方,同样以回购的实时报价计算利息,到期获得本金和利息,这个操作是逆回购。
1.逆回购
逆回购包括债逆回购和新质押式逆回购,关于逆回购的详细介绍,请参考5.4节。
逆回购的特点:
·流动性好:可根据自己资金的空闲周期,选择不同期限的逆回购。T+1时间本金利息回到账户余额,T+2时间可以取现转出到银行账户。
·零风险:只要国债不违约就不会有问题,风险与存银行是一样的。
·操作简便:和股票交易一样,根据实时价格进行交易。但需要注意的是,逆回购是卖出的操作。
2.正回购
正回购是逆回购的对手,当资金被压在债券中,手中没有资金的时候,可以将手中的债券抵押借入资金,抓住短期行情。做正回购的是资金借入方,正回购方必须以手中的债券作为抵押。
通过正回购借入资金的成本是很低的,一般年利率在3%以内,下午快收盘时,回购价格会低于2%。虽然借钱成本可以很低,但是有信用风险,如果赶上断网或者交易终端坏了,没有完成交易就会造成违约,那么你的个人信用以及营业部都会受到证监会的处罚,得不偿失。当出现资金流动性下降,市场上开始缺钱时,回购的利率会非常高,有时会达到50%。通常情况下,回购平均利率会略高于银行理财。
在债市利好的情况下,我们可以通过正回购来加杠杆,把小资金放大。通过“买债—正回购—借入资金—再买债—正回购—借入资金—买债”的方法,可以获得4~5倍的债券收益。正回购,是非常好的融资途径,利用得好,可以大幅增加收益。
正回购是可以续期的,当质押券到期时,可能通过正回购继续融资,借入资金归还上次的资金,这样就可以避免占用多余的现金或卖债券还款了。注意,有的券商可能不允许续期,要求先还钱再做正回购。
短期现金管理主要是货币市场的现金操作,交易周期一般为T+0,包括货币基金,券商理财、逆回购等操作。
货币基金的特点:
·风险低:收益率接近银行定期储蓄的利率。货币基金的投资标的,一般为短期国债、回购、央行票据、银行存款、大额同业存单,等等,基本没有风险。
·资金流动性较高:货币基金可以随时赎回,赎回后资金一般1~4天到账,赎回至资金到账中间的几天是没有收益的,要尽量避开周末、节假日赎回,以免赎回期因顺延而变长。
·资金门槛低:一般1000元起就可以申购了。
·无手续费:一般申购和赎回都没有手续费,有些货币基金是需要和券商申请免收手续费的。
·收益免税,货币基金是不收税的。
1.T+0货币基金
通过交易所申购赎回的T+0货币基金,如表1-5所示。数据采集时间是2017年3月1日。
表1-5 交易所货币基金
以华夏保证金A(519800)为例,通过证券账户进行申购和赎回,年化收益率为2.94%,代码以519开头的货币基金都是没有申赎费用的。如果下午收盘前,证券账户中还有资金余额,可以申购华夏保证金A(519800),第二天早上开盘再赎回,资金到账,不影响其他交易的资金使用。但有时候,资金赎回有限制,所以要避开限制赎回的货币基金。
另外,货币基金在周末是计息的,比如我们周五申购519800,周一早上赎回,计息周期是3天,即周五、周六、周日。这样周五做逆回购,就不如做货币基金了。
2.货币基金一级二级市场套利
场内货币基金,有一些货币基金是可以同时在一级市场和二级市场交易的,一级市场交易的操作是申购和赎回,二级市场交易的操作是买和卖。
当一级市场和二级市场出现价格波动不一致的时候,就出现了套利的机会。当二级市场的价格较大幅度低于基金净值时,出现折价套利的机会。我们可以在二级市场买入基金,然后在一级市场赎回刚买入的基金,完成套利。
利用场内基金买入就计息的特点,比如当日买入华宝添益(511990)后,马上就赎回这只基金,赎回代码是511991。你会获得两部分收益,一部分是1天的利息,另一部分是基金折价收益。华宝添益(511990)与华宝添益(511991),是同一个货币基金的两种形式,511990在二级市场中交易,而511991在一级市场中只能申购和赎回,这样就出现了一级市场和二级市场的套利机会。
3.券商理财
“天天发”“天添利”等券商理财产品,可以在券商申请开通,收盘后所有的账户余额会自动转入券商理财,获得一个理财的收益,但平均年化收益率并不高,只有不到2%。而且,券商的结算周期也不同,通常是2~3个月付息一次。不过与其收盘后资金闲置,不如利用零钱购买券商理财,让资金能充分利用。
现金管理对于散户来说,就是在保证流动性的情况下,让现金保值。当逆回购高的时候操作逆回购,平时可以随意买点货币基金、逆回购或券商理财,在收益率上差不了太多。
分级基金(Structured Fund),又叫结构型基金,是指在一个投资组合下,通过对基金收益或净资产的分解,形成两级(或多级)风险收益表现有一定差异化基金份额的基金品种,并根据份额类型分别给予不同的收益分配。
分级基金各个子基金的净值与份额占比的乘积之和等于母基金的净值。分级基金的母基金称为C基金,子基金分为A类子基金和B类子基金。母基金净值=A类子基金净值×A份额占比(%)+B类子基净值×B份额占比(%)。A基金和B基金,风险偏好完全不同,A基金为固定收益基金,类似债券;B基金随市场变化,自带杠杆属性,会承受较大的市场风险。
母基金属于一级市场,深交所发行的基金只能进行申购和赎回,上交所发行的基金还可以进行买和卖操作。A类基金和B类基金,属于二级市场基金,只能进行买和卖的交易。分级基金是可以进行配对转换的,我们通过拆分操作,可以把2份额的母基金拆分成1份额的A基金和1份额的B基金;也可以通过合并操作,把1份额的A基金和1份额的B基金,合并成2份额的母基金。图1-30是分级基金的转换操作示意图。
图1-30 分级基金的转换操作
1.A基金介绍
A基金属于固定收益类型、和债券类似,靠利息获得收益。不论市场的涨跌,利息是必须要分给A基金的。赚钱了,先分给A基金利息,剩余部分再分给B基金,亏钱了就用B基金的本金来支付A基金的利息。A基金的利息收益相当于是以B基金的本金为担保的,如果把分级基金A基金看成一只债券,那么它的违约风险比交易所债券要小得多,只要B基金不亏完,A基金肯定有利息收益。
当B基金发生比较大的价格变动时,会有上折、下折,通过改变A基金和B基金的份额比例,保证A基金的利息收入。定期折算时,会将约定的收益以母基金的形式发到A基金持有人的账户上,获得母基金后可将母基金赎回变成现金。
2.分级基金套利
根据分级基金的特点,可将分级基金进行分拆套利和合并套利。
分拆套利,也被称为溢价套利,就是将母基金拆分为A基金和B基金的操作时进行套利,当A基金现价×A份额+B基金现价×B份额>C份额净值时,我们就去申购母基金C,然后拆分成A基金和B基金,再分别卖出。
合并套利,也被称为折价套利,就是将A基金和B基金合并为母基金的操作时进行套利,当A基金现价×A份额+B基金现价×B份额<C份额净值时,我们先买入A基金和B基金,然后合并成母基金C,再赎回母基金C。
由于上交所分级基金和深交所分级基金的套利模式不同,因此操作周期是不一样的。
表1-6 分级基金套利操作
我们在进行分级基金套利时,要准确地估算套利的稳定性和波动性,从而保证套利操作的顺利完成。
期货,是一个风险很高的金融衍生品,做期货就是赌博。但如果换一种玩法,不仅风险不高,而且可以实现低风险的套利。
期货作为金融衍生品是最重要的避险工具,如套期保值。期货是目前不多的可以进行双向交易的金融品种,当市场好的时候可以看多,市场不好的时间可以看空。
专门做期货的私募,有3种主要的操作方法:套利、投机、程序化交易CTA。
对于投机的操作来说,买期货就是赌博,期货一般会自带10倍左右的杠杆,相当于把本金放大了10倍,赚得快,赔得也快。套期保值的操作,则是对于现货商的保护,通过做多做空,来和商品现货的市场价格波动进行对冲,从而减少市场风险的影响。CTA是通过程序化方法,对期货品种的价格、交易量、技术指标进行分析,用计算机快速捕捉市场信号,发现不合理价格的交易机会。通过CTA交易,我们就可以有多种交易策略,比如趋势跟踪、波动性、变换周期等策略。
我们可以利用期货双向交易的特点,进行套利操作,比如跨期套利和期现套利都是相对风险较低的。跨期套利就是同时做多和做空,同一个品种的不同周期的合约,由于最终的资产标的是相同的,所以两个合约的价格,到期时必然会等于资产价格。在交易过程中,当两个合约的价格出现较大偏离时,我们就可以做多价格相对较低的合约,做空价格相对较高的合约,等价格恢复时,全部平仓进行套利。期现套利就是同时交易同一种资产的现货和期货,比如,当IF股指期货合约高于沪深300的指数时,买入沪深300的指数基金,同时做空IF股指期货,等价格回归的时候全部平仓进行套利。这种交易方法是风险很低的,因为做多做空同一种资产时,我们已经抵消了市场风险对这个资产的影响,而仅仅暴露的是两个资产的价格。
从市场来看,跨期套利和期现套利的实践已经很成熟了,天上掉馅饼的机会已经不多,目前主流的套利都是跨品种套利,即找到不同品种之间的关系,你可以参考本书6.3节,完成一个跨品种交易的策略模型。
通过程序化交易,将交易策略写成电脑程序,通过自动或半自动操作,克服人的欲望、贪婪、恐惧等弱点带来的错误操作,从而完成交易过程,实现赚钱的目的,最终达到财富自由。本书后面的章节,都是在贯彻程序化的思路,并把整个思考过程落地,配合R语言的代码进行实现。希望大家能畅快地体验程序化赚钱的乐趣。