quantification 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl
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.
- quantification/__init__.py +3 -2
- quantification/api/__init__.py +3 -0
- quantification/api/akshare/__init__.py +1 -0
- quantification/api/akshare/akshare.py +17 -0
- quantification/api/akshare/delegate/__init__.py +6 -0
- quantification/api/akshare/delegate/macro_china_fdi.py +46 -0
- quantification/api/akshare/delegate/macro_china_lpr.py +43 -0
- quantification/api/akshare/delegate/macro_china_qyspjg.py +51 -0
- quantification/api/akshare/delegate/macro_china_shrzgm.py +47 -0
- quantification/api/akshare/delegate/macro_cnbs.py +47 -0
- quantification/api/akshare/delegate/stock_zh_a_hist.py +77 -0
- quantification/api/akshare/setting.py +5 -0
- quantification/api/api.py +11 -0
- quantification/api/api.pyi +21 -0
- quantification/api/tushare/__init__.py +1 -0
- quantification/api/tushare/delegate/__init__.py +7 -0
- quantification/api/tushare/delegate/balancesheet.py +66 -0
- quantification/api/tushare/delegate/cashflow.py +29 -0
- quantification/api/tushare/delegate/common.py +64 -0
- quantification/api/tushare/delegate/daily_basic.py +81 -0
- quantification/api/tushare/delegate/fina_indicator.py +20 -0
- quantification/api/tushare/delegate/income.py +34 -0
- quantification/api/tushare/delegate/index_daily.py +61 -0
- quantification/api/tushare/delegate/pro_bar.py +80 -0
- quantification/api/tushare/setting.py +5 -0
- quantification/api/tushare/tushare.py +17 -0
- quantification/core/__init__.py +9 -0
- quantification/core/asset/__init__.py +6 -0
- quantification/core/asset/base_asset.py +96 -0
- quantification/core/asset/base_broker.py +42 -0
- quantification/core/asset/broker.py +108 -0
- quantification/core/asset/cash.py +75 -0
- quantification/core/asset/stock.py +268 -0
- quantification/core/cache.py +93 -0
- quantification/core/configure.py +15 -0
- quantification/core/data/__init__.py +5 -0
- quantification/core/data/base_api.py +109 -0
- quantification/core/data/base_delegate.py +73 -0
- quantification/core/data/field.py +213 -0
- quantification/core/data/panel.py +42 -0
- quantification/core/env.py +25 -0
- quantification/core/logger.py +94 -0
- quantification/core/strategy/__init__.py +3 -0
- quantification/core/strategy/base_strategy.py +66 -0
- quantification/core/strategy/base_trigger.py +69 -0
- quantification/core/strategy/base_use.py +69 -0
- quantification/core/trader/__init__.py +7 -0
- quantification/core/trader/base_order.py +45 -0
- quantification/core/trader/base_stage.py +16 -0
- quantification/core/trader/base_trader.py +173 -0
- quantification/core/trader/collector.py +47 -0
- quantification/core/trader/order.py +23 -0
- quantification/core/trader/portfolio.py +72 -0
- quantification/core/trader/query.py +29 -0
- quantification/core/trader/report.py +76 -0
- quantification/core/util.py +181 -0
- quantification/default/__init__.py +5 -0
- quantification/default/stage/__init__.py +1 -0
- quantification/default/stage/cn_stock.py +23 -0
- quantification/default/strategy/__init__.py +1 -0
- quantification/default/strategy/simple/__init__.py +1 -0
- quantification/default/strategy/simple/strategy.py +8 -0
- quantification/default/trader/__init__.py +2 -0
- quantification/default/trader/a_factor/__init__.py +1 -0
- quantification/default/trader/a_factor/trader.py +27 -0
- quantification/default/trader/simple/__init__.py +1 -0
- quantification/default/trader/simple/trader.py +8 -0
- quantification/default/trigger/__init__.py +1 -0
- quantification/default/trigger/trigger.py +63 -0
- quantification/default/use/__init__.py +1 -0
- quantification/default/use/factors/__init__.py +2 -0
- quantification/default/use/factors/factor.py +205 -0
- quantification/default/use/factors/use.py +38 -0
- quantification-0.1.1.dist-info/METADATA +19 -0
- quantification-0.1.1.dist-info/RECORD +76 -0
- {quantification-0.1.0.dist-info → quantification-0.1.1.dist-info}/WHEEL +1 -1
- quantification-0.1.0.dist-info/METADATA +0 -13
- quantification-0.1.0.dist-info/RECORD +0 -4
@@ -0,0 +1 @@
|
|
1
|
+
from .trigger import T
|
@@ -0,0 +1,63 @@
|
|
1
|
+
from datetime import date
|
2
|
+
|
3
|
+
import akshare as ak
|
4
|
+
|
5
|
+
from quantification import Condition, Trigger, cache_query, BaseStage
|
6
|
+
|
7
|
+
|
8
|
+
class EveryDay(Condition):
|
9
|
+
def __call__(self):
|
10
|
+
return True
|
11
|
+
|
12
|
+
def name(self):
|
13
|
+
return "每日"
|
14
|
+
|
15
|
+
|
16
|
+
class EveryNDay(Condition):
|
17
|
+
def __init__(self, days: int):
|
18
|
+
self.days = days
|
19
|
+
self.pre_date: date | None = None
|
20
|
+
|
21
|
+
def __call__(self, day: date) -> bool:
|
22
|
+
if self.pre_date is None:
|
23
|
+
return True
|
24
|
+
|
25
|
+
if (day - self.pre_date).days >= self.days:
|
26
|
+
return True
|
27
|
+
|
28
|
+
return False
|
29
|
+
|
30
|
+
def settle(self, day: date):
|
31
|
+
self.pre_date = day
|
32
|
+
|
33
|
+
def name(self):
|
34
|
+
return f"每{self.days}日"
|
35
|
+
|
36
|
+
|
37
|
+
class TradeDay(Condition):
|
38
|
+
def __call__(self, day: date):
|
39
|
+
return day in cache_query()(ak.tool_trade_date_hist_sina)()["trade_date"].tolist()
|
40
|
+
|
41
|
+
def name(self):
|
42
|
+
return f"当为交易日"
|
43
|
+
|
44
|
+
|
45
|
+
class OnStage(Condition):
|
46
|
+
def __init__(self, stage):
|
47
|
+
self.stage = stage
|
48
|
+
|
49
|
+
def __call__(self, stage: BaseStage):
|
50
|
+
return bool(self.stage & stage)
|
51
|
+
|
52
|
+
def name(self):
|
53
|
+
return f"当stage为{self.stage}"
|
54
|
+
|
55
|
+
|
56
|
+
class T:
|
57
|
+
每日 = Trigger(EveryDay())
|
58
|
+
每N日 = lambda x: Trigger(EveryNDay(x))
|
59
|
+
交易日 = Trigger(TradeDay())
|
60
|
+
交易阶段 = lambda x: Trigger(OnStage(x))
|
61
|
+
|
62
|
+
|
63
|
+
__all__ = ["T"]
|
@@ -0,0 +1 @@
|
|
1
|
+
from .factors import *
|
@@ -0,0 +1,205 @@
|
|
1
|
+
import math
|
2
|
+
from abc import ABCMeta, abstractmethod
|
3
|
+
from typing import Any, Type
|
4
|
+
|
5
|
+
from quantification import inject, Field
|
6
|
+
|
7
|
+
factor_cache: dict[Type["BaseFactor"], Any] = {}
|
8
|
+
|
9
|
+
|
10
|
+
class OP:
|
11
|
+
@staticmethod
|
12
|
+
def _create_combined_class(operands, func):
|
13
|
+
combined_fields: list[Field] = []
|
14
|
+
for operand in operands:
|
15
|
+
if isinstance(operand, type) and issubclass(operand, BaseFactor):
|
16
|
+
combined_fields += operand.fields
|
17
|
+
|
18
|
+
class CombinedFactor(BaseFactor):
|
19
|
+
fields = list(set(combined_fields))
|
20
|
+
|
21
|
+
@classmethod
|
22
|
+
def run(cls, **kwargs):
|
23
|
+
if not factor_cache.get(cls):
|
24
|
+
factor_cache[cls] = cls.calculate(**kwargs)
|
25
|
+
|
26
|
+
return factor_cache[cls]
|
27
|
+
|
28
|
+
@classmethod
|
29
|
+
def calculate(cls, **kwargs):
|
30
|
+
# 解析操作数为实际值
|
31
|
+
resolved_operands = []
|
32
|
+
for op in operands:
|
33
|
+
if isinstance(op, type) and issubclass(op, BaseFactor):
|
34
|
+
resolved_operands.append(op.run(**kwargs))
|
35
|
+
else:
|
36
|
+
resolved_operands.append(op)
|
37
|
+
|
38
|
+
# 执行运算函数
|
39
|
+
return func(*resolved_operands)
|
40
|
+
|
41
|
+
return CombinedFactor
|
42
|
+
|
43
|
+
@staticmethod
|
44
|
+
def add(left, right):
|
45
|
+
return OP._create_combined_class([left, right], lambda a, b: a + b)
|
46
|
+
|
47
|
+
@staticmethod
|
48
|
+
def sub(left, right):
|
49
|
+
return OP._create_combined_class([left, right], lambda a, b: a - b)
|
50
|
+
|
51
|
+
@staticmethod
|
52
|
+
def mul(left, right):
|
53
|
+
return OP._create_combined_class([left, right], lambda a, b: a * b)
|
54
|
+
|
55
|
+
@staticmethod
|
56
|
+
def div(left, right):
|
57
|
+
return OP._create_combined_class([left, right], lambda a, b: a / b)
|
58
|
+
|
59
|
+
@staticmethod
|
60
|
+
def pow(left, right):
|
61
|
+
return OP._create_combined_class([left, right], lambda a, b: a ** b)
|
62
|
+
|
63
|
+
@staticmethod
|
64
|
+
def rpow(left, right):
|
65
|
+
return OP._create_combined_class([left, right], lambda a, b: b ** a)
|
66
|
+
|
67
|
+
@staticmethod
|
68
|
+
def sin(factor):
|
69
|
+
return OP._create_combined_class([factor], lambda a: math.sin(a))
|
70
|
+
|
71
|
+
@staticmethod
|
72
|
+
def cos(factor):
|
73
|
+
return OP._create_combined_class([factor], lambda a: math.cos(a))
|
74
|
+
|
75
|
+
@staticmethod
|
76
|
+
def tan(factor):
|
77
|
+
return OP._create_combined_class([factor], lambda a: math.tan(a))
|
78
|
+
|
79
|
+
@staticmethod
|
80
|
+
def exp(factor):
|
81
|
+
return OP._create_combined_class([factor], lambda a: math.exp(a))
|
82
|
+
|
83
|
+
@staticmethod
|
84
|
+
def ln(factor):
|
85
|
+
return OP._create_combined_class([factor], lambda a: math.log(a))
|
86
|
+
|
87
|
+
@staticmethod
|
88
|
+
def log(factor, base=math.e):
|
89
|
+
return OP._create_combined_class([factor, base], lambda a, b: math.log(a, b))
|
90
|
+
|
91
|
+
@staticmethod
|
92
|
+
def sqrt(factor):
|
93
|
+
return OP._create_combined_class([factor], lambda a: math.sqrt(a))
|
94
|
+
|
95
|
+
@staticmethod
|
96
|
+
def abs(factor):
|
97
|
+
return OP._create_combined_class([factor], lambda a: abs(a))
|
98
|
+
|
99
|
+
@staticmethod
|
100
|
+
def neg(factor):
|
101
|
+
return OP._create_combined_class([factor], lambda a: -a)
|
102
|
+
|
103
|
+
|
104
|
+
class FactorMeta(ABCMeta):
|
105
|
+
def __add__(cls, other):
|
106
|
+
return OP.add(cls, other)
|
107
|
+
|
108
|
+
def __sub__(cls, other):
|
109
|
+
return OP.sub(cls, other)
|
110
|
+
|
111
|
+
def __mul__(cls, other):
|
112
|
+
return OP.mul(cls, other)
|
113
|
+
|
114
|
+
def __truediv__(cls, other):
|
115
|
+
return OP.div(cls, other)
|
116
|
+
|
117
|
+
def __pow__(cls, other):
|
118
|
+
return OP.pow(cls, other)
|
119
|
+
|
120
|
+
def __radd__(cls, other):
|
121
|
+
return OP.add(other, cls)
|
122
|
+
|
123
|
+
def __rsub__(cls, other):
|
124
|
+
return OP.sub(other, cls)
|
125
|
+
|
126
|
+
def __rmul__(cls, other):
|
127
|
+
return OP.mul(other, cls)
|
128
|
+
|
129
|
+
def __rtruediv__(cls, other):
|
130
|
+
return OP.div(other, cls)
|
131
|
+
|
132
|
+
def __rpow__(cls, other):
|
133
|
+
return OP.rpow(other, cls)
|
134
|
+
|
135
|
+
def __neg__(cls):
|
136
|
+
return OP.neg(cls)
|
137
|
+
|
138
|
+
def sin(cls):
|
139
|
+
return OP.sin(cls)
|
140
|
+
|
141
|
+
def cos(cls):
|
142
|
+
return OP.cos(cls)
|
143
|
+
|
144
|
+
def tan(cls):
|
145
|
+
return OP.tan(cls)
|
146
|
+
|
147
|
+
def exp(cls):
|
148
|
+
return OP.exp(cls)
|
149
|
+
|
150
|
+
def ln(cls):
|
151
|
+
return OP.ln(cls)
|
152
|
+
|
153
|
+
def sqrt(cls):
|
154
|
+
return OP.sqrt(cls)
|
155
|
+
|
156
|
+
def abs(cls):
|
157
|
+
return OP.abs(cls)
|
158
|
+
|
159
|
+
def neg(cls):
|
160
|
+
return OP.neg(cls)
|
161
|
+
|
162
|
+
def log(cls, base=math.e):
|
163
|
+
return OP.log(cls, base)
|
164
|
+
|
165
|
+
def pow(cls, exponent):
|
166
|
+
return OP.pow(cls, exponent)
|
167
|
+
|
168
|
+
def __repr__(self):
|
169
|
+
return self.__name__
|
170
|
+
|
171
|
+
__str__ = __repr__
|
172
|
+
|
173
|
+
|
174
|
+
class BaseFactor(metaclass=FactorMeta):
|
175
|
+
fields: list[Field]
|
176
|
+
|
177
|
+
def __init_subclass__(cls, **kwargs):
|
178
|
+
assert hasattr(cls, 'fields'), \
|
179
|
+
f"{cls.__name__}必须实现类属性fields"
|
180
|
+
|
181
|
+
for field in cls.fields:
|
182
|
+
assert isinstance(field, Field), \
|
183
|
+
f"{cls.__name__}类属性fields元素必须为Field, 实际为{type(field)}"
|
184
|
+
|
185
|
+
@classmethod
|
186
|
+
def run(cls, **kwargs):
|
187
|
+
kwargs["data"] = kwargs["query"](fields=cls.fields, stock=kwargs["stock"])
|
188
|
+
if not factor_cache.get(cls):
|
189
|
+
factor_cache[cls] = inject(cls.calculate, **kwargs)
|
190
|
+
|
191
|
+
return factor_cache[cls]
|
192
|
+
|
193
|
+
@classmethod
|
194
|
+
@abstractmethod
|
195
|
+
def calculate(cls, **kwargs):
|
196
|
+
"""计算因子值,子类需要重写此方法"""
|
197
|
+
raise NotImplementedError("因子必须实现calculate方法")
|
198
|
+
|
199
|
+
|
200
|
+
def clear_cache():
|
201
|
+
global factor_cache
|
202
|
+
factor_cache.clear()
|
203
|
+
|
204
|
+
|
205
|
+
__all__ = ["BaseFactor", "OP", "clear_cache"]
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import pandas as pd
|
2
|
+
|
3
|
+
from quantification import Injection, Use
|
4
|
+
|
5
|
+
from .factor import BaseFactor, clear_cache
|
6
|
+
|
7
|
+
|
8
|
+
class FactorsInjection(Injection):
|
9
|
+
name = 'factors'
|
10
|
+
|
11
|
+
def __init__(self, **kwargs: type[BaseFactor]):
|
12
|
+
self.factors = kwargs
|
13
|
+
|
14
|
+
def __call__(self, **kwargs):
|
15
|
+
df = pd.DataFrame(columns=list(self.factors.keys()))
|
16
|
+
trader = kwargs['trader']
|
17
|
+
assert hasattr(trader, 'stocks'), \
|
18
|
+
"只有采用股票池的trader可以使用use_factors"
|
19
|
+
|
20
|
+
clear_cache()
|
21
|
+
for stock in trader.stocks:
|
22
|
+
row = {}
|
23
|
+
for (factor_name, factor_class) in self.factors.items():
|
24
|
+
calculate_params = {
|
25
|
+
**kwargs,
|
26
|
+
"stock": stock
|
27
|
+
}
|
28
|
+
row[factor_name] = factor_class.run(**calculate_params)
|
29
|
+
|
30
|
+
df.loc[str(stock)] = row
|
31
|
+
clear_cache()
|
32
|
+
|
33
|
+
return df
|
34
|
+
|
35
|
+
|
36
|
+
use_factors = Use(FactorsInjection)
|
37
|
+
|
38
|
+
__all__ = ["use_factors"]
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Metadata-Version: 2.3
|
2
|
+
Name: quantification
|
3
|
+
Version: 0.1.1
|
4
|
+
Summary:
|
5
|
+
License: MIT
|
6
|
+
Author: realhuhu
|
7
|
+
Author-email: 2661467107@qq.com
|
8
|
+
Requires-Python: >=3.13,<4.0
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
11
|
+
Classifier: Programming Language :: Python :: 3.13
|
12
|
+
Requires-Dist: akshare (>=1.17.22,<2.0.0)
|
13
|
+
Requires-Dist: loguru (>=0.7.3,<0.8.0)
|
14
|
+
Requires-Dist: pydantic (>=2.11.7,<3.0.0)
|
15
|
+
Requires-Dist: pydantic-settings (>=2.10.1,<3.0.0)
|
16
|
+
Requires-Dist: tushare (>=1.4.21,<2.0.0)
|
17
|
+
Description-Content-Type: text/markdown
|
18
|
+
|
19
|
+
|
@@ -0,0 +1,76 @@
|
|
1
|
+
quantification/__init__.py,sha256=Nn2mwSLhx60RulbhdALzpIEUw_gtYijRCPSPpYa2BTs,65
|
2
|
+
quantification/api/__init__.py,sha256=wXUAnwI7wYs8b-2NwLzqOQ6pOib1SFc7bP10nQ0clGw,92
|
3
|
+
quantification/api/akshare/__init__.py,sha256=WBrsduqdDie2icx8uIPHGPk9doTDy1ORZkUmbf2aHFI,33
|
4
|
+
quantification/api/akshare/akshare.py,sha256=vWP9VibT3ns30zXVM_UsKb5K_7SPDPwAfY7ZNuIIt1M,374
|
5
|
+
quantification/api/akshare/delegate/__init__.py,sha256=J7qXPeuL6oAcI3xyy77rcIRzcxcJnHmx_uEq1DS_kAI,266
|
6
|
+
quantification/api/akshare/delegate/macro_china_fdi.py,sha256=EEpJsNlR01St8om9gUy2TJ9LTn4st9lDZ0zuxRZbhPc,1561
|
7
|
+
quantification/api/akshare/delegate/macro_china_lpr.py,sha256=qlE1fokuKXrcSvmCbIpwxzeI0tmWwoBVFwWxphl0dgU,1263
|
8
|
+
quantification/api/akshare/delegate/macro_china_qyspjg.py,sha256=Ym--YIZCJs_RG_bNku1Eb64HHqvJw8dHe4fCIVxaIJg,1933
|
9
|
+
quantification/api/akshare/delegate/macro_china_shrzgm.py,sha256=kF-AiFz8Y7aOlHTR7FFOT7N96GsMnmIL_m-N7q56WMQ,1750
|
10
|
+
quantification/api/akshare/delegate/macro_cnbs.py,sha256=1F-m-pOe2XFFsFig7raGnsmpOsfqUJ0q7mMn8sBv594,1543
|
11
|
+
quantification/api/akshare/delegate/stock_zh_a_hist.py,sha256=ldWQ4cwK2XNmWy02BOSolh6UJeCJdenCAoWPzRv4N2g,2782
|
12
|
+
quantification/api/akshare/setting.py,sha256=78GuveWzLDC1lJXuthOQfIY26AF7fxugF7NYb5YbAMM,79
|
13
|
+
quantification/api/api.py,sha256=4R_5ca1w7HH2RM1yPtGmwG3Xn5KBtVBxzEZDtjY9pYw,223
|
14
|
+
quantification/api/api.pyi,sha256=Oq0YkDcexlgcLRzciOKYAv348R3__ElHtPkCEt1zOBA,415
|
15
|
+
quantification/api/tushare/__init__.py,sha256=EAf2oOdgF0r-P86v5IyFC5heDeY8r0hUT0mdFBxScO8,31
|
16
|
+
quantification/api/tushare/delegate/__init__.py,sha256=6z-rB6cPJiamHLstVHShjcZQ8025Uap2dEakr_-lfDc,305
|
17
|
+
quantification/api/tushare/delegate/balancesheet.py,sha256=bkEC5LkXeXQin5Wf4JGy6vXBYbdAVeorelRUfjnMIvM,2951
|
18
|
+
quantification/api/tushare/delegate/cashflow.py,sha256=bjw-v6jlw_b8iXS0sBIXe6qCt3U-QHdxhH7N4ihhVY8,1140
|
19
|
+
quantification/api/tushare/delegate/common.py,sha256=gva4TF98iOpxkEcVKDFviB2757OuC0DSrd0BuPFeb1A,2114
|
20
|
+
quantification/api/tushare/delegate/daily_basic.py,sha256=evNtUglWKqnzOP3IaRwe3DWcKdaecTeLR8Q4x1saHJQ,2625
|
21
|
+
quantification/api/tushare/delegate/fina_indicator.py,sha256=dgjrbVLwzzF9lToGtK5cqyFM2irHl2H2yAoE3-ytepM,507
|
22
|
+
quantification/api/tushare/delegate/income.py,sha256=AgQgttBFe2WTzj5Zi1J8APVw9OW9adWA3VVqmUccQQ8,1198
|
23
|
+
quantification/api/tushare/delegate/index_daily.py,sha256=N_qv297T84N-0Gr-4gjF_cYr4KJzzRlMP7GChQ6RzHo,2065
|
24
|
+
quantification/api/tushare/delegate/pro_bar.py,sha256=HEb8jmJu391HyBGI-UeXamr9wtW4Uv7vUQkKEXHWn4c,2759
|
25
|
+
quantification/api/tushare/setting.py,sha256=_m3dkCixA7ksT71l0_33EoRA9CflzWKSXuIBlRNJz5I,143
|
26
|
+
quantification/api/tushare/tushare.py,sha256=a7xP4dsrcVx2KwIXOTkdMQ3NqfWXYORF839OWej-Mls,428
|
27
|
+
quantification/core/__init__.py,sha256=BupBVf31-0qt9XLGDwrqpOyQ3xNSKLlX-l8y1dSAvz8,218
|
28
|
+
quantification/core/asset/__init__.py,sha256=9XJO0BkH2kz7fuWAxdokezzPxryBQ-gnBWf_RCbHVEQ,189
|
29
|
+
quantification/core/asset/base_asset.py,sha256=uML50ffLFWwhg6RYmLmvwYOjl4eLA9pKC7_o5EFSnY4,2157
|
30
|
+
quantification/core/asset/base_broker.py,sha256=dt1Otu_0_SlHssut1YhNYsg8GTqkD1iattOM7-YfuIg,1184
|
31
|
+
quantification/core/asset/broker.py,sha256=7aZ5BVMvyGXcH0F698Nq9j0gcObNuoa-PmDhXCA8iAU,4179
|
32
|
+
quantification/core/asset/cash.py,sha256=W6mA6tZwb0bzgcKbwxzomoYxgl4EJMhHc-VS-P36WBo,1970
|
33
|
+
quantification/core/asset/stock.py,sha256=D6e9bFTbyhmMS1dDpopr1iUpVm-WEB7gAcmDQI5jxVo,7390
|
34
|
+
quantification/core/cache.py,sha256=bHsmG9QNKbbsj57aVs0tsrlPpfvXku33pgqzAES5xVs,3099
|
35
|
+
quantification/core/configure.py,sha256=xf_Gm2oXxywrg_YKOEZEURumm7dISJ4kU3v7I00XF2I,491
|
36
|
+
quantification/core/data/__init__.py,sha256=1yC959DoXkiidfv8YEcFTe4xH76gb522nCvYAN9J3A4,147
|
37
|
+
quantification/core/data/base_api.py,sha256=KT5zrfLlvoNklsotMDdsINsEk-8nX5TuYVKV6_RSKic,3596
|
38
|
+
quantification/core/data/base_delegate.py,sha256=AWIAU_c36iD66ekCbnqRbjRxa7Do4Dd13f7pgFKN3yw,2342
|
39
|
+
quantification/core/data/field.py,sha256=1GGhgLtmZCtUR7Fpgmz94H5Vgo1s8Wr-xI8n1zS8Fbc,7101
|
40
|
+
quantification/core/data/panel.py,sha256=irawskWNASYSASYJWWF3_WL5dq4PET1MbzgDIXQ6MFk,1714
|
41
|
+
quantification/core/env.py,sha256=9YJP3E3jDYaWrsTAv2qI9HKfLfFs8GDx-1KsG6Ikxyw,473
|
42
|
+
quantification/core/logger.py,sha256=v2l0WHd45eG8IiH4tsSgsQn2hTBoWGxT1q-xpsok1KU,2464
|
43
|
+
quantification/core/strategy/__init__.py,sha256=vkL-0l1_swSJ6mgOPHsINE4DWQRFIDMRj1zuEYT6LRc,144
|
44
|
+
quantification/core/strategy/base_strategy.py,sha256=sgVVNiQMQaGtWALvbxg3jqaos7C_AAj2P-kY6bXVwWg,1650
|
45
|
+
quantification/core/strategy/base_trigger.py,sha256=hsrY9dnZc_pV5C63TECJau4JJNAe6pkmnun_JW5AwJQ,1653
|
46
|
+
quantification/core/strategy/base_use.py,sha256=8ipHpednFysAExdXNTvesq_Q9b5mC65AIK9wd7B2scA,1964
|
47
|
+
quantification/core/trader/__init__.py,sha256=tMT761d9KVcaum2R8PmZQ8VO5WqBDF5eNgvJsd_1w_w,208
|
48
|
+
quantification/core/trader/base_order.py,sha256=pqizRy8cmxXpPu8MjIv7ge4rZ6RanT5Q30OWebz6omk,1090
|
49
|
+
quantification/core/trader/base_stage.py,sha256=NZFA5voermhPiGlDvUXwtwAqUh_p_LSvkE1rzSJ7lUo,265
|
50
|
+
quantification/core/trader/base_trader.py,sha256=WImI4NNCztC17-bbRkO0ToJzX14q-UptbNsYQnvThvs,6585
|
51
|
+
quantification/core/trader/collector.py,sha256=cxfrNGlLCUMviQBR3tE1d_Tau4Pra4I-Em2DTczH5Cc,1185
|
52
|
+
quantification/core/trader/order.py,sha256=WC5HSPLA3h4Mdte9ImW3TK325H5MTjJ00c1Sz3-o0lU,513
|
53
|
+
quantification/core/trader/portfolio.py,sha256=14kGSrhbRj6M503PR9WKOJ6qwanod0ZN5WFw4wBm3Ro,2076
|
54
|
+
quantification/core/trader/query.py,sha256=sQTTawWPddDrqCaTR0rpZIxVxkApZk0FpSAyHRieMxM,743
|
55
|
+
quantification/core/trader/report.py,sha256=ZJT-72Q_1l0pAmUf8Yw6z0oPfmZeEcEl12bwkUUWkpg,1820
|
56
|
+
quantification/core/util.py,sha256=d4BHNbxN0owgpRRvl_TvGgd1KdTuzMU2SIlEPgRrptk,6174
|
57
|
+
quantification/default/__init__.py,sha256=9QtkAoHOnlLAuuzU7bQvZxYVkYJiBBaLZ7erVmknra8,114
|
58
|
+
quantification/default/stage/__init__.py,sha256=jawaXjxZSFQc6FTLi-WDZkoGop5r3VsLupbI-azngZs,36
|
59
|
+
quantification/default/stage/cn_stock.py,sha256=y2f0eC6mtrHDM6U7_Fc4J9E6V1DyFkneWmQhwSZJSp0,511
|
60
|
+
quantification/default/strategy/__init__.py,sha256=bDxs4SHJaEzHSwh_CRWjfYcmfrGp7afFM6SnLCLg6tY,23
|
61
|
+
quantification/default/strategy/simple/__init__.py,sha256=GFL3Mhz_nPQ_dezFzpDpHI-Ll31xm7h73UyWYscCoeg,38
|
62
|
+
quantification/default/strategy/simple/strategy.py,sha256=XofYWICA9je4EVcAgYET_zptpnAremS7REN3rHkrwtg,125
|
63
|
+
quantification/default/trader/__init__.py,sha256=MA5Lv4KsZBWFUXud2-2H1433vSESuI4XMcasyXduw8g,48
|
64
|
+
quantification/default/trader/a_factor/__init__.py,sha256=O8NryRPurWCV_HxQmwmTu_rfrLnqdnbYTeoMPeA-qTQ,35
|
65
|
+
quantification/default/trader/a_factor/trader.py,sha256=a_3krepBUbXGbVJa7iiHQRXDDpkvFuZm0ZaaLRi-6aM,623
|
66
|
+
quantification/default/trader/simple/__init__.py,sha256=Lu8uzUKZJ_b1RfRFN534fe-JMSm9KRmIGg3N1Kilbtc,34
|
67
|
+
quantification/default/trader/simple/trader.py,sha256=JTrnIcn2qFhRXXJAfAZKnBTrkc5X5UNxAOgMkbBnPTQ,117
|
68
|
+
quantification/default/trigger/__init__.py,sha256=iwCQBiBWo22UHkmSguA7xMchEoQnb3akgIVODFGH1sg,22
|
69
|
+
quantification/default/trigger/trigger.py,sha256=GHvGufTO7PeH5aeIEHixe160HbGRKw135IUa550wKY4,1387
|
70
|
+
quantification/default/use/__init__.py,sha256=YwX1DEttgBtoVQsy2sqVQaRoPxG0QDGlksVvM7FfoFE,22
|
71
|
+
quantification/default/use/factors/__init__.py,sha256=YZYaTmhCgquq6HBkErKzSjObw6HoJ3vWqzvELWkVkTA,65
|
72
|
+
quantification/default/use/factors/factor.py,sha256=CVBF5dwM1Jaeevn-79NzqEk9_Vw3DDP3oPKC3Q4bWBg,5535
|
73
|
+
quantification/default/use/factors/use.py,sha256=4uZBd8buKTRv1BxcwoUaDdNig_LPDBP68cQK-uCWI3U,1018
|
74
|
+
quantification-0.1.1.dist-info/METADATA,sha256=elN55zYyS5-Fk1pU5zwy9lkuvIWnUk-BZRAX9MS2BU4,566
|
75
|
+
quantification-0.1.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
76
|
+
quantification-0.1.1.dist-info/RECORD,,
|
@@ -1,13 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: quantification
|
3
|
-
Version: 0.1.0
|
4
|
-
Summary:
|
5
|
-
Author: realhuhu
|
6
|
-
Author-email: 2661467107@qq.com
|
7
|
-
Requires-Python: >=3.10,<4.0
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
9
|
-
Classifier: Programming Language :: Python :: 3.10
|
10
|
-
Classifier: Programming Language :: Python :: 3.11
|
11
|
-
Description-Content-Type: text/markdown
|
12
|
-
|
13
|
-
|
@@ -1,4 +0,0 @@
|
|
1
|
-
quantification/__init__.py,sha256=ulyKvW97VSDk7WEVVvH2wsVupG-3SdovHnfdn0Ut4cY,46
|
2
|
-
quantification-0.1.0.dist-info/METADATA,sha256=yEm-wvyZdy8r5w_-XRwOGbZ-Ecz5Ui8LJ-wCOpdikWg,338
|
3
|
-
quantification-0.1.0.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
4
|
-
quantification-0.1.0.dist-info/RECORD,,
|