返回社区
公开项目
可预览原型图
by 匿名用户

带策略回测功能的期货交易模拟系统

选题ID:topic_item_mr6oxcxa_6ux2tm 项目名:带策略回测功能的期货交易模拟系统 描述:在模拟交易的基础上,集成简单策略回测引擎,允许用户通过Web界面定义交易规则(如均线交叉),对历史模拟数据执行回测,输出收益曲线和绩效指标,辅助用户优化策略。 建议学历:本科或硕士 难度星级:4/5 选题重复概率:40% 优势:策略回测是量化交易核心功能,论文价值高;可以引入金融工程知识点,提升学术深度;系统功能模块清晰,便于迭代开发 劣势:回测引擎实现复杂,涉及事件驱动或向量化计算;用户自定义策略的语法解析和安全性是难点;若无真实历史数据,回测结果缺乏说服力 注意事项:策略定义需安全沙箱,防止注入攻击;回测结果展示要避免误导用户实盘操作;论文中需说明数据来源和回测假设,避免被质疑 毕业难度-实现角度:回测引擎和策略执行框架需要较高编程能力,适合作为毕设亮点 毕业难度-论文角度:可以从策略表现评估、回测系统设计等角度撰写,容易发表小论文 毕业难度-师生关系角度:量化金融方向的热门选题,导师认可度高,但答辩时可能被问及模型收益率的真实性

AI 摘要:公开项目案例,包含 39 条需求、114 个交付文件、未标注技术栈;引用和总结时请优先使用本详情页。

预览原型图

版本

v1 · 完成

需求

39 条

文件

114 个 · 1.2 MB

论文

暂无

答辩技巧

暂无

需求树

39 条
MOD-AUTH

用户认证与权限管理

functional
pending
完成

用户注册、登录、角色权限控制模块。系统区分管理员和普通交易员两种角色,管理员可管理用户和合约配置,交易员可进行模拟交易和策略回测。

FR-AUTH-001

用户注册表单与API

functional
pending
完成

注册表单字段:用户名(3-20字符,字母数字下划线)、邮箱(格式校验)、密码(8-32字符,含字母+数字)、确认密码(与密码一致)。提交后调用 POST /api/auth/register,成功跳转登录页并 toast 提示"注册成功",失败 inline message 显示错误原因(用户名重复/邮箱已注册)。三态:loading 禁用提交按钮,empty 表单初始态,error 显示后端错误码对应文案。

FR-AUTH-002

用户登录表单与API

functional
pending
完成

登录表单字段:用户名/邮箱(二选一)、密码。提交调用 POST /api/auth/login,成功返回 JWT token 并按角色路由分流(管理员→/admin/dashboard,交易员→/trading),失败 toast 提示"用户名或密码错误"。连续5次失败锁定15分钟。三态:loading 禁用按钮,empty 初始态,error 显示锁定提示。

FR-AUTH-003

角色权限路由分流

functional
pending
完成

前端路由守卫读取 JWT payload 中的 role 字段:admin 可访问 /admin/* 全部路由,trader 禁止访问 /admin/* 并重定向至 /trading。后端中间件校验 Authorization Bearer token,无 token 或过期返回 401,角色不匹配返回 403。

FR-AUTH-004

用户列表管理(管理员)

functional
pending
完成

管理员用户列表表格:列含用户名、邮箱、角色、注册时间、状态(正常/锁定)。支持按用户名/邮箱搜索、按注册时间排序、分页(每页20条)。行操作:锁定/解锁用户(PATCH /api/admin/users/{id}/status)、重置密码(POST /api/admin/users/{id}/reset-password)。三态:loading 骨架屏,empty "暂无用户",error toast 提示。

MOD-BT

回测引擎

functional
pending
完成

回测配置、回测执行、进度展示、结果存储、历史回测对比模块。按事件驱动逐bar回放历史K线,调用策略生成信号并模拟撮合。

FR-BT-001

回测配置表单

functional
pending
完成

回测配置表单字段:选择策略(下拉,来自用户已创建策略)、选择合约(下拉)、回测起止时间(date range picker)、K线周期(1m/5m/15m/1h/1d)、初始资金(正数,默认100万)、手续费率(正浮点数,默认万分之三)、滑点(正整数,单位为最小变动价位,默认0)。提交调用 POST /api/backtests,校验:策略存在且属于当前用户、合约存在、起止时间范围内有K线数据、初始资金>0。成功返回回测ID并跳转回测进度页。

FR-BT-002

回测执行引擎

functional
pending
完成

后端按事件驱动逐bar回放历史K线:每个bar调用策略 on_bar 方法获取交易信号,信号传入模拟撮合引擎执行(复用 FR-TRADE-002 撮合逻辑),更新虚拟账户持仓和资金。回测完成后计算全部绩效指标并存储结果。回测状态流转:pending→running→completed/failed。失败时记录错误日志并标记 failed。

FR-BT-003

回测进度展示

functional
pending
完成

回测进度页轮询 GET /api/backtests/{id}/status 返回 {status, progress(0-100%), current_bar, total_bars, elapsed_seconds}。前端展示进度条、当前处理时间点、已处理bar数/总数、预估剩余时间。状态为 completed 时自动跳转结果页,状态为 failed 时显示错误信息并提供"重新配置"按钮。

FR-BT-004

回测结果存储与查询

functional
pending
完成

回测完成后结果持久化存储,包含:回测配置快照、逐bar资金曲线、全部交易明细、绩效指标汇总。GET /api/backtests/{id}/result 返回完整结果。GET /api/backtests?strategy_id=&status=&page=&size= 返回用户回测历史列表,支持按策略筛选、按时间排序、分页。

FR-BT-005

历史回测对比

functional
pending
完成

用户可选择 2-5 个已完成回测进行对比。GET /api/backtests/compare?ids=1,2,3 返回各回测的关键指标对比表(总收益率、最大回撤、夏普比率、胜率、盈亏比)和叠加收益曲线数据。前端对比页展示指标对比表格和叠加折线图。

MOD-MKT

行情数据管理

functional
pending
完成

期货合约管理、历史K线数据导入与查询、模拟行情数据生成模块。为模拟交易和回测引擎提供数据基础。

FR-MKT-001

期货合约配置管理

functional
pending
完成

管理员合约配置表单:合约名称、合约代码、交易所、合约乘数、最小变动价位、保证金比例、交易时间段。提交调用 POST /api/admin/contracts,校验合约代码唯一性,成功 toast "合约创建成功"并刷新列表,失败 inline message 显示校验错误。列表支持编辑(PUT /api/admin/contracts/{id})和删除(DELETE /api/admin/contracts/{id},软删除)。

FR-MKT-002

历史K线数据导入

functional
pending
完成

管理员上传 CSV 文件(含 datetime, open, high, low, close, volume 列),选择目标合约后调用 POST /api/admin/market-data/import。后端校验文件格式、字段完整性、时间序列连续性,重复数据按时间戳 upsert。导入成功返回导入条数,失败返回错误行号与原因。前端显示导入进度条和结果摘要。

FR-MKT-003

K线数据查询API

functional
pending
完成

GET /api/market-data/klines?contract={code}&period={1m|5m|15m|1h|1d}&start={ISO}&end={ISO}&limit={n}。返回 [{datetime, open, high, low, close, volume}]。校验:contract 必须存在,period 枚举校验,limit 上限 5000。无数据返回空数组 + 200,参数错误返回 400 + 错误文案。

FR-MKT-004

模拟行情数据生成

functional
pending
完成

当系统无真实历史数据时,管理员可基于已有合约配置生成模拟K线:选择合约、起始时间、结束时间、K线周期、初始价格、波动率参数。调用 POST /api/admin/market-data/simulate,后端按几何布朗运动模型生成 OHLCV 数据并入库。返回生成条数,前端 toast 提示"已生成 N 条模拟数据"。

MOD-PERF

绩效分析与可视化

functional
pending
完成

收益曲线图表、绩效指标计算、交易明细表、回测报告导出模块。输出回测绩效指标辅助用户优化策略。

FR-PERF-001

收益曲线图表

functional
pending
完成

回测结果页展示资金曲线折线图(X轴:时间,Y轴:账户总资金),叠加基准线(初始资金水平线)。支持鼠标 hover 显示该时点资金值和浮动盈亏。图表下方展示资金曲线缩略导航条,可拖拽选择时间范围放大查看。数据来源 GET /api/backtests/{id}/result 中的 equity_curve 字段。

FR-PERF-002

绩效指标计算与展示

functional
pending
完成

回测完成后后端计算并返回以下指标:总收益率、年化收益率、最大回撤(金额及百分比)、夏普比率、胜率、盈亏比、平均持仓天数、总交易次数、手续费总额。前端以指标卡片网格展示,每张卡片含指标名称、数值、单位。指标计算基于回测交易明细和资金曲线。

FR-PERF-003

交易明细表

functional
pending
完成

回测结果页展示交易明细表格:列含序号、开仓时间、平仓时间、合约、方向、手数、开仓价、平仓价、盈亏金额、手续费、持仓天数。支持按盈亏排序、按时间排序、分页(每页50条)。行 hover 高亮,点击行展开该笔交易的逐bar资金变化缩略图。

FR-PERF-004

回测报告导出

functional
pending
完成

回测结果页提供"导出报告"按钮,调用 GET /api/backtests/{id}/report?format=pdf,后端生成包含策略摘要、回测配置、绩效指标表、资金曲线图、交易明细表的 PDF 文件并返回下载流。前端触发浏览器下载。导出失败 toast 提示"报告生成失败,请稍后重试"。

MOD-STRAT

策略定义与管理

functional
pending
完成

策略创建、内置模板配置、自定义代码编辑、安全沙箱执行、策略列表与详情查看模块。允许用户通过表单或代码定义交易规则。

FR-STRAT-001

策略创建表单

functional
pending
完成

策略创建表单字段:策略名称(2-50字符)、策略描述(可选,≤200字符)、策略类型(下拉:内置模板/自定义代码)。选择"内置模板"时展示模板选择器(均线交叉/突破策略),选择"自定义代码"时展示代码编辑器。提交调用 POST /api/strategies,校验名称唯一性,成功 toast "策略创建成功"并跳转策略列表。

FR-STRAT-002

内置策略模板参数配置

functional
pending
完成

均线交叉模板参数:快线周期(正整数,1-200)、慢线周期(正整数,1-200,须>快线周期)。突破策略模板参数:窗口长度(正整数,5-500)、突破阈值(正浮点数,0.01-10%)。参数校验失败时 inline message 提示具体原因。参数保存后可编辑(PUT /api/strategies/{id}/params)。

FR-STRAT-003

自定义策略代码编辑器

functional
pending
完成

Web端代码编辑器(Monaco Editor),支持 Python 语法高亮。提供策略接口模板:on_bar(bar) 方法接收 {datetime, open, high, low, close, volume},返回交易信号 {action: buy|sell|hold, price, quantity}。保存调用 PUT /api/strategies/{id}/code,后端存储代码原文。编辑器底部显示"保存"和"语法检查"按钮,语法检查调用后端 lint 接口返回错误行号和提示。

FR-STRAT-004

策略列表与详情查看

functional
pending
完成

GET /api/strategies 返回策略列表 [{id, 名称, 类型, 创建时间, 最后修改时间}],前端表格展示,支持按名称搜索、按创建时间排序、分页。点击行跳转策略详情页,展示策略参数/代码、关联回测记录列表。删除策略(DELETE /api/strategies/{id})前校验是否有进行中的回测,有则提示"该策略有进行中的回测,无法删除"。

FR-STRAT-005

策略安全沙箱执行约束

functional
pending
完成

用户自定义策略代码在隔离沙箱中执行:禁止 import os/sys/subprocess/socket 等危险模块,禁止文件IO和网络访问,CPU 执行超时 10 秒自动终止,内存限制 256MB。沙箱通过子进程 + 资源限制实现。策略执行异常时捕获并返回错误信息,不影响主进程。

MOD-TECH

技术约束

technical
pending
完成

后端技术栈、前端技术栈、数据库、策略沙箱安全等技术约束定义。

TR-TECH-001

后端技术栈约束

technical
pending
完成

后端使用 Python 3.13 + FastAPI 框架,包管理器 uv。策略沙箱需 Python 运行时执行用户代码。ORM 使用 SQLAlchemy,数据库迁移使用 Alembic。API 遵循 RESTful 规范,统一返回 {code, message, data} 结构。

TR-TECH-002

前端技术栈约束

technical
pending
完成

前端使用 React 18 + TypeScript,构建工具 Vite,包管理器 npm/bun。UI 组件库 Ant Design,图表库 ECharts(收益曲线/K线图),代码编辑器 Monaco Editor(策略代码编辑)。路由使用 React Router,状态管理使用 Zustand。

TR-TECH-003

数据库约束

technical
pending
完成

数据库使用 MySQL 8.0+ 或 PostgreSQL 15+。核心表:users、contracts、market_data(K线数据,按合约+时间分区)、orders、trades、positions、strategies、backtests、backtest_results、backtest_trades。K线数据表需建立 (contract_code, datetime) 复合索引以支持回测高效查询。

TR-TECH-004

策略沙箱安全约束

technical
pending
完成

用户自定义策略代码在独立子进程中执行,通过 resource 模块限制 CPU 时间(10秒)和内存(256MB),通过 importlib 白名单机制禁止 os/sys/subprocess/socket/ctypes 等危险模块导入。子进程与主进程通过 stdin/stdout 管道通信,每 bar 传入行情数据并接收交易信号。超时或异常时终止子进程并返回错误。

MOD-TRADE

模拟交易引擎

functional
pending
完成

模拟下单、撮合引擎、持仓管理、账户资金管理、委托与成交记录查询、撤单功能模块。提供与真实期货交易类似的模拟交易体验。

FR-TRADE-001

模拟下单表单与API

functional
pending
完成

下单表单字段:合约选择(下拉)、方向(买开/卖开/买平/卖平)、价格(限价单输入价格,市价单不填)、数量(正整数,≥1手)。提交调用 POST /api/trading/orders,后端校验:合约存在、数量为正整数、价格精度匹配最小变动价位、可用资金/持仓充足。成功返回委托单号,失败返回 400 + 错误文案(资金不足/持仓不足/价格超限)。前端 toast 提示结果。

FR-TRADE-002

模拟撮合引擎

functional
pending
完成

后端撮合引擎接收委托单后,按最新K线收盘价或用户限价进行模拟撮合。市价单即时成交,限价单在价格触及委托价时成交。成交后更新持仓、冻结/释放保证金、计算手续费(按合约乘数×手数×费率)。撮合结果写入成交记录表。撮合失败(如价格超涨跌停)返回错误并撤销委托。

FR-TRADE-003

持仓管理查询

functional
pending
完成

GET /api/trading/positions 返回当前用户持仓列表:[{合约代码, 方向, 手数, 开仓均价, 当前价, 浮动盈亏, 保证金占用}]。前端持仓表格实时刷新(轮询或WebSocket推送),支持按合约筛选、按浮动盈亏排序。点击行展开持仓详情(开仓时间、手续费累计)。三态:loading 骨架屏,empty "暂无持仓",error toast。

FR-TRADE-004

账户资金管理

functional
pending
完成

GET /api/trading/account 返回 {总资金, 可用资金, 冻结保证金, 浮动盈亏, 已实现盈亏}。管理员可通过 POST /api/admin/users/{id}/funds 为用户充值模拟资金。资金变动记录可查 GET /api/trading/account/transactions?type=recharge|trade|fee&start=&end=,分页返回。前端账户信息卡片展示在交易页面顶部。

FR-TRADE-005

委托与成交记录查询

functional
pending
完成

委托记录 GET /api/trading/orders?status={all|pending|filled|cancelled}&contract=&start=&end=,分页返回 [{委托号, 合约, 方向, 价格, 数量, 状态, 时间}]。成交记录 GET /api/trading/trades?contract=&start=&end=,分页返回 [{成交号, 委托号, 合约, 方向, 成交价, 数量, 手续费, 时间}]。前端两个 Tab 切换展示,支持按合约筛选和时间范围筛选。

FR-TRADE-006

撤单功能

functional
pending
完成

委托列表中状态为"待成交"的委托行显示"撤单"按钮。点击调用 DELETE /api/trading/orders/{id},后端校验委托状态为 pending 才允许撤销,撤销后释放冻结保证金,更新委托状态为 cancelled。成功 toast "撤单成功",失败 toast "该委托已成交,无法撤销"。