期货市场传统动量策略

library(Tushare)
library(tidyverse)
library(quantmod)
library(stringr)
#获取数据
pro<-pro_api(token="***************************************************************")
df1 = pro(api_name="fut_settle",trade_date='20210827')
df2 = pro(api_name="fut_settle",trade_date='20210927')
d1=df1[,1:3]
d2=df2[,1:3]
#将不同月份的数据根据合约一一对应,并计算动量
d=nrow(d1)
dd=nrow(d2)
name<-c()
weekly<-c()
m=1
for(i in 1:d){
  for(j in 1:dd){
    if(d1[i,1]==d2[j,1]){
    weeklymom=(d2[j,3]-d1[i,3])/d1[i,3]
    name[m]<-d1[i,1]
    weekly[m]<-weeklymom
    m=m+1
    }
  }
}
#依据动量进行排序
wmom=cbind.data.frame(name,weekly)
wmom=arrange(wmom,desc(weekly))
#计算需做多的前10%,需做空的后10%
long<-c()
short<-c()
l=1
s=1
n=nrow(wmom)
for(i in 1:n){
  d=as.numeric(wmom[i,2])
  if(d>quantile(as.numeric(wmom[,2]),0.9)){
    long[l]=wmom[i,1]
    l=l+1
  }
  else if(d<quantile(as.numeric(wmom[,2]),0.1)){
    short[s]=wmom[i,1]
    s=s+1
  }
}
print(long)
print(short)

此处也可不依据动量策略的经典方法,做多前10%,做空后10%,可以构建依据市场调整收益(market-adjusted returns)作为权重进行投资,这也是我下一步要做的。(ID:446541)

前几天尝试了郑商所杯,用的是同样的思想,但没能用到这段代码(今天才完善完),收益还好,不过在后半段有点动量崩溃。

代码有的部分效率不高,我会继续改进的,前几天跑另一个程序,差点把电池跑废了,我的代码效率是有多低。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值