模拟交易回测系统 - 提供完整的订单管理、账户管理、数据管理功能
Project description
MoNiBS
模拟交易回测系统 - 提供完整的订单管理、账户管理、数据管理、因子分析功能
注意: 包在PyPI上的名称是 liwancai-MoNiBS,但导入时使用 MoNiBS
安装
pip install liwancai-MoNiBS
快速开始
from MoNiBS import *
# 配置回测参数
cfg = {
"do_winsor": {"mathed": "MADWIN", "arges": {"k": 5, "lower_quantile": 0.01, "upper_quantile": 0.99}},
"do_neutral": {"mathed": "INDCAP"},
"do_std": True,
"col_strategy": "overwrite"
}
# 初始化回测引擎
engine = MoNiBS(cfg)
# 使用动态注册的交易方法
engine.KB(code="000001", Price=10.0, Qty=100) # 开多
engine.KS(code="000001", Price=10.0, Qty=100) # 开空
engine.PB(code="000001") # 平多
engine.PS(code="000001") # 平空
核心模块
1. 回测引擎 (MoNiBS)
主框架类,集成所有核心模块,提供动态交易方法注册:
from MoNiBS import MoNiBS
engine = MoNiBS(cfg)
engine.OnOrderBS(KLs, TKs) # 执行订单处理
特性:
- 动态注册交易方法 (KB, KS, PB, PS, KBB, KBS, KSB, KSS, PBB, PBS, PSB, PSS)
- 因子预处理流水线 (去极值 → 中性化 → 标准化)
- 订单处理流程: 先平仓 → 更新账户 → 再开仓
2. 账户管理 (Account)
多账户资金管理模块:
from MoNiBS import Account, AccountHub
# 创建账户
acc = Account(AccName="测试账户", initfunds=1000000)
# 账户属性
acc.FundsSum # 总资产
acc.FundsAble # 可用资金
acc.FundsHold # 持仓资金/占用保证金
acc.HoldEarn # 浮动盈亏
acc.FundsEarnSum # 清仓结算盈亏
acc.FeesSum # 总手续费
3. 订单管理 (OrderHold)
完整的订单生命周期管理:
from MoNiBS import Order, OrderStatus, BSType
# 创建订单
order = Order(
AccountID="001",
kline=kline,
BSType=BSType.KB,
Method=OrderMethod.Market,
Price=10.0,
Qty=100
)
交易类型 (BSType):
KB: 开多,KS: 开空PB: 平多,PS: 平空KBB/KBS: 开看多买方/卖方KSB/KSS: 开看空买方/卖方PBB/PBS: 平看多买方/卖方PSB/PSS: 平看空买方/卖方
订单方式 (OrderMethod):
Market: 市价单Limit: 限价单Buy1-5/Sell1-5: 盘口价格UpperLimit/LowerLimit: 涨跌停价
4. 数据管理 (MgrData)
行情数据获取与费用计算:
from MoNiBS import MgrDataHub
mgr = MgrDataHub(cfg)
fees = mgr.fetch_Fees(code) # 获取费用信息
5. 数据存储 (DBSave)
基于 DuckDB 的高效数据存储:
from MoNiBS import DBSaveHub
db = DBSaveHub(cfg)
6. 因子分析 (Factor)
6.1 截面因子分析 (RankSaS)
截面因子统计分析引擎:
from MoNiBS.Factor.RankSaS.Core import FactorBase
cfg = {
"phone": "your_phone",
"password": "your_password",
"base_url": "api_url",
"Factor_col": "close",
"REBChgPerN": ["REBChgPer1", "REBChgPer20"],
"group_num": 10,
"do_winsor": {"mathed": "MADWIN", "arges": {"k": 5}},
"do_neutral": {"mathed": "INDCAP"},
"do_std": True
}
factor_engine = FactorBase(cfg)
功能模块:
PreProcess: 因子预处理 (去极值/中性化/标准化)ICIR: IC/IR 统计分析Report: 因子分析报告生成Core: 核心因子分析引擎
6.2 类别因子分析 (ClassSAS)
类别因子统计分析引擎:
from MoNiBS.Factor.ClassSAS.Core import ClassBase
cfg = {
"phone": "your_phone",
"password": "your_password",
"base_url": "api_url",
"CATEGORY_SCALES": [1, 2, 5, 10, 25, 50],
"CATEGORY_CLASSES": [1, 2, 3, 4, -1, -2, -3, -4],
"RETURN_PERIODS": [1, 2, 3, 5, 10, 20, 60, 120]
}
class_engine = ClassBase(cfg)
子模块:
Method/: 统计方法库 (CAPM/复合/跨期/对冲/推断/线性/周期/RankIC/风险)compute/: 计算引擎 (跨期/市场/指标/净值/选择器/统计)output/: 输出模块 (报告/保存)
7. Web API (WebApi)
RESTful API 接口,支持远程调用:
from MoNiBS.WebApi.ApiBase import base_router
# 可用接口
# GET /strategies - 获取策略列表
# GET /databases - 获取数据库列表
# GET /tables - 获取表列表
# GET /accounts - 获取账户信息
# GET /holds - 获取持仓信息
# GET /orders - 获取订单信息
8. 数据类型 (utils)
from MoNiBS import KLine, KLineN, TickN
# K线数据
kline = KLine(
code="000001",
period="1d",
open=10.0,
close=10.5,
high=11.0,
low=9.8,
volume=1000000,
amount=10500000,
trade_time="2024-01-01 09:30:00",
trade_date="2024-01-01"
)
# Tick数据
tick = TickN(
Code="000001",
LastPrice=10.5,
Volume=1000,
AskPrice=[10.51, 10.52, 10.53, 10.54, 10.55],
BidPrice=[10.49, 10.48, 10.47, 10.46, 10.45]
)
项目结构
MoNiBS/
├── Account/ # 账户管理模块
│ ├── Account.py # 账户数据模型
│ ├── AccountHub.py # 账户管理器
│ └── __init__.py
├── DBSave/ # 数据存储模块
│ ├── DBSaveHub.py # 数据库管理器
│ └── __init__.py
├── Factor/ # 因子分析模块
│ ├── ClassSAS/ # 类别因子分析
│ │ ├── Core.py # 类别因子基类
│ │ ├── Method/ # 统计方法库
│ │ │ ├── ClassStatsCAPM.py
│ │ │ ├── ClassStatsComposite.py
│ │ │ ├── ClassStatsCrossPeriod.py
│ │ │ ├── ClassStatsHedge.py
│ │ │ ├── ClassStatsInference.py
│ │ │ ├── ClassStatsLine.py
│ │ │ ├── ClassStatsPeriodic.py
│ │ │ ├── ClassStatsRankIC.py
│ │ │ └── ClassStatsRisk.py
│ │ ├── compute/ # 计算引擎
│ │ │ ├── cross_period.py
│ │ │ ├── market.py
│ │ │ ├── metrics.py
│ │ │ ├── nav.py
│ │ │ ├── selector.py
│ │ │ └── stats.py
│ │ └── output/ # 输出模块
│ │ ├── reporter.py
│ │ └── saver.py
│ ├── RankSaS/ # 截面因子分析
│ │ ├── Core.py # 因子分析基类
│ │ ├── ICIR.py # IC/IR分析
│ │ ├── PreProcess.py # 数据预处理
│ │ └── Report.py # 报告生成
│ └── __init__.py
├── MgrData/ # 数据管理模块
│ ├── Cache.py # 数据缓存
│ ├── Client.py # 数据客户端
│ ├── CodeFees.py # 费用计算
│ ├── MgrDataHub.py # 数据管理器
│ └── __init__.py
├── OrderHold/ # 订单持仓模块
│ ├── Help.py # 订单帮助文档
│ ├── Hold.py # 持仓管理
│ ├── Order.py # 订单模型
│ ├── OrderDeal.py # 订单处理
│ ├── OrderHub.py # 订单管理器
│ ├── OrderPGFH.py # 分红配股处理
│ ├── Type.py # 类型定义
│ └── __init__.py
├── Strategys/ # 策略模块
│ └── __init__.py
├── WebApi/ # Web API接口
│ ├── ApiAccs.py # 账户数据API
│ ├── ApiBase.py # 基础数据API
│ ├── ApiHold.py # 持仓数据API
│ ├── ApiOrder.py # 订单数据API
│ ├── DBConBase.py # 数据库连接基类
│ ├── Evaluate.py # 评估数据模型
│ └── __init__.py
├── utils/ # 工具模块
│ ├── DataType.py # 数据类型定义
│ ├── Tools.py # 工具函数
│ └── __init__.py
├── MoNiBS.py # 主框架类
└── __init__.py
依赖包
liwancai-PyLOG>=1.0.0: 日志记录liwancai-PyTools>=1.0.0: 工具函数fastapi>=0.68.0: Web API框架uvicorn>=0.15.0: ASGI服务器pandas>=1.0.0: 数据处理numpy>=1.19.0: 数值计算pydantic>=1.8.0: 数据验证duckdb>=0.5.0: 数据库存储
版本信息
- 当前版本: 1.0.69
- 作者: liwancai
- 许可证: MIT
📄 许可证
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
liwancai_monibs-1.0.69.tar.gz
(13.8 MB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file liwancai_monibs-1.0.69.tar.gz.
File metadata
- Download URL: liwancai_monibs-1.0.69.tar.gz
- Upload date:
- Size: 13.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e3ab24d1fde01ca1abf7720d2ac55c195f99494c5a08e3bf52806773836267b
|
|
| MD5 |
533d4c6182ca3ac375d09254c45f7247
|
|
| BLAKE2b-256 |
c5c31c45a035a70b6af3156f765b8b5590333e8cddee21bb4547a830fa26d1f6
|
File details
Details for the file liwancai_monibs-1.0.69-py3-none-any.whl.
File metadata
- Download URL: liwancai_monibs-1.0.69-py3-none-any.whl
- Upload date:
- Size: 13.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df8da0e23f1ecd38e4f5de09b8e520f10df0a2a38ad5567d488884ed8fda5ab2
|
|
| MD5 |
fcbf3d03b5f76102d335cd8a22f5c047
|
|
| BLAKE2b-256 |
5b0c8d8d32027a9c82a50199d07db3ebb5d5362d9ad32dbe649f1c1bc802e089
|