请选择 进入手机版 | 继续访问电脑版
楼主: supermanangel
5116 1

[源码分享] R分享实例五:相关性分析(二)--商品期货连续合约日内相关性分析 [推广有奖]

  • 0关注
  • 1粉丝

初中生

52%

还不是VIP/贵宾

-

威望
0
论坛币
27 个
通用积分
0
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
260 点
帖子
7
精华
0
在线时间
13 小时
注册时间
2014-6-12
最后登录
2014-8-30

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
商品期货连续合约日内相关性分析
• 本策略在第一期的基础上做了扩展,分析各个商
品期货品种之间的日内行情相关性。
• 商品期货的合约均选用的是连续合约的数据。
• 所分析用的行情数据为1分钟K线数据。
• 行情价格用的是K线数据的Close价格。


本示例的网址为
http://180.153.251.80:16889/sample-apps/cor02/

需要加载的包
library(shiny)
library(quantmod)
library(DTSR)
Shiny:Web Application Framework
Quantmod:Quantitative Financial Modelling Framework
DTSR:Get DTS interface through R



  1. # This is the server logic for a Shiny web application.
  2. # You can find out more about building applications with Shiny here:
  3. #
  4. # http://www.rstudio.com/shiny/
  5. #

  6. library(shiny)
  7. library(quantmod)
  8. library(DTSR)

  9. Getk1mc <- function(symbol,beginDate="20140101", endDate=Sys.Date()) {
  10.   d <- NULL
  11.   if (mode(symbol) == "character" & length(symbol) == 1) {
  12.     beginDate <- gsub("-","",beginDate)
  13.     endDate <- gsub("-","",endDate)
  14.     field.set <- "DateTime,ClosePrice"
  15.     rs <- dts.GetKLine("k1m", symbol, beginDate, endDate, field.set)
  16.     if (rs$ErrorCode == 0){
  17.       d <- rs$Data
  18.       d <- xts(d$ClosePrice,as.POSIXlt(strptime(d$DateTime,"%Y%m%d%H%M%S")),attr=symbol);
  19.     }
  20.   }
  21.   print(c("Getk1mc",Sys.time()))
  22.   return(d)
  23. }

  24. issue.name <- c("沪银","沪铝","沪金","沪铜","燃油",
  25.                 "沪铅","螺纹","橡胶","线材","沪锌",
  26.                 "沥青","热轧卷板","棕榈油","玉米","焦炭",
  27.                 "聚氯乙烯","聚乙烯","豆二","豆粕","豆一",
  28.                 "豆油","焦煤","铁矿石","鲜鸡蛋","纤维板",
  29.                 "胶合板","聚丙烯","早籼稻","郑棉","普麦",
  30.                 "强麦","白糖","甲醇","菜油","PTA",
  31.                 "玻璃","油菜籽","菜籽粕","动力煤","粳稻"
  32.                 )
  33. issue.code <- c("SCag0001.cmdty","SCal0001.cmdty","SCau0001.cmdty","SCcu0001.cmdty","SCfu0001.cmdty",
  34.                 "SCpb0001.cmdty","SCrb0001.cmdty","SCru0001.cmdty","SCwr0001.cmdty","SCzn0001.cmdty",
  35.                 "SCbu0001.cmdty","SChc0001.cmdty","DCp0001.cmdty","DCc0001.cmdty","DCj0001.cmdty",
  36.                 "DCv0001.cmdty","DCl0001.cmdty","DCb0001.cmdty","DCm0001.cmdty","DCa0001.cmdty",
  37.                 "DCy0001.cmdty","DCjm0001.cmdty","DCi0001.cmdty","DCjd0001.cmdty","DCfb0001.cmdty",
  38.                 "DCbb0001.cmdty","DCpp0001.cmdty","ZCRI0001.cmdty","ZCCF0001.cmdty","ZCPM0001.cmdty",
  39.                 "ZCWH0001.cmdty","ZCSR0001.cmdty","ZCME0001.cmdty","ZCOI0001.cmdty","ZCTA0001.cmdty",
  40.                 "ZCFG0001.cmdty","ZCRS0001.cmdty","ZCRM0001.cmdty","ZCTC0001.cmdty","ZCJR0001.cmdty"
  41.                 )


  42. shinyServer(function(input, output,session) {
  43.   observe({   
  44.     names(issue.code) <- issue.name;
  45.     updateSelectInput(session, "issue",choices=issue.code)
  46.   })
  47.   
  48.   result<-reactive({
  49.     print("start query")
  50.     print(input$issue)
  51.     print(input$range)  
  52.     if (length(input$issue) < 2){
  53.       return();
  54.     }
  55.       
  56.     stime <- input$range[1];
  57.     etime <- input$range[2];
  58.     mcs <- lapply(input$issue,Getk1mc,stime,etime);  
  59.     merged <- xts();
  60.     for(i in 1:length(mcs)) {
  61.       if (length(mcs[[i]]) > 0){
  62.         merged <- merge(merged,mcs[[i]],all = T);
  63.         names(merged) <- c(names(merged)[-length(names(merged))],
  64.                            xtsAttributes(mcs[[i]])$attr);
  65.       }      
  66.     }
  67.     names(merged) <- issue.name[which(issue.code %in% names(merged))];
  68.     print(c("merged",Sys.time()))
  69.     merged <- na.fill(merged, "extend")
  70.     mx <- as.matrix(merged);
  71.     cor(mx)  
  72.   })  
  73.   
  74.   output$result<-renderTable({
  75.     d<-result()  
  76.     print(c("cor",Sys.time()))
  77.     if (mode(d) == "numeric" & length(d) > 0) {      
  78.       d
  79.     }
  80.     else{
  81.       matrix(NA)
  82.     }
  83.   })  
  84.   
  85. })
复制代码
  1. # This is the user-interface definition of a Shiny web application.
  2. # You can find out more about building applications with Shiny here:
  3. #
  4. # http://www.rstudio.com/shiny/
  5. #

  6. library(shiny)

  7. shinyUI(pageWithSidebar(
  8.   
  9.   # Application title
  10.   headerPanel("商品期货连续合约日内相关性分析"),
  11.   
  12.   # Sidebar with a slider input for number of observations
  13.   sidebarPanel(
  14.     selectInput("issue","商品期货",c(),multiple = TRUE),
  15.     dateRangeInput("range","时间段",start = Sys.Date()-7),
  16.     submitButton("计算")
  17.   ),
  18.   
  19.   # Show a plot of the generated distribution
  20.   mainPanel(
  21.     textOutput("hint"),   
  22.     tableOutput("result")
  23.   )
  24. ))
复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:相关性分析 商品期货 相关性 Quantitative Applications 相关性

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 16:23