Skip to content

lifeng6666666/smulator

Repository files navigation

投资模拟器 (Investment Simulator)

一个完整的投资模拟程序,支持股票+基金双模式,利用真实历史数据进行逐日/周人工模拟投资,帮助用户学习投资技巧,提升投资能力。

快速体验地址(暂时只支持模拟数据):http://47.109.150.58:3003 111 111 111

✨ 核心亮点

🎯 零风险学投资 - 虚拟资金交易,亏了不心疼
📊 真实市场数据 - Yahoo Finance历史行情,贴近实战
💹 双模式支持 - 股票短线 + 基金长投,一个工具全搞定
📈 专业技术指标 - RSI、MACD、成交量分析
💰 完整成本模拟 - 佣金、印花税、滑点真实计算
🎨 精美可视化 - K线图、收益曲线、持仓分布
⚙️ 灵活配置 - 功能自由开关,按需使用
🚀 快速启动 - 一键运行,30秒开始模拟

🎨 界面展示

本项目提供两种界面:

  1. Web界面 (推荐): 基于Streamlit的精美图形界面
  2. 命令行界面: 简洁的终端交互界面

🌟 核心特点

💹 双交易模式

  • 股票模式: 模拟股票买卖交易,支持美股、A股、港股
  • 基金模式: 模拟ETF、指数基金申购赎回,学习长期投资
  • 一键切换: 界面自动适配,参数智能调整

📊 数据与市场

  • 真实历史数据: 使用 yfinance 获取 Yahoo Finance 真实行情
  • 演示数据模式: 无API限制,快速稳定,适合学习和测试 ⭐
  • 全球市场支持: 美股、A股、港股、ETF基金
  • 完整行情信息: 开盘价、收盘价、最高价、最低价、成交量

📈 专业分析工具

  • 技术指标: RSI相对强弱、MACD趋势分析、成交量分析
  • 交易成本模拟: 佣金、印花税、滑点(可配置开关)
  • 仓位风险管理: 持仓占比分析、风险等级提示
  • 市场对比: 与标普500等基准对比,计算Alpha和Beta

💰 投资绩效评估

  • 收益指标: 总收益、收益率、年化收益率
  • 风险指标: 最大回撤、年化波动率、夏普比率
  • 交易统计: 胜率、交易次数、成本分析

🎨 精美可视化

  • K线图表: 专业蜡烛图展示价格走势
  • 收益曲线: 投资组合价值和收益率变化
  • 持仓分布: 资产配置结构图
  • 交互式图表: 支持缩放、悬停查看详情

⚙️ 灵活配置

  • 高级功能开关: 根据使用场景自由配置
  • 时间模式: 支持按日/周/月进行模拟
  • 响应式设计: 适配各种屏幕尺寸

安装依赖

pip install -r requirements.txt

依赖包说明

  • yfinance: 获取股票历史数据
  • pandas: 数据处理和分析
  • numpy: 数值计算
  • matplotlib: 绘制图表
  • streamlit: Web界面框架
  • plotly: 交互式图表
  • tabulate: 美化表格输出

使用方法

🌟 方法一: 启动Web界面 (推荐)

Windows:

run.bat (streamlit.exe替换成自己的路径)

Linux/Mac:

chmod +x run.sh
./run.sh

或直接运行:

streamlit run app.py

浏览器会自动打开 http://localhost:8501

方法二: 启动命令行界面

python main.py

🎭 重要提示:演示数据模式

推荐使用演示数据模式!⭐

为了避免 yfinance API 速率限制,可以使用演示数据模式

优点:

  • 🚀 无API速率限制
  • ⚡ 加载速度快
  • 📊 数据质量高,基于真实市场模式
  • 🎯 功能完整,支持所有模拟功能
  • 🔄 可重现,相同参数生成相同数据

使用方法:

  1. 启动程序后,在设置页面
  2. 勾选 "🎭 使用演示数据(推荐:避免API限制)"(默认已勾选)
  3. 点击"开始模拟"即可

如果遇到 "Too Many Requests" 错误:

  • ✅ 使用演示数据模式(推荐)
  • ⏰ 或等待5-10分钟后重试
  • 📉 或减少时间范围和股票数量

操作流程

  1. 选择交易模式

    • 📈 股票模式: 适合短线交易、技术分析学习
    • 💼 基金模式: 适合长期投资、资产配置学习
  2. 设置模拟参数

    • 输入代码(多个用逗号分隔)
      • 股票示例:
        • 美股: AAPL, MSFT, GOOGL
        • A股: 000001.SZ (深圳), 600519.SS (上海)
      • 基金示例:
        • ETF: SPY, QQQ, 510300.SS (沪深300ETF)
    • 选择时间范围(开始日期和结束日期)
    • 选择模拟模式(按日或按周)
    • 设置初始资金
  3. 配置高级功能(可选)

    • 交易成本系统: 模拟真实佣金、印花税、滑点
    • 技术指标: 显示RSI、MACD等分析工具
    • 市场对比: 与基准指数对比表现
    • 仓位风险: 显示持仓占比和风险提示
  4. 进行模拟交易

    • 查看当前日期的市场数据(开盘价、收盘价、技术指标等)
    • 查看当前持仓和资产状况
    • 执行买入/卖出(股票)或申购/赎回(基金)操作
    • 前进到下一个时间段
  5. 查看结果

    • 查看交易记录和成本明细
    • 生成专业绩效报告
    • 查看收益曲线和K线图表
    • 分析仓位分布和风险等级

📝 使用示例

示例 1: 股票模式 - 美股科技股组合

交易模式: 股票
代码: AAPL,MSFT,GOOGL
时间范围: 2023-01-01 至 2023-12-31
模拟模式: 按日模拟
初始资金: $100,000

高级功能:
  - 交易成本: ✅ 开启 (佣金0.025%, 印花税0.1%)
  - 技术指标: ✅ 开启 (RSI, MACD)
  - 市场对比: ✅ 开启 (基准: S&P 500)
  - 仓位风险: ✅ 开启

示例 2: 基金模式 - ETF定投策略

交易模式: 基金
代码: SPY,QQQ,IWM
时间范围: 2023-01-01 至 2023-12-31
模拟模式: 按周模拟
初始资金: $50,000

高级功能:
  - 交易成本: ✅ 开启 (申购费0.15%, 无印花税)
  - 技术指标: ❌ 关闭
  - 市场对比: ✅ 开启 (基准: S&P 500)
  - 仓位风险: ✅ 开启

示例 3: 股票模式 - A股价值投资

交易模式: 股票
代码: 000001.SZ,600519.SS,000858.SZ
时间范围: 2023-01-01 至 2023-12-31
模拟模式: 按日模拟
初始资金: ¥100,000

高级功能:
  - 交易成本: ✅ 开启
  - 技术指标: ✅ 开启
  - 市场对比: ✅ 开启 (基准: 沪深300)
  - 仓位风险: ✅ 开启

示例 4: 基金模式 - 教学演示(简化版)

交易模式: 基金
代码: 510300.SS
时间范围: 2023-01-01 至 2023-06-30
模拟模式: 按日模拟
初始资金: ¥50,000
数据源: 演示数据

高级功能:
  - 交易成本: ❌ 关闭 (简化学习)
  - 技术指标: ❌ 关闭
  - 市场对比: ❌ 关闭
  - 仓位风险: ✅ 开启

📊 投资指标说明

程序会自动计算以下专业投资指标:

收益指标

  • 总收益: 最终价值 - 初始资金
  • 总收益率: (最终价值 - 初始资金) / 初始资金 × 100%
  • 年化收益率: 按实际天数年化计算

风险指标

  • 最大回撤: 投资组合从峰值到谷底的最大跌幅
  • 年化波动率: 衡量投资组合的风险水平
  • 夏普比率: (年化收益率 - 无风险利率) / 年化波动率,数值>1为良好

市场对比指标(可选)

  • Alpha: 相对基准的超额收益
  • Beta: 相对基准的波动倍数
  • 市场收益率: 基准指数的收益表现

交易统计

  • 胜率: 盈利交易占总交易的比例
  • 交易次数: 总买入/卖出次数
  • 累计成本: 佣金、印花税、滑点总和(如启用)

技术指标(可选)

  • RSI: 相对强弱指数,识别超买(>70)超卖(<30)
  • MACD: 趋势指标,判断金叉死叉信号
  • 成交量: 辅助判断市场活跃度

📁 项目结构

smulator/
├── app.py                      # Streamlit Web应用主程序
├── main.py                     # 命令行界面入口
├── simulator.py                # 模拟器核心逻辑
├── stock_data.py               # 市场数据获取模块
├── portfolio.py                # 投资组合管理模块
├── metrics.py                  # 投资指标计算模块
├── proxy_config.py             # 代理配置模块
├── requirements.txt            # 依赖包列表
├── run.bat / run.sh            # 快速启动脚本
├── .streamlit/
│   └── config.toml            # Streamlit配置文件
├── 快速开始.md                 # 快速入门指南
├── 功能配置说明.md             # 高级功能配置说明
├── 基金模式使用指南.md         # 基金模式详细说明
├── 交易机制说明.md             # 交易机制详解
└── README.md                  # 项目说明文档

⚠️ 注意事项

交易模式差异

项目 股票模式 基金模式
交易术语 买入/卖出 申购/赎回
成交价格 当日收盘价 当日收盘净值
交易成本 佣金+印花税+滑点 申购费/赎回费
技术指标 RSI, MACD 趋势分析
适用场景 短线交易 长期投资

代码格式

  1. 股票代码格式:

    • 美股: 直接使用代码,如 AAPL
    • A股深圳: 代码 + .SZ,如 000001.SZ
    • A股上海: 代码 + .SS,如 600519.SS
    • 港股: 代码 + .HK,如 0700.HK
  2. 基金代码格式:

    • 美股ETF: 如 SPY, QQQ, IWM
    • A股ETF: 如 510300.SS (沪深300ETF), 159915.SZ (创业板ETF)

其他注意

  • 网络连接: 真实数据模式需要联网下载数据
  • 数据延迟: yfinance 提供的数据可能有1-2天延迟
  • 交易限制: 模拟器会自动检查资金和持仓是否足够
  • 数据缓存: 数据会被缓存以提高性能

技术特点

  • 面向对象设计: 清晰的模块划分和职责分离
  • 数据持久化: 完整记录交易历史和组合变化
  • 错误处理: 完善的异常处理机制
  • 性能优化: 数据缓存和高效的数据处理
  • 可扩展性: 易于添加新功能和指标

🎓 适用场景

场景 推荐配置 说明
投资小白 基金模式 + 简化功能 从长期投资开始学习
技术分析学习 股票模式 + 技术指标 练习RSI、MACD等指标应用
策略回测 全功能开启 + 真实数据 验证投资策略有效性
教学演示 演示数据 + 简化功能 快速稳定,适合课堂
风险管理训练 多股票组合 + 仓位分析 学习资产配置和风险控制

🚀 未来改进方向

  • 支持股票+基金双模式
  • 添加技术指标(RSI, MACD)
  • 市场对比分析(Alpha, Beta)
  • 交易成本模拟
  • 仓位风险管理
  • 支持更多交易策略(止损、止盈、定投)
  • 支持导出报告为PDF/Excel
  • 添加更多技术指标(布林带、KDJ等)
  • 支持期货、期权等其他金融产品
  • 移动端适配

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

本项目仅供学习和研究使用,不构成任何投资建议。


⚠️ 免责声明

本程序仅用于教育和模拟目的,不构成任何投资建议。

  • 历史数据不代表未来表现
  • 模拟收益不等于实际收益
  • 实际投资有风险,请谨慎决策
  • 投资前请咨询专业理财顾问

本程序需要挂VPN使用,如果觉得有帮助,请给个 ⭐ Star!

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published