文章目录
quantmod包
quantmod包提供了量化投资分析的一体化解决方案,它能够帮助使用者完成提取数据、数据重整、金融建模、交易回测和模型可视化等诸多环节。
getSymbols()函数
- 安装和加载包
install.packages("quantmod")
library(quantmod)
- 查看该函数的主要参数
> args(getSymbols)
function (Symbols = NULL, env = parent.frame(), reload.Symbols = FALSE,
verbose = FALSE, warnings = TRUE, src = "yahoo", symbol.lookup = TRUE,
auto.assign = getOption("getSymbols.auto.assign", TRUE),
...)
对各项参数的解释
- getSymbols()函数可以从网络上常用金融数据库中抓取金融数据,目前支持的数据库包括:yahoo、google、FRED、oanda。
从上面几个数据库中,我们可以获取上市公司的股票数据,包括股票日交易数据、股息数据、拆股数据、财务报表数据、期权列表数据;以及汇市数据、重金属交易数据以及美联储官网公布的若干经济数据(注:获取数据时可能会由于网络问题出现’服务器无响应’或’操作超时’的提示,特别是指定抓取数据的网址为’yahoo’时)。
getSymbols()函数参数的特例
getSymbols(‘AAPL’,src=’csv’) 目前尝试把csv文件放在其他目录会发生错误,虽然路径也改了
- getSymblos.csv 会发生错误,以后再试试 – – getSymbols.FRED
- getSymbols.google
- getSymbols.MySQL
- getSymbols.oanda
- getSymbols.rda
- getSymbols.yahoo
- getSymbols.yahooj
- setSymbolLookup
交易数据获取与处理函数 | 目的 |
---|---|
getDividends | 获取分红数据 |
getSplits | 获取送股数据 |
getFinancials | 获取财务报表 |
getQuote | 获取实时股票数据 |
getFX | 获取外汇数据 |
getMetals | 获取金属价格数据 |
adjustOHLC | 除权除息函数 |
Delt | 计算两个序列对应数据差值比例 |
finsPeaks | 找到某一序列最高值 |
has.OHL | |
OHLC.Transformations | OHLC对象数据的提取与变换 |
options.expiry | |
periodReturn | 计算区间的收益 |
adjustOHLC() | 除权、出息函数 |
Next()、Lag() | 前置、后置函数,有可选项 |
redenominate | 改变某一instrument的基础货币 |
volep | 生成volumebar的端点(这对包含volume的时间序列数据) |
specifyModel modelData getModelData builData buildModel fittedModel
等函数是一个系列
绘图函数及其附件 |
---|
chartSeries |
chart_Series |
chartTheme |
chob-class |
chobTA-class |
newTA |
setTA |
TA |
zoomChart |
saveChart |
建模函数 |
---|
specifyModel |
buildData |
buildMode |
tradeModel |
fittedMode |
modelSignal |
moldeData |
getModelData |
is.quantmod |
defaults |
creat.binding |
getOptionChain |
获取股票数据
1. 股票日交易数据
- 美股代码查询:美股列表
- 上交所、深交所股票代码查询:股票代码查询一览表
代码中的’.ss’表示该公司的股票从属于上交所。类似地,可以获取上证A股指数(代码为 000002.ss)、上证B股指数(代码为000003.ss)、上证综合指数(代码为000008.ss)、沪深300指数(代码为 000300.ss)、深圳成指(代码为 399001.sz)等,需要获取深交所股票数据时,把’.ss’替换为’.sz’。
一个例子
# 查询微软公司的股票交易数据
> getSymbols("MSFT",src='yahoo') #google失效
[1] "MSFT"
# 获取最近三天的交易数据
> tail(MSFT,3)
MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted
2019-10-30 143.52 145.00 142.79 144.61 18471700 144.61
2019-10-31 144.90 144.93 142.99 143.37 2459620000 143.37
2019-11-01 144.26 144.42 142.97 143.72 33119200 143.72
>
getSymbols结果重命名
# 获取上交所基金科瑞(500056)的股票数据
> setSymbolLookup(JJKR=list(name="500056.SS",src="yahoo"))
> getSymbols("JJKR")
2. 各种指数的日数据
# 获取上证指数的日数据(^SSEC)
> getSymbols("^SSEC")
> tail(SSEC,3)
SSEC.Open SSEC.High SSEC.Low SSEC.Close SSEC.Volume SSEC.Adjusted
2017-08-24 3287.959 3297.989 3266.359 3271.512 163500 3271.512
2017-08-25 3271.461 3331.915 3271.461 3331.522 205800 3331.522
2019-11-01 2924.340 2959.833 2917.146 2958.199 3105835412 2958.199
>
3. 股息数据
# 获取微软公司的股息数据(只显示三条数据)
> getDividends("MSFT")
MSFT.div
2003-02-19 0.08
2003-10-15 0.16
2004-08-23 0.08
2004-11-15 3.08
2005-02-15 0.08
2005-05-16 0.08
2005-08-15 0.08
2005-11-15 0.08
接下来,我们根据股息调整股票价格,adjustOHLC函数可以对股票数据进行除息调整。
> getSymbols("MSFT", from="2010-01-01", src="yahoo")
> tail(MSFT.a <- adjustOHLC(MSFT),3)
MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted
2019-10-30 143.52 145.00 142.79 144.61 18471700 144.61
2019-10-31 144.90 144.93 142.99 143.37 2459620000 143.37
2019-11-01 144.26 144.42 142.97 143.72 33119200 143.72
>
4. 除权除息数据
# 获取苹果公司的除权股息数据
> getSplits("AAPL")
AAPL.spl
1987-06-16 0.5000000
2000-06-21 0.5000000
2005-02-28 0.5000000
2014-06-09 0.1428571
5. 股票分割数据
> tail(getSplits("MSFT"),3)
MSFT.spl
1998-02-23 0.5
1999-03-29 0.5
2003-02-18 0.5
6. 期权交易数据
利用**getOptionChain()**函数可以获取上市公司的期权交易数据
新浪财经50ETF期权行情接口
四种波动率
获取汇率数据
**getFX()**函数可以帮助我们从oanda获取汇率数据
# 获取美元与日元的汇率数据
> getFX("USD/JPY",from='2016-01-01')
[1] "USDJPY"
> tail(USDJPY,3)
USD.JPY
2016-11-06 103.126
2016-11-07 104.312
2016-11-08 104.312
# 同样我们可以使用getSymbols函数来获取
> getSymbols("USD/JPY",src="oanda",from="2016-01-01")
[1] "USDJPY"
获取重金属交易数据
**getMetals()**函数可以获取重金属的交易数据
> getMetals(c("gold","XPD"),from='2016-01-01')
[1] "XAUUSD" "XPDUSD"
> tail(c(XAUUSD,XPDUSD),3)
XAU.USD
2016-11-07 653.402
2016-11-08 1288.540
2016-11-08 653.402
获取美联储经济数据
> getSymbols('CPIAUCNS',src='FRED')
[1] "CPIAUCNS"
> tail(CPIAUCNS,3)
CPIAUCNS
2016-07-01 240.628
2016-08-01 240.849
2016-09-01 241.428
Delt计算差值比例
Stock.Open <- c(102.25,102.87,102.25,100.87,103.44,103.87,103.00)
Stock.Close <- c(102.12,102.62,100.12,103.00,103.87,103.12,105.12)
Delt(Stock.Open) #one period pct. price change
Delt(Stock.Open,k=1) #same
Delt(Stock.Open,type='arithmetic') #using arithmetic differences (default)
Delt(Stock.Open,type='log') #using log differences
Delt(Stock.Open,Stock.Close) #Open to Close pct. change
Delt(Stock.Open,Stock.Close,k=0:2) #...for 0,1, and 2 periods
periodReturn计算期间收益
getSymbols("YHOO")
#计算自2003年以来的dailyReturn、weeklyReturn、
#monthlyReturn、quaterlyReturn、annualReturn.
allReturns(YHOO,subset = "2003::")
periodReturn(YHOO,period='yearly',subset='2003::')#计算自2003年以来的年收益
periodReturn(YHOO,period='yearly',subset='2003') # 计算2013年收益
yearlyReturn(YHOO,subset="2003")#同上
从数据库获取数据
quantmod除了支持从网络数据库直接抓取数据外,当然也支持从本地数据库读入数据。目前,能支持的数据库类型及调用函数如下:
- getSymbols.rda():读取以.r格式存储的数据
- getSymbols.csv():从csv文件读取OHLC数据
- getSymbols.SQLite():从SQLite数据库读取数据
- getSymbols.MySQL():从MySQL数据库读取数据
获取上市公司的财务报表
getFinancials()函数和getFin()函数可以获取上市公司的财务报表数据。
通过view.Fin函数,我们可以查看财务报表数据。
> getFinancials("AAPL")
[1] "AAPL.f"
> head(viewFin(AAPL.f),5)
2016-09-24 2015-09-26 2014-09-27 2013-09-28
Cash & Equivalents 11883 9731 3612 5554
Short Term Investments 46671 20481 11233 26287
Cash and Short Term Investments 67155 41601 25077 40546
Accounts Receivable - Trade, Net 15754 16849 17460 13102
Receivables - Other NA NA NA NA
上证50ETF期权隐含波动率
参考自:
Quantmod Tutorial:数据获取(一)
R量化交易工具篇—quantmod包的基本应用
今天的文章r语言获取a股数据_r语言在金融中的应用「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89466.html