金融分析技能
v1.0.0利用免费数据源进行多资产投资组合的风险平价分析、动态调仓和回测,提供文字报告与图表可视化。
MIT-0
Security Scan
OpenClaw
Suspicious
medium confidencePurpose & Capability
SKILL.md 与 README.md 声称集成 Yahoo Finance(yfinance)、Alpha Vantage、Finnhub 等在线免费数据源并提示配置 ALPHA_VANTAGE_API_KEY;但 manifest.dependencies 未列出 yfinance/plotly,实际代码(optimized_risk_parity_skill.py / optimized_main.py)读取本地 CSV、无网络调用迹象。文档中宣称的在线数据抓取能力与实际要求/实现不匹配。
Instruction Scope
运行说明要求设置 ALPHA_VANTAGE_API_KEY 并列出了从 API 获取数据的用法,但代码路径/实现均以 CSV 为主,且默认 CSV 路径指向用户工作区(C:\Users\wu_zhuoran\.openclaw\workspace\data\marketdata.csv)。说明指示访问网络数据与代码实际行为不一致;此外文档允许把任意 CSV 放入默认路径,需注意本地文件读取权限与隐私。
Install Mechanism
没有 install spec;实际文件为 Python 脚本,依赖是常见数据分析包(pandas/numpy/matplotlib/seaborn)。无远程下载或可执行二进制安装步骤,磁盘写入/执行范围受限于脚本本身,安装风险较低。
Credentials
Registry metadata 报告 'required env vars: none' 而 SKILL.md 要求 ALPHA_VANTAGE_API_KEY。这是不一致的:如果技能确实需要在线 API,清单应声明相应环境变量;反之,文档要求 API Key 会误导用户暴露凭证。总体上没有看到对其他凭据或敏感变量的不当请求。
Persistence & Privilege
技能未设置 always:true,未请求修改其他技能或系统范围配置,也不声明需要长期驻留或特殊权限。默认行为(按需运行脚本并读写输出目录)与其用途相称。
What to consider before installing
要点与建议:
1) 文档/清单不一致:在安装或提供任何 API Key 之前,向发布者确认该技能是否真的会调用 Alpha Vantage / yfinance / Finnhub,以及这些网络调用会在哪里发生(由本地脚本直接发起还是需要新增模块)。
2) 如果你只需处理本地 CSV:当前代码看起来仅从本地 CSV 加载并计算风险平价,且不需要任何 API Key;在此情形下无需提供在线凭证,但也请手动检查脚本以确认无隐蔽的网络请求(搜索 'requests', 'urllib', 'socket', 'yfinance', 'alpha_vantage', 'finnhub')。
3) 如果准备运行:先在隔离/沙箱环境中运行,使用非敏感示例 CSV,观察是否有出站网络连接或意外文件写入。查看生成的输出目录权限并确认路径(默认路径包含具体用户名,应按需修改)。
4) 要求修正清单:要求发布者或维护者把实际需要的依赖和环境变量在 manifest/registry metadata 中列清楚(例如将 ALPHA_VANTAGE_API_KEY 列为可选或必需),并在文档中明确何时会进行网络请求。
5) 若你会提供 API Key:只在信任来源并确认代码确实需要并安全使用该键时才提供;否则勿将长期/高权限凭证填入。Like a lobster shell, security has layers — review code before you run it.
latest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
SKILL.md
金融分析技能 (Financial Analysis Skill)
概述
这是一个用于投资组合分析的技能,支持从免费API获取各类资产行情数据,并提供文字报告和图表可视化。优化版本整合了滚动窗口调仓逻辑和回测功能。
功能特性
- ✅ 投资组合分析(资产配置、风险评估、收益分析)
- ✅ 支持多种资产类型:股票、ETF、加密货币等
- ✅ 免费数据源集成
- ✅ 文字报告生成
- ✅ 图表可视化(收益曲线、资产分布、风险指标等)
- ✅ 滚动窗口风险平价分析(使用历史一年数据,每月调仓)
- ✅ 避免未来数据(使用expanding窗口计算波动率)
- ✅ 回测功能(完整的回测流程)
数据源
- Yahoo Finance (通过yfinance库)
- Alpha Vantage (免费API)
- Finnhub (免费层)
- CSV文件(中国市场数据)
安装依赖
pip install yfinance pandas numpy matplotlib seaborn plotly
使用方法
1. 基本使用
分析投资组合
python financial_analysis.py --portfolio example_portfolio.json --output ./output
获取单个资产数据
python financial_analysis.py --symbol AAPL --period 1y
2. 滚动窗口风险平价分析
运行回测
python optimized_risk_parity_skill.py --csv "C:\path\to\marketdata.csv" --output ./backtest_output
数据格式要求
- CSV文件应包含日期列和收益率列
- 收益率数据应为百分比格式(如:1.5表示1.5%)
- 脚本会自动将百分比转换为实际收益率(除以100)
- 支持处理文本行和缺失值
3. 投资组合配置文件格式
创建一个JSON文件(如 my_portfolio.json):
{
"AAPL": 0.25, # 苹果股票,权重25%
"GOOGL": 0.20, # 谷歌股票,权重20%
"MSFT": 0.20, # 微软股票,权重20%
"AMZN": 0.15, # 亚马逊股票,权重15%
"TSLA": 0.20 # 特斯拉股票,权重20%
}
滚动窗口风险平价分析
核心特点
- 避免未来数据:使用历史一年数据计算波动率
- 动态调仓:每月根据最新波动率重新计算权重
- 风险平价:各资产对组合风险贡献相等
- 回测验证:完整的回测流程,验证策略效果
分析流程
- 数据加载:加载CSV数据,处理百分比单位
- 滚动波动率:使用expanding窗口计算历史波动率
- 权重计算:基于波动率倒数计算风险平价权重
- 投资组合收益率:使用滚动权重计算每日收益率
- 绩效评估:计算总收益率、年化收益率、夏普比率等
- 可视化:生成收益曲线、资产配置、相关性等图表
输出文件
- 分析报告:
rolling_risk_parity_report.txt - 详细数据:
rolling_risk_parity_data.json - 可视化图表:
rolling_risk_parity_returns.png- 收益曲线图rolling_risk_parity_allocation.png- 资产配置饼图rolling_risk_parity_correlation.png- 相关性热力图rolling_asset_returns_comparison.png- 资产收益对比图rolling_weight_changes.png- 滚动权重变化图
报告内容
- 投资组合概览
- 收益分析(总收益、年化收益)
- 风险指标(波动率、最大回撤、夏普比率)
- 资产配置分析
- 相关性分析
- 滚动权重变化
- 可视化图表
- 投资建议
配置
需要配置API密钥(如使用Alpha Vantage):
- ALPHA_VANTAGE_API_KEY=your_key_here
示例输出
中国市场滚动风险平价组合分析报告
============================================================
生成时间: 2026-02-26 10:20:04
数据来源: C:\Users\wu_zhuoran\.openclaw\workspace\data\marketdata.csv
数据时间范围: 2015-03-23 至 2026-02-25
数据点数: 2656
滚动窗口: 252个交易日(约1年)
调仓频率: 每月
平均投资组合配置:
五年期国债 (TF.CFE): 46.04% (波动率: 2.46%)
十年期国债 (T.CFE): 32.55% (波动率: 3.61%)
沪铜 (CU.SHF): 9.33% (波动率: 17.87%)
沪金 (AU.SHF): 12.09% (波动率: 14.88%)
收益指标:
总收益率: 44.78%
年化收益率: 3.57%
风险指标:
年化波动率: 3.76%
最大回撤: -9.48%
夏普比率: 0.42
技术实现
滚动窗口计算
- 使用
expanding()窗口而非rolling()窗口 - 确保不使用未来数据
- 最小窗口大小为252个交易日(约1年)
权重计算
- 基于波动率倒数加权:
权重 = (1/波动率) / ∑(1/波动率) - 每月调仓,动态调整权重
- 使用前一天的权重计算当日收益率
回测验证
- 完整的回测流程
- 避免数据泄露
- 提供详细的绩效指标
注意事项
- 确保数据质量,处理缺失值和异常值
- 滚动窗口大小可根据实际情况调整
- 调仓频率可根据市场情况调整
- 考虑交易成本对回测结果的影响
Files
8 totalSelect a file
Select a file to preview.
Comments
Loading comments…
