定量金融模型与交易框架
笔者邀请您,先思考:
1 定量金融模型与交易框架的R包是什么?怎么使用?
介绍quantmod:
1、获取数据
2、使用quantmod制图
3、采用数据生成信号
可以通过一个quantmod函数下载不同来源的数据,包括:
-
Yahoo! Finance (OHLC data)
-
Federal Reserve Bank of St. Louis FRED® (11,000 economic series)
-
Google Finance (OHLC data)
-
Oanda, The Currency Site (FX and Metals)
-
MySQL databases (Your local data)
-
R binary formats (.RData and .rda)
-
Comma Separated Value files (.csv)
-
More to come including (RODBC,economagic,Rbloomberg,…)
获取数据
1> getSymbols("YHOO",src="google") # from google finance
2[1] "YHOO"
3> getSymbols("GOOG",src="yahoo") # from yahoo finance
4[1] "GOOG"
5> getSymbols("DEXJPUS",src="FRED") # FX rates from FRED
6[1] "DEXJPUS"
7> getSymbols("XPT/USD",src="Oanda") # Platinum from Oanda
8[1] "XPTUSD"
每次访问都可以把数据以及对象名称直接下载到你的工作区。修改一下可以做得更好更方便。
1> # Specify lookup parameters, and save for future sessions.
2>
3> setSymbolLookup(YHOO='google',GOOG='yahoo')
4> setSymbolLookup(DEXJPUS='FRED')
5> setSymbolLookup(XPTUSD=list(name="XPT/USD",src="oanda"))
6> saveSymbolLookup(file="mysymbols.rda")
7> # new sessions call loadSymbolLookup(file="mysymbols.rda")
8>
9> getSymbols(c("YHOO","GOOG","DEXJPUS","XPTUSD"))
10[1] "YHOO" "GOOG" "DEXJPUS" "XPTUSD"
现在可以轻易从不同资源库下载数据到你的工作区(或者其它环境),不需要注明所需的数据来源或者链接参数。把它当做load
命令,可以提取任何地方的数据就好了。试一下gettingdata.R
quantmod制图
现在有一些数据,我们可能想要看一下。输入新函数chartSeries
。目前这是一个比较完好的工具用来可视化金融时间序列,以一种从业者熟悉的线图、OHLC条形图以及蜡烛图等方式呈现。尽管chartSeries
以最恰当的方式自动处理数据,但它仍旧包含了对应不同图形的多种便利封装包(lineChart
,barChart
以及candleChart
)
快速浏览如何制图,包括数据特征等。
1> # Specify lookup parameters, and save for future sessions.
2>
3> getSymbols("AAPL",src="yahoo")
4[1] "AAPL"
5> barChart(AAPL)
点击查看全图:
1> # Add multi-coloring and change background to white
2> candleChart(AAPL,multi.col=TRUE,theme="white")
点击查看全图:
on-OHLC 以及 Volume 序列自动处理
1> getSymbols("XPT/USD",src="oanda")
2[1] "XPTUSD"
3> chartSeries(XPTUSD,name="Platinum (.oz) in $USD")
点击查看全图:
1>chartSeries(to.weekly(XPTUSD),up.col='white',dn.col='blue')
点击查看全图:
在这里尝试一下: chartingwithquantmod.R
技术分析制图工具
对于版本0.3-0,我们可以从TTR
包里添加技术分析研究到上面的图表。详细的例子页面将会紧随后面,以下有一些好处。
来自Josh Ulrich非常优秀的技术功能,在CRAN上。
1> require(TTR)
2> getSymbols("AAPL")
3[1] "AAPL"
4> chartSeries(AAPL)
5> addMACD()
6> addBBands()
点击查看全图:
使用数据生成信号
构建模型几乎留给更新的例子序列,但是对于那些渴望继续把周五下午的时间浪费在工作的人来说,我还是要继续的。
在R构建模型就是关于R的形式。本讨论中涉及的数据几乎都是因为大部分的金融数据不仅仅包含一种数据对象。即便不是全部,但大部分的数据都需要你,模型构建者收集以及整理。
这就是预定义数据来源以及链接参数派上用场的地方。setSymbolLookup
允许建模者通过quantmod获取数据——提供一个特定的标识——以某种方式。使用R构建模型时,往往把一个公式运用到拟合函数上,并结合恰当的数据对象进行研究。
为了处理各种不同的资源,很有必要创建数据对象并且预先设定变量名,或者使用操作环境中可视的对象。两种方法都有明显的缺点,最突出的问题就是需要建模者手动下载并且粘合序列数据。
至少,它非常耗时而且不具有启发性。最坏的情况是它可能是危险的,因为数据处理有出错的倾向。数据错误在研究中的成本非常昂贵,交易中的数据错误可以让你马上离职换到新的职业。换言之,我要再次强调LICENSE这个词,这个软件完全缺乏协议并且所有R内容都与此有关。使用者要当心!
为了改进这相当独特的数据问题,quantmod动态性的创建数据对象用于建模过程中。经历一系列步骤后,在内部创建一个模型框架识别所需要的数据源,如果有必要就继续下载。specifyModel
是处理所有数据问题的马达函数,它的help文件需要认真阅读以便于完全理解运行时发生了什么。本文的宗旨是,让读者知道能够在specifyModel里面指定任何数据,并且quantmod可以完成查找以及数据汇总的工作就足够了。当然,数据必须是可以被定位而且是独特的,但这种说法值得怀疑。
让我们看看specifyModel
的一个例子:
1> # Create a quantmod object for use in
2> # in later model fitting. Note there is
3> # no need to load the data before hand.
4>
5> setSymbolLookup(SPY='yahoo',
6+ VXN=list(name='^VIX',src='yahoo'))
7>
8> mm <- specifyModel(Next(OpCl(SPY)) ~ OpCl(SPY) + Cl(VIX))
9>
10> modelData(mm)
mm 是quantmod的对象,包含模型公式以及数据框架,意思是S&P500ETF下一个周期的价格变动比例是当前周期价格变动比列和当前VIX收盘价的函数。
访问modelData
可以提取相关的数据集,并发生巨大的变形。你可以选取数据并且执行你喜欢的操作。更直接完成同样操作的函数是bulidData
.
作者: Jeffrey A. Ryan
原文链接:http://www.quantmod.com/examples/intro/
公众号推荐:数据人才(ID:datarencai)
(一个帮助数据人才找工作的公众号,
也分享数据人才学习和生活的有趣事情。)
内容推荐
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!