当前位置: 首页 > 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...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...

[特殊字符] 手撸 Redis 互斥锁那些坑

&#x1f4d6; 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作&#xff0c;想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁&#xff0c;也顺便跟 Redisson 的 RLock 机制对比了下&#xff0c;记录一波&#xff0c;别踩我踩过…...

Android屏幕刷新率与FPS(Frames Per Second) 120hz

Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数&#xff0c;单位是赫兹&#xff08;Hz&#xff09;。 60Hz 屏幕&#xff1a;每秒刷新 60 次&#xff0c;每次刷新间隔约 16.67ms 90Hz 屏幕&#xff1a;每秒刷新 90 次&#xff0c;…...