Communitygithub.com

jwd2a/skills

分析Justin的股票投资组合,并与标普500指数(SPY)进行基准比较。

skills 是什么?

该技能是一个全面的投资组合分析工具,专为Justin的个人股票投资组合设计,支持与标普500指数(SPY)进行基准比较。它集成了多个模块,涵盖投资组合管理、性能分析、止损监控、定期报告、动量筛选和轮动跟踪等功能。用户可以通过简单的Python脚本或命令行界面更新投资组合、计算波动率、相关性、Sortino比率、多元化得分和增长对比等指标。它还包含一个Beta调整的波动性尾随止损监控器,以及多节奏(每日、每周、每月、每季度、每年)的报告生成系统,输出格式为Slack友好文本。该技能适用于任何支持Python的AI代理平台(如Claude Code、Cursor、Codex),数据源包括AlphaVantage、Finnhub和Yahoo Finance,并考虑了免费API的速率限制。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jwd2a/skills/tree/HEAD/portfolio

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

投资组合分析技能

分析Justin的股票投资组合,并与标普500指数(SPY)进行基准比较。

文件

  • portfolio.py — 用于管理持仓的投资组合类
  • analyze.py — 分析引擎(波动率、相关性、Sortino比率、多元化、增长)
  • prices.py — 价格获取模块

使用方法

从Fidelity CSV更新投资组合

from portfolio import Portfolio
p = Portfolio()
p.load_from_fidelity_csv("/path/to/export.csv")
p.save()

运行分析

python analyze.py                    # 默认90天
python analyze.py --days 180         # 自定义周期
python analyze.py --json portfolio.json --days 60

输出

Slack格式文本,包含:

  • 每只股票和投资组合的波动率(年化)
  • 相关性矩阵
  • 多元化得分
  • Sortino比率(0%无风险利率)
  • 与SPY基准的增长对比

尾随止损监控器

trailing_stops.py — 基于Beta调整的波动性尾随止损,针对每个持仓。

工作原理

  • 计算30天滚动年化波动率和相对于SPY的Beta值
  • 跟踪每只股票的尾随最高价
  • 计算调整后的跌幅 = 从最高点的原始跌幅 − (Beta × SPY从其最高点的跌幅)
  • 当调整后的跌幅连续两个交易日超过1.5倍日波动率时触发警报
  • 状态持久化存储在 stops_state.json 中

使用方法

python trailing_stops.py --status          # 显示所有持仓的当前水平
python trailing_stops.py --check           # 每日监控(突破时触发警报)

输出

  • --status:当前价格、尾随最高价、波动率、Beta、距止损水平的距离
  • --check:如果突破则发出警报,否则显示“一切正常”。警报后重置状态。

报告

report.py — 多节奏投资组合报告,输出Slack格式化文本。

使用方法

python report.py --cadence daily       # 简短日报(Finnhub实时报价)
python report.py --cadence weekly      # 周度表现 + 尾随止损
python report.py --cadence monthly     # 完整分析,30天回顾
python report.py --cadence quarterly   # 90天 + 动量趋势 + 权重漂移
python report.py --cadence yearly      # 252天 + 年度排名 + 多元化趋势

各节奏详情

  • 每日:约10-15行。实时报价、持仓变动、最佳/最差、SPY对比
  • 每周:约20行。周度变动、尾随止损距离、波动率
  • 每月:完整套件 — 波动率、相关性矩阵、Sortino比率、多元化、与SPY增长对比、盈亏、尾随止损
  • 每季度:月度内容 + 动量趋势(加速/减速)、等权重的权重漂移
  • 每年:月度内容 + 年度排名、按季度统计的多元化得分趋势

数据源

  • 每日:Finnhub实时报价(无速率限制问题)
  • 周度及以上:AlphaVantage历史数据(调用间延迟3秒以应对速率限制)

动量筛选器

momentum_screener.py — 使用雅虎财经数据扫描市场,寻找顶级动量股票。

使用方法

python3 momentum_screener.py                          # 默认:按10天动量选前20只
python3 momentum_screener.py --lookback 5             # 5天动量
python3 momentum_screener.py --lookback 20            # 20天(一个月)
python3 momentum_screener.py --top 10                 # 只显示前10名
python3 momentum_screener.py --universe bullpen       # 只扫描备用股票池
python3 momentum_screener.py --universe sp500         # 全部标普500
python3 momentum_screener.py --min-volume 500000      # 最小日均成交量过滤
python3 momentum_screener.py --compare                # 在结果中标记当前持仓
python3 momentum_screener.py --json                   # JSON格式输出

输出

每只股票:原始收益率、年化波动率、风险调整后动量、上涨日一致性、平均成交量。

轮动跟踪器

rotation_tracker.py — 记录投资组合的进入/退出,并跟踪轮动表现。

使用方法

python3 rotation_tracker.py --log GOOGL exit 311.49 "尾随止损突破"
python3 rotation_tracker.py --log POWL enter 85.20 "动量筛选器选择"
python3 rotation_tracker.py --stats          # 交易统计(胜率、平均盈利/亏损等)
python3 rotation_tracker.py --json           # JSON格式输出

策略文档

参见 docs/finance/STRATEGY.md 获取完整的动量轮动策略文档。

说明

  • 使用AlphaVantage获取历史价格(免费版每分钟5次调用,调用间延迟3秒)
  • 投资组合数据以JSON格式存储在 ~/hex/skills/portfolio/portfolio.json
  • SPAXX(货币市场基金)被排除在分析之外

相关技能