主管 8 87丶348 适合电视游戏吗一号店站注册

游艺城注册就送11元_*>立即开始*>游艺城注册就送11元〖官方网站〗*欢迎阁下光临_
<meta name="description" content="&&
大量奥运会门票交给英国体育票务公司THG,协助后者在黑市上倒卖门票牟取暴利。希基和THG公司均否认倒票。巴西警方日在新闻发布会上说,警方发现希基与一个名叫马库斯·埃文斯的英国商人有频繁的电子邮件往来,而埃文斯正是THG公司的幕后主人,他的一家同”。
和平丝路彰显着一带一路的共同追求。和平丝绸之路,意味着丝路建设必须在和平的环境下进行,另一方面,一带一路也将为维护地区和平贡献力量。德国国际政治和经济智库席勒研究所创始人黑尔佳策普拉鲁什女士曾表示,当今世界需要建立一个经济发展平台,一个符合全人类文明共同利益的平台。从这个意义上说,新丝绸之路是当今世界和平的最重要的创举。以仁为核,以和为贵。和平丝绸之路再次向世界证明,中国将坚定不移地走和平发展道路,建立以合作共赢为核心的新型国际关系,构筑和平世界的共同梦想。
赛,鲁能遇到首尔,结果主场再次惨败,去到客场,鲁能拼下一场平局实属不易。此役,鲁能再次输球,最近场亚冠比赛,鲁能对韩国球队不胜,战绩是尴尬的平负。鲁能上一场战胜韩国球队,已经是年,他们主场击败首尔。连续战韩球队不胜:赛季客场首尔FC赛季
限和在本单位工作年限,给予三个月到二十四个月的医疗期。她表示,在医疗期之后,企业要和劳动者解除劳动关系,一方面企业需要证明劳动者不能从事原工作,也不能从事由企业另行安排的工作,另一方
的“最后一公里”。“西风烈,长空雁叫霜晨月。霜晨月,马蹄声碎,喇叭声咽。雄关漫道真如铁,而今迈步从头越。从头越,苍山如海,残阳如血。”娄山关下,山壁间巨幅碑石上镌刻的《忆秦娥·娄山关》,大气磅礴,
杭州峰会恰逢世界经济增长和二十国集团转型的关键节点。当前,世界经济复苏乏力,各类风险和不确定性仍然比较突出,二十国集团面临进一步从危机应对机制向长效治理机制转型,从侧重短期政策向短中长期政策并重转型。直面问题,共寻答案,是各方肩负的共同使命。“青山缭绕疑无路,忽见千帆隐映来。”在“构建创新、活力、联动、包容的世界经济”这一峰会主题指引下,各方共同讨论重点议题和气候变化、难民、反恐融资等影响世界经济的其他突出问题,通过了《二十国集团领导人杭州峰会公报》,就推动世界经济增长达成了杭州共识,描绘了未来发展的美好愿景。在世界经济的关键当口,人类追求发展、向往合作的决心与意志又一次点亮了前行之路。
过去,体育的场景一个是体育场、一个是电视台。而事实上,这两者已经塞满了。当人们想进一步投入对体育的热情时,他们能选择的消费方式还是原有的——要么去体育场看球,要么在家看。这是我们在努力的事情,构建新的服务。如果还是基于原来打开中央五台和去体育场的体育场景的话,这个商机是不能够真正释放的。冯鑫指出,如何能够提供一个跟用户,跟体育相连接的一个场景,并在这个场景当中有更好的服务,这是他们现在面临最重要的课题。
”的星二代又在圈中相聚,十分有缘。曝宋小宝已经是二婚网传宋小宝出轨女粉丝宋小宝出轨遭赵本山警告东方网月日消息:最近围绕宋小宝的风波不断。虽然“耍大牌惹百人围殴”的传言被辟谣了,但据全明星探爆料,有家室
毫无疑问,未来的房地产市场是存量房的天下,而各家中介公司对于市场份额的争夺也不会停止。昨日,伟业我爱我家集团宣布与北京房山区域中介公司华熙地产达成合作,在规模扩张的路上再落一子。事实上,在北京存量房市场争夺战中,链家已远远超出我爱我家,成为行业龙头。为自保,我爱我家跟伟业合并后依然无法撼动链家的地位。此次我爱我家与华熙地产合作,也是为了追赶落下的市场份额。从2015年开始,房地产中介行业的并购整合成为常态,未来集中度不断提升仍将成为行业发展的主旋律。
海利的此番离职正值特斯拉处于关键时刻该公司计划在2018年之前将汽车年产量增加到50万辆,比原计划又提前了两年。但是,2015年,特斯拉的汽车交付量只有50658辆,而且在过去的两个季度,特斯拉汽车交付量都与既定预期失之交臂。马斯克已经向投资者表示,特斯拉力争成为全球最好的制造商,但实际上,该公司在摆脱生产困境方面一直饱受挣扎之痛。今年5月,负责生产业务的特斯拉副总裁格雷格瑞秋(GregReichow)离职,而瑞秋也是特斯拉公司本薪最高的高管之一。
红军的故事,到现在我们家族每一个人都知道这一段历史,也为拥有这段多年前的军民情而骄傲。”岁的朱分永是故事主人公徐解秀的孙子,站在当年的厢房里,他显得有些激动。朱分永说,年月上旬的一天,中央红军卫
还不到两年,负利率就从抽象的经济理论领域进入了货币政策制定的主流。欧元区、日本和欧洲更小经济体正在进行的实验已表明,把利率压低至负数的实际障碍,没有人们之前想象的那么大。支持者表示,该政策——旨在鼓励消费者花钱、鼓励银行向实体经济发放更多贷款——已拯救了欧元区,使之没有跌入灾难性通缩。但仍没有决定性证据能够证明这一点。另一方面,负利率无疑是不受欢迎的,负利率执行时间越长,带来意外后果的风险也越大。
为此次会议文件中体现出的主旨。东吴证券研究所田耽对证券时报记者表示,上述新规对于中短存续期产品做出了更细致限制,主要变化有,从产品形态上禁止纯理财性质产品,风险保额不得低于累计已交保费的倍;从
回顾历史,战国时期的游说家苏秦,第一次游说没有成功,他的嫂子见他没有出息,整天刁难他,但是苏秦知道自己的观点不能打动国王,一定是自己的知识水平不够,于是他忍受着哥嫂的刁难,开始“头悬梁,锥刺股”,后来终于成功游说秦王,成为战国时期伟大的纵横家。苏秦在家的隐忍学习,正是人生路上的暂时停顿,这停顿,就好比花儿含苞待放,这停顿,就好比蓄积力量的马儿吃草,这停顿是为了实现自己的理想抱负而作的短暂歇息,这停顿,正是为了今后的向前迈进而作的短暂休息。
并要引入外部审计,加强年度审计账户独立性、结算利率的公平性等,然后在网站披露。华泰证券金融行业分析师罗毅表示,上述新规意味着,根据万能险风险保障成本收取风险保费,主要是预防集中退保产生的挤兑风险。保险业分化将加剧业内人士认为
基本信息股票代码002812股票简称创新股份申购代码002812上市地点深圳证券交易所发行价格(元/股)23.41发行市盈率22.99市盈率参考行业橡胶和塑料制品业参考行业市盈率(最新)52.41发行面值(元)1实际募集资金总额(亿元)7.84网上发行日期(周三)网下配售日期网上发行数量(股)30,132,000网下配售数量(股)3,348,000老股转让数量(股)-总发行数量(股)33,480,000申购数量上限(股)13,000顶格申购需配市值(万元)13.00中签缴款日期(周五)市值确认日期T-2日(T:网上申购日)一号站平台注册_一号站平台注册【官网】
粉丝日志首页
,将介绍如何用angularjs构建一个强大的web前端系统。angularjs是由Google团队开发的一款非常优秀web前端框架。在当前如此多的web框架下,angularjs能脱颖而出,从架构设计上就高人一等,双向数据绑定,依赖注入,指令,MVC,模板。Angular.js创新地把后台技术融入前端开发,扫去jQuery一度的光芒。用angularjs就像写后台代码,更规范,更结构化,更可控。
从 Angular 2.x 开始新的体验。
张丹(Conan), 程序员R,Java,Nodejs
weibo:@Conan_Z
转载请注明出处:
随着Angular2的升级,从1.x升级2.x,但我却迟迟没有动手。原因了2.x对1.x完全不兼容,而且从原生Javascript变成了Typescript,增加很多的生成模块,依赖的类库一下子变得很多。变化实在太大了,确实让人难以接受。我特别对于Typescript的不解,喜欢javascript的灵活,而静态化意味代码量的增加。
前几天,看到Angular2的release,想来想去还是要试试。从官方文档中,看到对中文支持的非常好,开发团队真是用心了。开发团队用心的改变,作为使用者来说是切身可以感受的,带着敬意和信心,决定把Angular2学起来。
Angular2介绍
Anguar2的快速启动
从命令行构建Anguar2
1. Angular2介绍
Angular是由Google开发的一套前端应用开发框架,可以快速帮你构建复杂的大型前端单页应用(Single Page Application)。我非常喜欢Angular 1.x 给我带来的前端开发体验,当前花了2周时间时间学习,几百行代码就实现了,超乎想象的应用效果。我放下了所有原来对于前端Javascript的认知,直接转向了Angular。
官方网站:
Angular2的新特性包括:
渐进式Web应用:借助现代化Web平台的力量,交付app式体验。高性能、离线化、零安装。
原生:借助来自Ionic、NativeScript和React Native中的技术与思想,构建原生移动应用。
桌面:借助你已经在Web开发中学过的能力,结合访问原生操作系统API的能力,创造能在桌面环境下安装的应用,横跨Mac、Windows和Linux平台。
代码生成:Angular会把你的模板转换成代码,针对现代JavaScript虚拟机进行高度优化,轻松获得框架提供的高生产率,同时又能保留所有手写代码的优点。
统一:在服务端渲染应用的首屏,像只有HTML和CSS的页面那样几乎瞬间展现,支持node.js、.NET、PHP,以及其它服务器,为通过SEO来优化站点铺平了道路。
代码拆分:Angular应用通过新的组件路由(Component Router)模块实现快速加载,提供了自动拆分代码的功能,为用户单独加载它们请求的视图中需要的那部分代码。
模板:通过简单而强大的模板语法,快速创建UI视图。
Angular命令行工具:命令行工具:快速进入构建环节、添加组件和测试,然后立即部署。
各种IDE:在常用IDE和编辑器中获得智能代码补全、实时错误反馈及其它反馈等特性。
测试:使用Karma进行单元测试,让你在每次存盘时都能立即知道是否弄坏了什么。Protractor则让你的场景测试运行得又快又稳定。
动画:通过Angular中直观简便的API创建高性能复杂编排和动画时间线 —— 只要非常少的代码。
可访问性:通过支持ARIA的组件、开发者指南和内置的一体化测试基础设施,创建具有完备可访问性的应用。
接下来,就让我们来体验Angular2的新颖之处的。
2. Anguar2的快速启动
阅读官方文档,我们可以跟着文档进行项目的快速启动,快速启动项目quickstart,是基于github,node,npm的,我们按照文档执行就可以了。关于Node的介绍,可以参考系列文章
系统环境:
Win10 64bit
node v6.9.4
npm 3.10.10
git version 2.7.0.windows.1
2.1 构建项目
进入开发目录,下载quickstart项目。
~ cd D:\\workspace\js
~ git clone //angular/quickstart.git quickstart
~ cd quickstart
~ npm install
# 执行npm安装和配置
~ npm start
# 启动项目
通过npm start命令,就直接启动了angular2的程序,默认会自动打开浏览器,就可以看到效果了。如果浏览没有自动打开,自己手动在浏览器打开localhost:3000,也可以打开。
2.2 目录结构
接下来,我们查看项目目录结构。
由于这个quickstart的模板项目,包含了太多的文件。一下子看到这么多东西,肯定要晕一会的。图中用红色部分标记的几个文件,是我们应该要知道的,其他的文件对于首次执行来说并不是太重要。
ponents.ts, 一个自定义组件,Typescript代码。
app/app.module.ts, 模块文件,用于组合管理组件,Typescript代码。
app/main.ts, 项目启动的入口,加载ts文件,Typescript代码。
ponents.spec.ts, 单测试文件
.gitignore, git的配置文件
index.html, 单页应用的html入口文件
package.json, Node项目的工程配置文件
tsconfig.json, Typescript语言的配置文件
2.3 4个核心文件
把几个核心的文件中的代码,进行解释。
ponents.ts文件
import { Component } from '@angular/core';
//引用系统类库
@Component({
//定义组件
selector: 'my-app',
//对应该index.html的&my-app&标签
template: `&h1&Hello {{name}}&/h1&`,
//替换&my-app&标签的内容
export class AppComponent
{ name = 'Angular'; }
//输出自定义组件
app/app.module.ts文件
import { NgModule }
from '@angular/core';
//引用系统类库
import { BrowserModule } from '@angular/platform-browser';
//引用系统类库
import { AppComponent }
from './ponent';
//引用ponents.ts文件,定义的AppComponent组件
@NgModule({
//定义模块
[ BrowserModule ],
//引用浏览器模块
declarations: [ AppComponent ],
//声明组件
bootstrap:
[ AppComponent ]
//启动组件
export class AppModule { }
//输出自定义模块
app/main.ts文件
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
//引用系统类库
import { AppModule } from './app.module';
//引用app.module.ts文件的AppModule
platformBrowserDynamic().bootstrapModule(AppModule);
//启动程序,加载模块
index.html文件
&!DOCTYPE html&
&title&Angular QuickStart&/title&
&meta charset="UTF-8"&
&meta name="viewport" content="width=device-width, initial-scale=1"&
&link rel="stylesheet" href="styles.css"&
&!-- Polyfill(s) for older browsers --&
&script src="node_modules/core-js/client/shim.min.js"&&/script&
&script src="node_modules/zone.js/dist/zone.js"&&/script&
&script src="node_modules/systemjs/dist/system.src.js"&&/script&
&script src="systemjs.config.js"&&/script&
System.import('app').catch(function(err){ console.error(err); });
&my-app&Loading AppComponent content here ...&/my-app&
index.html中$my-app&#038;gtl的标签,是会被ponents.ts文件定义的selector发现并处理。
这4个文件,其实就是程序源代码的核心文件。那么项目中的其他文件,都是各种工具的配置文件。比如,我要编译Typescript文件到Javascript文件,就是需要在tsconfig.json进行配置;对类库做动态加载就要用到systemjs;执行单元测试需要用到karma;上传到github需要用到.gitignore;对node项目的管理用package.json配置。
2.4 扩展工具
当然,还有一些扩展工具。
单独编译Typescrip到Javascript。
~ D:\workspace\js\quickstart>npm run tsc
单独编译Typescrip,并监控文件状态,发现文件变化重新变异。
~ D:\workspace\js\quickstart>npm run tsc:w
启动Server,在浏览器中查看效果。
~ D:\workspace\js\quickstart>npm run lite
~ D:\workspace\js\quickstart>npm test
E2E测试End-to-end
~ D:\workspace\js\quickstart>npm run e2e
除了从github上面下载quickstart模板,还是另外一种初始构建项目的方式,就是用Anguar2的命令行工具。
3. 从命令行构建Anguar2
从上文的Angular2的特性中,就有一项是命令工具,用这种方式构建一个新项目,更符合开发人员“脚手架”的思路。首先,我们需要安装这个命令工具anguar-cli。请大家务必升级Nodejs到v6.x以上,我之前用v4.4,花了大量时间调试都没有通过。
3.1 安装anguar-cli
~ D:\workspace\js>npm install -g angular-cli
安装好后,我们可以通过help命令查看命令行有哪个功能。
D:\workspace\js>ng help
ember build
Builds your app and places it into the output path (dist/ by default).
aliases: b
--target (String) (Default: development)
aliases: -t , -dev (--target=development), -prod (--target=production)
--environment (String) (Default: )
aliases: -e
--output-path (Path) (Default: null)
aliases: -o
--watch (Boolean) (Default: false)
aliases: -w
--watcher (String)
--suppress-sizes (Boolean) (Default: false)
--base-href (String) (Default: null)
aliases: -bh
--aot (Boolean) (Default: false)
--sourcemap (Boolean) (Default: true)
aliases: -sm
--vendor-chunk (Boolean) (Default: true)
--verbose (Boolean) (Default: false)
--progress (Boolean) (Default: true)
--i18n-file (String) (Default: null)
--i18n-format (String) (Default: null)
--locale (String) (Default: null)
// 省略....
查看ng工具的版本
~ D:\workspace\js>ng version
___ | |(_)
/ _` || '_ \
/ _` || | | || | / _` || '__|_____
/ __|| || |
| (_| || | | || (_| || |_| || || (_| || |
|_____|| (__ | || |
\__,_||_| |_| \__, | \__,_||_| \__,_||_|
\___||_||_|
angular-cli: 1.0.0-beta.26
node: 6.9.4
os: win32 x64
当然,我们最需要的就是构建项目,启动服务,生成组件,指令,服务等功能。
3.2 新建项目
新建一个项目
~ D:\workspace\js>ng new conan1
// 新建项目
installing ng2
create .editorconfig
create README.md
create src\ponent.css
create src\ponent.html
create src\ponent.spec.ts
create src\ponent.ts
create src\app\app.module.ts
create src\assets\.gitkeep
create src\environments\environment.prod.ts
create src\environments\environment.ts
create src\favicon.ico
create src\index.html
create src\main.ts
create src\polyfills.ts
create src\styles.css
create src\test.ts
create src\tsconfig.json
create angular-cli.json
create e2e\app.e2e-spec.ts
create e2e\app.po.ts
create e2e\tsconfig.json
create .gitignore
create karma.conf.js
create package.json
create protractor.conf.js
create tslint.json
Successfully initialized git.
Installing packages for tooling via npm.
Installed packages for tooling via npm.
Project 'conan1' successfully created.
等了大概有10分钟,下载了有200mb的文件,希望大家有耐心。进入安装目录。
~ D:\workspace\js\conan1>cd conan1
// 进入项目目录
~ D:\workspace\js\conan1>ng serve
// 启动项目
打开浏览器,查看Web网页。
如果你想修改启动端口为4201,可以用下面的命令。
ng serve --host 0.0.0.0 --port 4201 --live-reload-port 49153
用命令工具构建的项目目录。
目录结构有一个变化,就是嵌套了一层src目录,然后才是app目录。另外,多了angular-cli.json的配置文件。
3.3 模块生成器
接下来,我们可以用命令工具,进行项目模块和组件的开发了。
组件Component
ng generate component my-new-component
指令Directive
ng generate directive my-new-directive
服务Service
ng generate pipe my-new-service
ng generate pipe my-new-pipe
ng generate class my-new-class
接口Interface
ng generate interface my-new-interface
枚举对象Enum
ng generate enum my-new-enum
模块Module
ng generate module my-module
3.4 生成一个新组件
用命令生成一个hello的新组件,文件生成如下。
~ D:\workspace\js\conan1>ng generate component hello
installing component
create src\app\ponent.css
create src\app\ponent.html
create src\app\ponent.spec.ts
create src\app\ponent.ts
update src\app\app.module.ts
在app目录下生成了一个hello的子目录,包括了4个组件的文件,同时在app.module.ts模块文件中,注册了这个新组件。
我们要修改2个地方,让这个新生成的hello组件可以运行。
1. 修改index.html文件,增加&app-hello&标签。
&!doctype html&
&meta charset="utf-8"&
&title&Conan1&/title&
&base href="/"&
&meta name="viewport" content="width=device-width, initial-scale=1"&
&link rel="icon" type="image/x-icon" href="favicon.ico"&
&app-root&Loading...&/app-root&
&app-hello&Loading...&/app-hello&
2. 修改app.module.ts文件,在@NgModule.bootstrap中,增加HelloComponent的启动项。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './ponent';
import { HelloComponent } from './ponent';
@NgModule({
declarations: [
AppComponent,
HelloComponent
imports: [
BrowserModule,
FormsModule,
HttpModule
providers: [],
bootstrap: [AppComponent,HelloComponent]
export class AppModule { }
查看浏览器,我们可以看到hello works!显示到界面上。
3.5 生成一个新指令
属性型指令用于改变一个 DOM 元素的外观或行为。用命令生成一个link的新指令,操作如下。
~ D:\workspace\js\conan1>ng generate directive link
installing directive
create src\app\link.directive.spec.ts
create src\app\link.directive.ts
update src\app\app.module.ts
主要生成了新文件link.directive.ts。
import { Directive } from '@angular/core';
@Directive({
selector: '[appLink]'
export class LinkDirective {
constructor() { }
接下来,用appLink指令来做一个样式的修饰,需要修改2个文件。
1. 修改ponent.html文件,增加一段span的HTML标签,并配置appLink属性。
&p&hello works!&/p&
&span appLink&Directive me!&/span&
2. 修改link.directive.ts文件,在LinkDirective类的构造器constructor函数中,增加样式的修改属性。同时,通过@HostListener,监听鼠标动作。
import { Directive, ElementRef, HostListener, Renderer } from '@angular/core';
@Directive({
selector: '[appLink]'
export class LinkDirective {
constructor(el: ElementRef, renderer: Renderer) {
renderer.setElementStyle(el.nativeElement, 'backgroundColor', 'yellow');
@HostListener('mouseenter') onMouseEnter() {
this.highlight('blue');
@HostListener('mouseleave') onMouseLeave() {
this.highlight('yellow');
private highlight(color: string) {
this.renderer.setElementStyle(this.el.nativeElement, 'backgroundColor', color);
修改后,我们在浏览器中查看运行的效果。
3.6 生成一个新服务
服务,可以封装代码,比如我们可以对数据访问代码单独隔离,封装到一个独立的服务中。用命令生成一个meta的新服务,操作如下。
~ D:\workspace\js\conan1>ng generate service meta
installing service
create src\app\meta.service.spec.ts
create src\app\meta.service.ts
WARNING Service is generated but not provided, it must be provided to be used
生成了2个service的文件,同时提供了Service必须被provided,才可以被应用。我们如果想要启用meta的这个服务,需要在3个文件中进行修改。
1. 修改meta.service.ts文件,增加getNames()函数,用于提供数据访问。
import { Injectable } from '@angular/core';
@Injectable()
export class MetaService {
constructor() { }
getNames():any[]{
{id: 1, name: 'AAA'},
{id: 2, name: 'BBB'},
{id: 3, name: 'CCC'},
{id: 4, name: 'DDD'}
2. 修改ponent.ts文件,把MetaService注入到HelloComponent中,通过providers进行依赖注入的体现,同时调用MetaService 类的getNames()函数获取数据。
import { Component, OnInit } from '@angular/core';
import { MetaService } from '../meta.service';
@Component({
selector: 'app-hello',
templateUrl: './ponent.html',
styleUrls: ['./ponent.css'],
providers: [MetaService]
export class HelloComponent implements OnInit {
meta = [];
constructor(private metaService: MetaService) { }
ngOnInit() {
this.meta = this.metaService.getNames();
3. 修改ponent.html文件,用于数据的html输出,以列表形式输出。
&p&hello works!&/p&
&span appLink&Directive me!&/span&
&li *ngFor="let m of meta"&
{{m.id}}, {{m.name}}
修改后,我们在浏览器中查看运行的效果。
3.7 生成一个新管道
管道,可以用于数据的连续处理操作,比如可以把日期在界面端进行格式化,把格式转型格式。用命令生成一个datef的新管道,操作如下。
~ D:\workspace\js\conan1>ng generate pipe datef
installing pipe
create src\app\datef.pipe.spec.ts
create src\app\datef.pipe.ts
update src\app\app.module.ts
生成了2个pipe的文件。如果我们想使用这个功能,需要在2个文件中进行修改。
1. 修改datef.pipe.ts文件,对日期进行格式化,把转化为。
import { Pipe, PipeTransform } from '@angular/core';
name: 'datef'
export class DatefPipe implements PipeTransform {
transform(value: string) {
var dat1 = value.toString();
return dat1.substring(0,4)+ "-"+ parseInt(dat1.substring(4,6)) +
"-"+dat1.substring(6,8);
2. 修改ponent.html文件,进行HTML的输出。
&p&hello works!&/p&
&span appLink&Directive me!&/span&
&li *ngFor="let m of meta"&
{{m.id}}, {{m.name}}
&p&{{day}} ==& {{ day | datef}}&/p&
修改后,我们在浏览器中查看运行的效果。
其他的命令,我们在后文再继续说明。本文只是一篇对Angular2的新体验介绍,由于Angular2整个框架还是变化挺大的,同时我对Typescript也不熟悉,对webapck也需要花时间学习。整个过程花了不少时间,也走了不少的弯路。
目前,网上Angular2框架介绍的文章本来就不多,虽然官网文档比较详细,但是上手来说,还是有一定的难度的,希望本文对于新手来说有一些帮助,也希望Angualr2尽快成熟,我准备正在项目中用起来!!
转载请注明出处:
,将介绍如何使用IT技术,处理金融大数据。在互联网混迹多年,已经熟练掌握一些IT技术。单纯地在互联网做开发,总觉得使劲的方式不对。要想靠技术养活自己,就要把技术变现。通过“跨界”可以寻找新的机会,创造技术的壁垒。
金融是离钱最近的市场,也是变现的好渠道!今天就开始踏上“用IT技术玩金融”之旅!
关于作者:
张丹(Conan), 程序员R,Nodejs,Java
weibo:@Conan_Z
转载请注明出处:
伴随2016年中国金融交易市场的跌宕起伏,风险越来越不确定,利率持续走低,理财等无风险资产收益持续下降的情况,唯有投资组合才能让我们的资产保值、增值。根据资本资产定价模型(CAPM),通过对金融数据的分析,构建投资组合,帮助我们在有效的市场中控制风险、稳定收益。
本文将深入浅出地介绍资本资产定价模型,从理论到建模,再到程序现实。资本资产定价模型反应的是资产的风险与期望收益之间的关系,风险越高,收益越高。当风险一样时,投资者会选择预期收益最高的资产;而预期收益一样时,投资者会选择风险最低的资产。
由于本文为非金融教材类文章,所以当出现与教课书不符的描述,请以教课书为准。本文力求用简化的语言,来介绍自资本资产定价模型的知识,同时配合R语言的实现。
资本市场线
资本资产定价模型
用R构建投资组合模型
Beta VS Alpha
1. 故事背景
1952年,马科维茨(Markowitz)提出了投资组合选择理论,他认为最佳投资组合应当是,风险厌恶特征的投资者的无差异曲线和资产的有效边界线的交点。投资者在选择资产时会在收益和风险之间做出平衡:当风险一样时,会选择预期收益最高的资产;而预期收益一样时,会选择风险最低的资产。
图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&#8217;,这时M与B&#8217;风险相同,M点在B&#8217;点的上面,所以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) /
单个资产的风险溢价的计算公式:
E(ri) – rf = (Cov(ri, rm) / σm^2)*[E(rm) – rf]
[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]
= [E(ri) – rf] -
βi * [E(rm) – rf]
alpha是衡量投资人投资水平的,我们举个例来说明。比如:市场收益率为14%,A证券的β=1.2,短期国债利率6%,投资者对这只股票的进行了交易,获得的实际收益为17%,那么我们怎么判断投资人的水平呢?
首先,先求出A证券的预期收益率 = 6% + 1.2*(14-6)%
= 15.6%,再用投资者实际收益减去A证券预期收益 17% &#% = 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语言,可以参考文章
quantmod,用于下载数据。
PerformanceAnalytics,用于进行各种评价指标计算。
我们设计一个应用场景,假如我有10万美金想投资于美国的股市,我想获得比标普好(SP500)的投资收益,那么我应该如何购买股票。
首先,我们先想清楚,我的最终的目标是“比标普好的投资收益”。其次,我们基于资本资产定价模型理论基础,从投资组合角度思考投资策略,而不是技术指标的角度。比标普好,那么我们就需要以标普指数做为理想投资组合。然后,我们去市场上选择几个股票,分别计算出收益率,beta,alpha等指标,判断是否符合的预期,反复测试,直到找到合适的股票或股票组合。
本文只是案例介绍,用于说明投资思路和方法,不购成任何的股票推荐。
本文的系统环境
Win10 64bit
R version 3.2.3 ()
从yahoo下载IBM,GE(通用电器),YHOO(Yahoo)的3只股票,从日的日行情数据,同时下载标普指数(SP500)的日行情数据。
下面代码并不完整,但思路已经给出,请大家不要太随意地张嘴要数据和代码,毕竟写一篇文章非常辛苦。如果你想直接用我的代码,请扫文章下面二维码,请作者喝杯咖啡吧。 :_D
执行R语言程序。
# 加载程序包
> library(quantmod)
> library(PerformanceAnalytics)
# 从yahoo下载3只股票的数据,和SP500的数据
> getSymbols(c('IBM','GE','YHOO','^GSPC'), from = '')
# 打印前6行和后6行数据
> head(GSPC)
volume adjusted
> tail(GSPC)
volume adjusted
# 画出SP500的K线图
> barChart(GSPC)
把4个品种的调整后的价格进行合并。
> # 改列名
> names(IBM) names(GE) names(YHOO) names(GSPC) dat=merge(IBM$adjusted,GE$adjusted,YHOO$adjusted,GSPC$adjusted)
> names(dat) head(dat)
112.67 17.10 1132.99
110.22 17.23 1136.52
110.67 17.17 1137.14
109.20 16.70 1141.69
110.24 16.70 1144.98
109.35 16.74 1146.98
计算每日收益率,合并收益率到dat_ret
> dat_ret=merge(IBM_ret,GE_ret,YHOO_ret,SP500_ret)
> names(dat_ret) head(dat_ret)
-0. -0. -0..
定义无风险收益率为4%,计算4个资产的平均年化收益率。
# 无风险收益率
> Rf results results
Annualized Return
Annualized Std Dev
Annualized Sharpe (Rf=84%) -2.9 -1.9
统计指标分析,每个资产有1760个样本点,没有NA值。日最小收益率,YHOO最小为-0.0871。日最大收益率,在GE为0.1080。算数平均,几何平均,方差,标准差都是YHOO最大。
# 计算统计指标
Observations
Quartile 1
Arithmetic Mean
Geometric Mean
Quartile 3
LCL Mean (0.95)
UCL Mean (0.95)
画出IBM股票,日收益和月收益的图,4个资的累积收益率图,并对4个资产做相关性分析。
IBM股票,每日收益图
IBM股票,每月收益图
4个品种的累积收益率图
从上图中可以看出,红线(GE)和蓝线(SP500)的走势基本稳合,说明GE在从2010开始在跟着美国经济持续发展。绿线(YHOO)从2013初到2015年初大幅拉升,领先于SP500很多,说明这段时期YHOO所处的互联网行业,带来了非常大的市场红利;从2015年到2016年,又下跌很大,大起大落,受市场影响非常敏感。黑线(IBM)大部分时间都处于SP500的下方,说明美国经济这几年的高速发展,并没有给IBM带来很大的发展空间。如果从我们的目标来说,&#8221;比标普好的投资收益&#8221;那么我们只能选择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)
Alpha: SP500 -0.. 0.
# 计算beta
> CAPM.beta(dat_ret[,1:3],dat_ret[,4],Rf=Rf)
Beta: SP500 0...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技术+金融的思维在金融市场抢钱吧。
转载请注明出处:
,将介绍如何使用IT技术,处理金融大数据。在互联网混迹多年,已经熟练掌握一些IT技术。单纯地在互联网做开发,总觉得使劲的方式不对。要想靠技术养活自己,就要把技术变现。通过“跨界”可以寻找新的机会,创造技术的壁垒。
金融是离钱最近的市场,也是变现的好渠道!今天就开始踏上“用IT技术玩金融”之旅!
关于作者:
张丹(Conan), 程序员R,Nodejs,Java
weibo:@Conan_Z
转载请注明出处:
进入2016年,伴随世界经济危机的到来,中国互联网创业,也在经历长时间的寒冬,有不少的公司都因资金链断裂,停止了运营。与寒冬反差很大的是,AI技术却火了起来,受到资本的追捧。智能投顾作为金融领域的AI热点,一直在持续升温。
到2016年底,招商银行发布了一个名为“摩羯智投”的应用,一下子吸引了众多人的眼球,打开了银行进军智能投顾领域的大门。本文将用数据来解读“摩羯智投”的到底是怎么玩的。
摩羯智投介绍
数据建模分析
1. 摩羯智投介绍
摩羯智投,是招商银行在日发布的一款手机端应用,嵌入在招商银行的APP中,加入了FinTech理念,把金融和人工智能进行了结合。
按招商银行发布的文章中介绍,摩羯智投是运用机器学习算法,构建的以公募基金为基础的、全球资产配置的“智能基金组合配置服务”。在客户进行投资期限和风险收益选择后,摩羯智投会根据客户自主选择的“目标—收益”要求、构建基金组合,由客户进行决策、“一键购买”并享受后续服务。
摩羯智投并非一个单一的产品,而是一套资产配置服务流程,它包含了目标风险确定、组合构建、一键购买、风险预警、调仓提示、一键优化、售后服务报告等,涉及基金投资的售前、售中、售后全流程服务环节。比如,摩羯智投会实时进行全球市场扫描,根据最新市场状况,去计算最优组合比例,如果客户所持组合偏离最优状态,摩羯智投将为客户提供动态的基金组合调整建议,在客户认可后,即可自主进行一键优化。
摩羯智投的开机画面。
看完招商银行官方的介绍,接下来我们从数据进行分析,看看“摩羯智投”到底有多智能。
2. 数据收集
要做数据分析,我们就要以数据来思考。我的思路,要先收集数据,把应用所有的输入项和输出项的数据进行整理,然后我们通过统计的方法和金融知识来找到数据之间的关系。
注:由于应用中没有明确的字段定义,下面字段我按照字面意思进行解读。
数据输入项只有2个字段,包括
大致投资期限:从投资开始到投资结束的期限。
风险承受能力:承担多大的风险,以及风险带来的损失。
数据输出项,字段就比较多,包括
模拟历史年化收益(%):对历史数据回测,所获得的年化收益率。
模拟历史年化波动率(%):对历史数据回测,所获得的年化波动率。
模拟历史收益(元):在投资10000元,并持有一年,所获得的收益金额。
95%的概率下亏损(元):在95%概率下最大亏损金额。
固定收益(%):固定收益类基金的配置比例。
现金及货币(%):现金货币类基金的配置比例。
股票类(%):股票类基金的配置比例。
另类及其他(%):另类投资的类基金的配置比例。
投资组合收益率曲线:按比例构成的组合,生成的收益率曲线。
投资组合配置详情:4类资产对应的具体基金品种和配置比例
对应到“摩羯智投”的操作界面上,我标出了输入数据和输出数据的提取点。
根据界面来收集到的数据,整理为CSV格式,便于之后的分析。数据收集,我分别存储到了3个CSV文件中。
a.csv:用于收集第1-2个界面的数据,用户直接输入和输出数据,包括:大致投资期限(term),风险承受能力(rick),模拟历史年化收益(ret),模拟历史年化波动率(vol),模拟历史收益(gains),亏损(loss),固定收益(fixed),现金及货币(cash),股票类(stock),另类及其他(alter)
b.csv:用于收集所有标的基金所对应的市场数据,从wind中采集,包括:基金名称(name),基金代码(code),基金成立时间(create),基金类型(type),净值(first2014),净值(first2015),净值(first2016),净值(last)
c.csv:用于收集第3个界面的数据,每个组合的标的基金的配置比例,包括:大致投资期限(term),风险承受能力(rick),基金类型(type),基金代码(code),配置比例(weight)
a.csv的数据样例前10条,如下:
b.csv的数据样例前10条,如下:
c.csv的数据样例前20条,如下:
这里还需要特别说明的事,由于应用的数据,可能会动态的发生变化,我是采集的日的“摩羯智投”应用中的数据。
多说一句,数据花点时间谁都可以在应用中拿到,虽然我已经整理了数据,但请大家不要太随意地张嘴要数据和代码,毕竟写一篇文章非常辛苦。如果你想直接用我的数据和代码,请扫文章下面二维码,请作者喝杯咖啡吧。 :_D
3. 数据建模分析
收集好了数据,接下来就可以进行数据分析了。当然,分析的角度有很多种,可以从金融、统计、数据挖掘等专业方向,也可以计算一些简单的指标,最大值,最小值,平均值等等。我思考的出发点,主要在金融和统计上面,如果存在片面性,还请大家给予指正。
下面将从6个知识点,对“摩羯智投”进行分析。
3.1 分析一:只有2个输入项。
由于只有2个输入项,大致投资期限和风险承受能力。大致投资期限有3个选项,风险承受能力有10个选项,那么实际的组合个数就是3*10=30个。对于只有30个组合来说,并不能完全实现个性化,当有31个用户使用产品时,就会有2个人购买的组合是是重复的。
3.2 分析二:只有17只标的基金
我们对30个组合进行配置尝试后,发现详细持仓方案中,只有17只基金,配置比例不同而矣。标的过少,可能导致风险不能足够的分散化,遇到极端行情会导致大的回撤。17只基金分别是
> paste(dfb$name,"(",dfb$code,")",sep="")
[1] "工银纯债B(OF000403)"
"易增强回报B(OF110018)"
"建信稳定增利C(OF530008)"
[4] "工银天颐B(OF485014)"
"南方量化成长(OF001421)"
"中欧潜力价值(OF001810)"
[7] "大成500(OF096001)"
"黄金接连C类(OF000217)"
"亚洲美元债C(OF002401)"
[10] "大摩收益C(OF233013)"
"博时信用债C(OF050111)"
"兴权可转债(OF340001)"
[13] "创金多因子(OF002210)"
"招商现金增值A(OF217004)" "富国中小盘(OF100061)"
[16] "工银瑞信全球(OF486002)"
"南方成份(OF202005)"
3.3 分析三:相关性分析
直接利用a.csv的数据集,查看输入项和输出项的相关性,发现相关关系。
通过R语言程序实现
# 加载数据
> dfa names(dfa) pairs(df)
把数据变成可视化来显示,对于我们理解数据非常有帮助。
term列,和其他列的散点图,完全呈现离散的分布,说明term列与其他列并没有相关性的关系。
risk列,除了和alter列没有线性关系,和其他列呈现明显的线性关系。
我们把上面相关性图,再加上一些元素,如相关系数、拟合曲线、分布图等,重新画出相关性图,如下所示。
这样就清晰了多了。
risk列,与模拟历史年化收益(ret),模拟历史年化波动率(vol),拟历史收益(gains),呈现极度正相关,输出项的数字完全受risk值影响。
risk列,与固定收益(fixed)和现金及货币(cash),极度负相关;与股票类(stock),极度正相关;另类及其他(alter),负相关。这种情况,与资产的风险收益属性是匹配。
vol列,与亏损(loss),是100%线性相关。
ret列,与拟历史收益(gains),是100%线性相关,这里可以获得公司:gains = 10000 * ret 。
3.4 分析四:线性回归
通过相关性的检查,我们可以发现risk与很多列都是极度相关的。
那么我们可以用线性回归的方法,把risk与有相关性的列的参数估计出来。如果不太了解,一元线性回归的可以参考文章,。
由于vol和loss是100%线性相关,以vol为x,loss为y,构建一元线性回归方程。
# 回归方程
> lv summary(lv)
lm(formula = loss ~ vol, data = dfa)
Residuals:
-36.119 -31.491
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -447.514
<2e-16 ***
<2e-16 ***
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 34.2 on 28 degrees of freedom
Multiple R-squared:
0.9963, Adjusted R-squared:
F-statistic:
7629 on 1 and 28 DF,
p-value: < 2.2e-16
进行线性回归的统计检查:T检查,F检查都非常显著,同时R-squared为0.9963,具有极度相关性。
# 画出散点图和拟合曲线
> plot(loss~vol,data=dfa)
> abline(lv)
从图中看到,拟合效果非常好,可以整理出公式:loss = -447.514 + 149.109*vol。
另外,由于risk决定vol,再让我们算一下risk和loss的关系,以risk为x,loss为y,构建一元线性回归方程。
# 构建一元线性回归方程
> lm(loss~risk,data=dfa)
lm(formula = loss ~ risk, data = dfa)
Coefficients:
(Intercept)
# 详细指标
> summary(lr)
lm(formula = loss ~ risk, data = dfa)
Residuals:
-219.88 -136.93
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
-6.021 1.73e-06 ***
15.426 3.23e-15 ***
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 183.5 on 28 degrees of freedom
Multiple R-squared:
0.8947, Adjusted R-squared:
F-statistic:
238 on 1 and 28 DF,
p-value: 3.232e-15
T检查和F检查,非常显著;R-squared 也比较高。
下面进行残差检查,发现30号点,是偏离比较大,可能是离群值。
我们把30号点去掉,再做显著性检查和残差分析。
> dfa2 lr2 summary(lr2)
lm(formula = loss ~ risk, data = dfa2)
Residuals:
-203.00 -100.98
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
-6.389 7.64e-07 ***
16.431 1.39e-15 ***
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 155.3 on 27 degrees of freedom
Multiple R-squared:
0.9091, Adjusted R-squared:
F-statistic:
270 on 1 and 27 DF,
p-value: 1.391e-15
在去掉30号点后,R-squared为0.9091,比之前的0.8947,有所提升。
从残差图中,我们看到没有明显的离群值点,所以去掉30号点,是符合统计提升标准的。
3.5 分析五:关于30号点的金融思考
从数据中,我们发现30号点的最大亏损已经超过了收益,也就是说你可能承担了过大了风险,但是没有获得风险所给你带来的收益。
按照资本资产定价模型的理解,我们投资组合的收益来自2部分,无风险收益和风险收益。无风险收益可以用现金或货币类的基金获得,风险收益主要来自股票基金,债券基金,另类投资最基金。直观上理解,风险收益比至少是1:1,即损失100元时,要获得100元风险补偿。对于私募业务来说,投资人可能会要求更高,比如 风险:收益=1:2。
从另外一个角度分析,上面我所说的风险收益比并没有涉及到概率的部分,我猜95%是通过VaR值来做的概率计算。
3.6 分析六:通过标的基金计算收益率
在“摩羯智投”的应用中,我们可以获得各个基金的配置比例,基金净值的数据又可以在公开市场中获得,所以对于预期收益率,我们也可以自己计算一下,看看是不是与“摩羯智投”提供的结果是一致的。
接下来,就利用到上文介绍的数据集,b.csv和c.csv。
# 加载数据
> dfb names(dfb) dfb$ret2014 dfb$ret2015 dfb$ret2016 dfb$ret2014[c(which(is.na(dfb$ret2014)),which(is.infinite(dfb$ret2014)))] dfb$ret2015[c(which(is.na(dfb$ret2015)),which(is.infinite(dfb$ret2015)))] dfb$ret2016[c(which(is.na(dfb$ret2016)),which(is.infinite(dfb$ret2016)))] head(dfb)
type first2014 first2015 first2016
工银纯债B OF40516 fixed
易增强回报B OF80319 fixed
建信稳定增利C OF80625 fixed
工银天颐B OF10810 fixed
南方量化成长 OF50629 stock
中欧潜力价值 OF50930 stock
由于基金中,招商现金增值A(OF217004)为现金类基金,所以收益率需要直接取年化收益,而不是按上面的计算方法。
#现金类,收益率从wind查年化收益率,进行赋值
dfb[which(dfb$code=='OF217004'),]$ret2
dfb[which(dfb$code=='OF217004'),]$ret
dfb[which(dfb$code=='OF217004'),]$ret7
再加载c.csv基金的详细配置方案。
> dfc names(dfc) head(dfc)
code weight
1 fixed OF000403
1 fixed OF110018
1 fixed OF530008
1 fixed OF233013
1 fixed OF050111
1 fixed OF485014
把数据变型,以type列转置为横表,去掉code列,以weight值进行填充,得到新数据集为r1。
> head(r1)
我们生成plan1的配置方案,当term=1,risk=1时。
# 只保留term=1,risk=1时数据
> plan1 plan1m plan1m$ret2014w plan1m$ret2015w plan1m$ret2016w plan1m
code term risk
type weight
0.05 0.... -0.
0.20 0....
0.05 0....
0.05 0....
0.05 0....
0.14 0....
0.20 0....
0.10 0....
0.05 0....
10 OF530008
0.11 0....
把数据进行合并,分别计算plan1方案的收益率,和plan1方案不同资产的收益率贡献。
# plan1方案的收益率
> plan1r plan1r
1 0...1621068
#计算3年的累积收益率曲线
> plan1r$cumret plan1r
1 0....2983493
# plan1方案不同资产的收益率贡献
> plan1rm plan1rm
1 alter 0. -0..
1 fixed 0.
1 stock 0.
用我计算的结果,分别对比“摩羯智投”中,近1年和近3年的收益率曲线。
近1年对应plan1r$ret%,近3年对应plan1r$cumret=0..83%。我发现计算结果存在差异,从最终结果的数字上来看差异并不大。但对于近3年的收益率曲线的走势来看,差异还是非常明显的。“摩羯智投”给出的近3年收益率曲线是,均匀平稳上升的,而我算出来的,3年数据2014年涨了16%,2015年涨了9%,2016年涨了3%,逐年收益率在递减。所以不应该呈现均匀平稳上升的形状。
究其原因,再来看plan1的组合数据,发现股票基金只有配了一只中欧潜力价值(OF001810),而这只基金在日才成立,所以并不能构建出该基金在的年度收益率组合。以此来判断,这个组合势必存在着中间调仓的过程,而“摩羯智投”的收益率曲线,并没有展示出调仓过程的数据,所以收益率曲线是不透明的,不能够直接做为用户购买决策的依据。
接下来,我们把30种组合的收益率,都计算出来。再与“摩羯智投”给出的收益率进行比较。
上图中,ret列为“摩羯智投”界面上采集的数据;ret2016,ret2015,ret2014分别为我们根据基金的公开市场的数据,计算出来的百分比结果;mean为ret2016,ret2015,ret2014算数平均数。从数据上看,ret列和mean列,有部分值接近。我们再做一次相关性分析。
这样解读结果就容易多了,ret与2016年的收益率是线性相关的,而mean与2014年的收益率是线性相关的,我猜2014底的“股债双牛”使均值发生了偏离。所以,ret和mean没有关系,“摩羯智投”对于收益率的预期,对于近1年的组合收益可能有更大的权重分配。
所以对于“摩羯智投”给出预期收益和净值曲线,我们并不能通过已知的数据计算出来,这些可能就涉及到它背景的算法,我们就无从知晓了。
以上从数据的角度给对“摩羯智投”进行了分析,首先摩羯构建的组合是线性组合,符合风险收益为基础资本资产定价模型(CAPM)。但由于组合数量有限,基金标的有限,算法不够透明、无法利用已知数据重现结果,缺少客户持续跟踪等部分,所以我把“摩羯智投”理解为是基于金融专业性架构,结合快速上线为目标的试水。可以实现对散户的简单、高效的财富管理体验,部分解放理财经理的压力。但对于专业的投资经理来说,这还仅仅是个玩具,还有相当大的提升空间。
本文只是人个出于兴趣,对“摩羯智投”应用的从数据角度的分析,不代表任何公司或其他第三方机构的立场。由于所获得数据有限,以及个人知识能力有限,如有片面的理解,还指大家指正。
转载请注明出处:
,“知识是用来分享和传承的”,各种会议、论坛、沙龙都是分享知识的绝佳场所。我也有幸作为演讲嘉宾参加了一些国内的大型会议,向大家展示我所做的一些成果。从听众到演讲感觉是不一样的,把知识分享出来,你才能收获更多。
张丹, 程序员R,Nodejs,Java
weibo:@Conan_Z
转载请注明出处:
很荣幸能够参加中国软件技术大会,我已经有很久没有参加软件技术的大会了。因为我目前更多精力,放在了金融方面的研究工作,通过R语言来实现我对金融的探索。金融研究很有意思也很令人兴奋,就像当初着迷想着用JAVA改变世界一样。
本次会议包括了5个专场,大数据企业级应用,云计算平台构建与实践,移动互联&#038;应用创新,产品设计思维,IT运维&#038;IT运营专场。嘉宾主要以一线工程师为主,讲的很干,很接地气,让IT人把技术讲给IT人,收货满满。
我非常有幸参加2016中国软件技术大会,作为创新应用专场的分享嘉宾,分享R语言在金融领域中的应用。
我的演讲主题:用R语言进行投资组合管理
会议体验和照片分享
1. 我的演讲主题:用R语言进行投资组合管理
用R语言进行投资组合管理,,主要内容来自我的一篇博文:。
我本次的分享主要介绍了奠定现代金融学基础的理论 资本资产定价模型(CAPM),与上个月在武汉的人工智能大会是一个题目,的链接。
分享的目录大纲如下:
资本市场线
资本资产定价模型
Beta VS Alpha
用R构建投资组合模型
在2次大会中分享了同样的内容,确实不是我的风格。但由于时间太紧,加上最近比较忙,身体略显疲惫,还请同时出席两次会议的听众谅解。(应该没有遇到2场都听了的朋友吧?如果有小窗联系,线下聚聚。)
2. 会议体验和照片分享
本次会议给我感觉,就是“一线”和“干货”。分享嘉宾多是一线工程师,给大家分享踩坑的经历,无比激动人心。我在听 朱琳同学 讲的时候,深刻能够体会到,她对于编程的热爱,和对踩坑、填坑过程的享受。
中国软件技术大会,由中国科学院软件研究所、中科软科技联合主办,北京中科凯亚科技有限公司承办的中国软件技术交流平台,自2003年创办以来,秉承“弘扬个性、促进创新、引爆争鸣、激发活力”的宗旨,大会一直专注于促进和传播企业级软件技术的创新,致力于为软件行业和各行业用户搭建中立的、解析最新企业级软件技术、交流前沿技术和发展趋势、分享最佳实践和应用经验的交流平台。大会以演讲嘉宾技术水平高、技术领域涵盖面广、技术观点领先客观,得到了社会和行业的广泛认可,每年吸引了“1000+”软件业专业技术精英参会,已成为国内软件技术领域影响巨大的年度盛会。
2.1 我的分享是在12月10日上午的 移动互联&#038;应用创新专场,第一位分享嘉宾。
第一次被安排在早上第一场,而且给足了50分钟时间,也让我终于可以把说话速度放慢一些了。
移动互联&#038;应用创新专场上午3位嘉宾:
余庆,本场的主持人,易到用车资深架构师,主题:PHP高性能服务框架架构与实现。
张丹,《R的极客理想》系列图书作者,前况客创始人兼CTO,主题:用R语言进行投资组合管理。
朱玲,网易资深音视频工程师,主题:互动直播场景下的视频核心技术实践。
移动互联&#038;应用创新会场,嘉宾在分享的照片。
朱玲,美女工程师,聊起技术非常专业。
余庆,很可惜,没有找到照片。请现场有照片的朋友,发我一下。
2.2 会议相关照片
本次会议,我觉得最有意思的专场是:产品设计思维。把产品设计融入到软件大会中,看得出来产品正在被越来越重视。可惜没能去听!!
会议其他嘉宾的照片。
单艺,猎聘网首席数据官
下面嘉宾还不认识,求介绍。
茶歇时的会场门口。
小朋友在玩互动游戏。
会后由于身体不太舒服,就没留下和大家吃饭。
同一天,被朋友圈刷屏了。貌似程序员都去了国家会议中心,软件+教育+互联网的三场会议同时在国家会议中心举行。
会议很成功,感谢工作人员的辛苦劳动。到年底了,祝大家开开心心过好年!!
转载请注明出处:
,“知识是用来分享和传承的”,各种会议、论坛、沙龙都是分享知识的绝佳场所。我也有幸作为演讲嘉宾参加了一些国内的大型会议,向大家展示我所做的一些成果。从听众到演讲感觉是不一样的,把知识分享出来,你才能收获更多。
张丹, 程序员R,Nodejs,Java
weibo:@Conan_Z
转载请注明出处:
很荣幸能够参加人工智能产业论坛,正巧手头有向项目是做智能投顾,算是人工智能在金融领域的应用。会议在武汉光谷,我是第一次到武汉,住在东湖边,非常漂亮,也逛了传说中的美丽的武汉大学。
本次会议包括了8个专场,金融专场、医疗专场、智能机器人专场、图像声音算法专场、深度学习专场、大数据应用专场、人工智能应用专场、投融资专场。有1600人报名,嘉宾阵容也是非常强大,大部分都是PHD。我非常认真地听了6场分享,深刻地体会到了人工智能在崛起,在慢慢地改变着我们的生活。
我非常有幸参加2016年的人工智能产业论坛,作为智能金融场的分享嘉宾,分享R语言在金融领域中的应用。
我的演讲主题:用R语言进行投资组合管理
会议体验和照片分享
1. 我的演讲主题:用R语言进行投资组合管理
用R语言进行投资组合管理,,主要内容来自我的一篇博文:。
我本次分享的主要是介绍的是 资本资产定价模型(CAPM),这是奠定现代金融基础的理论,从背景、理论研究、到数学模型、再到R语言建模、最后结合实战分析一个投资组合的案例。
分享的目录大纲如下:
资本市场线
资本资产定价模型
Beta VS Alpha
用R构建投资组合模型
如果你接触过金融二级市场的交易,你可能经常会听到Beta,Alpha,马克维茨,CAPM等名词。但是能把这些词的准确含义讲清楚的人其实并不多,可能就连有些专业的人也讲不清楚。对于对冲基金经理,他们每天都在根这些概念打交道,有了这些金融的理论基础,你的交易风格就会很专业,和散户的明显区别。
我还是一直延续了一贯的演讲风格,有内容,有图片,有代码,有互动。从方法理论的思路开始,到市场特征检验,再到数学公式,R语言建模,把知识和市场操作联系起来,听完我的分享,你回去把上就可以动手实践。利用IT人的技术优势,可以真正地与实际操作结合起来,实现从IT技术到价值的转变。
2. 会议体验和照片分享
本次会议给我感觉非常专业,大部分都是PHD,而且嘉宾讲话思路非常清楚,干货拿出来,真的非常棒。我是完全没有想到,在武汉能够做出这么高水平的会议。不得不说一句,所有的工作人员辛苦了!
IAIS2016立足中国光谷,辐射全球,本届大会由湖北省唯一一家提供“智能交互”服务的企业飔拓承办,大会将汇聚国内外人工智能、大数据领域产学研用专家,共同探讨行业趋势、应用案例、技术动态,旨在推动产业与技术结合、合作创新、联合共赢,助力企业、社会、个人提升效能,构建起以人工智能为核心的产业生态圈。
本次会议的主页:。我在本次大会中结实了,很多不同领域教授和专家,让我深刻地了解到了,机器学习、机器人、人工智能领域正在大踏步的进步。
2.1 我的分享是在10月25日下午的智能金融专场,第二位分享嘉宾。
金融专场5位嘉宾:
张连平,本场的主持人,高伟达研发中心VP,主题:银行业大数据IT运维探索。
吴炜 ,万达网络数据专家,主题:欺诈检测中的特征自动发现。(能把GBRT算法用自己话讲明白)
张丹,《R的极客理想》系列图书作者,前况客创始人兼CTO,主题:用R语言进行投资组合管理。
邢艳凯 ,中关村大数据产业联盟副秘书长,主题:金融征信主题。
杜小军 ,中润普达总裁,主题: 基于大数据的产业金融创新应用及商业机会。
金融会场,嘉宾在分享的照片。
2.2 会议相关照片
晚宴后,嘉宾全家福,我错过了&#8230;&#55555
李成华 博士,飔拓科技董事长,原京东DNN实验室首席科学家
苏中 博士,IBM中国研究院研究总监、一号站平台注册、大数据及认知计算研究方向首席科学家
杜子东 博士,寒武纪科技高级研究员
颜深根 博士,商汤公司主任研究员
向磊,EasyHadoop创始人
谢邦昌,台北醫學大學管理學院及大數據研究中心
兴宝,会议主办方负责人
10年没见的大学同学,在武汉相遇
智能小机器人
最后,感谢IAIS工作人员的辛苦劳动,希望保持高水平会议越办越好!
转载请注明出处:
Designed by

我要回帖

更多关于 侠盗一号 的文章

 

随机推荐