INVEST 投资决策系统

Other

个人投资决策辅助系统。基于 INVEST 六维决策框架(意图/数字/价值/优势/安全/时机), 将分散的市场信息、持仓数据、投资目标和风控纪律串成一个完整的决策闭环。 提供持仓管理、决策评分、仓位计算、风控检查和交互式 HTML 可视化报告。 触发词:投资决策, 买卖决策, 持仓分析, 投资复盘, 仓位计算, 风控检查, INVEST, 投资仪表盘, 添加持仓, 记录交易, 买入分析, 卖出决策, 投资目标。

Install

openclaw skills install @bettermen/investment-decision-system

个人投资决策系统 (INVEST Decision System)

Overview

市面上不缺行情、研报、社区观点和 AI 解读。缺的是一套把信息、资产、目标和纪律连起来的决策系统。 这个 Skill 提供 INVEST 六维决策框架,帮你从"我知道很多"走到"我做出更好的决策"。

核心能力:持仓管理 → 决策评分 → 仓位计算 → 风控检查 → 复盘分析,输出交互式 HTML 可视化报告。

快速开始

首次使用时,运行以下命令初始化数据库:

python {baseDir}/scripts/db.py

或通过 Python 直接导入(首次自动创建数据库):

import sys; sys.path.insert(0, '{baseDir}/scripts')
import db
db.init_db()

Core Capabilities

1. 投资画像管理

设置投资目标、风险偏好、资金规模等基础参数。 后续所有决策都将基于这些参数进行个性化评估。

操作:

  • 查看当前画像:读取 get_profile() 结果
  • 更新画像:使用 update_profile() 设置 risk_tolerance(conservative/moderate/aggressive)、 investment_goal(growth/income/preservation/speculation)、 time_horizon(short/medium/long)、total_capital

脚本:{baseDir}/scripts/db.py 中的 get_profile()update_profile() 函数。

2. 持仓管理

记录和管理投资组合中的各类资产。

操作:

  • 添加持仓:add_holding(symbol, name, asset_class, market, quantity, avg_cost, current_price, sector=...)
  • 更新持仓:update_holding(holding_id, current_price=..., quantity=...)
  • 删除持仓:delete_holding(holding_id)
  • 查看持仓:get_all_holdings()
  • 组合概览:get_portfolio_summary() 返回总市值、盈亏、资产配置、行业配置

支持的 asset_class:stock / fund / bond / cash / crypto / other 支持的 market:A-share / HK / US / other

脚本:{baseDir}/scripts/db.py 中的持仓相关函数。

3. INVEST 六维决策框架

这是系统的核心。对每笔交易决策,从六个维度打分(0-10):

维度权重核心问题
I - Intent 意图15%你为什么做这笔交易?与投资目标一致吗?
N - Numbers 数字20%财务数据和技术指标支持你的判断吗?
V - Value 价值20%当前价格低于内在价值吗?安全边际够吗?
E - Edge 优势10%你凭什么比别人判断得更准?
S - Safety 安全20%如果错了,你会损失多少?风控到位吗?
T - Timing 时机15%为什么是现在?周期位置对吗?

使用方法:

from scripts.decision import evaluate_decision

scores = {
    'intent_score': 7,
    'numbers_score': 6,
    'value_score': 8,
    'edge_score': 5,
    'safety_score': 7,
    'timing_score': 6,
}
result = evaluate_decision(scores)
# result['total_score'] -> 6.4
# result['recommendation'] -> 'CAUTIOUS'

决策阈值:

  • ≥ 7.0 → STRONG_CONFIDENCE:强烈推荐
  • 5.0-6.9 → CAUTIOUS:谨慎推荐
  • 3.0-4.9 → WAIT:建议等待
  • < 3.0 → AVOID:应回避

保存决策到数据库:

from scripts import db
did = db.create_decision('600519', '贵州茅台', 'buy',
    intent_score=7, numbers_score=6, value_score=8,
    edge_score=5, safety_score=7, timing_score=6,
    thesis='白酒龙头估值回调后具备配置价值',
    risks='消费降级、政策风险',
    position_size_pct=15, stop_loss_pct=8, take_profit_pct=20)

脚本:{baseDir}/scripts/decision.py 中的 evaluate_decision() 函数。 数据库操作:{baseDir}/scripts/db.py 中的 create_decision(), update_decision(), get_decision() 等。

4. 仓位计算器

基于固定比例法(Fixed Fractional)计算最优仓位:

from scripts.decision import calculate_position_size

sizing = calculate_position_size(
    capital=100000,          # 可用资金
    risk_per_trade_pct=2,    # 单笔最大风险 2%
    entry_price=50,          # 计划入场价
    stop_loss_price=46,      # 止损价
    max_position_pct=20      # 单票最大仓位 20%
)
# Returns: shares, position_value, position_pct, risk_amount, suggested_take_profit

公式:可买股数 = (总资产 × 单笔风险%) ÷ |入场价 - 止损价|

脚本:{baseDir}/scripts/decision.py 中的 calculate_position_size() 函数。

5. 风控合规检查

检查当前持仓是否违反预设的风控规则:

from scripts import db
violations = db.check_risk_compliance()

默认风控规则:

  • 单票最大仓位 ≤ 20%
  • 单行业最大仓位 ≤ 40%
  • 单笔硬止损 8%
  • 最低现金 10%
  • 单月交易 ≤ 10 次
  • 最少持有 5 个交易日

可自定义:通过 risk_rules 表管理。

脚本:{baseDir}/scripts/db.py 中的 check_risk_compliance()get_risk_rules() 函数。

6. 交易记录

记录买卖交易,自动更新持仓:

from scripts import db
db.record_trade('600519', 'buy', quantity=100, price=1650, fee=5)
db.record_trade('600519', 'sell', quantity=50, price=1700, fee=5, decision_id=1)

脚本:{baseDir}/scripts/db.py 中的 record_trade() 函数。

7. 决策复盘

对已执行的决策进行复盘:

from scripts import db
db.update_decision(decision_id, outcome='win', outcome_pnl=5000,
                   outcome_notes='按计划执行,盈利符合预期')

查看决策统计:

stats = db.get_decision_stats()
# win_rate, profit_factor, avg_score_win, avg_score_loss, total_pnl

8. 关注列表

维护潜在投资标的的观察列表:

from scripts import db
db.add_to_watchlist('300750', '宁德时代', reason='新能源龙头,关注回调机会', target_price=180)

9. 可视化报告

生成交互式 HTML 报告:

from scripts.report import generate_dashboard_html, generate_decision_html, generate_review_html, save_report

# 投资仪表盘(综合概览)
html = generate_dashboard_html()
path = save_report(html, 'dashboard.html')

# 单笔决策报告
html = generate_decision_html(decision_id)
path = save_report(html, 'decision_report.html')

# 决策复盘报告
html = generate_review_html()
path = save_report(html, 'review_report.html')

报告保存到 outputs/ 目录。报告包含:

  • 投资仪表盘:资产配置饼图、盈亏统计、风控合规、持仓列表、近期决策
  • 决策报告:INVEST 六维雷达图、详细评分、投资论点和风险分析、仓位参数
  • 复盘报告:决策历史、胜率统计、评分-结果关联分析

脚本:{baseDir}/scripts/report.py

典型用户交互流程

场景 1:用户想评估是否买入某股票

  1. 引导用户提供标的代码和基本信息
  2. 逐维度(或一次性)询问 INVEST 六维度评分
  3. 对于 Numbers 维度,主动联网搜索当前 PE/PB/ROE 等数据
  4. 调用 evaluate_decision() 计算总分和建议
  5. 调用 calculate_position_size() 计算仓位
  6. 如果用户确认,调用 create_decision() 保存,并 generate_decision_html() 生成报告
  7. 展示决策报告 HTML 文件给用户

重要: 当用户只需要快速评估而不保存时,直接使用 {baseDir}/scripts/decision.py 的纯计算方法, 无需初始化数据库。只有用户确认要保存决策、持仓或交易时才操作数据库。

场景 2:用户想查看投资仪表盘

  1. 调用 generate_dashboard_html()
  2. 使用 save_report() 保存到 outputs 目录
  3. 展示给用户

场景 3:用户想复盘

  1. 调用 generate_review_html() 生成复盘报告
  2. 展示给用户,引导关注评分-结果的关联模式
  3. 针对低分但盈利的决策,讨论运气 vs 能力
  4. 针对高分但亏损的决策,分析出错原因

场景 4:用户想记录交易

  1. 询问交易详情(标的、方向、数量、价格)
  2. 调用 record_trade() 自动更新持仓
  3. 检查风控合规 check_risk_compliance()
  4. 如有违规,提醒用户

数据架构

数据库文件位置:{baseDir}/data/investment.db,包含以下表:

  • profile — 投资者画像
  • holdings — 持仓
  • trades — 交易记录
  • decisions — INVEST 决策记录
  • decision_log — 决策变更日志
  • watchlist — 关注列表
  • risk_rules — 风控规则

详见 scripts/db.py 中的 init_db() 函数。

参考文档

  • references/framework.md — INVEST 决策框架完整文档,包含每个维度的详细评分标准、常见陷阱、仓位管理规则
  • references/indicators.md — 投资关键指标速查:A股估值参考、财务健康指标、技术分析速查、行业估值差异、行为金融学偏差

当需要深入了解某个维度的评分标准或投资指标参考时,读取对应的 {baseDir}/references/ 文件。

重要原则

  1. 本系统不提供投资建议,只提供决策框架。所有投资决策由用户自行负责。
  2. 不替代专业金融工具。行情数据需要用户提供或通过联网搜索获取。
  3. 评分是主观的。INVEST 框架的价值在于强制结构化思考,而非绝对准确的评分。
  4. 决策质量 ≠ 结果质量。好决策可能亏损,坏决策可能盈利。复盘时区分两者。
  5. 纪律 > 预测。系统的核心价值是帮助用户建立和执行纪律,而非做出准确预测。