1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > R语言基础(3)——获取金融数据及处理分析

R语言基础(3)——获取金融数据及处理分析

时间:2020-09-11 05:00:15

相关推荐

R语言基础(3)——获取金融数据及处理分析

文章目录

quantmod包getSymbols()函数getSymbols()函数参数的特例获取股票数据1. 股票日交易数据2. 各种指数的日数据3. 股息数据4. 除权除息数据5. 股票分割数据6. 期权交易数据获取汇率数据获取重金属交易数据获取美联储经济数据Delt计算差值比例periodReturn计算期间收益从数据库获取数据获取上市公司的财务报表

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.FREDgetSymbols.googlegetSymbols.MySQLgetSymbols.oandagetSymbols.rdagetSymbols.yahoogetSymbols.yahoojsetSymbolLookup

specifyModel modelData getModelData builData buildModel fittedModel

等函数是一个系列

获取股票数据

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-10-30 143.52 145.00 142.79144.61 18471700 144.61-10-31 144.90 144.93 142.99143.37 2459620000 143.37-11-01 144.26 144.42 142.97143.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-08-24 3287.959 3297.989 3266.359 3271.5121635003271.512-08-25 3271.461 3331.915 3271.461 3331.5222058003331.522-11-01 2924.340 2959.833 2917.146 2958.199 31058354122958.199>

3. 股息数据

# 获取微软公司的股息数据(只显示三条数据)> getDividends("MSFT")MSFT.div-02-190.08-10-150.16-08-230.08-11-153.08-02-150.08-05-160.08-08-150.08-11-150.08

接下来,我们根据股息调整股票价格,adjustOHLC函数可以对股票数据进行除息调整。

> getSymbols("MSFT", from="-01-01", src="yahoo")> tail(MSFT.a <- adjustOHLC(MSFT),3)MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted-10-30 143.52 145.00 142.79144.61 18471700 144.61-10-31 144.90 144.93 142.99143.37 2459620000 143.37-11-01 144.26 144.42 142.97143.72 33119200 143.72>

4. 除权除息数据

# 获取苹果公司的除权股息数据> getSplits("AAPL")AAPL.spl1987-06-16 0.50000002000-06-21 0.5000000-02-28 0.5000000-06-09 0.1428571

5. 股票分割数据

> tail(getSplits("MSFT"),3)MSFT.spl1998-02-230.51999-03-290.5-02-180.5

6. 期权交易数据

利用**getOptionChain()**函数可以获取上市公司的期权交易数据

新浪财经50ETF期权行情接口

四种波动率

获取汇率数据

**getFX()**函数可以帮助我们从oanda获取汇率数据

# 获取美元与日元的汇率数据> getFX("USD/JPY",from='-01-01')[1] "USDJPY"> tail(USDJPY,3)USD.JPY-11-06 103.126-11-07 104.312-11-08 104.312# 同样我们可以使用getSymbols函数来获取> getSymbols("USD/JPY",src="oanda",from="-01-01")[1] "USDJPY"

获取重金属交易数据

**getMetals()**函数可以获取重金属的交易数据

> getMetals(c("gold","XPD"),from='-01-01')[1] "XAUUSD" "XPDUSD"> tail(c(XAUUSD,XPDUSD),3)XAU.USD-11-07 653.402-11-08 1288.540-11-08 653.402

获取美联储经济数据

> getSymbols('CPIAUCNS',src='FRED')[1] "CPIAUCNS"> tail(CPIAUCNS,3)CPIAUCNS-07-01 240.628-08-01 240.849-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 changeDelt(Stock.Open,k=1)#sameDelt(Stock.Open,type='arithmetic') #using arithmetic differences (default)Delt(Stock.Open,type='log') #using log differencesDelt(Stock.Open,Stock.Close) #Open to Close pct. changeDelt(Stock.Open,Stock.Close,k=0:2) #...for 0,1, and 2 periods

periodReturn计算期间收益

getSymbols("YHOO")#计算自以来的dailyReturn、weeklyReturn、#monthlyReturn、quaterlyReturn、annualReturn.allReturns(YHOO,subset = "::")periodReturn(YHOO,period='yearly',subset='::')#计算自以来的年收益periodReturn(YHOO,period='yearly',subset='') # 计算收益yearlyReturn(YHOO,subset="")#同上

从数据库获取数据

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)-09-24 -09-26 -09-27 -09-28Cash & Equivalents11883 9731 3612 5554Short Term Investments46671204811123326287Cash and Short Term Investments 67155416012507740546Accounts Receivable - Trade, Net15754168491746013102Receivables - Other NA NA NA NA

上证50ETF期权隐含波动率

参考自:

Quantmod Tutorial:数据获取(一)

R量化交易工具篇—quantmod包的基本应用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。