当前位置: 首页 > news >正文

1.14 重叠因子:TRIMA三角移动平均线(Triangular Moving Average, TRIMA)概念与Python实战

目录

      • 0. 本栏目因子汇总表
      • 1. 因子简述
      • 2. 因子计算逻辑
      • 3. 因子应用场景
      • 4. 因子优缺点
      • 5. 因子代码实现
      • 6. 因子取值范围及其含义
      • 7. 因子函数参数建议

0. 本栏目因子汇总表

【量海航行】

1. 因子简述

三角移动平均线(Triangular Moving Average, TRIMA)是一种特殊的加权移动平均线。它通过对价格数据进行两次简单移动平均计算,自然形成三角形权重分布,使得中间数据的权重最大,两端数据的权重逐渐减小。这种权重分布使TRIMA具有更好的平滑效果,同时保持对中期趋势的敏感性。

2. 因子计算逻辑

TRIMA的计算公式如下:

N 1 = ⌊ ( n + 1 ) / 2 ⌋ S M A 1 = 1 N 1 ∑ i = 0 N 1 − 1 C l o s e t − i T R I M A = 1 N 1 ∑ i = 0 N 1 − 1 S M A 1 , t − i T R I M A f a c t o r = C l o s e − T R I M A σ n ( C l o s e ) \begin{align*} N_1 &= \lfloor (n + 1) / 2 \rfloor \\ SMA_1 &= \frac{1}{N_1} \sum_{i=0}^{N_1-1} Close_{t-i} \\ TRIMA &= \frac{1}{N_1} \sum_{i=0}^{N_1-1} SMA_{1,t-i} \\ TRIMA_{factor} &= \frac{Close - TRIMA}{\sigma_n(Close)} \end{align*} N1SMA1TRIMATRIMAfactor=⌊(n+1)/2=N11i=0N11Closeti=N11i=0N11SMA1,ti=σn(Close)CloseTRIMA

其中:

  • n为移动平均周期
  • N_1为第一次SMA的周期
  • SMA为简单移动平均
  • σ_n(Close)为n周期收盘价的滚动标准差
  • ⌊x⌋表示向下取整

3. 因子应用场景

  1. 趋势识别:

    • 价格上穿TRIMA,上升趋势确立
    • 价格下穿TRIMA,下降趋势确立
  2. 中期趋势:

    • TRIMA走向反映中期趋势
    • 用于中期趋势交易
  3. 支撑阻力:

    • TRIMA作为动态支撑位
    • TRIMA作为动态阻力位
  4. 市场周期:

    • 判断市场所处周期
    • 识别趋势转折点

4. 因子优缺点

优点:

  1. 平滑性强:三角形权重分布降低噪音
  2. 稳定可靠:不易受极端值影响
  3. 中庸特性:平衡了滞后性和敏感度
  4. 易于理解:计算逻辑直观简单

缺点:

  1. 滞后性大:双重平均增加了滞后
  2. 灵敏度低:对短期波动反应迟钝
  3. 信号延迟:趋势转折信号较晚
  4. 震荡不适:横盘市场效果欠佳

5. 因子代码实现

def TRIMA_factor(df, n=20):"""计算三角移动平均线(TRIMA)因子参数:df (DataFrame): 输入数据- code: 证券代码,如'600036.SH'- date: 日期,格式为'YYYY-MM-DD'- close: 收盘价n (int): 移动平均周期,默认20返回:DataFrame: 包含原有列和TRIMA因子值,理论取值范围(-∞,+∞),实际大多在[-3,3]之间注意:1. 返回数据包含所有输入列2. 新增TRIMA列为因子值3. date列保持原有字符串格式'YYYY-MM-DD'4. 数据将按code分组、date倒序排列"""import numpy as npimport pandas as pd# 创建副本避免修改原始数据df_copy = df.copy()# 检查code格式valid_codes = df_copy['code'].str.match(r'^(?:\d{6}\.(SH|SZ)|[A-Z]+/[A-Z]+|\w+\.(IB|CFE|US))$')if not valid_codes.all():raise ValueError("Invalid code format found")# 检查date格式valid_dates = df_copy['date'].str.match(r'^\d{4}-\d{2}-\d{2}$')if not valid_dates.all():raise ValueError("Invalid date format found, expected 'YYYY-MM-DD'")# 排序(使用字符串比较)df_copy = df_copy.sort_values(['code', 'date'], ascending=[True, False])# 按code分组计算def calculate_trima(group):close = group['close'].values# 计算三角权重n1 = (n + 1) // 2weights = np.array([min(i + 1, n - i) for i in range(n)])weights = weights / weights.sum()# 计算TRIMAtrima = np.zeros_like(close)for i in range(len(close)):if i < n:window = close[:i+1]w = weights[-(i+1):]w = w / w.sum()trima[i] = np.sum(window * w)else:trima[i] = np.sum(close[i-n+1:i+1] * weights)# 计算n周期滚动标准差rolling_std = group['close'].rolling(window=n).std()# 计算因子值:使用滚动标准差标准化的价格偏离度# 处理标准差为0的情况group['TRIMA'] = np.where(rolling_std != 0,(group['close'] - trima) / rolling_std,0)return groupdf_copy = df_copy.groupby('code', group_keys=False).apply(calculate_trima)# 按照最终要求重新排序并重置索引df_copy = df_copy.sort_values(['code', 'date'], ascending=[True, False]).reset_index(drop=True)return df_copy

测试数据:
在这里插入图片描述

6. 因子取值范围及其含义

TRIMA因子的取值范围理论上是(-∞,+∞),但实际上大多数值会落在[-3,3]区间内:

  • 取值 > 2:表示价格显著高于TRIMA(超过2个标准差),强烈超买信号
  • 取值在(1,2]之间:表示价格高于TRIMA一个标准差以上,偏多信号
  • 取值在[-1,1]之间:表示价格在TRIMA一个标准差范围内波动,震荡区间
  • 取值在[-2,-1)之间:表示价格低于TRIMA一个标准差以上,偏空信号
  • 取值 < -2:表示价格显著低于TRIMA(超过2个标准差),强烈超卖信号

7. 因子函数参数建议

  1. n (移动平均周期):
    • 默认值:20
    • 建议范围:[15, 50]
    • 参数说明:决定移动平均的平滑程度
    • 选择建议:
      • 日线数据建议使用:
        • 中期:20-30天
        • 长期:40-50天
      • 小时线数据建议使用15-25
      • 分钟线数据建议使用10-20
      • 高波动市场使用较长周期
      • 低波动市场可用较短周期

相关文章:

1.14 重叠因子:TRIMA三角移动平均线(Triangular Moving Average, TRIMA)概念与Python实战

目录 0. 本栏目因子汇总表1. 因子简述2. 因子计算逻辑3. 因子应用场景4. 因子优缺点5. 因子代码实现6. 因子取值范围及其含义7. 因子函数参数建议 0. 本栏目因子汇总表 【量海航行】 1. 因子简述 三角移动平均线(Triangular Moving Average, TRIMA)是一种特殊的加权移动平均…...

【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别

老式路由器TPLINK&#xff0c;接入校园网后一人登录&#xff0c;所有人都能通过连接此路由器上网&#xff0c;无法解决遂上网搜索&#xff0c;无果&#xff0c;幸而偶然看到一个帖子说要把信号源网线接入路由器lan口&#xff0c;开启新世界。 一、wan-lan&#xff0c;lan-lan区…...

PC 端连接安卓手机恢复各类数据:安装、操作步骤与实用指南

软件介绍 这款用于恢复安卓手机数据的软件&#xff0c;虽运行在 PC 端&#xff0c;却专为安卓手机数据恢复打造&#xff0c;使用时得用数据线把手机和电脑连接起来。它的功能相当强大&#xff0c;能帮你找回安卓手机里已删除的短信、联系人、通话记录、文档&#xff0c;还有照…...

【折线图 Line】——1

🌟 解锁数据可视化的魔法钥匙 —— pyecharts实战指南 🌟 在这个数据为王的时代,每一次点击、每一次交易、每一份报告背后都隐藏着无尽的故事与洞察。但你是否曾苦恼于如何将这些冰冷的数据转化为直观、吸引人的视觉盛宴? 🔥 欢迎来到《pyecharts图形绘制大师班》 �…...

SpringBoot 整合mongoDB并自定义连接池,实现多数据源配置

要想在同一个springboot项目中使用多个数据源&#xff0c;最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…...

TCP/IP的分层结构、各层的典型协议,以及与ISO七层模型的差别

1. TCP/IP的分层结构 TCP/IP模型是一个四层模型&#xff0c;主要用于网络通信的设计和实现。它的分层结构如下&#xff1a; (1) 应用层&#xff08;Application Layer&#xff09; 功能&#xff1a;提供应用程序之间的通信服务&#xff0c;处理特定的应用细节。 典型协议&am…...

FreeRTOS-中断管理

实验目的 创建一个队列及一个任务&#xff0c;按下按键 KEY1 触发中断&#xff0c;在中断服务函数里向队列里发送数据&#xff0c;任务则阻塞接 收队列数据。 实验代码 实验结果 这样就实现了&#xff0c;使用中断往队列的发送信息&#xff0c;用任务阻塞接收信息...

ShenNiusModularity项目源码学习(15:ShenNius.Admin.API项目分析)

ShenNius.Admin.Mvc项目是MVC模式的入口&#xff0c;ShenNius.Admin.Hosting项目是前后端分离模式的后台服务入口&#xff0c;这两个项目都依赖ShenNius.Admin.API项目&#xff0c;前者使用ShenniusAdminApiModule类注册服务及配置管道&#xff0c;而后者的webapi实现都在ShenN…...

Express + MongoDB 实现文件上传

使用 multer 中间件来处理文件上传&#xff0c;同时将文件的元数据存储到 MongoDB 中。 一、安装依赖 npm install multer 二、核心代码 // 定义文件模型const fileSchema new mongoose.Schema({originalname: String,mimetype: String,size: Number,path: String,});cons…...

计算机毕业设计SpringBoot+Vue.js作业管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

Odoo免费开源CRM技术实战:从商机线索关联转化为售后工单的应用

文 / 开源智造 Odoo金牌服务 Odoo&#xff1a;功能强大且免费开源的CRM Odoo 引入了一种高效的客户支持管理方式&#xff0c;即将 CRM 线索转换为服务台工单。此功能确保销售和支持团队能够无缝协作&#xff0c;从而提升客户满意度并缩短问题解决时间。通过整合 CRM 模块与服…...

2025年如何实现安卓、iOS、鸿蒙跨平台开发

2025年如何实现安卓、iOS、鸿蒙跨平台开发 文章目录 2025年如何实现安卓、iOS、鸿蒙跨平台开发1. 使用统一开发框架2. 华为官方工具链支持3. 代码适配策略4. 生态兼容性处理5. 性能与体验优化总结&#xff1a;方案选择建议 本文首发地址 https://h89.cn/archives/324.html 最新…...

萌新学 Python 之 os 模块

os 模块&#xff1a;主要提供程序与操作系统进行交互的接口 先导入模块&#xff1a;import os 1. os.listdir()&#xff0c;获取当前目录的文件&#xff0c;返回到列表中 2. os.mkdir(文件目录, mode 0o777)&#xff0c;创建目录&#xff0c;777 表示读写程序 在当前目录下…...

IPoIB源码深度解析:如何基于TCP/IP协议栈实现高性能InfiniBand通信

一、IPoIB的核心设计理念 IPoIB(IP over InfiniBand)是一种在InfiniBand网络上承载IP流量的技术,其核心目标是在不修改上层应用的前提下,利用InfiniBand的高带宽和低延迟特性。与自定义协议栈不同,IPoIB通过深度集成到Linux内核TCP/IP协议栈中,将InfiniBand设备抽象为标…...

本地部署阿里万象2.1文生视频模型(Wan2.1-T2V)完全指南

在生成式AI技术爆发式发展的今天,阿里云开源的万象2.1(Wan2.1)视频生成模型,为创作者提供了从文字/图像到高清视频的一站式解决方案。本文针对消费级显卡用户,以RTX 4060 Ti 16G为例,详解本地部署全流程与性能调优方案,涵盖环境配置、多模型选择策略、显存优化技巧及实战…...

information_schema.processlist 表详解

information_schema.processlist 表&#xff08;或 SHOW PROCESSLIST; 命令&#xff09;用于查看 MySQL 当前所有的连接进程&#xff0c;帮助管理员监控数据库活动并排查性能问题。以下是该表的字段及其具体含义&#xff1a; &#x1f539; information_schema.processlist 字段…...

P8623 [蓝桥杯 2015 省 B] 移动距离

P8623 [蓝桥杯 2015 省 B] 移动距离 题目 解析代码 题目 解析 完了完了T.T&#xff0c;这个题我做了20分钟 解题思路就是分组&#xff0c;但是编写的时候最好把边界值过一遍【题目提供的测试数据肯定是最好通过的数据&#xff0c;需要你自己过一遍特殊数据&#xff0c;然后再…...

2025年Linux主力系统选择指南:基于最新生态的深度解析(附2025年发行版对比速查表)

Linux发行版生态在2025年持续演进&#xff0c;既有经典系统的迭代升级&#xff0c;也有新兴项目的崛起。本文结合最新行业动态&#xff0c;从个人用户到企业场景&#xff0c;梳理主力系统选择策略&#xff0c;助你找到最适合的Linux发行版。 一、新手友好型&#xff1a;平滑过渡…...

[密码学实战]Java实现国密(SM2)密钥协商详解:原理、代码与实践

一、代码运行结果 二、国密算法与密钥协商背景 2.1 什么是国密算法? 国密算法是由中国国家密码管理局制定的商用密码标准,包括: SM2:椭圆曲线公钥密码算法(非对称加密/签名/密钥协商)SM3:密码杂凑算法(哈希)SM4:分组密码算法(对称加密)2.2 密钥协商的意义 在安全…...

015--基于STM32F103ZET6的智能风扇设计

1.实物视频演示 智能风扇演示视频 2.程序代码讲解 STM32F103ZET6智能风扇_哔哩哔哩_bilibili 3源代码获取 https://download.csdn.net/download/weixin_41011452/90440545...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...