版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、R財務分析與互動式介面教學實務經驗分享,明新科技大學教師社群,2017.05.10,田慧君 于昌永 靜宜大學財務與計算數(shù)學系,Financial data Analysis System,靜宜大學 財務與計算數(shù)學系,1.隨著巨量資料分析發(fā)展,使用R語言將成為重要的基本能力。2.REXER ANALYTICS調查顯示,R為資料分析師使用比例最高的工具。3.GOOGLE、輝瑞藥廠、美國銀行、洲際酒店集團、殼牌石油皆等使用R。
2、4.ORACLE、MICROSOFT與IBM將R做為其產品中的主要資料分析工具。,R軟體的特色免費的自由軟體、開放源碼且應用廣泛有效的資料處理及存取能力 (可與C, C++和Fortran等程式連結)方便的矩陣操作與運算能力完整而連貫的資料分析能力(有大量套件程式可用)強大的視覺化工具(繪圖功能)跨平臺,可在Windows、UNIX和MacOS執(zhí)行,WHY R?,R 與 財務金融,完整的財金功能套件多樣方便的財務資料取
3、得方式容易上手的財務資料分析方式不斷推陳出新的財金與各式各樣套件R for trading strategy develop and testing algorithm trading https://www.slideshare.net/tw_dsconf/dsc-2016-rR for finance time series data analysis,R--財務金融相關套件,Quantmod 、 Quants
4、trat 、 PortfolioAnalytics 、 PerformanceAnalytics…..,https://cran.r-project.org/web/views/Finance.html,RStudio下載安裝: download R之後 執(zhí)行RStudio-XXX.exe,R下載安裝: download R之後 執(zhí)行R-XXX-win.exe,R?與 Rstudio 安裝及使用簡介,1. R 與 RSstud
5、io安裝完成後,可在應用程式檔案系統(tǒng)Rstudio圖形點選 ,即可啟動RStudio,2.安裝與執(zhí)行套件範例:若要安裝shiny套件Packages?Install ?shiny若要執(zhí)行shiny,在右邊shiny對應的方框中直接打勾,,Rstudio是個好用的IDE革新套件讓R在三方面有開創(chuàng)性改變網頁伺服器RStudio server互動式網頁Shiny互動式文件Rmarkdown資料整理工具dplyr
6、 tidyr繪圖介面ggplot2 ggvis,整合式開發(fā)環(huán)境 RStudio,R與財務資料分析--教材範例,範例: 2016.07 夏日大學教材,主單元: R_fundamental I,> x a<-"male" # char字串,變數(shù)及資料型態(tài): 將資料儲存於變數(shù)物件內,方便重複使用及分析,1.資料常用型態(tài):numeric數(shù)值、integer整數(shù)、char字串、factor因數(shù)、B
7、oolean邏輯2.變數(shù)物件命名:變數(shù)名稱只能以字母或.開頭變數(shù)名稱大小寫是不同的 3.指派(儲存)資料給變數(shù):使用<-或=,> b=factor("male") # factor因子> a[1] "male"> b[1] male Levels: male # factor呈報資料時,無"",主單元: R_fundamen
8、tal I,常用運算: 算數(shù)操作、邏輯操作、if(條件式)、for迴圈,#算數(shù)操作> 10 + 20 #加法> 10 * a #乘法> x/20 #除法,邏輯操作 與 關係比較== Equal toGreater than&Logical AND|Logical OR!Logical NOT > 10>=9[1] TRUE,#i
9、f(條件式) {執(zhí)行程式指令…}#只有條件式為真(TRUE)才會執(zhí)行#例子:袋子裡原本有四元,如果不足十元# (小於十元)再加入五元,結果是9元x=4if(x < 10) { x = x + 5},#for迴圈x=0for( k in 1:3){ x=x+k }#重複規(guī)律由k決定,而k是{1,2,3}#得到 x=0 x=x+1 x=x+2 x=x+3,主單元:R_fundame
10、ntal II,內容:1.儲存『複雜資料』常用結構2.處理及初步觀察資料時常用指令3.資料缺失值檢查與處理4.處理資料後初步結果顯示,主單元: R_fundamental II,> x=c(-4,5,10,-1,6,2,33,44,55) #產生向量變數(shù),常用c()> z=c("mary","John","Ellen")> x[3] #使用
11、位置指標 取得元素,利用[]指定元素位置> x[c(1,4,2)] #取得第1、4、2個元素[1] -4 -1 5,儲存『複雜資料』常用結構:vector: 同類型資料matrix:同類型資料,同長度data.frame:不同類型資料,同長度list : 不同類型資料,不同長度特殊結構:不同R套件,設計特定儲存資料結構如:zoo、xts(常用於財務交易數(shù)據),vector向量:將多個存在
12、一維向量內,> a=matrix(x,nrow=3,ncol=3) #產生矩陣變數(shù) > a [,1] [,2] [,3] [1,] -4 -1 33 [2,] 5 6 44 [3,] 10 2 55,matrix矩陣:將多個同類型向量資料,存在矩陣內,以R提供的內建資料集為範例> data() #查看有那些
13、內建資料集> data(esoph) #載入esoph資料集-- esophagealcancer(食道癌) #載入後,產生esoph的data.frame物件> str(esoph) #查看esoph資料集的結構> View(esoph) # V大寫,將esoph資料集內容顯示于編輯區(qū),data.frame資料框: 處理資料
14、最常用的結構,將多組長度一致的向量(欄) (不同向量內的資料類型可不同)存在data.frame內 與Matrix最大不同在於允許不同column有相異型別,,,主單元: R_fundamental II,#在help中,輸入esoph查看此資料集詳細說明# A data frame with records for 88 age/alcohol/tobacco combinations(法國)#共5個欄位,88筆資料age
15、gp年齡(Age group): factor 6個level : 25--34 35--44 45--54 55--64 65--74 75+ yearsalcgp 酒精(Alcohol consumption): factor 4個level: 0--39 40—79 80—119 120+ gm/dayTobgp抽煙(Tobacco consumption): factor 4個level: 0--9 1
16、0--19 20--29 30+ gm/dayNcases癌癥人數(shù)(Number of cases): numericncontrols未罹癌人數(shù)(Number of control):numeric#可發(fā)現(xiàn)此5個欄位中,有4種資料,前3個欄位雖然皆是factor,#但其level構造不同,屬於不同資料。後2個欄位皆為numeric。,主單元: R_fundamental II,> x=c(-4,5,1
17、0,-1,6,2,33,44,55) #產生向量變數(shù)> x[x>3]# boolean取值,取得所有大於3的元素> max(x) #選取x中最大元素> min(x) #選取x中最小元素> sum(x) # x中所有元素作和> mean(x) # x中所有元素之平均值> sd(x) # x元素之標準差,處理及初步觀察資料時常用指令: bool
18、ean取值、max、sum、mean、sd,資料缺失值檢查與處理:缺失值NA:“Not Available”常出現(xiàn)在許多資料中:char、numeric、factor,> x=c(NA,1,2)> sum(x) #有NA,在套用函數(shù)時,可能導致結果為NA [1] NA> is.na(x) #檢驗變數(shù)是否有NA [1] TRUE FALSE FALSE,> y sum(y) #去
19、除NA後,再套用函數(shù) [1] 3> which(is.na(x)) #檢查NA在那裡 [1] 1,注意:1.雖然NA是空值,但也有其代表意義,例如:溫度記錄temp=c(36.5,36.2, 37, NA, 37)2.許多財務資料中都會有NA值,務必以is.na()、which(is.na())先檢查,並進行適當處理,如na.omit(),主單元: R_fundamental II,> x= x=c(-4
20、,5,10,-1,6,2,33,44,55) # 產生數(shù)值向量變數(shù)> summary(x) # 依資料型態(tài) 回傳x的大致資訊Min. 1st Qu. Median Mean 3rd Qu. Max. -4.00 2.00 6.00 16.67 33.00 55.00> fivenum(x)#用於數(shù)值資料 minimum,
21、lower-hinge, median, upper-hinge, maximum [1] -4 2 6 33 55,處理資料後初步結果顯示: summary、fivenum、table、hist、plot,hist():畫出數(shù)值分佈的長條圖,提供觀察依據plot():依資料型態(tài)畫圖提供觀察依據,> hist(table(esoph$agegp)),data.frame數(shù)據框基本分析,$: 取欄位(colum
22、n)table():將factor數(shù)據依level進行分群,然後對每一群資料資料筆數(shù)進行統(tǒng)計, 結果組合成一個比較表格返回aggregate() :群集函數(shù),將按指定欄位的factor資料進行分群, 然後對每一群資料的某特定欄位資料套用指定函數(shù), 最後把結果組合成一個比較表格返回,> data() #查看有那些內建資料集> data(es
23、oph) #載入esoph資料集-- esophageal cancer(食道癌)載入後,產生data.frame物件> head(esoph) #查看esoph內前6筆資料,對資料內容有概念> which(is.na(esoph)) #查看esoph內是否有NA值 integer(0) #查無NA值,以R提供的內建資料集為分析範例,它首先將資料依factor level進行分組,然後對每一組資
24、料資料筆數(shù)進行統(tǒng)計,最後把結果組合成一個比較表格返回,可瞭解資料資料筆數(shù)分佈,table()函數(shù),> table(esoph$agegp) # esoph$agegp取出欄位值,$是data.frame取欄位值符號 # table()可針對指定欄位,依factor level,彙整資料筆數(shù)>table(esoph$agegp,esoph$alcgp)# table(x,y)可彙集x,y two
25、-way table,結果分析1.數(shù)據資料筆數(shù)均勻分布在年齡的各level 2.數(shù)據資料筆數(shù)分佈在年齡及酒精組合的各level也頗均勻,data.frame數(shù)據框基本分析,data.frame數(shù)據框基本分析,> aggregate(cbind(ncases,ncontrols)~ alcgp,esoph,sum),cbind(ncases,ncontrols) ~ alcgp 表示使用 alcgp 的fac
26、tor,分成多個資料群,對ncases、 ncontrols 數(shù)據都各自進行sum()操作,結果分析:1. 酒精消耗量,得到有/無食道癌人數(shù)2. 酒精消耗量愈大的群體, 得食道癌比例明顯愈高 ?可進一步以統(tǒng)計檢定Note:由此看出 前一頁中僅以人數(shù)觀察容易誤導, 應該看比例較正確,,,人數(shù):75人 比例:75/355 (21%),人數(shù):45人 比例:45/67 (67%),quantmod是應
27、用在財務方面的R語言套件。 quantmod套件提供許多功能:搜集金融資料、繪畫歷史股價、計算報酬率 資料分析:價格趨勢、風險估測、投資組合及其他財務應用,下載及安裝 quantmod套件,> install.packages("quantmod") # 下載quantmod套件> library("quantmod")# 安裝quantmod套件,透過網路,由yahoo
28、 finance 取得股票交易數(shù)據,> tw2330 <- getSymbols("2330.TW",auto.assign=FALSE),# 若要將臺積電股票資料儲存在變數(shù)tw2330上,需要加auto.assign=FALSE#這段指令才能成功儲存在變數(shù)tw2330上。,主單元:quantmod套件與財務資料分析,靜宜大學 財務與計算數(shù)學系,1. getSymbols()下載金融數(shù)據後,儲存於xts
29、格式的物件,xts常用於時間序列資料2. xts格式的物件可轉為data.frame格式,> tw2330.DF<-as.data.frame(tw2330),檢視數(shù)據,開高低收 (OHLC) Open(當日開盤價)、High (當日最高價)Low (當日最低價)、Close (當日收盤價)Volume (成交量) 、Adjust (調整後股價),> View(tw2330)#檢視資料,主單元:quantmo
30、d套件與財務資料分析,主單元:quantmod套件與財務資料分析,計算交易報酬率,,,相關指令如下:dailyReturn、weeklyReturn、monthlyReturn、quarterlyReturn、yearlyReturn,> re.2330=monthlyReturn(`2330.TW`) #計算2330.TW股票月報酬> head(re.2330) #顯示月報酬的前6筆資料> plot(r
31、e.2330)# plot()畫時間序列圖,觀察各時期的月報酬率變化> hist(re.2330)# hist()畫出報酬率分佈的長條圖,觀察報酬率分佈,結果分析:1.2008~2009年,金融海嘯期間,月報酬率波動幅度較大2.長條圖顯示,正報酬機率較高 ?需進一步以統(tǒng)計檢定,主單元:quantmod套件與財務資料分析,技術分析圖型,財務常用圖形:candles、matches、bars和lines。技術分析
32、基本函數(shù): addMACD()、addRSI()、addSMA()、addTA(),> chartSeries(`2330.TW`,subset='2007::2008-01',theme="white",name="臺積電") # subset='2007::2008-01’股價走勢圖的時間起始點設定在2007年~2008-01年 # theme="
33、;white"股價走勢圖的背景設定為白色 # name="臺積電"股價走勢圖的標頭名稱設定為臺積電,畫出股價走勢圖後,可以再加上技術指標,,> addMACD()> addRSI()> addSMA(n = 5, col = "red")> addSMA(n = 20, col = "blue"),1.5日均線向下穿越20日均線--&
34、gt;轉弱賣出訊號2.RSI 買進訊號,主單元:quantmod套件與財務資料分析,自行操作及練習,Exercise 3-1: 1.透過網路,由yahoo finance取得某上市公司股票交易資料 2.計算此上市公司股票投資月報酬率並以plot及hist畫圖Exercise 3-2: 畫出此上市公司股價走勢圖,的時間起始點設定在2008年~2015年,並加上20日均線與250日均線,主單元: shiny互動式網頁
35、,1.shiny是一個可製作互動式網頁的R套件,在Rstudio上執(zhí)行,由Rstudio擔任網頁伺服器2.製作互動式網頁程式由2個函數(shù)負責:ui與server,library(shiny)library("quantmod"),ui<-fluidPage( titlePanel("stock input"), sidebarLayout( sidebarPanel(
36、 textInput("stock", label = h3("Stock Symbol"), value = "2330.TW"), dateRangeInput("time",start = "2008-01-01",end ="2012-06-01", label = h3("Ti
37、me")), fluidRow( column(4,checkboxInput("D5", label = "5D", value = TRUE)), column(4,checkboxInput("D20", label = "20D", value = TRUE)), column(4
38、,checkboxInput("D240", label = "240D", value = TRUE)) ) ), mainPanel( plotOutput("chart") ) ) ),,,,,,,,,,,輸入參數(shù)stocktimeD5D20D240,輸出
39、網頁畫面,,,,,,,送到server抓數(shù)據、畫圖,再將圖chart送回來由ui的plotOutput()呈現(xiàn)在網頁上,ui負責網頁畫面版面、輸入、輸出,,主單元: shiny互動式網頁,shiny製作互動式網頁由2個函數(shù)負責:ui與server,ui輸入參數(shù)stock、timeD5、D20、D240由input物件攜帶至server函數(shù),送到server抓數(shù)據、畫圖,再將圖chart送回來由plotOutput()呈現(xiàn)在網頁上
40、,依input$time參數(shù)確定資料日期區(qū)間,用getSymbol() 依input$stock參數(shù)抓資料,畫chartSeries圖依參數(shù)input$D5 input$D20 input$D240決定是否加上移動平均線,server由output$chart將圖送回ui,server負責~~所有的運算、資料處理與畫圖~~(後臺)ui負責~~頁面呈現(xiàn)與參數(shù)接收~~ (前臺),學習R的障礙與重點,1.資料類型
41、與結構很複雜 ?使用R提供的功能前, 一定要確認此功能要求的是何種物件: factor 、char、…data.frame、xts…. R裡面為此需求,有很多as.XXX函數(shù)可呼叫 例: 檢查: is.factor()、is.character()、is.data.frame()、is.xts()… 轉換:as.factor()、as.character()、as.data.frame()、as.xts
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 明新科技大學聘雇人員聘用契約書
- 明新科技大學學年學期【日隨進修部】加選單
- 明新科技大學企業(yè)管理系
- 明新科技大學出差申請單
- 包紮的目的-明新科技大學[電子計算機中心]
- cfa(特許財務分析師)leveli證照輔導班公告-明新科技大學資訊管理系
- 創(chuàng)新科技論文
- 明新科技大學社會工作學程實施細則
- 心靈醫(yī)學新科技
- 創(chuàng)新科技員工手冊
- 創(chuàng)新科技員工手冊
- 大學英語互動式教學的探究.pdf
- 創(chuàng)新科技大廈修建性詳規(guī)、建筑方案、
- 互動式教學法與動畫教學
- 德明財經科技大學特種獎學金辦法
- 創(chuàng)新科技顛覆傳統(tǒng)模式
- 創(chuàng)新科技爭妍中關村
- 新科技產品推廣啟事
- 交往互動式教學設計
- 明新科技大學 學年度 第 學期 學生獎懲建議單
評論
0/150
提交評論