hyperquant 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,41 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # PyPI credentials
24
+ .pypirc
25
+
26
+ # Environment
27
+ .env
28
+ .venv
29
+ env/
30
+ venv/
31
+ ENV/
32
+
33
+ # IDE
34
+ .idea/
35
+ .vscode/
36
+ *.swp
37
+ *.swo
38
+
39
+ # OS
40
+ .DS_Store
41
+ Thumbs.db
@@ -0,0 +1 @@
1
+ 3.12.3
@@ -0,0 +1,153 @@
1
+ Metadata-Version: 2.4
2
+ Name: hyperquant
3
+ Version: 0.1.1
4
+ Summary: A minimal yet hyper-efficient backtesting framework for quantitative trading
5
+ Project-URL: Homepage, https://github.com/yourusername/hyperquant
6
+ Project-URL: Issues, https://github.com/yourusername/hyperquant/issues
7
+ Author-email: MissinA <1421329142@qq.com>
8
+ License: MIT
9
+ Keywords: backtesting,hyperquant,quant,trading
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Topic :: Office/Business :: Financial :: Investment
15
+ Requires-Python: >=3.8
16
+ Requires-Dist: colorama>=0.4.6
17
+ Requires-Dist: pandas>=2.2.3
18
+ Requires-Dist: pyecharts>=2.0.8
19
+ Description-Content-Type: text/markdown
20
+
21
+ # minquant
22
+
23
+ minquant is a minimalistic framework for quantitative trading strategies. It allows users to quickly validate their strategy ideas with ease and efficiency.
24
+
25
+ ## Core APIs
26
+
27
+ ### `core.py`
28
+ 主要功能包括:
29
+ - `ExchangeBase` 和 `Exchange` 类:实现基础的交易功能
30
+ - 资产管理(初始资金、已实现/未实现盈亏等)
31
+ - 下单交易(买入、卖出、平仓等)
32
+ - 仓位管理和风控
33
+ - 账户状态更新和记录
34
+ - `gen_back_time` 函数:回测时间周期管理,支持训练和测试时间区间的生成
35
+
36
+ ### `draw.py`
37
+ 主要功能包括:
38
+ - 支持多种图表类型:K线、曲线、柱状图等
39
+ - 提供丰富的交互功能:
40
+ - 时间轴缩放和跳转
41
+ - 自动播放功能
42
+ - 多图表联动显示
43
+ - 指标叠加功能
44
+ - 提供详细的数据标注:
45
+ - 交易信号标记
46
+ - 数据显示和提示
47
+ - 自定义颜色和样式
48
+
49
+ ### `logkit.py`
50
+ 主要功能包括:
51
+ - 自定义日志级别和格式化:
52
+ - DEBUG: 调试信息
53
+ - INFO: 普通信息(蓝色)
54
+ - OK: 成功信息(绿色)
55
+ - WARNING: 警告信息(黄色)
56
+ - ERROR: 错误信息(红色)
57
+ - CRITICAL: 严重错误(深红色)
58
+ - 支持多种日志输出:
59
+ - 控制台彩色输出
60
+ - 文件日志记录
61
+ - 提供便捷的日志分割线和时间戳功能
62
+ - 支持异常信息的格式化输出
63
+ - 可配置时区和时间显示
64
+
65
+ ## 使用方法
66
+
67
+ ### 1. 初始化交易环境
68
+ ```python
69
+ from core import Exchange
70
+ # 创建交易实例,设置初始资金和交易品种
71
+ exchange = Exchange(
72
+ trade_symbols=['BTCUSDT'], # 交易品种
73
+ initial_balance=10000, # 初始资金
74
+ fee=0.0002, # 手续费率
75
+ recorded=True # 是否记录交易历史
76
+ )
77
+ ```
78
+
79
+ ### 2. 执行交易操作
80
+ ```python
81
+ # 买入操作
82
+ exchange.Buy('BTCUSDT', price=30000, amount=0.1, time='2024-01-01')
83
+
84
+ # 卖出操作
85
+ exchange.Sell('BTCUSDT', price=31000, amount=0.1, time='2024-01-02')
86
+
87
+ # 获取账户状态
88
+ print(exchange.stats)
89
+ ```
90
+
91
+ ### 3. 绘制分析图表
92
+ ```python
93
+ from draw import draw
94
+ import pandas as pd
95
+
96
+ # 准备数据
97
+ data_df = pd.DataFrame({
98
+ 'date': [...], # 时间列
99
+ 'open': [...], # 开盘价
100
+ 'close': [...], # 收盘价
101
+ 'high': [...], # 最高价
102
+ 'low': [...], # 最低价
103
+ 'volume': [...] # 成交量
104
+ })
105
+
106
+ # 配置图表
107
+ data_dict = [
108
+ {
109
+ 'series_name': 'K线图',
110
+ 'draw_type': 'Kline',
111
+ 'height': 60,
112
+ 'col': ['open', 'close', 'low', 'high']
113
+ },
114
+ {
115
+ 'series_name': '成交量',
116
+ 'draw_type': 'Bar',
117
+ 'height': 20,
118
+ 'col': 'volume'
119
+ }
120
+ ]
121
+
122
+ # 绘制图表
123
+ draw(
124
+ df=data_df,
125
+ data_dict=data_dict,
126
+ date_col='date',
127
+ title='BTC/USDT'
128
+ )
129
+ ```
130
+
131
+ ### 4. 日志记录
132
+ ```python
133
+ from logkit import get_logger
134
+
135
+ # 创建日志实例
136
+ logger = get_logger(
137
+ name='strategy', # 日志名称
138
+ file_path='logs/strategy.log', # 日志文件路径
139
+ show_time=True, # 显示时间戳
140
+ use_color=True # 使用彩色输出
141
+ )
142
+
143
+ # 记录不同级别的日志
144
+ logger.debug("调试信息")
145
+ logger.info("普通信息")
146
+ logger.ok("成功信息")
147
+ logger.warning("警告信息")
148
+ logger.error("错误信息")
149
+ logger.critical("严重错误")
150
+
151
+ # 使用分割线
152
+ logger.divider("回测开始", sep='=', display_time=True)
153
+ ```
@@ -0,0 +1,133 @@
1
+ # minquant
2
+
3
+ minquant is a minimalistic framework for quantitative trading strategies. It allows users to quickly validate their strategy ideas with ease and efficiency.
4
+
5
+ ## Core APIs
6
+
7
+ ### `core.py`
8
+ 主要功能包括:
9
+ - `ExchangeBase` 和 `Exchange` 类:实现基础的交易功能
10
+ - 资产管理(初始资金、已实现/未实现盈亏等)
11
+ - 下单交易(买入、卖出、平仓等)
12
+ - 仓位管理和风控
13
+ - 账户状态更新和记录
14
+ - `gen_back_time` 函数:回测时间周期管理,支持训练和测试时间区间的生成
15
+
16
+ ### `draw.py`
17
+ 主要功能包括:
18
+ - 支持多种图表类型:K线、曲线、柱状图等
19
+ - 提供丰富的交互功能:
20
+ - 时间轴缩放和跳转
21
+ - 自动播放功能
22
+ - 多图表联动显示
23
+ - 指标叠加功能
24
+ - 提供详细的数据标注:
25
+ - 交易信号标记
26
+ - 数据显示和提示
27
+ - 自定义颜色和样式
28
+
29
+ ### `logkit.py`
30
+ 主要功能包括:
31
+ - 自定义日志级别和格式化:
32
+ - DEBUG: 调试信息
33
+ - INFO: 普通信息(蓝色)
34
+ - OK: 成功信息(绿色)
35
+ - WARNING: 警告信息(黄色)
36
+ - ERROR: 错误信息(红色)
37
+ - CRITICAL: 严重错误(深红色)
38
+ - 支持多种日志输出:
39
+ - 控制台彩色输出
40
+ - 文件日志记录
41
+ - 提供便捷的日志分割线和时间戳功能
42
+ - 支持异常信息的格式化输出
43
+ - 可配置时区和时间显示
44
+
45
+ ## 使用方法
46
+
47
+ ### 1. 初始化交易环境
48
+ ```python
49
+ from core import Exchange
50
+ # 创建交易实例,设置初始资金和交易品种
51
+ exchange = Exchange(
52
+ trade_symbols=['BTCUSDT'], # 交易品种
53
+ initial_balance=10000, # 初始资金
54
+ fee=0.0002, # 手续费率
55
+ recorded=True # 是否记录交易历史
56
+ )
57
+ ```
58
+
59
+ ### 2. 执行交易操作
60
+ ```python
61
+ # 买入操作
62
+ exchange.Buy('BTCUSDT', price=30000, amount=0.1, time='2024-01-01')
63
+
64
+ # 卖出操作
65
+ exchange.Sell('BTCUSDT', price=31000, amount=0.1, time='2024-01-02')
66
+
67
+ # 获取账户状态
68
+ print(exchange.stats)
69
+ ```
70
+
71
+ ### 3. 绘制分析图表
72
+ ```python
73
+ from draw import draw
74
+ import pandas as pd
75
+
76
+ # 准备数据
77
+ data_df = pd.DataFrame({
78
+ 'date': [...], # 时间列
79
+ 'open': [...], # 开盘价
80
+ 'close': [...], # 收盘价
81
+ 'high': [...], # 最高价
82
+ 'low': [...], # 最低价
83
+ 'volume': [...] # 成交量
84
+ })
85
+
86
+ # 配置图表
87
+ data_dict = [
88
+ {
89
+ 'series_name': 'K线图',
90
+ 'draw_type': 'Kline',
91
+ 'height': 60,
92
+ 'col': ['open', 'close', 'low', 'high']
93
+ },
94
+ {
95
+ 'series_name': '成交量',
96
+ 'draw_type': 'Bar',
97
+ 'height': 20,
98
+ 'col': 'volume'
99
+ }
100
+ ]
101
+
102
+ # 绘制图表
103
+ draw(
104
+ df=data_df,
105
+ data_dict=data_dict,
106
+ date_col='date',
107
+ title='BTC/USDT'
108
+ )
109
+ ```
110
+
111
+ ### 4. 日志记录
112
+ ```python
113
+ from logkit import get_logger
114
+
115
+ # 创建日志实例
116
+ logger = get_logger(
117
+ name='strategy', # 日志名称
118
+ file_path='logs/strategy.log', # 日志文件路径
119
+ show_time=True, # 显示时间戳
120
+ use_color=True # 使用彩色输出
121
+ )
122
+
123
+ # 记录不同级别的日志
124
+ logger.debug("调试信息")
125
+ logger.info("普通信息")
126
+ logger.ok("成功信息")
127
+ logger.warning("警告信息")
128
+ logger.error("错误信息")
129
+ logger.critical("严重错误")
130
+
131
+ # 使用分割线
132
+ logger.divider("回测开始", sep='=', display_time=True)
133
+ ```
@@ -0,0 +1,13 @@
1
+ #!/bin/bash
2
+ echo "清理旧的构建文件..."
3
+ rm -rf dist/* build/*
4
+
5
+ echo "重新构建包..."
6
+ rye build
7
+
8
+ echo "发布到 PyPI..."
9
+ # 从 .pypirc 文件读取 token
10
+ TOKEN=$(grep "password" .pypirc | cut -d "=" -f2 | tr -d ' ')
11
+
12
+ # 使用 token 发布
13
+ TWINE_USERNAME=__token__ TWINE_PASSWORD=$TOKEN rye run twine upload dist/*
@@ -0,0 +1,41 @@
1
+ [project]
2
+ name = "hyperquant"
3
+ version = "0.1.1"
4
+ description = "A minimal yet hyper-efficient backtesting framework for quantitative trading"
5
+ authors = [
6
+ { name = "MissinA", email = "1421329142@qq.com" }
7
+ ]
8
+ dependencies = [
9
+ "pyecharts>=2.0.8",
10
+ "pandas>=2.2.3",
11
+ "colorama>=0.4.6",
12
+ ]
13
+ readme = "README.md"
14
+ requires-python = ">= 3.8"
15
+ keywords = ["quant", "backtesting", "trading", "hyperquant"]
16
+ license = {text = "MIT"}
17
+ classifiers = [
18
+ "Development Status :: 3 - Alpha",
19
+ "Intended Audience :: Developers",
20
+ "Topic :: Office/Business :: Financial :: Investment",
21
+ "Programming Language :: Python :: 3",
22
+ "License :: OSI Approved :: MIT License",
23
+ ]
24
+
25
+ [project.urls]
26
+ Homepage = "https://github.com/yourusername/hyperquant"
27
+ Issues = "https://github.com/yourusername/hyperquant/issues"
28
+
29
+ [build-system]
30
+ requires = ["hatchling"]
31
+ build-backend = "hatchling.build"
32
+
33
+ [tool.rye]
34
+ managed = true
35
+ dev-dependencies = ["twine>=6.1.0"]
36
+
37
+ [tool.hatch.metadata]
38
+ allow-direct-references = true
39
+
40
+ [tool.hatch.build.targets.wheel]
41
+ packages = ["src/hyperquant"]
@@ -0,0 +1,86 @@
1
+ # generated by rye
2
+ # use `rye lock` or `rye sync` to update this lockfile
3
+ #
4
+ # last locked with the following flags:
5
+ # pre: false
6
+ # features: []
7
+ # all-features: false
8
+ # with-sources: false
9
+ # generate-hashes: false
10
+ # universal: false
11
+
12
+ -e file:.
13
+ certifi==2025.1.31
14
+ # via requests
15
+ charset-normalizer==3.4.1
16
+ # via requests
17
+ colorama==0.4.6
18
+ # via minbacktest
19
+ docutils==0.21.2
20
+ # via readme-renderer
21
+ id==1.5.0
22
+ # via twine
23
+ idna==3.10
24
+ # via requests
25
+ jaraco-classes==3.4.0
26
+ # via keyring
27
+ jaraco-context==6.0.1
28
+ # via keyring
29
+ jaraco-functools==4.1.0
30
+ # via keyring
31
+ jinja2==3.1.6
32
+ # via pyecharts
33
+ keyring==25.6.0
34
+ # via twine
35
+ markdown-it-py==3.0.0
36
+ # via rich
37
+ markupsafe==3.0.2
38
+ # via jinja2
39
+ mdurl==0.1.2
40
+ # via markdown-it-py
41
+ more-itertools==10.6.0
42
+ # via jaraco-classes
43
+ # via jaraco-functools
44
+ nh3==0.2.21
45
+ # via readme-renderer
46
+ numpy==2.2.4
47
+ # via pandas
48
+ packaging==24.2
49
+ # via twine
50
+ pandas==2.2.3
51
+ # via minbacktest
52
+ prettytable==3.15.1
53
+ # via pyecharts
54
+ pyecharts==2.0.8
55
+ # via minbacktest
56
+ pygments==2.19.1
57
+ # via readme-renderer
58
+ # via rich
59
+ python-dateutil==2.9.0.post0
60
+ # via pandas
61
+ pytz==2025.1
62
+ # via pandas
63
+ readme-renderer==44.0
64
+ # via twine
65
+ requests==2.32.3
66
+ # via id
67
+ # via requests-toolbelt
68
+ # via twine
69
+ requests-toolbelt==1.0.0
70
+ # via twine
71
+ rfc3986==2.0.0
72
+ # via twine
73
+ rich==13.9.4
74
+ # via twine
75
+ simplejson==3.20.1
76
+ # via pyecharts
77
+ six==1.17.0
78
+ # via python-dateutil
79
+ twine==6.1.0
80
+ tzdata==2025.1
81
+ # via pandas
82
+ urllib3==2.3.0
83
+ # via requests
84
+ # via twine
85
+ wcwidth==0.2.13
86
+ # via prettytable
@@ -0,0 +1,38 @@
1
+ # generated by rye
2
+ # use `rye lock` or `rye sync` to update this lockfile
3
+ #
4
+ # last locked with the following flags:
5
+ # pre: false
6
+ # features: []
7
+ # all-features: false
8
+ # with-sources: false
9
+ # generate-hashes: false
10
+ # universal: false
11
+
12
+ -e file:.
13
+ colorama==0.4.6
14
+ # via minbacktest
15
+ jinja2==3.1.6
16
+ # via pyecharts
17
+ markupsafe==3.0.2
18
+ # via jinja2
19
+ numpy==2.2.4
20
+ # via pandas
21
+ pandas==2.2.3
22
+ # via minbacktest
23
+ prettytable==3.15.1
24
+ # via pyecharts
25
+ pyecharts==2.0.8
26
+ # via minbacktest
27
+ python-dateutil==2.9.0.post0
28
+ # via pandas
29
+ pytz==2025.1
30
+ # via pandas
31
+ simplejson==3.20.1
32
+ # via pyecharts
33
+ six==1.17.0
34
+ # via python-dateutil
35
+ tzdata==2025.1
36
+ # via pandas
37
+ wcwidth==0.2.13
38
+ # via prettytable
@@ -0,0 +1,5 @@
1
+ from .core import *
2
+ from .draw import *
3
+ from .logkit import *
4
+
5
+ __version__ = "0.1.0"