码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • R语言动量交易策略分析调整后的数据


    全文链接:http://tecdat.cn/?p=18686

    用于动量策略中所谓的动量(Momentum) ,是指某一对象所具有的一种倾向于保持其原有属性或特征的性质,也可以简单理解成一种惰性(Inertia) (点击文末“阅读原文”获取完整代码数据)。

    股票的动量,简单地说就是涨的还会接着涨,跌的还会接着跌;过去涨得越猛,未来涨的也就越猛;过去跌得越狠,未来也会跌的越狠。

    相关视频

    下面,本文将尝试将动量策略应用于调整后的数据(历史价格,股息和拆分数据,以预测公司的未来或获得市场见解):

    1. #*****************************************************************
    2. # 加载一天结束时的历史数据
    3. #*****************************************************************
    4. # 股票代码
    5. tickers = '
    6. AGG
    7. DBC
    8. EEM
    9. EFA
    10. '
    11. getSymbols.extra(tickers, src = 'yahoo', from = '1970-01-01', env = data, set.symbolnames = T, auto.assign = T)
    12. #*****************************************************************
    13. # 构建另一个不含股利的价格调整后的回测环境
    14. #*****************************************************************
    15. for(i in data$symbolnames) data.price[[i]] = adjustOHLC(data[[i]], symbol.name=i, adjust='split', use.Adjusted=F)
    16. #*****************************************************************
    17. # 调整价格
    18. #*****************************************************************
    19. for(i in data$symbolnames) data[[i]] = adjustOHLC(data[[i]], use.Adjusted=T)
    20. prep(data, align='keep.all')

    我们构建了两个环境:

    • 包含拆分和股息调整后的价格

    • 仅包含调整后的价格

    1. #*****************************************************************
    2. # 排名60天变化率
    3. #******************************************************************
    4. return = prices / mlag(prices,60) - 1
    5. position.score = iif(return < 0, NA, return)
    6. data$weight[period.ends0,] = ntop(position.score[period.ends1,], 1)
    7. #*****************************************************************
    8. # 60/120天的排名变化率
    9. #******************************************************************
    10. return = prices / mlag(prices,60) - 1 + prices / mlag(prices,120) - 1
    11. position.score = iif(return < 0, NA, return)
    12. data$weight[period.ends0,] = ntop(position.score[period.ends1, , 1)
    13. #*****************************************************************
    14. # 创建报表
    15. #*****************************************************************
    16. plot(models)

    1310ac503726ac7852a02c7a05066188.png


    点击标题查阅往期内容

    2da9c403378dc3c49afa77a1eafb379f.jpeg

    【视频】量化交易陷阱和R语言改进股票配对交易策略分析中国股市投资组合

    outside_default.png

    左右滑动查看更多

    outside_default.png

    01

    6391a1998489378d0bb8b68c82cef7f5.png

    02

    6b413d55673fd9934cd5137d3ef33f48.png

    03

    a24b9f67864a37ddd8350127d8993702.png

    04

    4d9b0c64d1d512edce6ad8e40e5e3208.png

    1. mom60 mom120
    2. Period Jan2002 - Mar2015 Jan2002 - Mar2015
    3. Cagr 18.05 15.47
    4. Sharpe 0.89 0.76
    5. DVR 0.85 0.7
    6. R2 0.95 0.92
    7. Volatility 21.26 22.21
    8. MaxDD -33.49 -51.75
    9. Exposure 94.36 94.36
    10. Win.Percent 63.76 62.42
    11. Avg.Trade 1.69 1.49
    12. Profit.Factor 2.24 2
    13. Num.Trades 149 149
    1. models$mom60 weight entry.date exit.date nhold entry.price exit.price return
    2. SPY 100 2013-06-28 2013-07-31 33 155.04 163.06 5.17
    3. XLV 100 2013-07-31 2013-08-30 30 49.88 48.12 -3.53
    4. XLV 100 2013-08-30 2013-09-30 31 48.12 49.66 3.20
    5. FXI 100 2013-09-30 2013-10-31 31 35.92 36.40 1.34
    6. EEM 100 2013-10-31 2013-11-29 29 41.16 41.05 -0.27
    7. XLV 100 2013-11-29 2013-12-31 32 54.24 54.64 0.75
    8. SPY 100 2013-12-31 2014-01-31 31 180.35 173.99 -3.53
    9. XLV 100 2014-01-31 2014-02-28 28 55.16 58.59 6.22
    10. IYR 100 2014-02-28 2014-03-31 31 65.72 65.81 0.14
    11. IYR 100 2014-03-31 2014-04-30 30 65.81 67.81 3.04
    12. EEM 100 2014-04-30 2014-05-30 30 40.42 41.62 2.97
    13. EEM 100 2014-05-30 2014-06-30 31 41.62 42.62 2.40
    14. IYR 100 2014-06-30 2014-07-31 31 70.41 70.33 -0.11
    15. FXI 100 2014-07-31 2014-09-30 61 39.96 37.80 -5.41
    16. UUP 100 2014-09-30 2014-10-31 31 22.87 23.09 0.96
    17. XLV 100 2014-10-31 2014-11-28 28 67.02 69.35 3.48
    18. XLV 100 2014-11-28 2014-12-31 33 69.35 68.38 -1.40
    19. IYR 100 2014-12-31 2015-01-30 30 76.84 81.23 5.71
    20. IYR 100 2015-01-30 2015-02-27 28 81.23 79.12 -2.60
    21. FXI 100 2015-02-27 2015-03-30 31 43.76 44.74 2.24

    接下来,我们考虑以下3种设置:

    • “已调整”-拆分和股息调整后的价格数据。信号和损益仅从调整后的数据时间序列中得出。

    • “实际”-仅使用拆分后的调整数据,尚未对股息进行调整。信号和损益仅从唯一的拆分调整后的数据时间序列中得出。

    • “混合”-使用“实际”时间序列生成信号,使用“调整”时间序列进行损益计算。

    1. #*****************************************************************
    2. # 辅助函数
    3. #******************************************************************
    4. return = prices / mlag(prices,60) - 1
    5. position.score = iif(return < 0, NA, return)
    6. return = prices / mlag(prices,60) - 1 + prices / mlag(prices,120) - 1
    7. position.score = iif(return < 0, NA, return)
    8. models[[paste0('mom120',name)]] =run(data, clean.signal=F, commission = commission, trade.summary=T, silent=T)
    9. models
    10. #*****************************************************************
    11. # 安装
    12. #******************************************************************
    13. all.models = c(all.models, strategy(prices.adj, data, 'Adjusted'))
    14. #*****************************************************************
    15. # 创建报表
    16. #*****************************************************************
    17. plot(models

    9e7b31ad501e420085da47ebeb6d2ffe.png

    print(plotbt.strateg(models, make.plot=F,
    1. mom60Adjusted mom60Actual mom60Hybrid
    2. Period Jan2002 - Mar2015 Jan2002 - Mar2015 Jan2002 - Mar2015
    3. Cagr 18.05 15.02 17.22
    4. Sharpe 0.89 0.76 0.85
    5. DVR 0.85 0.73 0.82
    6. R2 0.95 0.96 0.96
    7. Volatility 21.26 21.33 21.33
    8. MaxDD -33.49 -35.99 -33.74
    9. Exposure 94.36 92.44 92.44
    10. Win.Percent 63.76 62.33 63.01
    11. Avg.Trade 1.69 1.49 1.67
    12. Profit.Factor 2.24 1.98 2.15
    13. Num.Trades 149 146 146
    plotbt(models, plotX = T, log = 'y'

    169e6c9743a465b12543bf6470da030a.png

    print(plotstrategy)
    1. mom120Adjusted mom120Actual mom120Hybrid
    2. Period Jan2002 - Mar2015 Jan2002 - Mar2015 Jan2002 - Mar2015
    3. Cagr 15.47 13.61 15.66
    4. Sharpe 0.76 0.69 0.77
    5. DVR 0.7 0.64 0.73
    6. R2 0.92 0.92 0.94
    7. Volatility 22.21 22.08 22.07
    8. MaxDD -51.75 -49.93 -47.15
    9. Exposure 94.36 92.47 92.47
    10. Win.Percent 62.42 60.96 61.64
    11. Avg.Trade 1.49 1.37 1.54
    12. Profit.Factor 2 1.9 2.02
    13. Num.Trades 149 146 146

    经调整后的数据表现优于实际数据和混合数据。


    8d3891575fa38a7ea2efba995af54be4.png

    最受欢迎的见解

    1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用

    2.R语言GARCH-DCC模型和DCC(MVT)建模估计

    3.R语言实现 Copula 算法建模依赖性案例分析报告

    4.R语言COPULAS和金融时间序列数据VaR分析

    5.R语言多元COPULA GARCH 模型时间序列预测

    6.用R语言实现神经网络预测股票实例

    7.r语言预测波动率的实现:ARCH模型与HAR-RV模型

    8.R语言如何做马尔科夫转换模型markov switching model

    9.matlab使用Copula仿真优化市场风险


    27a50f4477579ff8e976c608435c3090.jpeg

    点击文末“阅读原文”

    获取全文完整代码数据资料。

    本文选自《R语言动量交易策略分析调整后的数据》。

    点击标题查阅往期内容

    【视频】量化交易陷阱和R语言改进股票配对交易策略分析中国股市投资组合

    使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略

    R语言量化交易RSI策略:使用支持向量机SVM

    R语言资产配置: 季度战术资产配置策略研究

    R语言动量交易策略分析调整后的数据

    TMA三均线股票期货高频交易策略的R语言实现

    R语言时间序列:ARIMA / GARCH模型的交易策略在外汇市场预测应用

    R语言基于Garch波动率预测的区制转移交易策略

    r语言多均线股票价格量化策略回测

    使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略

    Python基于粒子群优化的投资组合优化研究

    R语言Fama-French三因子模型实际应用:优化投资组合

    R语言动量和马科维茨Markowitz投资组合(Portfolio)模型实现

    Python计算股票投资组合的风险价值(VaR)

    R语言Markowitz马克维茨投资组合理论分析和可视化

    R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分

    PYTHON用RNN神经网络LSTM优化EMD经验模态分解交易策略分析股票价格MACD

    R语言深度学习:用keras神经网络回归模型预测时间序列数据

    【视频】CNN(卷积神经网络)模型以及R语言实现回归数据分析

    Python TensorFlow循环神经网络RNN-LSTM神经网络预测股票市场价格时间序列和MSE评估准确性

    数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子

    Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

    Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

    RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

    结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

    深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

    用PyTorch机器学习神经网络分类预测银行客户流失模型

    PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

    Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

    Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

    R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

    R语言深度学习:用keras神经网络回归模型预测时间序列数据

    Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

    R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

    MATLAB中用BP神经网络预测人体脂肪百分比数据

    Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

    R语言实现CNN(卷积神经网络)模型进行回归数据分析

    SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

    【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

    Python使用神经网络进行简单文本分类

    R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

    R语言基于递归神经网络RNN的温度时间序列预测

    R语言神经网络模型预测车辆数量时间序列

    R语言中的BP神经网络模型分析学生成绩

    matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

    R语言实现拟合神经网络预测和结果可视化

    用R语言实现神经网络预测股票实例

    使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

    python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

    用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

    7ff0c97689dec966ac57b7411a9e5d49.png

    108fd6745286119b613a6ffd1e242573.jpeg

    78f2a8991427eafb4db33a8f38988580.png

  • 相关阅读:
    C#开发——基本概念和HelloWord
    [C++][数据结构][图][中][图的遍历][最小生成树]详细讲解
    数据库实验二
    分布式架构-流量治理-流量控制
    海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7(1)
    分布式事务的解决方案
    LeetCode 热题 100(九):回溯复习。77. 组合、17. 电话号码的字母组合、39. 组合总和
    【无标题】
    SaaSpace:9种最佳免费时间管理软件
    一.node的文件系统;二.node的数据流(Stream接口);
  • 原文地址:https://blog.csdn.net/tecdat/article/details/128125321
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号