R语言与金融定量分析

本文是作者在学习许启发、蒋翠侠撰写并由清华大学出版社出版的《R软件及其在金融定量分析中的应用》时写下的review questions.内容涵盖书中第1、2、4、5、6章,分别为R软件基础、基于R软件的传统计算、金融数据整理与预处理、金融资产收益计算金融波动模型部分。可以作为R软件初学者的Guide,检验学习成果。

数据操作

  • 如何显示工作空间中的所有对象,如何清除工作空间中的某个对象或全部对象? ls()/objects()输出的类别是什么?

  • 对象命名规则有哪三个要点?

  • 对象创建四种方法,哪一种很少用,哪一种不推荐使用?

  • 有哪四种基本数据类型?这些类型最基本的属性是哪两个,这两个属性如何获得?

  • 字符型定义时使用单引号和双引号的区别在于?

  • 在基本数据类型基础上,R语言创造出了哪些对象?(7个)

  • 什么是向量? 同一基本类型元素构成的序列,相当于一维数组

  • 向量如何生成? c()、m:n、seq()、rep()

  • 什么是数组? 带有多个下标同一类型的元素集合

  • 数组最重要的属性是什么?它代表什么含义? 维数向量dim,向量长度代表?

  • 数组如何创建? array() data,dim,dimnames

  • 数组内的元素如何访问? []

  • 什么是矩阵? 二维数组

  • 矩阵的创建: matrix() data,nrow,ncol,byrow,dimnames

  • 矩阵的访问,与数组相同; 如何将访问结果保留矩阵类型而不是变成向量类型? drop

  • 如何删除矩阵中的某些行或列? 负值

  • diag()是泛型函数,当输入是整数、向量、矩阵时,分别有什么作用?

  • 如何将矩阵转化为上三角或下三角矩阵? lower.tri/upper.tri

  • 列表如何创建? list() name=object

  • 列表的四种访问方式? [[]] [] [''] $

  • 上面四种访问方式中,第一种的缺点是什么(每次只能访问一个元素),第一种和第二种输出结果的类型是否相同?第三种方法使用时要注意什么,相比于第四种?(带引号)

  • 如何获取一个列表内的元素名? names

  • 如何增加列表元素?如何改变列表元素?如何删除列表元素?

  • unlist()函数对列表的作用是什么?输出的类型是什么? 带有名字的字符串向量

  • 数据框有哪些特点?四个 1.特殊的列表对象2.以矩阵形式存放数据3.变量必须有相同的长度/行数4.非数值型向量会被强制转化成因子

  • 数据框的创建: data.frame() name = data

  • 数据框的引用: 矩阵引用方法,列表引用方法

  • 因子是用来干什么的? 存储分类/离散数据,并存储该数据的不同水平

  • 因子如何创建? factor() levels,labels,exclude

  • 如何统计各类水平的频数? table()

  • 如何创建表达式类型? expression()

  • 如何对表达式求值? eval()

  • 如何对表达式求偏导? D() 注: 结果是'call'类型

  • 如何获得对象的类型? 如何判断对象的类型? 如何转化对象的类型? is|as

  • 获得对象类型的三种函数的区别是什么? class(),mode(),typeof()

  • 将数值型因子转换为数值型向量时,要注意什么?

  • 通过对字符型因子转化为数值型向量,我们的发现是什么? 因子会将变量按照levels顺序以数值编码的方式存储

  • 如何获知更多的类型判别函数和转换函数? methods()

  • 数学运算中, %% 和 %/% 的含义是?

  • 数学运算中如果出现了逻辑型变量会如何参与运算?

  • 矩阵的三种乘法?如何实现?运算要求?

  • 如何比较两个对象整体是否相等? identical(), all.equal()

  • 这两个函数的区别是什么? 返回结果的差异/是否判断近似相等

  • 异或用哪个函数实现?异或是什么意思?

  • &、|和 && || 的区别是 作用于第一个元素

  • 向量运算中,当两个向量长度不同是会发生什么? 短的将被循环使用

  • 如何对向量添加元素? append() after

  • 对向量求和、求均值、中位数、标准差、方差、最大最小值、极差、连乘积、判断所有、判断部分、升序排列、降序排列、升序排列原下标、最大值最小值的下标 注: sort(a) ≡ a[order(a)]

  • 矩阵转置的两种方法?不同? t() aprem()

  • 矩阵维数获得三种函数? nrow()/ ncol()/ dim()

  • 矩阵合并?按行合并,按列合并

  • 矩阵求特征值和特征向量、求逆、奇异值分解、qr分解、行列式。哪些函数需要输入的是方阵?

  • apply函数作用: 对矩阵或数组的某一维进行某种运算的实现

  • apply函数用法: apply() MARGIN,FUN

  • tapply函数的作用:进行分组统计,即用因子、向量和调用的函数来计算

  • tapply函数用法: tapply() X,INDEX,FUN simplify的作用是?默认为TRUE

常用命令

  • 如何查看当前工作目录?如何设置工作目录?
  • 设置工作目录时,要注意什么? 使用“/”或“\” 而电脑内部使用的是“\”
  • 如何查看内存大小?查看已使用内存大小?已分配内存大小? memory.size(NA) memory.size(FALSE) memory.size(TRUE)
  • 如何查看内存限制?如何增大内存?如何清除内存垃圾? memory.limit() memory.size(x) gc()
  • 如何加载包?如何查看当前已经存在的包? library() search()
  • 自己编写的函数如何加载? source(file = '')
  • 如何保存当前工作空间的所有对象?下次启动后如何加载? save(,file = ) load(file = )
  • 查看数据的前几行、后几行、任意几行? head\tail\some
  • 显示对象全部内容的三种方式?
  • 如何设置显示位数?两种方式的不同点在哪些方面? 是否改变数据/是否全局改变/digits表示的意义
  • 显示数据框和列表时,如何将变量名链接到内存中,之后又如何取消这种挂接?如何取消加载包的挂接? attach() detach()

图形制作

  • 高级绘图函数和低级绘图函数的区别:高级绘图函数能够创建一个新的图形,可以通过其参数选项来设置图形的坐标轴,标题,标签,字体等,而低级绘图函数自身无法生成图形界面,只能在已有的图形上增加新的图形,如点、线、标签等

  • plot()函数是泛型函数,当输入的分别为向量、时序、矩阵、两个向量、因子、因子与它对应的向量时,输出分别是什么?

  • 如何画出因子的频率图?

  • 如何从一个向量中无放回或有放回的抽取n个数组成新的向量? sample() replace = FALSE

  • pairs()和coplot()函数的主要区别? pairs函数只显示双向关系,coplot函数能够说明多变量关系 coplot(y~x|z+t) z,t需要是因子或者向量来分类

  • 如何画直方图? hist() freq = F, xaxt = 'n'表示x轴设置但不显示

  • 如何画出概率密度图? 对density()进行plot

  • 如何画样本的QQ图,并画出相应正态分布的QQ线? qqnorm()、qqline()

  • 低级绘图函数:如何给图上加点,如何在图上加线,如何在图上加标题(主标题副标题),如何在图上加文本,如何在图外加文本,如何添加图例? points() lines() abline() title() text() mtext() legend()

  • text(x,y,labels='') mtext('',side =)

  • legend() 参数: 位置参数'' legend = c() 字符串向量 lty 线形向量 lwd 线宽度向量

  • 如何添加多边形?如何绘制矩形?如何设置坐标轴? polygon() col,border 填充颜色与边框颜色 rect() axis() side,at,label,las

  • 绘图参数的更改方式有哪两种?两者区别在于? 一种是直接在绘图函数中设置参数选项,一种通过par()函数设置,前者影响当前绘图函数,后者影响当前所有绘图函数的输出

  • 高级绘图参数有哪些?各代表什么意思? add, axes, type, xlim,ylim, xlab, ylab, main, sub

  • type中的值 'p','l','b','o','h','s','n' (点图,线,线不过点,线过点,垂直线,阶梯形曲线,不画内容)

  • par绘图参数有哪些? lty, mar, mfrow, mfcol, pch, las, cex 各代表什么含义,怎么用? linetype,margin,按行绘制,按列绘制,points character, labelspecification

  • 线型 1实 2虚 3点

  • 实例:

  • 有一个包可以相较于传统方法可以更快地读取excel文件,是哪个包?怎么使用? 通过RODBC包,函数:odbcConnectExcel2007(),sqlFetch() odbcConnectExcel是文件流,sqlFetch从文件流中读取数据,使用完文件流后用close()关闭

  • 如何在得到某一个值对应的下标? which()

  • 如何得到ts类型的数据? ts() data, start,end,frequency frequency=1,年度数据;4,季度数据;12,月度数据;

  • 如何画自相关函数图?偏自相关函数图?如何改进使得图的窄带变宽? acf(),pacf(),改变ylim

  • 累积分布函数是什么?怎么画一个样本的累计分布图? ecdf(),plot(ecdf())

  • knots函数????

  • 如何去掉向量中重复的元素? unique()函数

  • 如何得到正态分布的累积概率? pnorm(x,mean,sd)

  • 如何对函数进行绘图? curve(function) from,to,lty,add

  • 如何利用axis函数将坐标轴刻度放缩? axis(side = 1, at = axTicks(1), labels = as.integer(axTicks(1)/100) axTicks(m) m为side,返回的是数值向量

编程计算

  • 函数定义的两种方式?
  • 函数定义的一般格式 函数名 <- function(参数列表){表达式}
  • 函数中,如何写入判断,并在判断为FALSE的情况下停止运行 stop
  • 函数通过哪三种方法向外界输出运算结果? 打印输出,图形输出,返回结果

实践

1.
  • 从某向量x中有放回取出num个数 sample(x,num,replace = TRUE) prob = 表示从向量中个元素被抽取到的概率向量
  • 筛选出某向量中的不同元素 unique(x)
  • 得到两个集合不同的元素,x集合有而y集合没有的元素 setdiff(x,y)
  • 两集合取并集 union(x,y)
  • 两集合取交集 intersect(x,y)
  • 检查两集合是否相同(只要元素相等即可,顺序不影响) setequal(x,y)
2.
  • 向量生成符:的运算优先级低于幂运算^,但高于乘法运算
  • 只有“matrix与data.frame”在Rstudio的data中,其他类型数据都在value中
  • class\typeof\mode: mode模式是R存储对象的模式;class类的概念是沿袭面向对象编程的概念而来,是一个抽象的概念;typeof和mode相似,但比mode分得更精细;常见的mode有“numeric”“character”“logical”“complex”“raw”“list”“expression”“name”“symbol”“function”
  • 如何得到任意一个R对象的简要结构? str(x)
  • 获得一个R对象的一些属性? attributes(x)
3.
  • 连接函数c(),将数据包括向量组合成一个向量
  • 如何粘接字符串? paste(x,y,z,...)
  • NA表示缺失值
  • 用逻辑向量作索引输出特定位置的元素,注意:如果逻辑向量长度小于原向量,则将逻辑向量循环使用;若逻辑向量长度大于原向量,则超出部分输出NA
  • 如何对向量进行差分?如何多阶差分? diff(x, lag = )
4.
  • 如何求标准差? sd()/ sqrt(var())
  • 如何进行五数汇总?(基于中位数的五分位点) fivenum()
  • 四分位数?指定分位百分点? quantile(x, c(0,0.33,0.66,1))
  • 绝对中位差: median absolute deviation (数据点到中位数的绝对偏差的中位数) mad()
  • 四舍五入: round()
  • 向下取整: floor()
  • 升序排列,降序排列 order()/order(,decreasing = TRUE)
  • 如何求向量的累积和,累积最大值,累积最小值,累积积 cumsum(),cummax(),cummin(),cumprod()
  • 如何求两向量相关系数? cor(x,y)
5.
  • letters, LETTERS分别是小大写英文字母向量
  • 注意: 无法给因子水平赋值,以为其仅为数值标识,强行赋值后会得到警告,并且被赋值的地方变成NA值
6.
  • solve(a,b) 可以解方程组ax=b,b默认为单位阵,因此solve(a)即是对a求逆
9.
  • z = list(1:3, Tom = c(1:2, a=list("R", letters[1:5]), w="hi!")) 问length(z$Tom) 5
10.
  • 读取文件时不选定文件名,打开文件列表选择 read.table(file.choose())
  • 把变量写入文件 write(x,"")
  • 扫描文件数据到某变量y y <- scan("")???
11.
  • 如何逐行判断是否无NA值? complete.cases(),输出逻辑向量,TRUE代表无NA值,FALSE代表有NA值
  • 向量也可以进行按行列合并 例子: rbind(1:5,rnorm(5)) cbind(1:5,rnorm(5))
  • 如何对向量的元素和矩阵的行或数据框的行查重? duplicated() 返回是否重复过的逻辑向量
  • 输出矩阵不同行,组成新矩阵: unique()
12.
  • 输出数据,保留有效数字n位 print(,digits = n)
  • 向量与矩阵之间的运算 sweep(x,1,1:5,"*")
  • 假设 x = matrix(1:20, 5, 4) ;则x1:5;x1:4 的输出结果是? x+1:5; x+1:4的输出结果是?(加法会按照维度自动匹配,乘法只按照行来乘)
  • 如何将矩阵标准化? scale() center, scale 按列标准化,是否减均值,是否除以标准差?
  • 获得因子各水平值的频数? table() 输出的是table类型,用integer存
  • 依据两个因子分类,交叉制表? table(x,y)
  • 公式法表达两个因子分类,交叉制表? xtabs(~x+y,Data)
  • 消除对象的类? unclass()
  • 如何依据多个分类因子求均值? tapply(Data,list(factor1,factor2),mean)
13.
  • 如何对向量存储的分类变量画条形图?比例图? barplot(table(x)) barplot(table(x)/length(x))
  • 条形图和直方图的区别? 条形图画的是离散型数据的频数分布,直方图画的是连续型数据的频数分布
  • 对直方图坐标轴下加上实际点的分布? rug(x)
  • 如何画茎叶图? stem()
  • 如何在回归的散点图中增加回归线? abline(lm(y~x))
  • 画图时,画点、线结合但不通过的图 和画点、线结合且线通过点的图分别怎么画? type = 'b' /'o'
  • 确定文本与符号缩放比例的参数,默认为1 cex
  • 如何在图中添加文本,具体? text(x,y,labels = texts,...)
19.
  • 如何计算执行某一语句所用时间? system.time()
  • 如何对一个函数进行修改? fix()
20.
  • 如何创造一个复向量? complex(real =, imaginary =)
  • 如何求一个复向量的实部虚部模和辐角? Re(),Im(),Mod(),Arg()
  • 如何求组合数? choose(x,y) x个中任取y个的种类数
  • 如何求阶乘? factorial(n)
  • 如何求函数的极值? optimize(function,c(min,max)) 输出列表有 minimum和objective
  • 如何求函数的零根? uniroot(function,c(min,max)) 输出列表有root,f.root,iter等
21.
  • 如何将连续变量切分成区间分类变量?切分点为四分位点? cut(x, breaks = quantile(x), include.lowest = TRUE) 输出的是因子,表现为区间
  • 如何获得数据框的子框? cars[n] 与cars[,n]相似,不过cars[n]输出的是子数据框,cars[,n]输出的是原变量数据类型

传统计算

多元回归

  • 多元线性回归的步骤有哪些? 模型表示,参数估计,拟合优度,显著性检验,模型诊断,模型预测
  • 模型诊断分为哪几个过程,分别用到什么方法? 残差分析,影响分析(Cook距离,DFFITS准则),多重共线性分析(方差膨胀因子,条件数)
  • 如何读取xlsx文件?(不用RODBC包) ,需要哪些包? read.xlsx(file = , sheetIndex = / sheetName = ) rJava,xlsxjars,xlsx
  • 如何建立线性回归模型?参数设置?.和~表示的含义? 注意:lm()中data必须是数据框类型
  • 建立模型后如何查看? print和summary各自输出结果是什么? print输出模型结构和系数;summary输出模型结构,残差概述,回归系数及其检验,方程整体效果检验(RSE,拟合优度,F检验)
  • 如何检验多重共线性? kappa条件数,利用kappa(data),输出条件数,判断标准是100,1000; 计算方差膨胀因子,DAAG:vif(lm),输出带变量名的向量,判断标准最好为1,不大于10
  • 如何进行残差分析?输出的各图分别代表什么含义? plot(lm) 第一张图残差与拟合值,第二张图是残差的QQ图,第三张是标准化残差的平方根与拟合值,第四张图是cook距离图,给出几个对模型影响较大的点
  • 如何单独获得模型系数的向量,两种方法? coef(lm)/ lm $ coefficients
  • 如何获得拟合值向量,两种方法? predict(lm)/ lm $ fitted.values
  • 如何获得残差,两种方法? resid(lm)/ lm $ residuals
  • 如何获得拟合优度和标准差? summary(lm) adj.r.squared/ summary(lm) $ sigma
  • 如何进行预测? predict。lm(lm,newdata = ,interval = ) 注意:newdata需要是数据框,点预测的输出是向量,区间预测的输出是矩阵
  • 如何对矩阵的列进行绘图? matplot()

逐步回归

  • 逐步回归有哪三种变量选择准则? 选择F检验,选择调整后的拟合优度,选择AIC准则(望小准则)
  • 如何改变数据框变量名称? names() <-
  • 如何输出x1~x7这样的字符串向量? paste(,,sep=) 向量,向量,sep是两者间的间隔
  • 如何进行逐步回归?R语言逐步回归的准则是什么? step(),AIC最小值准则

聚类分析

  • 聚类大概分哪两种?区别是什么? R型和Q型 (变量,样本)
  • Q型聚类的四种距离定义? 绝对值距离,欧几里得距离,闵可夫斯基距离,切比雪夫距离
  • R型聚类的两种距离定义? 夹角余弦,相关系数
  • 数据标准化的目的是什么?数据标准化的要求有哪三点? 消除量纲的影响;同一指标内部数据之间距离相对不变原则,不同指标之间相对距离不变原则,极大值不变原则
  • 常见的数据标准化方式有哪三种? 中心化变换,标准化变换,极差标准化变换
  • 三种典型的系统聚类法? 最短距离法,最长距离法,重心法
  • 如何对类矩阵的数据进行标准化处理(按列标准化) scale() 输出矩阵
  • 对矩阵计算距离矩阵?(行之间的距离) dist() method =, 注意: 输出的是下三角矩阵,dist类型
  • 如何进行聚类? hclust(d,method = '') d必须是dist类型, 'complete'是完全距离法(最长距离法),'average'是类平均法(距离平方的平均),'ward'是离差平方和法(类内距离总平方和增加最小),'centroid'是重心法,输出是hclust类,以list方式存储
  • 如何画图展示结果? plot(hclust,hang = ) 如果想要底下标签对齐,hang的值需要为负数
  • 如何在图中加上结果的矩阵? rect.hclust(hclust, k = ,border = '') k表示需要的类数,border指矩阵边框颜色

因子分析

  • 进行因子分析的步骤: 第一步,确定最优因子数目 第二步,参数估计,获得
  • 如何得到矩阵的相关系数矩阵? cor()按列处理,输出矩阵
  • 如何得到特征值与特征向量? eigen(),输出list, ev vectors
  • 如何进行平行分析? parallel(subject =, var = , rep =, cent =)
  • 如何画图确定因子数量? 首先nSree(x = x eigen $ qevpea),其次plotnSree()
  • 如何进行因子分析/参数估计? factanal(x = ,factor = ,scores = "regression")
  • 如何画因子载荷图? 先得到loadings矩阵,其次创建画框不画图,将对应变量文本添加到图上
  • 如何计算因子的权重? 得到原相关系数矩阵的特征值前几个,然后标准化得到权重
  • 如何得到因子得分? 载荷矩阵与权重向量的矩阵乘法
  • 如何得到总评价并且对原对象排序? 将原对象序号与总评价对应然后排序

二元选择模型

  • 传统的线性模型为何不能用于离散选择? 一:难以保证p的预测值始终落在[0,1]之间 二:具有异方差现象
  • 线性概率模型的问题是什么?改进的要求有哪些? 对响应变量发生概率两端约束过强; 变换方法要求:1.使得解释变量的预测值都落在(0,1)之间2.对所有的X,随X增加时,Y单调增加或单调减小
  • 变换概率模型如何得到的?与LPM模型相比的区别是什么?
  • 二元选择模型的常用分布有哪几种? Probit, Logit, Extreme模型各自的函数
  • 如何获得正态分布,logistic分布和极值分布的累积概率? pnorm(q=,mean=,sd=);
  • plogis(q=,location=,scale=);pextreme <- function(x) 1-exp(exp(-x))
  • 怎么找到极值分布概率为0.5时对应的x的值? 首先创立新函数 pextreme(x)-0.5,利用uniroot函数得到零点,然后画点或画线 注意:uniroot输出的是list

广义线性模型

  • 广义线性模型GLM的三个构成要素: 随机成分,用于描述响应变量及其概率分布特征;系统成分,用于设定线性解释函数中解释变量;连接函数,用于建立响应变量均值函数与系统成分之间的关系
  • 说明高斯多元线性回归模型、二元选择logit模型和计数数据的Possion模型都是GLM模型的特例。

分位数回归

  • d

金融数据整理与预处理

  • 向量互动输入方法: scan()

  • 如何读取excel/csv文件?四种方法? read.delim("clipboard")/ read.table(".txt")/ read.csv(".csv")/ read.xlsx(".xlsx",sheetIndex/sheetName)

  • 如何在线读取股票数据? 运用quantmod包,getSymbols函数,getSymbols('',from,to,auto.assgin = TRUE) 注意: 输出的是xts类型的数据

  • 运用quantmod包读取数据时,如果是深市数据,沪市数据,指数数据,需要注意什么? .ss,.sz,^

  • 导入quantmod包前需要的其他包? xts,zoo,TTR

  • 如何查看股票数据的前几行,后几行,中间任意几行,开始日期,结束日期,以及维数? head,tail,some,start,end,dim

  • 如何进行对不同股票数据合并?也就是对两个xts类型数据进行合并?NA值是否包括? merge.xts(,,all)

  • 股票数据的子集如何选择? 分为变量选取和样本选取:变量选取既可使用变量名,也可使用索引值;样本选取可以使用时间和索引,也可以使用专门的subset函数。 subset(x,条件)

  • 如何随机抽样?抽样前需要做什么处理? 抽样前要将xts类型的数据转为ts类型(as.timeSeries/ as.timeSeries.xts),然后使用sample函数(需加载timeSeries包),最后用sort函数将时间从前到后排列

  • 如何补齐时间序列对象的缺失日子? align() by = '1d', method = 'before', include.weekends 频率,方法,是否包括周末

  • 如何补齐时间序列对象的缺失值? na.approx()(插值取代NA值)

  • 如何进行频率转换?将高频转换为低频? to.monthly()/ to.weekly()/to.quarterly()/ to.yearly()/ to.daily() 必须针对单只股票的xts数据

  • 如何将数据框数据转换成时间序列格式? 需要设定时间索引,因此要将日期那列转换为Date类型向量,然后将原数据框转换为xts, as.Date() xts(data, order.by = Date)

  • 如何将数据写入excel文件? write.xlsx(data, file = ,sheetName =)

  • 截面数据预处理

  • 如何计算一个字符串或这字符串向量每个字符串的字符数? nchar() 输出数值向量

  • 如何从一个字符串中取出其中一段小字符串? substr(x, start = , stop = )

  • 如何检查NA值? 用is.na(),输出每个元素是否为NA值的逻辑值向量

  • 运算符的作用: x %in% y 检查x的各元素是否是y中的元素,输出逻辑向量

  • 如何合并数据框? merge(x,y, by = c('变量名')) 通过变量名来进行合并,每次只能合并两个

  • 如何删除对象中的NA值? na.omit()

金融资产收益计算

  • 计算股票收盘价日收益率的三种方法: 1.使用公式直接计算 2.用log与diff函数 3.用returns函数 注:1.对两个zoo对象处理,生成zoo对象;对向量处理生成向量 2.对zoo对象处理,生成zoo对象 3.用zoo对象处理,生成的是矩阵,但是保留了第一行NA
  • 如何生成zoo类型的数据? zoo(x =, order.by =)
  • 如何获得滞后一期的数据? lag(x, k = ) 针对一般时间序列数据,k=1代表滞后一期;对于zoo型时间序列,k=-1代表滞后一期
  • 如何利用returns函数? returns(x, method = , percentage = )
  • 如何对第三种方法求得的结果计算平均收益? mean(x,na.rm = TRUE)/ mean(na.omit(x))
  • 如何计算几何平均收益? (prod(re/100+1)^(1/length(re)) -1) * 100
  • 读取txt文件,如果希望数据类型都为字符型,如何写? read.table(..., colClasses = 'character')
  • 如何将年月数据转化成相应的类型? as.yearmon()
  • 如何合并两个zoo类型? merge(x,y)
  • 如何巧妙计算出一个序列NA值的总数? sum(is.na(x))
  • 如何获得一个均匀分布的样本? runif(length, from, to)
  • 如何将一组非负数标准化使它们和为1,便于作为权重? w/sum(w)
  • 如何将个股收益率转换成组合收益率? 矩阵乘法: %*%
  • 如何计算债券类资产的内部收益率,到期收益率? 首先设置损失函数,输入收益率,价格和现金流,输出现值损失,其次运用uniroot函数得到的零根即是内部收益率
  • 损失函数如何设置?
  • 如何求得零根? uniroot(f,c(min,max),...) ...需输入其他参数的值如,p=p,Cs=Cs

GARCH模型族

ARCH模型
  • 如何模拟生成ARCH(q)序列 使用fGarch包 garchSpec(model = list(omega =, alpha = , beta =)), garchSim(spec, n = , extended = )
  • ARCH效应检验使用的是拉格朗日乘数法,原假设是不存在ARCH效应,检验方法: library(FinTS) ArchTest(x =, lags = )
GARCH模型
  • GARCH(p,q)的方程;GARCH的特点,不仅能够表现出波动聚集性,还可以表现厚尾特征
  • GARCH模型如何定阶? 第一步根据eps平方的PACF确定q;第二步根据AIC/BIC准则确定p
  • 如何将str中的一部分字符换成另一种字符? gsub('','',str)
  • 如何做自相关图,偏自相关图? acf(data,lag.max=) pacf(data,lag.max=)
  • GARCH建模 garchFit(~garch(p,q),data =,trace = FALSE, cond.dist ='std'/'sstd'/'ged'/'sged')
  • 获取GARCH模型波动率信息 fBasics::volatility(model)
  • 获取标准化残差η residuals(model, standardize = TRUE)
  • 模型预测 predict(model, n.ahead = ,trace = FALSE, mse = 'cond', plot = FALSE)
扩展的GARCH模型
  • GARCH-M模型:考虑了收益与风险的关系,风险溢价参数γ
  • IGARCH模型:单整GARCH模型,用于描述条件方差的持续性质
  • EGARCH模型:反映金融市场波动的非对称性
  • TGARCH模型:反映金融市场波动的非对称性
  • APARCH模型:更广泛
  • 如何生成模型? library(rugarch) ugarchspec(variance.model = list(model = 'fGARCH', garchOrder = c(p,q),submodel='TGARCH'/'GARCH'),mean.model = list()) ugarchfit(model,data = )
  • 生成APGARCH模型 garchFit(~1+aparch(p,q),data = ,trace = FALSE, delta = )

自我练习

  • 如何得到某一个文件夹下的全部文件名称? list.files()
  • 如何创建一个某类型的空值向量? vector(mode="",length=0)
  • 如何取得时间序列数据的时间? index()

你可能感兴趣的:(R语言与金融定量分析)