hyperquant


Namehyperquant JSON
Version 0.51 PyPI version JSON
download
home_pageNone
SummaryA minimal yet hyper-efficient backtesting framework for quantitative trading
upload_time2025-09-07 20:22:40
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords backtesting hyperquant quant trading
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # minquant

minquant is a minimalistic framework for quantitative trading strategies. It allows users to quickly validate their strategy ideas with ease and efficiency.

## Core APIs

### `core.py`
主要功能包括:
- `ExchangeBase` 和 `Exchange` 类:实现基础的交易功能
  - 资产管理(初始资金、已实现/未实现盈亏等)
  - 下单交易(买入、卖出、平仓等)
  - 仓位管理和风控
  - 账户状态更新和记录
- `gen_back_time` 函数:回测时间周期管理,支持训练和测试时间区间的生成

### `draw.py`
主要功能包括:
- 支持多种图表类型:K线、曲线、柱状图等
- 提供丰富的交互功能:
  - 时间轴缩放和跳转
  - 自动播放功能
  - 多图表联动显示
  - 指标叠加功能
- 提供详细的数据标注:
  - 交易信号标记
  - 数据显示和提示
  - 自定义颜色和样式

### `logkit.py`
主要功能包括:
- 自定义日志级别和格式化:
  - DEBUG: 调试信息
  - INFO: 普通信息(蓝色)
  - OK: 成功信息(绿色)
  - WARNING: 警告信息(黄色)
  - ERROR: 错误信息(红色)
  - CRITICAL: 严重错误(深红色)
- 支持多种日志输出:
  - 控制台彩色输出
  - 文件日志记录
- 提供便捷的日志分割线和时间戳功能
- 支持异常信息的格式化输出
- 可配置时区和时间显示

## 使用方法

### 1. 初始化交易环境
```python
from core import Exchange
# 创建交易实例,设置初始资金和交易品种
exchange = Exchange(
    trade_symbols=['BTCUSDT'],  # 交易品种
    initial_balance=10000,      # 初始资金
    fee=0.0002,                # 手续费率
    recorded=True              # 是否记录交易历史
)
```

### 2. 执行交易操作
```python
# 买入操作
exchange.Buy('BTCUSDT', price=30000, amount=0.1, time='2024-01-01')

# 卖出操作
exchange.Sell('BTCUSDT', price=31000, amount=0.1, time='2024-01-02')

# 获取账户状态
print(exchange.stats)
```

### 3. 绘制分析图表
```python
from draw import draw
import pandas as pd

# 准备数据
data_df = pd.DataFrame({
    'date': [...],      # 时间列
    'open': [...],      # 开盘价
    'close': [...],     # 收盘价
    'high': [...],      # 最高价
    'low': [...],       # 最低价
    'volume': [...]     # 成交量
})

# 配置图表
data_dict = [
    {
        'series_name': 'K线图',
        'draw_type': 'Kline',
        'height': 60,
        'col': ['open', 'close', 'low', 'high']
    },
    {
        'series_name': '成交量',
        'draw_type': 'Bar',
        'height': 20,
        'col': 'volume'
    }
]

# 绘制图表
draw(
    df=data_df,
    data_dict=data_dict,
    date_col='date',
    title='BTC/USDT'
)
```

### 4. 日志记录
```python
from logkit import get_logger

# 创建日志实例
logger = get_logger(
    name='strategy',                  # 日志名称
    file_path='logs/strategy.log',    # 日志文件路径
    show_time=True,                   # 显示时间戳
    use_color=True                    # 使用彩色输出
)

# 记录不同级别的日志
logger.debug("调试信息")
logger.info("普通信息")
logger.ok("成功信息")
logger.warning("警告信息")
logger.error("错误信息")
logger.critical("严重错误")

# 使用分割线
logger.divider("回测开始", sep='=', display_time=True)
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "hyperquant",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "backtesting, hyperquant, quant, trading",
    "author": null,
    "author_email": "MissinA <1421329142@qq.com>",
    "download_url": "https://files.pythonhosted.org/packages/f0/be/070852f84ee2bd21da3133851ca26ab449a7ee64c8e49e4fd5d65b7f7d32/hyperquant-0.51.tar.gz",
    "platform": null,
    "description": "# minquant\n\nminquant is a minimalistic framework for quantitative trading strategies. It allows users to quickly validate their strategy ideas with ease and efficiency.\n\n## Core APIs\n\n### `core.py`\n\u4e3b\u8981\u529f\u80fd\u5305\u62ec\uff1a\n- `ExchangeBase` \u548c `Exchange` \u7c7b\uff1a\u5b9e\u73b0\u57fa\u7840\u7684\u4ea4\u6613\u529f\u80fd\n  - \u8d44\u4ea7\u7ba1\u7406\uff08\u521d\u59cb\u8d44\u91d1\u3001\u5df2\u5b9e\u73b0/\u672a\u5b9e\u73b0\u76c8\u4e8f\u7b49\uff09\n  - \u4e0b\u5355\u4ea4\u6613\uff08\u4e70\u5165\u3001\u5356\u51fa\u3001\u5e73\u4ed3\u7b49\uff09\n  - \u4ed3\u4f4d\u7ba1\u7406\u548c\u98ce\u63a7\n  - \u8d26\u6237\u72b6\u6001\u66f4\u65b0\u548c\u8bb0\u5f55\n- `gen_back_time` \u51fd\u6570\uff1a\u56de\u6d4b\u65f6\u95f4\u5468\u671f\u7ba1\u7406\uff0c\u652f\u6301\u8bad\u7ec3\u548c\u6d4b\u8bd5\u65f6\u95f4\u533a\u95f4\u7684\u751f\u6210\n\n### `draw.py`\n\u4e3b\u8981\u529f\u80fd\u5305\u62ec\uff1a\n- \u652f\u6301\u591a\u79cd\u56fe\u8868\u7c7b\u578b\uff1aK\u7ebf\u3001\u66f2\u7ebf\u3001\u67f1\u72b6\u56fe\u7b49\n- \u63d0\u4f9b\u4e30\u5bcc\u7684\u4ea4\u4e92\u529f\u80fd\uff1a\n  - \u65f6\u95f4\u8f74\u7f29\u653e\u548c\u8df3\u8f6c\n  - \u81ea\u52a8\u64ad\u653e\u529f\u80fd\n  - \u591a\u56fe\u8868\u8054\u52a8\u663e\u793a\n  - \u6307\u6807\u53e0\u52a0\u529f\u80fd\n- \u63d0\u4f9b\u8be6\u7ec6\u7684\u6570\u636e\u6807\u6ce8\uff1a\n  - \u4ea4\u6613\u4fe1\u53f7\u6807\u8bb0\n  - \u6570\u636e\u663e\u793a\u548c\u63d0\u793a\n  - \u81ea\u5b9a\u4e49\u989c\u8272\u548c\u6837\u5f0f\n\n### `logkit.py`\n\u4e3b\u8981\u529f\u80fd\u5305\u62ec\uff1a\n- \u81ea\u5b9a\u4e49\u65e5\u5fd7\u7ea7\u522b\u548c\u683c\u5f0f\u5316\uff1a\n  - DEBUG: \u8c03\u8bd5\u4fe1\u606f\n  - INFO: \u666e\u901a\u4fe1\u606f\uff08\u84dd\u8272\uff09\n  - OK: \u6210\u529f\u4fe1\u606f\uff08\u7eff\u8272\uff09\n  - WARNING: \u8b66\u544a\u4fe1\u606f\uff08\u9ec4\u8272\uff09\n  - ERROR: \u9519\u8bef\u4fe1\u606f\uff08\u7ea2\u8272\uff09\n  - CRITICAL: \u4e25\u91cd\u9519\u8bef\uff08\u6df1\u7ea2\u8272\uff09\n- \u652f\u6301\u591a\u79cd\u65e5\u5fd7\u8f93\u51fa\uff1a\n  - \u63a7\u5236\u53f0\u5f69\u8272\u8f93\u51fa\n  - \u6587\u4ef6\u65e5\u5fd7\u8bb0\u5f55\n- \u63d0\u4f9b\u4fbf\u6377\u7684\u65e5\u5fd7\u5206\u5272\u7ebf\u548c\u65f6\u95f4\u6233\u529f\u80fd\n- \u652f\u6301\u5f02\u5e38\u4fe1\u606f\u7684\u683c\u5f0f\u5316\u8f93\u51fa\n- \u53ef\u914d\u7f6e\u65f6\u533a\u548c\u65f6\u95f4\u663e\u793a\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### 1. \u521d\u59cb\u5316\u4ea4\u6613\u73af\u5883\n```python\nfrom core import Exchange\n# \u521b\u5efa\u4ea4\u6613\u5b9e\u4f8b\uff0c\u8bbe\u7f6e\u521d\u59cb\u8d44\u91d1\u548c\u4ea4\u6613\u54c1\u79cd\nexchange = Exchange(\n    trade_symbols=['BTCUSDT'],  # \u4ea4\u6613\u54c1\u79cd\n    initial_balance=10000,      # \u521d\u59cb\u8d44\u91d1\n    fee=0.0002,                # \u624b\u7eed\u8d39\u7387\n    recorded=True              # \u662f\u5426\u8bb0\u5f55\u4ea4\u6613\u5386\u53f2\n)\n```\n\n### 2. \u6267\u884c\u4ea4\u6613\u64cd\u4f5c\n```python\n# \u4e70\u5165\u64cd\u4f5c\nexchange.Buy('BTCUSDT', price=30000, amount=0.1, time='2024-01-01')\n\n# \u5356\u51fa\u64cd\u4f5c\nexchange.Sell('BTCUSDT', price=31000, amount=0.1, time='2024-01-02')\n\n# \u83b7\u53d6\u8d26\u6237\u72b6\u6001\nprint(exchange.stats)\n```\n\n### 3. \u7ed8\u5236\u5206\u6790\u56fe\u8868\n```python\nfrom draw import draw\nimport pandas as pd\n\n# \u51c6\u5907\u6570\u636e\ndata_df = pd.DataFrame({\n    'date': [...],      # \u65f6\u95f4\u5217\n    'open': [...],      # \u5f00\u76d8\u4ef7\n    'close': [...],     # \u6536\u76d8\u4ef7\n    'high': [...],      # \u6700\u9ad8\u4ef7\n    'low': [...],       # \u6700\u4f4e\u4ef7\n    'volume': [...]     # \u6210\u4ea4\u91cf\n})\n\n# \u914d\u7f6e\u56fe\u8868\ndata_dict = [\n    {\n        'series_name': 'K\u7ebf\u56fe',\n        'draw_type': 'Kline',\n        'height': 60,\n        'col': ['open', 'close', 'low', 'high']\n    },\n    {\n        'series_name': '\u6210\u4ea4\u91cf',\n        'draw_type': 'Bar',\n        'height': 20,\n        'col': 'volume'\n    }\n]\n\n# \u7ed8\u5236\u56fe\u8868\ndraw(\n    df=data_df,\n    data_dict=data_dict,\n    date_col='date',\n    title='BTC/USDT'\n)\n```\n\n### 4. \u65e5\u5fd7\u8bb0\u5f55\n```python\nfrom logkit import get_logger\n\n# \u521b\u5efa\u65e5\u5fd7\u5b9e\u4f8b\nlogger = get_logger(\n    name='strategy',                  # \u65e5\u5fd7\u540d\u79f0\n    file_path='logs/strategy.log',    # \u65e5\u5fd7\u6587\u4ef6\u8def\u5f84\n    show_time=True,                   # \u663e\u793a\u65f6\u95f4\u6233\n    use_color=True                    # \u4f7f\u7528\u5f69\u8272\u8f93\u51fa\n)\n\n# \u8bb0\u5f55\u4e0d\u540c\u7ea7\u522b\u7684\u65e5\u5fd7\nlogger.debug(\"\u8c03\u8bd5\u4fe1\u606f\")\nlogger.info(\"\u666e\u901a\u4fe1\u606f\")\nlogger.ok(\"\u6210\u529f\u4fe1\u606f\")\nlogger.warning(\"\u8b66\u544a\u4fe1\u606f\")\nlogger.error(\"\u9519\u8bef\u4fe1\u606f\")\nlogger.critical(\"\u4e25\u91cd\u9519\u8bef\")\n\n# \u4f7f\u7528\u5206\u5272\u7ebf\nlogger.divider(\"\u56de\u6d4b\u5f00\u59cb\", sep='=', display_time=True)\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A minimal yet hyper-efficient backtesting framework for quantitative trading",
    "version": "0.51",
    "project_urls": {
        "Homepage": "https://github.com/yourusername/hyperquant",
        "Issues": "https://github.com/yourusername/hyperquant/issues"
    },
    "split_keywords": [
        "backtesting",
        " hyperquant",
        " quant",
        " trading"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "69f39e193c131d08b3b317f56608e24b1329a39ac1b7c24a5e7390fff7e77239",
                "md5": "a72941dbad31f014d36aeaa0279e5de4",
                "sha256": "6f9797baa43302159a05b81e911a98d7384ae336ebcd53b78f2257752723944a"
            },
            "downloads": -1,
            "filename": "hyperquant-0.51-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a72941dbad31f014d36aeaa0279e5de4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 64887,
            "upload_time": "2025-09-07T20:22:39",
            "upload_time_iso_8601": "2025-09-07T20:22:39.267986Z",
            "url": "https://files.pythonhosted.org/packages/69/f3/9e193c131d08b3b317f56608e24b1329a39ac1b7c24a5e7390fff7e77239/hyperquant-0.51-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f0be070852f84ee2bd21da3133851ca26ab449a7ee64c8e49e4fd5d65b7f7d32",
                "md5": "7a4473d8d1899c9db5837fec17022930",
                "sha256": "c518b38d38dfebd4b156248d6fbc72fe96ae8749e85c9cfc78a484b00bdb8bf2"
            },
            "downloads": -1,
            "filename": "hyperquant-0.51.tar.gz",
            "has_sig": false,
            "md5_digest": "7a4473d8d1899c9db5837fec17022930",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 186023,
            "upload_time": "2025-09-07T20:22:40",
            "upload_time_iso_8601": "2025-09-07T20:22:40.718876Z",
            "url": "https://files.pythonhosted.org/packages/f0/be/070852f84ee2bd21da3133851ca26ab449a7ee64c8e49e4fd5d65b7f7d32/hyperquant-0.51.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-07 20:22:40",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "yourusername",
    "github_project": "hyperquant",
    "github_not_found": true,
    "lcname": "hyperquant"
}
        
Elapsed time: 1.27832s