futures-settlement-analysis
期货结算单数据分析工具,支持 CTP / 中国期货监控中心 / 融航系统三种格式结算单,自动生成多维度交易统计报告。
功能特性
- 多格式支持:CTP、中国期货监控中心(cfmmc)、融航系统(rohon) 三种结算单格式
- 多维度分析:按合约、品种、买卖方向统计交易表现
- 期权行权支持:自动识别行权/放弃,按开仓成本计算行权盈亏
- 净值曲线:支持对数收益率(log)和百分比收益率(pct)两种模式
- 业绩归因:年化收益率、最大回撤、夏普比率、索提诺比率、卡玛比率等
- 可视化报表:Excel 报告含净值走势图、品种盈亏图、交易分布图、雷达图等
- 批量处理:自动合并分析多个月份/年份的结算单文件
安装
pip 安装(推荐)
pip install futures-settlement-analysis
安装后直接运行:
futures-analysis
源码安装
git clone http://ifilevault.myasustor.com:3100/tridro/futures-settlement-analysis.git
cd futures-settlement-analysis
git submodule update --init --recursive
pip install -e .
快速开始
1. 运行
首次运行会引导你完成配置:
futures-analysis
选择 [1] 使用当前目录下的 data/ 子目录,将结算单文件复制进去即可。也可以直接通过命令行参数指定:
futures-analysis -s ./path/to/statements -o ./output
2. 查看报告
在输出目录下生成 [资金账号]交易统计.xlsx,用 Excel 或 WPS 打开。
命令行参数
| 参数 | 说明 | 默认值 |
|---|---|---|
-s, --source |
结算单文件目录 | config.yaml 或交互输入 |
-o, --output |
报告输出目录 | 当前工作目录 |
-t, --type |
结算单类型: cfmmc / rohon / ctp | ctp |
-m, --method |
收益率方法: log / pct | log |
-r, --risk-free |
无风险利率 | 0.03 |
futures-analysis -s ./data -o ./output -t ctp -m log -r 0.03
配置文件
程序运行时在当前目录查找 config.yaml,模板参见 config.example.yaml:
SOURCE_DIR: './data'
STATEMENT_TYPE: 'ctp'
OUTPUT_DIR: './output'
RISK_FREE_INTEREST_RATE: 0.03
STATISTIC_METHOD: 'log'
命令行参数优先级高于配置文件。
输出报告
| 工作表 | 内容 |
|---|---|
| 账户净值 | 每日净值、份额、收益率 |
| 年度统计 | 年化收益、波动率、夏普、最大回撤等 |
| 账户统计 | 每日权益、保证金、风险度、出入金 |
| 成交明细 | 全部成交记录 |
| 平仓明细 | 全部平仓记录 |
| 行权明细 | 期权行权/放弃记录 |
| 交易分析(按合约) | 含行权盈亏列 |
| 交易分析(按品种) | 含行权盈亏列 |
| 交易分析(按买卖) | 含行权盈亏,手续费含行权费 |
图表:
- 净值走势图 · 权益+风险度双轴图 · 各品种交易分布饼图 · 品种盈亏柱状图 · 胜率/盈亏率雷达图 · 收益率分布直方图
统计指标
| 指标 | 说明 |
|---|---|
| 平仓盈亏 | 平仓交易利润总和 |
| 行权盈亏 | 期权行权/放弃按开仓成本计算的实际盈亏 |
| 净利润 | 平仓盈亏 + 行权盈亏 - 手续费(含行权费) |
| 交易成功率 | 盈利次数 / 总交易次数 |
| 交易盈亏率 | 盈利手数 / 总交易手数 |
| 年化收益率 | 折算至年度的收益率 |
| 最大回撤 | 历史最大净值回撤幅度 |
| 夏普比率 | 风险调整后收益,越高越好 |
项目结构
futures-settlement-analysis/
├── src/futures_analysis/
│ ├── __init__.py
│ ├── analysis.py # 统计分析(含行权盈亏计算)
│ ├── loader.py # 结算单加载与解析
│ ├── format.py # Excel 输出与图表
│ └── data/ # 合约元数据(交易所/品种/乘数)
├── main.py # 程序入口
├── config.example.yaml # 配置文件模板
├── pyproject.toml # 项目配置
└── docs/ # 文档
常见问题
Q: 支持哪些期货公司?
输出格式符合 CTP、中国期货监控中心或融航系统标准即可。
Q: 如何分析多个账户?
分别创建不同的配置文件,修改
SOURCE_DIR指向各账户的结算单目录。
Q: 提示找不到文件?
检查
config.yaml中SOURCE_DIR路径是否正确,确认目录存在。
Q: Excel 打不开?
确认文件未被其他程序占用,推荐 Excel 2016+ 或 WPS 打开。
开发
git clone http://ifilevault.myasustor.com:3100/tridro/futures-settlement-analysis.git
cd futures-settlement-analysis
git submodule update --init --recursive
uv sync
uv run python -m pytest .tests/ -v
许可证
MIT License - 详见 LICENSE
作者
Tridro - tridro@beneorigin.com
Metadata
Release files for futures-settlement-analysis 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| futures_settlement_analysis-0.1.3.tar.gz | 29.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| futures_settlement_analysis-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.9 kB
Release files / futures_settlement_analysis-0.1.3.tar.gz
| Download URL | futures_settlement_analysis-0.1.3.tar.gz |
|---|---|
| Size | 29.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f686baaa1462f949384370bf365122f1665b6330397b60366ba6feecae8af85
|
|
BLAKE2b-256 checksum How to use checksums |
3bb1832505fd3c288742ffd845cc6c5c09628832827df72318e20cb284eda488
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / futures_settlement_analysis-0.1.3-py3-none-any.whl
| Download URL | futures_settlement_analysis-0.1.3-py3-none-any.whl |
|---|---|
| Size | 30.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0371c3b6ed68e596c468069d61b84b1a63daf5aabf9ded0ad06d11bcdf40e472
|
|
BLAKE2b-256 checksum How to use checksums |
899362b81b7e6a0ece62bcc9803de0ddfd117a591847b44365a659dcf2c5bc01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|