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.
Files changed (78) hide show
  1. quantification/__init__.py +3 -2
  2. quantification/api/__init__.py +3 -0
  3. quantification/api/akshare/__init__.py +1 -0
  4. quantification/api/akshare/akshare.py +17 -0
  5. quantification/api/akshare/delegate/__init__.py +6 -0
  6. quantification/api/akshare/delegate/macro_china_fdi.py +46 -0
  7. quantification/api/akshare/delegate/macro_china_lpr.py +43 -0
  8. quantification/api/akshare/delegate/macro_china_qyspjg.py +51 -0
  9. quantification/api/akshare/delegate/macro_china_shrzgm.py +47 -0
  10. quantification/api/akshare/delegate/macro_cnbs.py +47 -0
  11. quantification/api/akshare/delegate/stock_zh_a_hist.py +77 -0
  12. quantification/api/akshare/setting.py +5 -0
  13. quantification/api/api.py +11 -0
  14. quantification/api/api.pyi +21 -0
  15. quantification/api/tushare/__init__.py +1 -0
  16. quantification/api/tushare/delegate/__init__.py +7 -0
  17. quantification/api/tushare/delegate/balancesheet.py +66 -0
  18. quantification/api/tushare/delegate/cashflow.py +29 -0
  19. quantification/api/tushare/delegate/common.py +64 -0
  20. quantification/api/tushare/delegate/daily_basic.py +81 -0
  21. quantification/api/tushare/delegate/fina_indicator.py +20 -0
  22. quantification/api/tushare/delegate/income.py +34 -0
  23. quantification/api/tushare/delegate/index_daily.py +61 -0
  24. quantification/api/tushare/delegate/pro_bar.py +80 -0
  25. quantification/api/tushare/setting.py +5 -0
  26. quantification/api/tushare/tushare.py +17 -0
  27. quantification/core/__init__.py +9 -0
  28. quantification/core/asset/__init__.py +6 -0
  29. quantification/core/asset/base_asset.py +96 -0
  30. quantification/core/asset/base_broker.py +42 -0
  31. quantification/core/asset/broker.py +108 -0
  32. quantification/core/asset/cash.py +75 -0
  33. quantification/core/asset/stock.py +268 -0
  34. quantification/core/cache.py +93 -0
  35. quantification/core/configure.py +15 -0
  36. quantification/core/data/__init__.py +5 -0
  37. quantification/core/data/base_api.py +109 -0
  38. quantification/core/data/base_delegate.py +73 -0
  39. quantification/core/data/field.py +213 -0
  40. quantification/core/data/panel.py +42 -0
  41. quantification/core/env.py +25 -0
  42. quantification/core/logger.py +94 -0
  43. quantification/core/strategy/__init__.py +3 -0
  44. quantification/core/strategy/base_strategy.py +66 -0
  45. quantification/core/strategy/base_trigger.py +69 -0
  46. quantification/core/strategy/base_use.py +69 -0
  47. quantification/core/trader/__init__.py +7 -0
  48. quantification/core/trader/base_order.py +45 -0
  49. quantification/core/trader/base_stage.py +16 -0
  50. quantification/core/trader/base_trader.py +173 -0
  51. quantification/core/trader/collector.py +47 -0
  52. quantification/core/trader/order.py +23 -0
  53. quantification/core/trader/portfolio.py +72 -0
  54. quantification/core/trader/query.py +29 -0
  55. quantification/core/trader/report.py +76 -0
  56. quantification/core/util.py +181 -0
  57. quantification/default/__init__.py +5 -0
  58. quantification/default/stage/__init__.py +1 -0
  59. quantification/default/stage/cn_stock.py +23 -0
  60. quantification/default/strategy/__init__.py +1 -0
  61. quantification/default/strategy/simple/__init__.py +1 -0
  62. quantification/default/strategy/simple/strategy.py +8 -0
  63. quantification/default/trader/__init__.py +2 -0
  64. quantification/default/trader/a_factor/__init__.py +1 -0
  65. quantification/default/trader/a_factor/trader.py +27 -0
  66. quantification/default/trader/simple/__init__.py +1 -0
  67. quantification/default/trader/simple/trader.py +8 -0
  68. quantification/default/trigger/__init__.py +1 -0
  69. quantification/default/trigger/trigger.py +63 -0
  70. quantification/default/use/__init__.py +1 -0
  71. quantification/default/use/factors/__init__.py +2 -0
  72. quantification/default/use/factors/factor.py +205 -0
  73. quantification/default/use/factors/use.py +38 -0
  74. quantification-0.1.1.dist-info/METADATA +19 -0
  75. quantification-0.1.1.dist-info/RECORD +76 -0
  76. {quantification-0.1.0.dist-info → quantification-0.1.1.dist-info}/WHEEL +1 -1
  77. quantification-0.1.0.dist-info/METADATA +0 -13
  78. quantification-0.1.0.dist-info/RECORD +0 -4
@@ -0,0 +1,8 @@
1
+ from quantification import BaseTrader
2
+
3
+
4
+ class SimpleTrader(BaseTrader):
5
+ ...
6
+
7
+
8
+ __all__ = ['SimpleTrader']
@@ -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,2 @@
1
+ from .use import use_factors
2
+ from .factor import BaseFactor,OP
@@ -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,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.6.1
2
+ Generator: poetry-core 2.1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -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,,