R財務分析與互動式介面 教學實務經驗分享 明新科技大學教師社群 田慧君 于昌永 靜宜大學財務與計算數學系 2017.05.10.

Slides:



Advertisements
Similar presentations
完美殺人筆記簿 【爸!我受夠了!】 第七組組員: 林正敏 陳筱涵 李蓓宇 許純宜 羅玉芬 謝文軒.
Advertisements

“ 上海市科研计划课题预算编制 ” 网上教程 上海市科委条财处. 经费预算表 表 1 劳务费预算明细表 表 2 购置设备预算明细表 表 3 试制设备预算明细表 表 4 材料费预算明细表 表 5 测试化验与加工费预算明细表 表 6 现有仪器设备使用费预算明细表 小于等于 20 万的项目,表 2 ~表.
—— 海淀区高三化学《考试说明》解读 2015 年 1 月 29 日 学习《考试说明》 备考理综化学.
人的性别遗传 合肥市第四十九中学 丁 艳. 男女成对染色体排序图 1 、男性和女性各 23 对染色体有何异同 ? 哪 一对被称为性染色体 ? 2 、这两幅图中,哪幅 图显示的是男性的染色 体?哪幅图显示的是女 性染色体? 3 、图中哪条染色体是 Y 染色体?它与 X 染色体 在形态上的主要区别是.
朱天心 獵人們 陳怡靜. 寫給不喜歡貓和不瞭解貓的人 目錄 作者簡介 書本簡介 寫作手法–都市人類學 探討課題:  觀貓生之情態而看人之情態  人與貓不同視角之對話  作者之體會與感懷  生命的尊重與關懷 結論 參考資料.
社交礼仪.
回归教材、梳理知识、突出能力 ——2015年历史二轮复习思考 李树全 西安市第八十九中学.
損益表 原則: 收益與費用的計算,實際上是在實現或發生時所產生,與現金收付當時無關。
SPSS 軟體與統計應用 Ya-Yun Cheng, How-Ran Guo
1、一般地说,在生物的体细胞中, 和 都是成对存在的。
辨性别 A B. 辨性别 A B 第三节人类染色体与性别决定 昌邑市龙池初中 杨伟红 学习目标 1.理解人的染色体组成和传递规律。 2.解释人类性别决定的原理。 3.通过探究活动,解读数据了解生男生女的比例。
入党基础知识培训.
《中国共产党发展党员工作细则》 学习提纲 中共进贤县委组织部 宋 剑
严格发展程序,提高工作能力 黄 玉 2010年9月.
发展党员的流程和要求 党委组织部 萧炽成.
統 計 程 式 語 言.
Dr. Baokun Li 经济实验教学中心 商务数据挖掘中心
Introduction 基本概念 授課老師:蕭志明
保良局何壽南小學 使用牙膏對我們生活的影響 六年級專題報告 姓名﹕李燊樺 班別﹕6B 日期﹕
莫让情感之船过早靠岸 兴庆回中 赵莉.
藥物濫用 華德學校 楊凱喬.
行政公文写作 第七章 2004年8月 行政公文写作.
R教學 單元3 建立新變數及函數的介紹 羅琪老師.
论文撰写的一般格式和要求 孟爱梅.
中國歷史人物武則天 G組組員 韋紫恩, 余詩琪 蔡煦齡, 黃榮紳,.
湖南师大附中高三政治第二次月考 试题讲评 试题讲评.
计算机应用基础 Excel部分.
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
第三章 幼儿园课程内容的编制与选择.
熊貓 設計者:鄧澤怡 班別:6B2 學校:華德學校.
資料庫設計 Database Design.
第三章  电话、电子通讯   本章重难点:     打电话的方法、         接听电话的方法。
电话联系.
迎宾员礼仪 包头机电工业职业学校管理系 白琳 1.
Matlab教學 Speaker:林昱志 Date:2012/10/18.
色 弱 與 色 盲.
《社交礼仪分享》 阳晨牧业科技有限公司 市场中心 二O一二年四月十八日.
会议文书.
宠物之家 我的宠物性别? 雌(♀) or 雄(♂) 第一阶段:我的宠物我做主 第二阶段:宠物“相亲记” 第三阶段:家族诞生
如何写入团申请书.
财 务 会 计 第四篇:供应链会计实务 制作人:谌君、熊瑜.
第11周 工作计划.
Minimum Spanning Trees
大綱 Labview 環境介紹 數值(Numeric) 布林值(Boolean)與比較(Comparison) 結構(Structure)
Chapter 2 第二章 Presenting Data in Tables and Charts 統計圖及表的應用
第5章 语义分析(Semantic Analysis)
JAVA程序设计 第5章 深入理解JAVA语言----补充.
STATA 7 蘇國賢.
R教學 安裝RStudio 羅琪老師.
Logistic Regression Appiled Linear Statistical Models,由Neter等著
圖表製作 集中指標 0628 統計學.
Chapter 2 Basic Elements of Fortran
R语言简介 来源 R是S语言的一种实现。S语言是由 AT&T贝尔实验室开发的一种用 来进行数据挖掘、统计分析、作图的解释型语言。最初S语言的实 现版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S语言, 并由MathSoft公司的统计科学部进一步完善。 1995年由新西兰Auckland大学统计系的Robert.
Introduction to Bioinformatics
北極熊 華德學校 田根繩.
VB程序设计语言 主讲教师:王 杨.
網路遊戲版 幸福農場168號.
统 计 学 (第三版) 2008 作者 贾俊平 统计学.
第九章 結 帳 9-1 了解結帳的意義及功能 9-2 了解虛帳戶結清之會計處理 9-3 了解實帳戶結轉的會計處理
MATLAB 程式設計入門篇 初探MATLAB
Lab 4 買房負擔 著重: 不動產計算 是否可承擔起買房 (lab 4) 使用”分析藍本管理員” Excel : IF 函數/功能.
Homework 1(1/2) 本頁表格為派密(Peavy)在07年球季各場次ERA的表現,(1)請依此數據完成下頁表格之統計值並說明之;(2)並與其他三名投手之統計值比較之。(請詳述計算過程) 場次 各場次ERA
瀕臨絕種—北極熊 設計者:吳柏曦 班別:5B1 學校:華德學校.
中国大连高级经理学院博士后入站申请汇报 汇报人:XXX.
SAS软件应用基础 SAS过程步.
內部控制作業之訂定與執行 報告人:許嘉琳 日 期:
第7章 基本统计分析 2019/5/14.
统计软件应用 2 主讲人 陶育纯 SPSS 统计软件应用 2 主讲人 陶育纯 教案.
生命科学学院 生物信息学实验室 冯聪 03/18, 2019 Hangzhou
分類樹(Classification Tree)探討Baseball Data
Presentation transcript:

R財務分析與互動式介面 教學實務經驗分享 明新科技大學教師社群 田慧君 于昌永 靜宜大學財務與計算數學系 2017.05.10

Financial data Analysis System 靜宜大學 財務與計算數學系

WHY R? 1.隨著巨量資料分析發展,使用R語言將成為重要的基本能力。 2.REXER ANALYTICS調查顯示,R為資料分析師使用比例最高的工具。 3.GOOGLE、輝瑞藥廠、美國銀行、洲際酒店集團、殼牌石油皆等使用R。 4.ORACLE、MICROSOFT與IBM將R做為其產品中的主要資料分析工具。 R軟體的特色 免費的自由軟體、開放源碼且應用廣泛 有效的資料處理及存取能力 (可與C, C++和Fortran等程式連結) 方便的矩陣操作與運算能力 完整而連貫的資料分析能力(有大量套件程式可用) 強大的視覺化工具(繪圖功能) 跨平臺,可在Windows、UNIX和MacOS執行

R 與 財務金融 完整的財金功能套件 多樣方便的財務資料取得方式 容易上手的財務資料分析方式 不斷推陳出新的財金與各式各樣套件 R for trading strategy develop and testing algorithm trading https://www.slideshare.net/tw_dsconf/dsc-2016-r R for finance time series data analysis

R--財務金融相關套件 Quantmod 、 Quantstrat 、 PortfolioAnalytics 、 PerformanceAnalytics….. https://cran.r-project.org/web/views/Finance.html

R 與 Rstudio 安裝及使用簡介 R下載安裝: download R之後 執行R-XXX-win.exe RStudio下載安裝: download R之後 執行RStudio-XXX.exe

2. 安裝與執行套件範例: 若要安裝shiny套件 PackagesInstall shiny 若要執行shiny,在右邊shiny對應的方框中直接打勾 1. R 與 RSstudio安裝完成後, 可在應用程式檔案系統 Rstudio圖形 點選 ,即可啟動RStudio

整合式開發環境 RStudio Rstudio是個好用的IDE 革新套件讓R在三方面有開創性改變 網頁伺服器RStudio server 編輯程式區 執行程式 及 執行指令 記憶體內物件、變數 File:檔案清單 Plot:繪圖 Packages:套件清單 Help:套件與指令輔助說明 Rstudio是個好用的IDE 革新套件讓R在三方面有開創性改變 網頁伺服器RStudio server 互動式網頁Shiny 互動式文件Rmarkdown 資料整理工具dplyr tidyr 繪圖介面ggplot2 ggvis

R與財務資料分析--教材範例 範例: 2016.07 夏日大學教材 小單元 主題 Time R_fundamental I_1 R introduction與數據型態 15 min + 10 min R_fundamental I_2 基本運算與if、for、function R_fundamental II_1 資料結構 R_fundamental II_2 資料處理初步與結果顯示 R_quantmod 財務套件使用 R_shiny 互動式網頁

主單元: R_fundamental I 變數及資料型態: 將資料儲存於變數物件內,方便重複使用及分析 1.資料常用型態:numeric數值、integer整數、char字串、factor因數、Boolean邏輯 2.變數物件命名: 變數名稱只能以字母或.開頭 變數名稱大小寫是不同的 3.指派(儲存)資料給變數:使用<-或= > b=factor("male") # factor因子 > a [1] "male" > b [1] male Levels: male # factor呈報資料時,無"" > x<-10.0 # numeric數值 > a<-"male" # char字串

主單元: R_fundamental I 常用運算: 算數操作、邏輯操作、if(條件式)、for迴圈 #for迴圈 x=0 #算數操作 for( k in 1:3){ x=x+k } #重複規律由k決定,而k是{1,2,3} #得到 x=0 x=x+1 x=x+2 x=x+3 #算數操作 > 10 + 20 #加法 > 10 * a #乘法 > x/20 #除法 邏輯操作 與 關係比較 == Equal to < Less than > Greater than & Logical AND | Logical OR ! Logical NOT   > 10>=9 [1] TRUE #if(條件式) {執行程式指令…} #只有條件式為真(TRUE)才會執行 #例子:袋子裡原本有四元,如果不足十元 # (小於十元)再加入五元,結果是9元 x=4 if(x < 10) { x = x + 5 }

主單元:R_fundamental II 內容: 1.儲存『複雜資料』常用結構 2.處理及初步觀察資料時常用指令 3.資料缺失值檢查與處理 4.處理資料後初步結果顯示

主單元: R_fundamental II 儲存『複雜資料』常用結構: vector: 同類型資料 matrix: 同類型資料, 同長度 data.frame: 不同類型資料, 同長度 list : 不同類型資料, 不同長度 特殊結構: 不同R套件,設計特定儲存資料結構如:zoo、xts(常用於財務交易數據) vector向量:將多個存在一維向量內 > x=c(-4,5,10,-1,6,2,33,44,55) #產生向量變數,常用c() > z=c("mary","John","Ellen") > x[3] #使用 位置指標 取得元素,利用[]指定元素位置 > x[c(1,4,2)] #取得第1、4、2個元素 [1] -4 -1 5 matrix矩陣:將多個同類型向量資料,存在矩陣內 > a=matrix(x,nrow=3,ncol=3) #產生矩陣變數 > a [,1] [,2] [,3] [1,] -4 -1 33 [2,] 5 6 44 [3,] 10 2 55

處理資料最常用的結構,將多組長度一致的向量(欄) (不同向量內的資料類型可不同)存在data.frame內 與Matrix最大不同在於允許不同column有相異型別 以R提供的內建資料集為範例 > data() #查看有那些內建資料集 > data(esoph) #載入esoph資料集-- esophagealcancer(食道癌) #載入後,產生esoph的data.frame物件 > str(esoph) #查看esoph資料集的結構 > View(esoph) # V大寫,將esoph資料集內容顯示于編輯區

主單元: R_fundamental II #在help中,輸入esoph查看此資料集詳細說明 # A data frame with records for 88 age/alcohol/tobacco combinations(法國) #共5個欄位,88筆資料 agegp年齡(Age group): factor 6個level : 25--34 35--44 45--54 55--64 65--74 75+ year salcgp 酒精(Alcohol consumption): factor 4個level: 0--39 40—79 80—119 120+ gm/day Tobgp抽煙(Tobacco consumption): factor 4個level: 0--9 10--19 20--29 30+ gm/day Ncases癌症人數(Number of cases): numeric ncontrols未罹癌人數(Number of control):numeric #可發現此5個欄位中,有4種資料,前3個欄位雖然皆是factor, #但其level構造不同,屬於不同資料。後2個欄位皆為numeric。

主單元: R_fundamental II 處理及初步觀察資料時常用指令: boolean取值、max、sum、mean、sd > x=c(-4,5,10,-1,6,2,33,44,55) #產生向量變數 > x[x>3] # boolean取值,取得所有大於3的元素 > max(x) #選取x中最大元素 > min(x) #選取x中最小元素 > sum(x) # x中所有元素作和 > mean(x) # x中所有元素之平均值 > sd(x) # x元素之標準差 資料缺失值檢查與處理: 缺失值NA:“Not Available”常出現在許多資料中:char、numeric、factor > x=c(NA,1,2) > sum(x) #有NA,在套用函數時,可能導致結果為NA [1] NA > is.na(x) #檢驗變數是否有NA [1] TRUE FALSE FALSE > y<-na.omit(x) #去除缺失值(NA)(去除相關行column) > sum(y) #去除NA後,再套用函數 [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 處理資料後初步結果顯示: summary、fivenum、table、hist、plot > x= x=c(-4,5,10,-1,6,2,33,44,55) # 產生數值向量變數 > summary(x) # 依資料型態 回傳x的大致資訊 Min. 1st Qu. Median Mean 3rd Qu. Max. -4.00 2.00 6.00 16.67 33.00 55.00 > fivenum(x) #用於數值資料 minimum, lower-hinge, median, upper-hinge, maximum [1] -4 2 6 33 55 hist():畫出數值分佈的長條圖,提供觀察依據 plot():依資料型態畫圖提供觀察依據 > hist(table(esoph$agegp))

data.frame數據框基本分析 $ : 取欄位(column) table():將factor數據依level進行分群,然後對每一群資料資料筆數進行統計, 結果組合成一個比較表格返回 aggregate() :群集函數,將按指定栏位的factor資料進行分群, 然後對每一群資料的某特定欄位資料套用指定函數, 最後把結果組合成一個比較表格返回 以R提供的內建資料集為分析範例 > data() #查看有那些內建資料集 > data(esoph) #載入esoph資料集-- esophageal cancer(食道癌)載入後,產生data.frame物件 > head(esoph) #查看esoph內前6筆資料,對資料內容有概念 > which(is.na(esoph)) #查看esoph內是否有NA值 integer(0) #查無NA值

data.frame数据框基本分析 table()函數 它首先將資料依factor level進行分組,然後對每一組資料資料筆數進行統計,最後把結果組合成一個比較表格返回,可瞭解資料资料笔数分佈 > table(esoph$agegp) # esoph$agegp取出欄位值,$是data.frame取欄位值符號 # table()可針對指定欄位,依factor level,彙整資料筆數 >table(esoph$agegp,esoph$alcgp) # table(x,y)可彙集x,y two-way table 結果分析 1.數據資料筆數均勻分布在年龄的各level 2.數據資料筆數分佈在年齡及酒精組合的各level也頗均勻

data.frame數據框基本分析 cbind(ncases,ncontrols) ~ alcgp > aggregate(cbind(ncases,ncontrols)~ alcgp,esoph,sum) cbind(ncases,ncontrols) ~ alcgp 表示使用 alcgp 的factor,分成多個資料群, 對ncases、 ncontrols 數據都各自進行sum()操作 結果分析: 1. 酒精消耗量,得到有/無食道癌人數 2. 酒精消耗量愈大的群體, 得食道癌比例明顯愈高 可進一步以統計檢定 Note:由此看出 前一頁中僅以人數觀察容易誤導, 應該看比例較正確 人數:75人 比例:75/355 (21%) 人數:45人 比例:45/67 (67%)

主單元:quantmod套件與財務資料分析 quantmod是應用在財務方面的R語言套件。 quantmod套件提供許多功能:搜集金融資料、繪畫歷史股價、計算報酬率 資料分析:價格趨勢、風險估測、投資組合及其他財務應用 下載及安裝 quantmod套件 > install.packages("quantmod") # 下載quantmod套件 > library("quantmod") # 安裝quantmod套件 透過網路,由yahoo finance 取得股票交易數據 > tw2330 <- getSymbols("2330.TW",auto.assign=FALSE) # 若要將台積電股票資料儲存在變數tw2330上,需要加auto.assign=FALSE #這段指令才能成功儲存在變數tw2330上。

主單元:quantmod套件與財務資料分析 1. getSymbols()下載金融數據後,儲存於xts格式的物件,xts常用於時間序列資料 2. xts格式的物件可轉為data.frame格式 > tw2330.DF<-as.data.frame(tw2330) 檢視數據 > View(tw2330) #檢視資料 開高低收 (OHLC) Open(當日開盤價)、High (當日最高價) Low (當日最低價)、Close (當日收盤價) Volume (成交量) 、Adjust (調整後股價) 靜宜大學 財務與計算數學系

主單元:quantmod套件與財務資料分析 計算交易報酬率 相關指令如下: dailyReturn、weeklyReturn、monthlyReturn、quarterlyReturn、yearlyReturn > re.2330=monthlyReturn(`2330.TW`) #計算2330.TW股票月報酬 > head(re.2330) #顯示月報酬的前6筆資料 > plot(re.2330) # plot()畫時間序列圖,觀察各時期的月報酬率變化 > hist(re.2330) # hist()畫出報酬率分佈的長條圖,觀察報酬率分佈 结果分析: 1.2008~2009年,金融海嘯期間,月報酬率波動幅度較大 2.長條圖顯示,正報酬機率較高 需進一步以統計檢定

主單元:quantmod套件與財務資料分析 技術分析圖型 財務常用圖形:candles、matches、bars和lines。 技術分析基本函數: addMACD()、addRSI()、addSMA()、addTA() > chartSeries(`2330.TW`,subset='2007::2008-01',theme="white",name="台積電") # subset='2007::2008-01’股價走勢圖的時間起始點設定在2007年~2008-01年 # theme="white"股價走勢圖的背景設定為白色 # name="台積電"股價走勢圖的標頭名稱設定為台積電 畫出股價走勢圖後,可以再加上技術指標 > addMACD() > addRSI() > addSMA(n = 5, col = "red") > addSMA(n = 20, col = "blue") 1.5日均線向下穿越20日均線-->轉弱賣出訊號 2.RSI < 30 -->買進訊號

主單元:quantmod套件與財務資料分析 自行操作及練習 Exercise 3-1: 1.透過網路,由yahoo finance取得某上市公司股票交易資料 2.計算此上市公司股票投資月報酬率並以plot及hist畫圖 Exercise 3-2: 畫出此上市公司股價走勢圖,的時間起始點設定在2008年~2015年, 並加上20日均線與250日均線

主單元: shiny互動式網頁 1.shiny是一個可製作互動式網頁的R套件,在Rstudio上執行,由Rstudio擔任網頁伺服器 2.製作互動式網頁程式由2個函數負責:ui與server library(shiny) library("quantmod") ui負責網頁畫面 版面、輸入、輸出 ui<-fluidPage( titlePanel("stock input"), sidebarLayout( sidebarPanel( textInput("stock", label = h3("Stock Symbol"), value = "2330.TW"), dateRangeInput("time",start = "2008-01-01",end ="2012-06-01", label = h3("Time")), fluidRow( column(4,checkboxInput("D5", label = "5D", value = TRUE)), column(4,checkboxInput("D20", label = "20D", value = TRUE)), column(4,checkboxInput("D240", label = "240D", value = TRUE)) ) ), mainPanel( plotOutput("chart") 輸入參數 stock time D5 D20 D240 送到server抓數據、畫圖,再將圖chart送回來由ui的plotOutput()呈現在網頁上 輸出網頁畫面

主單元: shiny互動式網頁 shiny製作互動式網頁由2個函數負責:ui與server stock、time D5、D20、D240 由input物件携带至server函数 server<-function( input, output) { dataStock <- reactive({ getSymbols(input$stock,auto.assign = FALSE) }) output$chart <- renderPlot({ timeup<<-as.character(input$time[1]) timedown<<-as.character(input$time[2]) time <-paste0(timeup,"::",timedown) chartSeries(dataStock()[time],theme="white") c( if(input$D5){addSMA(n=5,col="red")}, if(input$D20){addSMA(n=20,col="green")}, if(input$D240){addSMA(n=240,col="purple")} ) } 用getSymbol() 依input$stock參數抓資料 server由output$chart 將圖送回ui 依input$time參數確定資料日期區間 畫chartSeries圖 依參數input$D5 input$D20 input$D240 決定是否加上移動平均線 送到server抓數據、畫圖,再將圖chart送回來由plotOutput()呈現在網頁上 server負責~~所有的運算、資料處理與畫圖~~(後臺) ui負責~~頁面呈現與參數接收~~ (前臺)

學習R的障礙與重點 1.資料類型與結構很複雜 使用R提供的功能前, 一定要確認此功能要求的是何種物件: factor 、char、…data.frame、xts…. R裡面為此需求,有很多as.XXX函數可呼叫 例: 檢查: is.factor()、is.character()、is.data.frame()、is.xts()… 轉換:as.factor()、as.character()、as.data.frame()、as.xts()… 2.R有超過6000個package  使用package各式各樣功能前, 最好download提供的documentation R-project官方網站:http://www.r-project.org/提供相當多參考文件、套件的說明及下載 3. 遇到的問題  google別人的程式或到官網及論壇發問 4.要持之以恆,經常 寫/測試/用R解決問題

謝謝聆聽 歡迎指教