Blog Archives

2017猎奇金融大数据:用R语言开始量化投资

跨界知识聚会系列文章,“知识是用来分享和传承的”,各种会议、论坛、沙龙都是分享知识的绝佳场所。我也有幸作为演讲嘉宾参加了一些国内的大型会议,向大家展示我所做的一些成果。从听众到演讲感觉是不一样的,把知识分享出来,你才能收获更多。

关于作者

  • 张丹, 程序员R,Nodejs,Java
  • weibo:@Conan_Z
  • blog:http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/meeting-cda-20170521

前言

很高兴能够参加由CDA主办的数据分析师线下沙龙的活动,虽然活动规模不大,但是场子很棒,氛围很好。刚好这次沙龙是金融大数据的主题,也是为了给我的新书《R的极客理想-量化投资篇》预热,给大家分享一下R语言在量化投资领域的应用。

本次所分享的内容为我的新书开篇内容,干货多多,错过沙龙的同学,可以在CDA的网站上找到分享的内容。

目录

  1. 我的演讲主题:用R语言开始量化投资
  2. 会议体验和照片分享

1. 我的演讲主题:用R语言开始量化投资

用R语言开始量化投资,PPT下载,主要内容来自我的一篇博文:用R语言开始量化投资

分享主题的目录大纲如下:

  1. 为什么用R语言?
  2. 跨界结合的思维模式
  3. R语言量化工具包
  4. 量化策略实战应用
  5. 有理想的极客

分享结束后,和几个现场的朋友,在聊R语言的大方向,大家都觉得R语言有很大的机会,只是R语言应该如何落地呢?我觉得有很多的点和方向可以做。比如:培训教育,用R来替换SAS,R的企业服务,R的SAAS的个人服务等。

我就在致力于推动R语言在中国金融领域的发展,让R可以给更多的用户使用,培养出更多的数据分析师。也希望让我们中国人的技术能够走出去到世界的舞台。希望多能认识志同道合的朋友,一起做一些事情。

2. 会议体验和照片分享

本次由4个主题组成,主要介绍了金融大数据在国内的应用情况。本次的场地是由科技寺提供的,忍不住还要再说一够场面很棒,如果再能配上咖啡就更好了。

本次猎奇金融大数据专场4位嘉宾:

鲁四海,主题:大数据风控。
中国新一代IT产业推进联盟技术分委会秘书长、首席数据官联盟发起人。主要研究方向为大数据,参与编写了《影响中国大数据产业进程100人》,在中国新IT联盟、北达软讲授大数据技术应用课程。

张丹,主题:如何用R语言开始量化投资。
《R的极客理想》系列图书作者,前况客创始人兼CTO。10年IT编程背景,精通R ,Java, Nodejs 编程,获得10项SUN及IBM技术认证。

于洋,主题:金融大数据运营增长创新案例。
TalkingData增长部门总监,曾加入金山从事游戏数据分析及运营,2012年加入TalkingData,历任游戏业务咨询总监,金融业务咨询总监,现从事在零售,金融,航旅等方向的数据营销,运营及增长创新业务。

李金霞,主题:实战案例:数据驱动下的互联网营销。
神策数据数据分析师,曾就职于民生银行、百度人才、飞信,负责数据处理相关工作。2016年加入神策数据,主导客户包括纷享销客、网易七鱼、ofo、拉钩云人事、多盟等。

嘉宾在分享的照片。

曹鑫,主持人。

张丹,《R的极客理想》系列图书作者

鲁四海,

于洋,

李金霞,美女分析师

2.2 会议相关照片

本次分享的场地,很有特色,宽敞、明亮、很有创意、很舒服,像是咖啡厅,开放式的办公环境,很棒!

很意外地获得了一个CDA给的奖杯,收藏一下。

沙龙很成功,感谢工作人员的辛苦劳动组织。在北京以数据为主题的沙龙,并不是太多,祝CDA的活动能一直坚持品质,越办越好!

转载请注明出处:
http://blog.fens.me/meeting-cda-20170521

打赏作者

用R语言开始量化投资

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。

要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。

关于作者:

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/r-quant-start/

前言

做数据分析的朋友,一定知道R语言。R语言是一门统计语言,在数据分析领域优势是非常明显的。金融本身是玩数据行业,R的最大的优势就是数据分析,所以把R语言与金融结合,用R来做量化投资的策略,真的很配,不仅顺手而且方便,用了你就会知道。

本文以“用R语言开始量化投资”做为新书《R的极客理想-量化投资篇》的开篇,主要强调了R语言在量化投资领域有着广阔的应用场景,而且是重要的量化投资工具。

公开课:Hellobi Live | 5月23日如何用R语言开始量化投资

目录

  1. 为什么用R语言?
  2. 跨界结合的思维模式
  3. R语言量化工具包
  4. 量化策略实战应用
  5. 有理想的极客

1. 为什么用R语言?

R语言是一门面向数据的编程语言,早期只是在统计领域,被统计学家所使用。

近年来随着大数据技术的发展,以及R语言自身生态的快速壮大,R语言已经不仅在统计领域,在各大行业领域中都能看到R语言的身影,包括了互联网,数据科学,人工智能,机器学习,生物医疗,游戏,电子商务,全球地理科学,数据可视化等等。

下图是R语言的任务列表,这些任务都是面向具体业务的。截图不全,请大家去R官方网站,查看完整的任务列表。

从R语言的任务列表,我们就能明显看出,R语言和其他编程语言的区别。R语言第三方包所提供的支持,都是对于各种行业的数据操作和算法的支持,而不仅仅纯IT系统开发功能的支持。

R语言不仅能把数据分析做好,而且能够让我们能够有更多地思考,通过数据连接到我们每个人的日常生活。比如,我们去超市购物,你购买的东西会记录在你的购物小票中,如果把这些购物小票都收集起来,通过Apriori关联规则的频繁项集算法,就可以分析出自己的购物习惯。

我们每天都会收到各种推销的骚扰电话,有时候是卖房的,有时候是银行贷款,有时候是股票推荐,有时候是代开发票,有的是猜猜我是谁,处处都体现了中国的国情。那么我们可以收集自己通话记录,通过电话号码、号码注册位置、通话时长来分析一下,哪些是有用通话,哪些是浪费时间的通话,从而计算出我们每一天会浪费多少时间,通过Bayes算法来把有效通话和无效通话进行二元分类,从而阻止骚扰电话的入侵。

如果我们不仅能够收集自己的通话记录,把亲戚朋友的或更多人的通话记录都收集起来,组建一个数据库。再把统计出来的骚扰电话统一标记,做成黑名单,然后把黑名单公开出来,就可以让更多的人面受骚扰电话的影响。

人们的衣食住行都会产生数据,产生数据的地方,就需要做数据分析。通过数据分析,提高生活的效率,为我们节约宝贵的个人时间。

在人类社会中,除了衣食住行的基本需求外,更多的是对钱的需求。我们每天都会跟钱打交道,会有消费的需求,月底会有工资收入,当收入大于消费,资金积累到一定阶段的时候,我们就会有投资的需求。中国人的投资一般就几种,买房,买黄金,买股票,买保险,买理财。投资时,大部分人是不理性的,心血来潮就买了,也不仔细观察行情,买完就被套住,像 “中国大妈抢购黄金”,“中国大妈是救市的主力军” 都一度被新闻媒体热炒。

在金融市场中最不缺的就是机会,不管投资什么,如果能在交易的时候能多思考一下,说不定结果就会不样。运用我们数据分析的知识,和对于金融市场规则的理解,通过R语言进行数据分析,抓住机会,让我们把辛辛苦苦赚到的钱保值和增值。

2. 跨界结合的思维模式

R语言与其他编程语言最大不同在于,R语言是面向数据的,这一点很重要,甚至影响了思维模式。

我写了10多年的JAVA程序,程序员思路在我的脑子里根深地固。我习惯用于面向对象思想来建模,把世界中的物体、行为、连接都用面向对象的方法来表达。我也习惯了IT项目,从架构设计到开发的自上而下的设计思路,或完全由需求驱动的敏捷开发,为业务随需而变的的开发路径。作为程序员,我有理想,我自认为技术能改变世界。这一切都是程序化思维在影响着我。如果你还不熟悉啥是面向对象,请参考《R的极客理想-高级开发篇》第四章面向对象编程。

后来,当我接触了R语言,通过另一扇门理解世界的时候,我发现世界是不一样的。在没有程序的世界里,你可以通过文字来表达你的做事的方法,你可以感性地认识世界,你也可以让数据来说出这个世界意义。你可以天天看新闻联播,了解国家大事;也可以看微博、朋友圈的爆料,及时了解身边的消息。这并不是程序员的思维,而大众化的社会。这个社会里,程序员只是小众。

改变世界的方法,除了技术还有别的,比如,政策、资本、市场、法律、人事等,从公司运作的层面看,似乎哪个都比技术更重要。也许程序员更不关心这些,但面对市场时,再牛技术也会被其他因素所制约。

我经历过创业,一个很深刻的教训就是,要让自己跳出原有的思维定式,通过多维的视角看世界、看自己。通过R语言,帮我打开了通过数据看世界的窗口。我的能力提升不再是,如何把程序把写得多得漂亮,在时间复杂度上用O(log(N))解决O(N^2)的问题,而变成了怎么收集数据,怎么提高数据质量,用于解决实际的业务问题。当然,作为程序员的职业强迫性,我也会要求自己熬夜一晚上把50行代码优化成40行。

问题被转化了,术业要有专攻,但作为一个有理想的极客,全面掌握跨领域的知识才是我们的目标。我创业时,经常被投资人问到,做量化投资的项目有多难?招几个金融背景的,再招几个IT背景的,捣鼓个项目,很快就做出来了。其实不然,不同背景的人是很难交流和沟通,尤其是金融和IT,一种是封闭不愿意分享,一种是开放毫无保留;一种是先把话说出来,一种是先把事情做起来;一种是所有人都要为我服务,一种是只专注于自己的兴趣。所以,如果没有能够跨界通吃的人,是做不好量化的项目的。

我们就要立志做个跨着学科的人,这才是最核心的点,是不可被替代的。从IT技术出发,你需要扎实的编程功底架构思想,科学的项目管理方法,严谨的产品设计逻辑;你还需要统计、数学等基础学科的知识,数据挖掘与机器学习的数据处理经验;最重要的,你要能结合业务,不管是量化投资或其他的领域,理解市场的规则。

听起来很难,而且是真的很难!虽然很难,但不光是对你,对所有人都是这么难。但是只要能坚持的走下来,一定能通过知识改变命运的。

3. R语言量化工具包

做量化投资,R语言的优势在哪?R语言可以帮助我们从多种维度去理解量化投资。

  • R语言本身就是我们需要掌握的IT的技术,是一个需要编程的技术活,但极大的降低了对编程的要求,短短20-30行R语言代码,已经能干很多事情了。
  • R语言是面向数据的,有方便数据处理操作,对于数学、统计等基础学科有丰富的函数支持,同时提供多种数据挖掘和机器学习的算法库,让我们可以直接使用。
  • 在量化领域更是R语言的强项,有针对投资研究的包,有做回测分析的包,有做金融产品定价的包,有做投资组合优化的包,还有风险管理的包,涵盖了量化投资的方方面面,只是有些包的使用要针对中国市场特点进行改进和优化。

R语言为量化投资提供了丰富的工具包,我做了分类列在下面。再也没有哪种语言会做到这种的支持了。R包,投资研究包,回测分析包,金融产品定价包,投资组合优化包,风险管理包,涵盖了量化投资的方方面面。

完整的量化投资工具包,请参考文章R语言量化投资常用包总结。在《R的极客理想》系列图书的3本书中,分别对于这些包做了介绍。请大家对照包名,进行查看和使用。

4. 量化策略实战应用

利用R语言的便利性,我们可以很容易的通过上面介绍的这些工具包,做一个交易模型。构建一个简单的投资策略,甚至都不需要有太多的代码。

接下来,我就举例说明一下,怎么把R语言提供的程序包合在一起使用。按照下面的步骤做一个简单的交易策略,基于移动平均线MACD,针对全球指数的投资方案。如果你还是金融新手,不了解MACD策略,那么请请参考《R的极客理想-高级开发篇》书中,2.3节二条均线打天下。

本文所使用的系统环境

  • Win10 64bit
  • 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个市场的指数进行比较,代码和名称对应关系。

指数名称 指数代码(Yahoo财经代码) 简称
标普500 ^GSPC GSPC
日经225 ^N225 N225
恒生指数 ^HSI HSI
富时新加坡STI ^STI STI
上证综指 000001.SS SSE

下面通过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")

接下来,让我看数据是什么样子的,并画出全球指数。


# 查看数据前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节可扩展的时间序列xts。

画出全球指数,曲线图。

由于各国指数成立时间不同,成份股也不同,所以指数值有的很大有的相对比较小,我们不能用指数大小来判断好坏。 通常情况下,我们会转换成收益率进行比较,通过收益率进行度量后,这样所有的标的都是在同一个维度了。

画出全球指数的每日累计收益率,曲线图。

收益率越高,说明指数在这期间是表现越多的,我们越应该去投资。上图中日经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

这里日经指数(N225)年化回报率是最高的,有每年平均有19.28%的年化收益率,与图1-3的累计收益率走势相符。 而中国的上证综指(SSE)仅有4.82%的年化收益率,回报不算高,但波动太大了。 综合来看,标普500(GSPC)其实是投资的首选,11.34%年化收益率,平均波动率也不是太高,所以风险和收益都是相对不错的。

接下来,我们构建一个简单的MACD模型,通过MACD策略再对上面5个指数构建交易策略。


> # MACD 策略模型
> MACD<-function(dt,n=30){ #代码省略
> }

# MACD策略,年化收益率
> lapply(df, function(col) MACD(col,30))
           GSPC       HSI      N225        STI       SSE
close 0.2137435 0.2406476 0.2261996 0.01869112 0.2817241

我们写了一个MACD的策略函数,就相当于是建模的过程,函数的输出为策略的收益率。 然后,我们把指数数据传给MACD()函数,经过计算输出策略收益率。 最后,把策略收益率与纯指数率,放到一起来进行对比。

策略 GSPC HSI N225 STI SSE
指数收益 0.1133813 0.0619811 0.1927681 0.03696703 0.04817027
策略收益 0.2137435 0.2406476 0.2261996 0.01869112 0.2817241

我们可以很明显的看出,用一根均线的MACD策略,平均年收益率会大幅优于纯指数的收益率,如果我们这样交易就可以赚到更多的钱。 其实,这就是量化投资的思想,从数据中发现规律。 可能上面的过程和代码,会让你觉得很迷惑,怎么就能赚到钱了?别着急,本节只是本书的开篇,等你仔细阅读了全书,你就能领悟到这里的玄机了。

一共40行左右代码,完成了很多的事情。 如果要把整个操作都细分列举出来,包括了数据采集,数据清洗,数据标准化,指标计算,数据建模,历史回测,投资组合构建,组合优化,计算结果评价,数据可视化等组成部分。

要搭建一套量化交易的系统,主要就是完成这些部分。对于个人玩家来说,按照上面R语言代码的思路,就已经可以实现了。 如果你想做的更好,不仅是个人玩,通过成立公司把系统做大做强,为更多的用户提供量化服务,那么你还需要有一整套的平台架构方案,同时配合你要做的金融业务。

5. 有理想的极客

本文是新书《R的极客理想-量化投资篇》的开篇内容,希望大家跟着我的思路,通过R语言入手,体会R语言建模的乐趣,并真正地把技术变现。 我认为R语言是非常好的一门语言,从量化投资的角度,我会一直推动R语言在中国的发展,当成一项事业来做。 同时,本书也会译成英文版在全球发行,让中国的技术走出去。加油!!

R语言只是一门计算机语言技术,不能独自承担改写历史的重任,但R语言确实给了我们很大的想像空间,让我们能动手去了解这个世界的规律,找到无穷无尽的交叉点,创造出新的帝国。

如果你和我一样,都能站在这个角度来学习和使用R语言,那么我们一定可以成为并肩向前的同路人。

转载请注明出处:
http://blog.fens.me/r-quant-start/

打赏作者

技术大牛如何寻找下一个风口

架构师的信仰系列文章,主要介绍我对系统架构的理解,从我的视角描述各种软件应用系统的架构设计思想和实现思路。

从程序员开始,到架构师一路走来,经历过太多的系统和应用。做过手机游戏,写过编程工具;做过大型Web应用系统,写过公司内部CRM;做过SOA的系统集成,写过基于Hadoop的大数据工具;做过外包,做过电商,做过团购,做过支付,做过SNS,也做过移动SNS。以前只用Java,然后学了PHP,现在用R和Javascript。最后跳出IT圈,进入金融圈,研发量化交易软件。

架构设计就是定义一套完整的程序规范,坚持架构师的信仰,做自己想做的东西。

关于作者:

  • 张丹(Conan), 程序员R,Nodejs,Java
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/architect-next

前言

从大学毕业到现在,我做了10年IT编程的工作,从程序员到架构师,一路走来感触颇多,但我一直坚持着用程序改变世界的想法。自己对于编程的理解,有一定的深度,但是随着年龄的增长,越来越觉得自己力不从心。从早期的Java编程,1天写5000行的代码,还精神头十足,到现在用于R语言,1周写500行代码,更多地变成了思考。代码量越来越少了,但让知识得以积累。

不知不觉地就过了30岁,也经历过一些事,开过公司,拉过风投,出了几本书,在大学里教过课,带过自己的团队,也在家里做过饭。创业最后失败了,但失败的点并不在于技术,而是对一个领域的认知和对于“人性”的理解。

目录

  1. 大起大落
  2. 互联网已经在并购阶段
  3. 寻找好的行业风口
  4. Gartner技术成熟曲线
  5. FinTech金融领域的风口

1. 大起大落

寻找下一个风口,是每一个不甘于现状、想要拼搏的年轻人追逐的目标。从2013年开始,我就在准备创业,在家技术储备将近2年的时间。我把创业目标定位在量化投资,从技术上把R, Nodejs, Java, Hadoop一路打通;从知识上,补充数学、统计、金融、计量等基础学科理论;从业务上,开通所有交易账户,用真钱去交易,个人能接触到的交易市场,我基本都玩过。

随着中国股市从2014年底开始一路牛气冲天,仅8个月就从2300点一路冲到了5100点多点。我也算是赶着潮流处在了风口浪尖之上,顺利地拿到了第一笔投资。这就是风口效应,你只要站在风口上,就会获得极大的机会。

可是好景不长,2015年下半年股票市场开始崩盘,经历股灾1.0和2.0后,2016年初全球经济危机突然就来了,2次熔断造就了股灾3.0的沉痛打击,让股民再也不敢进入这个市场了。股民大都是惨淡收场,私募也在各种监管下越来越难,市场泡沫迅速地被打爆了,创业就这么失败了。

下图为上证综指在股灾期间的日K线走势情况。

站在风口时,你会被吹上天。一旦风向变了,而你还没做好准备,你会掉下来摔得很惨,我就是那个摔下来的人。

近年来由资本推动的互联网行业,带来各种商业模式的蓬勃发展。互联网风口一直在轮动,牛人财务自由的一大把。从2011年兴起的社交网络,代表公司为人人网,开心网,新浪微博;再到后面的团购,经历百团大战洗礼之后,活下来的并不多,代表公司为美团,大众点评团,百度糯米等;紧接着互联网金融P2P如雨后春笋般出来,而1年后又数千家跑路;继团购之后O2O继续炒作,也没能度过资本的寒冬相继死掉;进行入2016年VR、直播、人工智能、共享单车等,一波接一波继续被资本推动。

2. 互联网已经在并购阶段

2016年整个互联网和移动互联经营惨淡,除了每天看到新闻负面报道,就是朋友圈看到一大串的关门公司名单。不仅停止了互联网式的疯狂扩张,连电梯的广告都没有了创业公司的身影。从中证移动互联指数(399970),能够清楚的看出国内互联网行业的市场状况,对比2014年底到2015年的一路冲天的大牛市,2016年简直是惨不忍睹。

上图为中证移动互联指数(399970)周K线截图,红色区域为2016的指数走势。

从2015年下半年开始,就明显感觉投资在减少,转而是面对寒冬进行的并购和重组。美团和大众点评,58同城与赶集,滴滴快的和Uber中国,携程和去哪儿,世纪佳缘和百合网,蘑菇街和美丽说,据统计2016上半年中国互联网行业完成260起并购交易。这些并购的一些事件,标志着整个互联网行业在洗牌,移动互联,O2O,移动游戏,移动视频,都已经进入成熟期。

3. 寻找好的行业风口

有很多大牛在互联网洗牌的时候,都已经获得了财务自由,那么我们应该如何抓住下一个风口呢!

所有面向C端用户的互联网通道都已经被大佬(BAT)所封死了,创业公司很难再有突破。那么形成的几大格局,包括原有的BAT阵营,外加小米和乐视。依托于互联网的创业已经越来越难,创业的方向已经不能再像原来的单打独斗的模式,你要依靠大的平台,为平台提供个性化的服务。未来是越来越生态化,也就是各行各业都术业有专攻。

央视财经《对话》节目上,各位互联网界的大佬给出了,下一个风口是?

刘强东说:“风口可能不是在互联网,而是在传统行业”。

李彦宏说:“互联网即将迎来发展的下一幕,而推动其发展的动力不是大数据,也不是云计算,而是人工智能”。

马云说:“数据将会是未来创新社会最重要的生产资料,人类将会离不开数据,我们必须在数据技术的投入和发展上,不惜一切投入发展”。

而在本周《对话》,马化腾一口气给出了一个长长的,不加标点符号的回答:

马化腾:我可以用一句话把他们全部串起来——未来是传统行业利用互联网技术在云端用人工智能的方式处理大数据。

所有大佬都在说人工智能,人工智能就是下一个风口!

4. Gartner技术成熟曲线

技术成熟度曲线,又称光环曲线,炒作周期,指的是企业用来评估新科技的可见度,利用时间轴与市面上的可见度决定要不要采用新科技的一种工具。技术成熟度曲线分成几个阶段,包括科技诞生的促动期,过高期望的峰值,泡沫化的底谷期,稳步爬升的光明期,实质生产的高峰期五个阶段。

2016年7月,Gartner公司发布了年度新兴技术成熟度曲线。根据Gartner技术成熟曲线,有三个趋势非常突出:一是感知智能机器时代来临;二是透明的身临其境的体验更加优化;三是平台革命正在酝酿。

感知智能机器,是处理大数据的计算能力和智能算法的高效整合技术,使企业能够充分利用数据,面对复杂的需求,解决前人无法解决问题。这个领域了包括了,智能微尘、机器学习、虚拟个人助理、认知专家顾问、智能数据挖掘、智能工作空间、会话用户界面、智能机器人、商业无人机、自动驾驶汽车、自然语言问答、个人分析、企业分类法及自然管理、数据经纪人PaaS和语境经纪等方向。

5. FinTech金融领域的风口

那么接下来以金融行业来举例,FinTech=金融+科技。在互联网金融的创新阶段,单一的技术驱动型公司或金融驱动型公司,在无法提高创新驱动力的时候,金融与科技的结合变成为新的方向。一时间,大家都开始喊转型,有人是做交易,有人做投研,有人做跟单,有的做配资,有人做是牛人直播,有人做投资组合,有人做舆情监控等。

虽然,2016年整个大环境不好,但是从心态上大家都在积累内功,坚持把寒冬抗过去,更理性的定位需求,做技术的积累,提高人员的认知能力,特别是让技术人员去理解金融。理解金融非常重要,这不是“互联网+金融”,而是“金融+互联网”,用互联网的技术提高金融的效率,用互联网的连接打通与向客户的沟通,从而加速金融的创新。

从人工智能如何辅助量化交易到智能投资顾问,FinTech已经深入金融领域。

传统投资顾问服务,是以人工方式进行的,要雇佣大量理财经理,付出很高的人力成本,从而提高了进入门槛,只面向高净值人士开设,像银行中私人银行的业务就是这样。

智能投资顾问,则是用人工智能算法来为用户提供投资建议,以最少人工干涉的方式进行投资组合管理,由于成本降低,不再是高净值人士的专属服务。智能投顾,用机器学习方法进行建模,运用人工智能的技术对大量客户进行财富画像,为每一位客户提供量身定制的资产管理投资方案。2016年12月,招商银行推出了“摩羯智投”应用,打响了银行间在人工智能领域竞争的序幕。

不仅是银行,蚂蚁金服、京东、腾讯、百度,还有更多的互联网创业公司都在往这个方向挤。对于创业的风口来说,当大的机构进入时,创业公司根本没有拼的能力。如果我们换一个思路,当大的机构都在抢一个方向时,toB业务就是创业公司的机会。

有句老生常谈的话,“你是想做淘金的,还是买水的?”看准备机会,认清自己,找到目标,努力一把,我们还年轻,还有机会。

转载请注明出处:
http://blog.fens.me/architect-next

打赏作者

算法,如何改变命运

架构师的信仰系列文章,主要介绍我对系统架构的理解,从我的视角描述各种软件应用系统的架构设计思想和实现思路。

从程序员开始,到架构师一路走来,经历过太多的系统和应用。做过手机游戏,写过编程工具;做过大型Web应用系统,写过公司内部CRM;做过SOA的系统集成,写过基于Hadoop的大数据工具;做过外包,做过电商,做过团购,做过支付,做过SNS,也做过移动SNS。以前只用Java,然后学了PHP,现在用R和Javascript。最后跳出IT圈,进入金融圈,研发量化交易软件。

架构设计就是定义一套完整的程序规范,坚持架构师的信仰,做自己想做的东西。

关于作者:

  • 张丹(Conan), 程序员R,Nodejs,Java
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/architect-algorithm/

前言

近年来,随着大数据的飞跃式的发展,已经越来越深地开始影响到我们的生活,社交有腾讯大数据,购物有阿里大数据,搜索有百度大数据,出行有滴滴大数据等等。当数据越来越多地被积累,就需要算法来挖掘出数据的价值。特别是进入到大数据时代,算法显得越来越重要。

让死的数据变得有价值,就是算法的力量。进入到全民大数据的时代后,数据已经不再是门槛儿,最重要的是算法,算法才是真正能够创造生产力的地方。算法工程师的价值也会越来越大,但是你们真的发掘出来你们的价值了吗?

目录

  1. 算法在各个行业的应用
  2. 投身于哪个行业好?
  3. 金融最靠谱

1. 算法在各个行业的应用

大数据的兴起冲击着各行各业,带来机遇也带来挑战,没有数据你就没有核心价值。当有了数据作为基础,你要继续需要思考如何让数据变的有价值。过去的2016年的投资市场很惨淡,唯有人工智能大火了一把。从深度挖掘(Deep Learning)技术在图像识别领域的精确识别,迭代决策树(GBDT)在数据挖掘算法比赛中频繁获奖,到AlphaGo在围棋领域打败在人类选手,百度小度机器人在最强大脑的舞台上挑战人类脑王等等,这些事件都是算法领域的突破。

算法,真的已经应用到了各行各业,在慢慢地改变着人们的生活和习惯,比如说图像识别,自动驾驶,用户行为,金融征信,量化投资等领域,都在发生着变化。

图像识别领域,深度学习算法异军突起,不仅可以进行准确的人脸识别、指纹识别,还可以进行复杂的图像对比。我深刻记得,2016年参加的光谷人工智能大会上,听西安电子科技大学公茂果教授分享的“深度神经网络稀疏特征学习与空时影像变化检测”主题,利用图像识别技术,对比汶川地震前后的卫星照片和光感照片,准确地找到了受到地震影响最严重的区域,即震前和震后地貌发生变化最大的区域,快速地为救援队定位到最需要帮助的地点,解救伤者,投放救援物资。

自动驾驶领域,可以通过识别路面的状况来实现自动驾驶、自动停车。Uber无人驾驶汽车已经在匹兹堡上路测试,自动驾驶汽车配备了各式传感器,包括雷达、激光扫描仪以及高分辨率摄像头,以便绘制周边环境的细节。自动驾驶汽车有望改善人类的生活质量,也可挽救数百万人的性命,为人们提供更多的出行方便。5年前,我在听Andrew Ng的斯坦福大学机器学习公开课的时候,就被当时的自动驾驶视频介绍所震撼,科幻电影中的世界就快变成现实了。

用户行为分析,人类有各种各样的行为和需求。衣食住行,吃喝玩乐,都是人的最基本的行为。大多数人的行为是共性的,商家可以收集这些行为数据,通过数据挖掘算法来找到人们行为共性的规律。根据用户的购物行为,商家可以为用户推荐喜欢的商品,这样就有了推荐系统; 根据用户对信息的查询行为,可以发现用户对信息的需求,这样就有了搜索引擎;根据用户位置的变化,可以发现用户的出行需求,这样就有了地图应用;针对用户个性化的行为,可以给用户打上标签,用来标注用户的特征或身份,这样就有了用户画像。用户行为分析,让商家了解用户习惯,同时也让用户了解自己,有巨大的商业价值。

在金融领域也有很多,算法应用的场景。

金融征信领域,传统信贷业务都是银行核心业务,但由于中国人数众多且小客户居多,银行无法负担为小客户服务的高成本,导致民间信贷的兴起。2014年底互联网金融P2P的开始爆发,贷款需求被满足的同时,却暴露出了违约风险。征信体系缺失,导致很多P2P公司坏账率很高,到2016年底P2P跑路的多达数千家。征信需求,变得非常迫切。比如,某个人想买车但现金不够,这时就需要进行贷款。商家给用户进行贷款时,通过信用风险的评级就能判断出这个用户的还款能力,从而来决定给他贷多少钱,以什么周期还款,减少违约风险。支付宝的芝麻信用分,是目前被市场一致认可的信用评分模型。

量化投资领域,我认为这个领域最复杂的,最有挑战性的,同时也是最有意思的。可以通过量化算法模型实现赚钱,是最容易变现的一种方法。在金融投资领域中,有各式各样的数据,反应的各种金融市场的规则,有宏观数据,经济数据,股票数据,债券数据,期货数据,还有新闻数据,情绪数据等等,金融宽客(Quant)通过分析各种各样的数据,判断出国家的经济形势和个股的走势,进行投资组合算法,实现投资的盈利。

看到这里,我想问问大家,你们脑子里那些聪明的想法,有没有被金融行业的魅力撩出些许的荷尔蒙?

2. 投身于哪个行业好?

从上面各个行业的算法应用来说,都有很广阔的应用前景。作为一个算法的研究者,那我们究竟投身到哪个行业更好呢?

这个其实要从多个方面进行考虑,我们的目标是个人价值最大化。那么,你要选择一个自己能够接触到的、完全竞争的、短流程的渠道,利用你的算法技术和对业务的理解实现变现的过程。

其实,满足个人可变现的渠道其实非常有限,你很难通过一个图像识别的算法,直接面向市场进行收钱,你需要有一个承载的产品,而产品研发的过程是非常漫长的。同样地,自动驾驶算法需要汽车生产场商的实验。用户行为分析算法,需要电子商务平台的以用户购买行为进行验证。

量化投资,可以用个人账号在中国二级投资交易市场,完成交易过程。这种方式没有很多的中间环节,你获得交易所的数据,自己编写算法模型,然后用自己的钱去交易,完全自己把握。只要算法有稳定的收益率,你就可以赚到钱。这种变现方法,其实就是量化投资,从金融的角度才是最靠谱的一种变现方法。

3. 金融最靠谱

作为IT人,我们懂编程,懂算法,只要再了解金融市场的规则,就能去金融市场抢钱了。中国的金融二级投资交易市场,是一个不成熟的市场,同时又是情绪化的市场。市场中,每天都存在着大量的交易机会,每天都会有“乌龙指”。量化投资的技术,可以帮助我们发现这些由于信息不对称出现的机会,赚取超额的收益。

那么到底怎么做量化投资呢?。

下面举个例子,一个私募基金,募集了1亿资金准备杀入金融市场。基金经理决定按照投资组合的建模思路,对各类金融资产进行组合配置。下图就反应了各类资产,以均值-方差的标准来创建投资组合,符合资本资产定价模型(CAPM)的原理。关于资本资产定价模型详细介绍,请参考文章R语言解读资本资产定价模型CAPM

图中,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日的数据。

从业绩表现来看,这支基金最辉煌的时代在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。

我们再来看一下,这支基金的组合成分,主要是股票和债券。

债券占比 :

证券名称 占净值比 近3月涨跌
12石化01 2.34%↑ -0.49%
116国泰君安CP008 2.12%↑ -0.03%
116农发01 1.91%↑ -0.08%
110营口港 1.70%↑ -1.59%
109常高新 1.62%↑ -0.65%

股票占比:

证券名称 占净值比 近3月涨跌
中工国际 4.09%↑ -0.95%
中国医药 3.85%↑ 0.34%
神雾环保 3.81%↑ 2.56%
东方网络 2.89%↑ -13.00%
立讯精密 1.52%↑ -1.82%
高能环境 1.42%↑ -14.96%
上汽集团 1.38%↑ 7.88%
田中精机 1.31%↑ -12.28%
上海医药 1.25%↑ 5.39%
中牧股份 1.21%↑ -4.25%

从市场上几千支的股票和债券中进行选择,并配置不同的权重,之前都是基金经理干的活,那么我们用算法一样也可以干,说不定用算法模型构建的组合业绩会更好。如果我们用算法模型,取代了年薪几百万的基金经理,那么你就能够获得这个收益。最终实现个人价值,从而用算法改变命运。所以,通过金融变现才是最靠谱的。

转载请注明出处:
http://blog.fens.me/architect-algorithm/

打赏作者

R语言解读资本资产定价模型CAPM

用IT技术玩金融系列文章,将介绍如何使用IT技术,处理金融大数据。在互联网混迹多年,已经熟练掌握一些IT技术。单纯地在互联网做开发,总觉得使劲的方式不对。要想靠技术养活自己,就要把技术变现。通过“跨界”可以寻找新的机会,创造技术的壁垒。

金融是离钱最近的市场,也是变现的好渠道!今天就开始踏上“用IT技术玩金融”之旅!

关于作者:

  • 张丹(Conan), 程序员R,Nodejs,Java
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/finance-capm

前言

伴随2016年中国金融交易市场的跌宕起伏,风险越来越不确定,利率持续走低,理财等无风险资产收益持续下降的情况,唯有投资组合才能让我们的资产保值、增值。根据资本资产定价模型(CAPM),通过对金融数据的分析,构建投资组合,帮助我们在有效的市场中控制风险、稳定收益。

本文将深入浅出地介绍资本资产定价模型,从理论到建模,再到程序现实。资本资产定价模型反应的是资产的风险与期望收益之间的关系,风险越高,收益越高。当风险一样时,投资者会选择预期收益最高的资产;而预期收益一样时,投资者会选择风险最低的资产。

由于本文为非金融教材类文章,所以当出现与教课书不符的描述,请以教课书为准。本文力求用简化的语言,来介绍自资本资产定价模型的知识,同时配合R语言的实现。

目录

  1. 故事背景
  2. 资本市场线
  3. 资本资产定价模型
  4. 用R构建投资组合模型
  5. Beta VS Alpha

1. 故事背景

1952年,马科维茨(Markowitz)提出了投资组合选择理论,他认为最佳投资组合应当是,风险厌恶特征的投资者的无差异曲线和资产的有效边界线的交点。投资者在选择资产时会在收益和风险之间做出平衡:当风险一样时,会选择预期收益最高的资产;而预期收益一样时,会选择风险最低的资产。

01

图1 投资组合选择示意图

到1964年,威廉-夏普(William Sharp),约翰-林特纳(John Lintner)与简-莫森(Jan Mossin)则在马科维茨基础上提出的单指数模型,将市场组合引入均值-方差模型,极大地简化了计算,他们认为获得了市场任意资组合的收益与某个共同因素之间是有线性关系,最终将其发展为资本资产定价模型(Capital Asset Pricing Model, CAPM)。从马科维茨的投资组合选择理论,发展到资本资产定价模型经历了一个漫长的过程。

简单一句话概括,资本资产定价模型的核心思想,资产价格取决于其获得的风险价格补偿。

假设条件

资本资产定价模型,是基于一系列假设条件而成立的。但这些条件,可能并不符合现实的标准,资本资产定价模型也一度遭到质疑。

  • 资产可以无限分割。
  • 不存在交易成本和个人所得税。
  • 可以无限卖空。
  • 存在一种无风险利率,投资者在此利率水平下,可以无限制地贷出和借入任意数额的资金。
  • 投资者是价格接受者,市场是完全竞争的。
  • 投资者是理智的,通过比较资产的期望收益和方差来作出投资决策,在相同预期收益下会选择风险最小的资产。
  • 投资者在相同的投资期限出作出决策,而市场信息是公开免费的,并可以及时获得。
  • 投资者对市场中的经济变量有相同的预期,他们对任意资产的预期收益率、市场风险的看法是一致的。

资本资产定价模型的核心假设是认为市场满足完全、无摩擦和信息完会对称的条件,市场中的投资人都是Markowitz理论中的理性经济人。

2. 资本市场线

由于涉及到金融专业领域,有几个概念是我们应该提前知道的。

  • 风险资产:风险资产是指具有未来收益能力的资产,但收益率不确定且可能招致损失,比如股票、债券等。
  • 无风险资产:没有任何风险或者风险非常小的资产,有确定的收益率,并且不存在违约的风险。
  • 收益率:指从投资开始到投资结束时,所获得的投资回报率。
  • 无风险收益率:无风险资产,所产生的投资回报率。
  • 投资组合:由投资人或金融机构所持有的股票、债券、基金、衍生金融产品等组成的集合,目的在于分散风险。
  • 杠杆交易:就是利用小资金来进行数倍于原始金额的投资,以期望获取相对投资标的物波动的数倍收益率的盈利或亏损。

2.1 风险资产

对于风险资产来说,我们可以用预期收益和风险,通过二维的坐标来进行描述。

对上图的解释:

  • X轴,为风险
  • y轴,为收益率
  • 灰色区域,为金融资产可投资区域
  • 黑色线,为有效投资边界
  • A和B点,为2个风险资产

A和B有相同的x值,表示具有相同的风险。B点在A点上面,表示B的收益率高于A。对于理性的投资者来说,如果只在A点和B点之间做投资选择,那么大家都会投资到B点,而不投资于A点。

2.2 无风险资产

在下图中,我们加入无风险资产,来比较无风险资产和风险资产的关系。

对上图的解释:

  • B点,为1个风险资产,在有效投资边界上
  • C点,为无风险资产,在y轴上
  • X轴,为风险
  • y轴,为收益率
  • 灰色区域,金融资产为可投资区域
  • 黑色线,为有效投资边界

C点为无风险资产,他的位置在图示的y轴上,这时x为0,即风险为0。我们可以把投资,分配到C点或B点上。如果都投到C点,那么我们将获得的是R0部分的无风险收益;如果都投到B点,那么我们需要承担σB的风险,同时获得RB的风险收益。如果我们把资金,一部分投资到B点对应的风险资产上,另一部分投资到C点对应的无风险资产上,那么将构成一个由B和C资产组成的投资组合,而且风险和收益部分,将体现在B和C的连线上。

2.3 最优组合

那么,有没有最优的投资组合呢?收益最大、风险最小。下面就让我们来,发现这个最优的组合M。

对上图的解释:

  • M点,为最优组合的风险资产
  • B点,为1个风险资产,在有效投资边界上
  • C点,为无风险资产,在y轴上
  • X轴,为风险
  • y轴,为收益率
  • 灰色区域,金融资产为可投资区域
  • 黑色线,为有效投资边界

假设有最优的组合,在上图中M点处,当我们把C和M进行连线,使得CM的连线与灰色区域相切。从图上看,CM的连线会比任意的C与可投资区域点的连线斜率都要大,比如C和B的连线。我们取CB的连线的延长线,在CB的延长线上找到,与M具有相同x的点B’,这时M与B’风险相同,M点在B’点的上面,所以M点的收益率大。也就是说,当风险相同的时候,我们都会选择收益率最大的资产。

不论从可投资区域中怎么选取,M点都是斜率最大的点,那么我们可以认为,M点为市场上各资产的最优的投资组合.

对于最优的投资组合,其实不管投资者的收益风险的偏好是什么样子的,只要找到了最优的风险资产组合,再加上无风险的资产,就可以为投资者获得最佳的投资方案了。那么对于理性的投资者,如果发现了最优的组合,他们只会投资于这个组合,这时与收益和风险偏好无关。

M点构建的投资组合,一般是由所有可投资证券产品组成的,每种证券资产构成的比例,为证券的相对市值。无风险资产C,并没有包括在M中,人们都会选择CM的连接线进行投资,来构建最优的投资组合。

在实际的市场交易中,金融资产的价格会发生偏离,因为价格受市场的供需关系所影响,当价格发生偏离后,市场会自动修复会回均衡价格水平。

2.4 资本市场线

对于CM的连线,就是马科维茨提出了投资组合选择理论,风险厌恶特征的投资者的无差异曲线和资产的有效边界线的交点。这条线就叫,资本市场线(Capital Market Line)。

资本市场线是指表明有效组合的期望收益率和标准差之间的一种简单的线性关系。

资本市场线决定了证券的价格。因为资本市场线是证券有效组合条件下的风险与收益的均衡,如果脱离了这一均衡,则就会在资本市场线之外,形成另一种风险与收益的对应关系。

2.5 投资组合构建

资本市场线,就是我们最优的投资组合,当我们发现这个投资组合,所有资金都会投到这个组合上。通过对无风险资产C和风险资产M分配不同的投资权重,我们可以自己配置出自己想要的风险和收益来,同时可以利用金融工具来加杠杆放大风险和收益的范围。

如果我们把投资者分成,风险厌恶型和风险激进型。

对于风险厌恶型,他们对于资金安全有非常高的要求,不追求高收益但求本金安全,这些资金通常都是用来生活的。那么在为这些资金做资产配置方案的时候,可以把一部分资金配置无风险资产上,同时少量资金配置到M点的最优组合上,保证低风险并获得少量收益。

如图中CM1点,如果配置50%的风险资产M和50%的无风险资产C,来实现投资组合。公式如下:

CM1 = 0.5C + 0.5M

对于风险激进型,他们对于资金有非常高的收益要求,本金可以部分或全部损失,这些资金通常都是“闲钱”,就是用来进行投资活动的。那么在为这些资金做资配置方案时,可以全部都投到M上,再激进点,可以通过借钱、融资的方式,增加杠杆,把资金放大进行投资。这种操作风险会随着杠杆的放大剧增,当然同时你也会有更大的收益。

如图中CM2点,落在了CM的延长线上。我们可以配置150%的风险资产M,同时用50%的钱去抵押以无风险资产C的收益率去借钱。公式如下:

CM2 = -0.5C + 1.5M

2.6 风险和收益的关系

上面我们描述风险和收益的关系,主要是从思路上定性介绍,没有进行定量描述,那么究竟风险和收益从数学上怎么进行定义呢。

对上图的解释:

  • M点,为最优组合的风险资产
  • C点,为无风险资产,在y轴上
  • r0,为无风险资产的收益率
  • rM,为M点的收益率
  • x轴,σp为风险资产的收益率的方差
  • y轴,rp为收益率

根据威廉-夏普所引入的均值-方差模型,极大地简化了计算,就是解决了公式计算的问题。用方差来刻画风险,建立收益和风险的一元线性关系。可以用下面公式来表示:

公式

E(rm) – r0 = A * σM^2

公式解释:

  • E(rm):市场投资组合的预期收益率
  • r0:无风险收益率
  • E(rm)–r0, 市场投资组合的风险溢价
  • σM^2: 市场投资组合方差Var(rM)
  • A:风险厌恶水平

有了公式,我们就明确的知道了,风险和收益的定量关系,并且可以利用数据来进行计算。

3. 资本资产定价模型

对于市场的投资组合,风险溢价和市场投资组合的方差成线性关系。但对于单个资产来说,收益和风险是市场投资组合组成的一分部,受市场共同变化的影响。

3.1 单个资产风险溢价

对于单个资产的风险来说,在资本资产定价模型中,用β来进行表示。β是衡量单个金融资产与市场收益的共同变化程度,通过协方差来计算。单个资产的风险为,当前资产与投资组合收益率的协议差,除以投资组合收益率的方差。

单个资产的风险的计算公式:


βi = Cov(ri, rm) / Var(rm) 
   = Cov(ri, rm) /  σm^2

单个资产的风险溢价的计算公式:


E(ri) – rf = (Cov(ri, rm) / σm^2)*[E(rm) – rf] 
           =  βi  *  [E(rm) – rf]

对公式的解释:

  • E(ri),为风险资产i的预期收益
  • E(rm),为市场投资组合的预期收益
  • rf,为无风险资产收益
  • Cov(ri, rm),为风险资产收益率和市场投资组合收益率的协议差
  • Var(rm),为市场投资组合的收益率的方差

从公式可以看出,单个资产的风险溢价与市场投资组合M的风险溢价成正比,受β影响。

3.2 资本资产定价模型

资本资产定价模型,是现化金融学中的基石理论。在上述假设条件下,可以推到出资本资产定价模型的具体公式。整个和推到过程,就是上面文章介绍的过程,从后人学习的角度看,这个理论比较简单的,仅用到了简单地统计学知识,但是前人却花了很长的时间研究和探索。

判断单个资产的风险时,当β=1时,则说明当前资产与整个市场的趋势是完全保持一致的;当β为2时,代表高风险,其回报的变化将大于市场大盘的变化幅度;当β为0.5时,代表是低风险的资产配置。

3.3 2种风险

在资本资产定价模型,定义了2种风险,即系统性风险和非系统性风险。

系统性风险,就是由外部因素引起的风险,比如:通货膨胀,GDP,重大政治事件等等。这一类事件对于资产收益率的影响不能通过组合本身来消除的,所以这一类风险对于投资者来说是无法回避的。

非系统性风险,就是组合内部结构引起的风险,比如:A股与B股高度相关,A股的收益率出现大幅波动的时候,B股也会出现相似幅度的波动,波峰叠加或波谷叠加,就会增加整个组合的风险;反之,如果A与B为负相关,则A与B的波动就会相互抵消。这样,风险是由组合里的资产类型决定的,所以通过多样化分散的投资策略,无论在理论还是实际上,这种风险都是可以最小化甚至消除的。而这个消除的过程中,整个投资组合的收益率是不会下降的。

3.4 2种收益

与风险相对应是收益,我们承受了2种风险的同时,也获得了风险所带来的收益。一部分是与市场完全相关收益部分,即beta(β)收益;另一部分与市场不相关的收益部分,即alpha(α)收益。

  • beta收益,相对容易获得,例如,你看好一个市场,可以持有成本低廉的对应市场的指数基金,等待市场上涨。
  • alpha收益,比较难获得,alpha是体现投资水平的策略收益。

alpha是,投资组合的实际期望收益与预期收益之间的差。计算alpha的公式为:


E(ri) – rf = αi + βi  *  [E(rm) – rf]
αi         = [E(ri) – rf] -  βi * [E(rm) – rf]

alpha是衡量投资人投资水平的,我们举个例来说明。比如:市场收益率为14%,A证券的β=1.2,短期国债利率6%,投资者对这只股票的进行了交易,获得的实际收益为17%,那么我们怎么判断投资人的水平呢?

首先,先求出A证券的预期收益率 = 6% + 1.2*(14-6)% = 15.6%,再用投资者实际收益减去A证券预期收益 17% – 15.6% = 1.4%。最后获得的1.4%就是alpha,表示投资者能力,可以额外获得1.4%的收益。

3.5 资本资产定价模型的应用场景

进行组合投资分散风险:投资者可以按市场组合的构成比例分散持有多种风险资产,使持有的风险资产组合最大限度地接近市场组合,以达到消除非系统风险的目的。

调整收益风险比例:将无风险资产与风险资产市场组合进行再组合,以获得所希望的个性化的风险收益组合。

指数化投资:将资产配置在与某一指数相同的权重的投资方法,通过微调权重或成分,获得比指数更好的alpha。

资产定价:资本资产定价模型可以用来判断有价证券或其他金融资产的市场价格是否处于均衡水平,是否被高估或低估,以便通过套利活动获取超额收益。

基金购买:举一个贴近市场的例子,当我们要购买基金时,也可以用到资本资产定价模型帮我们分析。比如,基金A的期望收益率12%,风险β=1,基金B期望收益率13%,β=1.5。市场期望收益率11%,无风险资产收益率r0 = 5%。 那么哪只基金更值得买?

当你每天打开支付宝,看到里面的各种基金推荐。你就会发现这是一个实际的问题。如果你懂学了本文,按照资本资产定价模型的思路,其实就是求alpha,哪个基金的alpha高,就买哪个。

求alpha,我们就直接套用公式。


αA = 12 – 5 – 1 * [11 - 5] = 1%
αB = 13 – 5 – 1.5* [11 -5 ] = -1%

基金A的alpha为1%,而基金B的alpha为-1%。结论就很明显,基金A的管理人能力很好,超额收益1%;而基金B的管理人,就差一些,盈利低于市场1%。所以,我们会投资基金A,而不会投资基金B。

4. 用R构建投资组合模型

花了大量的篇幅介绍了资本资产定价模型的原理,对于程序实现其实是相当简单地。因为R语言中,已经把资本资产定价模型相关的计算函数都封包好了,我们仅仅是调用就能完成整个的计算过程。

R语言程序实现,我们主要会用到2个包,quantmod和PerformanceAnalytics。对于为什么要用R语言,可以参考文章R语言为量化而生

  • quantmod,用于下载数据。
  • PerformanceAnalytics,用于进行各种评价指标计算。

我们设计一个应用场景,假如我有10万美金想投资于美国的股市,我想获得比标普好(SP500)的投资收益,那么我应该如何购买股票。

首先,我们先想清楚,我的最终的目标是“比标普好的投资收益”。其次,我们基于资本资产定价模型理论基础,从投资组合角度思考投资策略,而不是技术指标的角度。比标普好,那么我们就需要以标普指数做为理想投资组合。然后,我们去市场上选择几个股票,分别计算出收益率,beta,alpha等指标,判断是否符合的预期,反复测试,直到找到合适的股票或股票组合。

本文只是案例介绍,用于说明投资思路和方法,不购成任何的股票推荐。

本文的系统环境

  • Win10 64bit
  • R version 3.2.3 (2015-12-10)

从yahoo下载IBM,GE(通用电器),YHOO(Yahoo)的3只股票,从2010年01月01日的日行情数据,同时下载标普指数(SP500)的日行情数据。

下面代码并不完整,但思路已经给出,请大家不要太随意地张嘴要数据和代码,毕竟写一篇文章非常辛苦。如果你想直接用我的代码,请扫文章下面二维码,请作者喝杯咖啡吧。 :_D

执行R语言程序。


# 加载程序包
> library(quantmod) 
> library(PerformanceAnalytics)

# 从yahoo下载3只股票的数据,和SP500的数据
> getSymbols(c('IBM','GE','YHOO','^GSPC'), from = '2010-01-01')

# 打印前6行和后6行数据
> head(GSPC)
              open    high     low   close     volume adjusted
2010-01-04 1116.56 1133.87 1116.56 1132.99 3991400000  1132.99
2010-01-05 1132.66 1136.63 1129.66 1136.52 2491020000  1136.52
2010-01-06 1135.71 1139.19 1133.95 1137.14 4972660000  1137.14
2010-01-07 1136.27 1142.46 1131.32 1141.69 5270680000  1141.69
2010-01-08 1140.52 1145.39 1136.22 1144.98 4389590000  1144.98
2010-01-11 1145.96 1149.74 1142.02 1146.98 4255780000  1146.98

> tail(GSPC)
              open    high     low   close     volume adjusted
2016-12-20 2266.50 2272.56 2266.14 2270.76 3298780000  2270.76
2016-12-21 2270.54 2271.23 2265.15 2265.18 2852230000  2265.18
2016-12-22 2262.93 2263.18 2256.08 2260.96 2876320000  2260.96
2016-12-23 2260.25 2263.79 2258.84 2263.79 2020550000  2263.79
2016-12-27 2266.23 2273.82 2266.15 2268.88 1987080000  2268.88
2016-12-28 2270.23 2271.31 2249.11 2249.92 2392360000  2249.92

# 画出SP500的K线图
> barChart(GSPC)

把4个品种的调整后的价格进行合并。


> # 改列名
> names(IBM)<-c("open","high","low","close","volume","adjusted")
> names(GE)<-c("open","high","low","close","volume","adjusted")
> names(YHOO)<-c("open","high","low","close","volume","adjusted")
> names(GSPC)<-c("open","high","low","close","volume","adjusted")

# 数据合并
> dat=merge(IBM$adjusted,GE$adjusted,YHOO$adjusted,GSPC$adjusted)
> names(dat)<-c('IBM','GE','YHOO','SP500')

# 打印前6行
> head(dat)
                IBM       GE  YHOO   SP500
2010-01-04 112.2859 12.27367 17.10 1132.99
2010-01-05 110.9295 12.33722 17.23 1136.52
2010-01-06 110.2089 12.27367 17.17 1137.14
2010-01-07 109.8274 12.90920 16.70 1141.69
2010-01-08 110.9295 13.18724 16.70 1144.98
2010-01-11 109.7680 13.31435 16.74 1146.98

计算每日收益率,合并收益率到dat_ret


> dat_ret=merge(IBM_ret,GE_ret,YHOO_ret,SP500_ret)
> names(dat_ret)<-c('IBM','GE','YHOO','SP500')
> head(dat_ret)
                    IBM           GE         YHOO        SP500
2010-01-04  0.009681385  0.015111695  0.009445041 0.0147147759
2010-01-05 -0.012079963  0.005177994  0.007602339 0.0031156762
2010-01-06 -0.006496033 -0.005151320 -0.003482298 0.0005455205
2010-01-07 -0.003461515  0.051779935 -0.027373267 0.0040012012
2010-01-08  0.010034759  0.021538462  0.000000000 0.0028817272
2010-01-11 -0.010470080  0.009638554  0.002395150 0.0017467554

定义无风险收益率为4%,计算4个资产的平均年化收益率。


# 无风险收益率
> Rf<-.04/12

# 计算平均年化收益率,平均年化标准差,平均年化Sharpe 
> results<-table.AnnualizedReturns(dat_ret,Rf=Rf)
> results
                               IBM      GE    YHOO   SP500
Annualized Return           0.0345  0.1108  0.1257  0.1055
Annualized Std Dev          0.1918  0.2180  0.3043  0.1555
Annualized Sharpe (Rf=84%) -2.8892 -2.3899 -1.6911 -3.3659

统计指标分析,每个资产有1760个样本点,没有NA值。日最小收益率,YHOO最小为-0.0871。日最大收益率,在GE为0.1080。算数平均,几何平均,方差,标准差都是YHOO最大。


# 计算统计指标
> stats
                      IBM        GE      YHOO     SP500
Observations    1760.0000 1760.0000 1760.0000 1760.0000
NAs                0.0000    0.0000    0.0000    0.0000
Minimum           -0.0828   -0.0654   -0.0871   -0.0666
Quartile 1        -0.0060   -0.0065   -0.0098   -0.0039
Median             0.0002    0.0004    0.0005    0.0005
Arithmetic Mean    0.0002    0.0005    0.0007    0.0004
Geometric Mean     0.0001    0.0004    0.0005    0.0004
Quartile 3         0.0067    0.0077    0.0112    0.0053
Maximum            0.0567    0.1080    0.1034    0.0474
SE Mean            0.0003    0.0003    0.0005    0.0002
LCL Mean (0.95)   -0.0004   -0.0001   -0.0002    0.0000
UCL Mean (0.95)    0.0008    0.0012    0.0015    0.0009
Variance           0.0001    0.0002    0.0004    0.0001
Stdev              0.0121    0.0137    0.0192    0.0098
Skewness          -0.5876    0.3084    0.0959   -0.3514
Kurtosis           4.6634    4.7294    2.9990    4.0151

画出IBM股票,日收益和月收益的图,4个资的累积收益率图,并对4个资产做相关性分析。

IBM股票,每日收益图

IBM股票,每月收益图

4个品种的累积收益率图

从上图中可以看出,红线(GE)和蓝线(SP500)的走势基本稳合,说明GE在从2010开始在跟着美国经济持续发展。绿线(YHOO)从2013初到2015年初大幅拉升,领先于SP500很多,说明这段时期YHOO所处的互联网行业,带来了非常大的市场红利;从2015年到2016年,又下跌很大,大起大落,受市场影响非常敏感。黑线(IBM)大部分时间都处于SP500的下方,说明美国经济这几年的高速发展,并没有给IBM带来很大的发展空间。如果从我们的目标来说,”比标普好的投资收益”那么我们只能选择GE或YHOO。

相关性分析

对4个品种进行相关性分析,发现GE和SP500相关系数为0.78,是3只股票中最相关的。而YHOO是与其他3个品种走势最不一样的。

最后,以SP500为市场组合,分别计算出3只股票的alpha和beta。


# 计算alpha
> CAPM.alpha(dat_ret[,1:3],dat_ret[,4],Rf=Rf)
                      IBM           GE         YHOO
Alpha: SP500 -0.000752943 0.0003502332 0.0003944279

# 计算beta
> CAPM.beta(dat_ret[,1:3],dat_ret[,4],Rf=Rf)
                  IBM       GE     YHOO
Beta: SP500 0.8218135 1.098877 1.064844

3只股票中,IBM的alpha是最小的,而且是负的,说明IBM落后于市场,买IBM不如直接SP500更好。GE的Beta是最大的,在上升时期beta越大,获得的市场收益也会越大。YHOO从Alpha和Beta上看,虽然与GE接近,但由于标准差,最大回撤等指标过大,会导致波动太大。

综上分析,我们如果配置部分GE和部分YHOO,就可以获得比标普好的收益,但由于GE和YHOO的beta都高于SP500,所以风险也会高于SP500,需要增加新的股票来分散风险,具体的定量分析,将在以后的文章中再进行介绍了。

5. Beta VS Alpha

最后,补充一些Alpha和Beta的说明。Alpha和Beta的认知最早是一个股市起源的概念,是一个关于投资组合的收益率分解的问题

  • Alpha:一般被认为是投资组合的超额收益,也既管理人的能力;
  • Beta:市场风险,最初主要指股票市场的系统性风险

Alpha是平均实际回报和平均预期回报的差额。

  • α>0,表示一基金或股票的价格可能被低估,建议买入。
  • α<0,表示一基金或股票的价格可能被高估,建议卖空。
  • α=0,表示一基金或股票的价格准确反映其内在价值,未被高估也未被低估。

Beta反映了单个证券与整体市场组合的联动性。

  • β>1,攻击性,市场上升时涨幅大。
  • β<1,防御性,市场下跌时跌幅小。
  • β=1,中立性,与市场波动一致。

从资本资产定价模型开始发展到现今,已经有很长的时间了。金融理论在一直发展,继资本资产定价模型之后又一重要的理论突破是套利定价理论,我将在下一篇文章中进行介绍。

本文中,我详细地介绍了资本资产定价模型的金融理论、推到过程、以及R语言实现,用我自己的理解进行阐述。希望能给走在量化道路上的朋友带来入门的指引和帮助,也希望找到像我一样,通过IT转金融的人,让我一起用IT技术+金融的思维在金融市场抢钱吧。

转载请注明出处:
http://blog.fens.me/finance-capm

打赏作者