2.4k 词
TTMTTM 是 Trailing Twelve Months 的缩写,意思是过去连续 12 个月 1. 计算方法TTM 不是按自然年(1 月到 12 月),而是取最近连续的四个季度的数据相加。 数值最近最近最近最近 其中 Q表示季度数据,可以是净利润、营收、EPS 等。 2. 为什么用 TTM 最新性:比上一完整财年更及时,反映公司最近 12 个月的实际表现。 去季节性影响:比如零售业第四季度旺季,TTM 结合四个季度消除了单季波动影响。 可比性:投资分析中常用 TTM 数据来比较不同公司的盈利能力,因为它都是“滚动 12 个月”的概念。 3. 例子假设今天是 2025 年 8 月,某公司最近四个季度净利润分别是: 2025 Q2:280 亿美元 2025 Q1:270 亿美元 2024 Q4:300 亿美元 2024 Q3:260 亿美元 则: TTM 净利润=280+270+300+260=1110 亿美元 每股收益(EPS, Earnings Per Share) 公式净利润流通在外普通股股数 其中净利润用过去 12 个月(TTM)或预计未来 12...
1.2k 词
结论:, 这类杠杆 单边市下📈超过三倍,📉不到三倍,但震荡市相反。如果对行情把握比较好,且是单边上涨,可以长期持仓,效果会超级好,否则不建议长期持有 1. 单边上涨(📈 正股持续涨) 由于杠杆ETF是每日按「目标倍数」调仓,每天涨 1% → 杠杆ETF 涨 3%。 正股连续上涨 假设: SOXX 连续 20 天每天涨 +1% SOXL 则每天 +3% 初始净值:100 计算: SOXX 最终净值: 100 × (1.01)^{20} ≈ 122.0(涨幅 +22%) SOXL 最终净值: 100 × (1.03)^{20} ≈ 180.6(涨幅 +80.6%) SOXX 涨 22%,而 SOXL 实际涨了 80.6%。 复利叠加后,20天下来,实际涨幅会超过线性 3 倍。 原因:复利放大效应——每天在更高的净值基础上继续乘以 3% 的涨幅,结果会超出单纯的 3 倍计算。 结论:单边上涨时,杠杆ETF超额跑赢。 2. 单边下跌(📉 正股持续跌) 每天跌 1%,杠杆ETF 跌 3%。 正股连续下跌 假设: SOXX 连续 20 天每天跌 -...
未分类
698 词
这里采用 计算链表长度法: 第一次遍历链表,得到链表长度 length。 计算要删除节点的正序位置:length - n + 1。 用一个虚拟头节点 dummy 来统一处理删除头结点的情况。 第二次遍历,将要删除的节点跳过,即让前驱节点指向要删除节点的下一个节点。 解题过程 遍历一次链表,用 length 记录节点总数。 计算要删除的节点前一个节点的位置,也就是 length - n。 使用一个 dummy 节点 指向 head,用 tail 指针遍历到该位置。 直接跳过目标节点:tail.next = tail.next.next。 返回 dummy.next 作为新链表头。 12345678910111213141516171819202122232425262728293031323334353637383940414243# Definition for singly-linked list.# class ListNode:#     def __init__(self, val=0, next=None):#         self....
1.7k 词
当损失函数(Loss)不再下降时 训练模型时最常遇到的问题:当损失函数(Loss)不再下降时,我们该怎么办? 通常,我们的第一反应是认为模型走到了一个“临界点”(Critical Point),比如局部最小值(Local Minima)或鞍点(Saddle Point),在这些点上梯度为零,模型无法再更新。 然而,老师指出,这其实是一种误解。在实际的高维复杂模型中,Loss不再下降,但梯度(Gradient)的模长(Norm)可能依然非常大。这意味着参数的更新步伐并没有停止,模型并非“卡”在一个点上。真正的原因更可能是在一个狭长的“山谷”地带,模型在谷底的两侧来回震荡,虽然每一步都在更新,但宏观上Loss值却无法有效下降 优化失败:不只是局部最小值当模型训练停滞,梯度下降算法无法继续更新参数时,我们通常会假设梯度(Gradient)已经接近于零。梯度为零的点被称为“关键点”(Critical Point),它主要分为两类: 局部最小值 (Local Minima):这是一个大家都很熟悉的概念。当模型走到一个点,其周围所有方向的损失都比当前点高时,这个点就是局部最小值。此时,模型...
1.4k 词
分类问题当作回归问题分析 回归输出的是一个数值,而分类的目的是将输入进行归类。一种简单的方法是将类别视为数值标签进行回归,但如果类别之间没有内在的数值关系,这种方法可能会产生问题。 一个常见的误区是直接用回归的方法来处理分类问题。比如,给“猫”赋予标签1,“狗”赋予标签2,“猪”赋予标签3,然后用一个回归模型去预测这个数值。 这样做有什么问题呢? 隐含的顺序关系:这样做会给模型一个错误的暗示,即这些类别之间存在某种数学关系(例如,狗是猫和猪的平均值?猪比狗更“大”?)。这在大多数分类场景下是不成立的。 多分类的局限:如果类别之间没有明确的顺序,这种方法很难扩展到多分类问题。 正确地表示分类目标: One-Hot 编码 概念:One-Hot 编码是一种将类别变量转换为机器学习算法易于处理的形式的方法。它将每个类别表示为一个向量,向量的长度等于总类别数,其中只有一个元素是1(表示当前类别),其余所有元素都是0。 举例: 类别1: [1, 0, 0] 类别2: [0, 1, 0] 类别3: [0, 0, 1] 这样做的好处是,类别之间是相互独立的,模型不会错误地...
1.2k 词

迭代法是最直观、空间效率最高的方法。它的核心思想是创建一个新的链表,然后同时遍历 list1list2,逐个比较节点的值,将较小的节点依次链接到新链表的末尾。

AI
3.2k 词
搞懂Docker核心概念第一站:初识Cursor与开发容器(Dev Container)一切的开端,是AI为我总结了视频内容:一个名为Cursor的AI代码编辑器,可以通过自然语言,自动为一个项目配置好包含Docker的开发容器(Dev Container)。 我的第一个疑问是:“这不就是把项目打个包吗?有什么用?” 学习笔记1:为什么需要开发容器?为了解决“环境一致性” 我了解到,这“简单的一步”解决了开发者最大的噩梦之一:“在我电脑上能跑,在你电脑上就不行”。 传统痛点:团队成员的电脑系统、软件版本、库版本各不相同,导致代码无法统一运行,大量时间浪费在搭建和调试环境上。 容器化解决方案:通过一个配置文件(devcontainer.json和docker-compose.yml),将项目的运行环境(操作系统、Python版本、所有依赖库、甚至数据库服务)代码化。 最终效果:任何拿到这个项目的人,只需一键(视频中是Cursor的AI指令,传统方法是docker-compose up),就能在几分钟内复刻出一个与我100%一致、完全隔离的开发环境。 第二站:深入Docke...