投资组合分析技能
分析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(货币市场基金)被排除在分析之外