Skip to main content

模拟交易回测系统 - 提供完整的订单管理、账户管理、数据管理功能

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.67
  • 作者: 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.67.tar.gz (13.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

liwancai_monibs-1.0.67-py3-none-any.whl (13.9 MB view details)

Uploaded Python 3

File details

Details for the file liwancai_monibs-1.0.67.tar.gz.

File metadata

  • Download URL: liwancai_monibs-1.0.67.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

Hashes for liwancai_monibs-1.0.67.tar.gz
Algorithm Hash digest
SHA256 61b6e5729f306f644244c572e580572f79fa19a96b6ecd6eaeaf0abde6dfb749
MD5 21d4d4c19e3e4567ccabb56c5559c608
BLAKE2b-256 170f33809774e22b05961d8482a70630e3b42f2252d129e582c595b011f846e7

See more details on using hashes here.

File details

Details for the file liwancai_monibs-1.0.67-py3-none-any.whl.

File metadata

File hashes

Hashes for liwancai_monibs-1.0.67-py3-none-any.whl
Algorithm Hash digest
SHA256 a0e92a3128424f0c7dd57b71834774a719eb5eb34e9a3945da4fe481f2ef1a41
MD5 2847f5c12848b6ef16cb3409334b94b3
BLAKE2b-256 6703c4e4542a67bd924d1e03d71163965921e8a0896637a936731d3e9654ff04

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page