lixinger-python 0.3.10__py3-none-any.whl → 0.3.11__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.
lixinger/__init__.py CHANGED
@@ -42,6 +42,11 @@ from lixinger.api.cn.index import (
42
42
  from lixinger.api.cn.index import (
43
43
  get_drawdown as get_index_drawdown,
44
44
  )
45
+ from lixinger.api.cn.industry import (
46
+ get_industry_cni_margin_trading,
47
+ get_industry_sw_2021_margin_trading,
48
+ get_industry_sw_margin_trading,
49
+ )
45
50
  from lixinger.client import AsyncLixingerClient
46
51
  from lixinger.config import set_token
47
52
  from lixinger.exceptions import (
@@ -95,4 +100,8 @@ __all__ = [
95
100
  "get_index_bank_statements",
96
101
  "get_index_security_statements",
97
102
  "get_index_hybrid_statements",
103
+ # Industry margin trading
104
+ "get_industry_sw_margin_trading",
105
+ "get_industry_sw_2021_margin_trading",
106
+ "get_industry_cni_margin_trading",
98
107
  ]
@@ -0,0 +1,21 @@
1
+ """Industry-related APIs."""
2
+
3
+ from lixinger.api.cn.industry.margin_trading import (
4
+ IndustryCniMarginTradingAPI,
5
+ IndustrySw2021MarginTradingAPI,
6
+ IndustrySwMarginTradingAPI,
7
+ get_industry_cni_margin_trading,
8
+ get_industry_sw_2021_margin_trading,
9
+ get_industry_sw_margin_trading,
10
+ )
11
+
12
+ __all__ = [
13
+ # API Classes
14
+ "IndustryCniMarginTradingAPI",
15
+ "IndustrySw2021MarginTradingAPI",
16
+ "IndustrySwMarginTradingAPI",
17
+ # Functional APIs
18
+ "get_industry_cni_margin_trading",
19
+ "get_industry_sw_2021_margin_trading",
20
+ "get_industry_sw_margin_trading",
21
+ ]
@@ -0,0 +1,33 @@
1
+ """Industry margin trading and securities lending APIs.
2
+
3
+ This module provides access to industry margin trading APIs by industry
4
+ classification system:
5
+
6
+ - sw: 申万行业 (Shenwan / SW)
7
+ - sw_2021: 申万2021版行业 (Shenwan 2021)
8
+ - cni: 国证行业 (CNI)
9
+ """
10
+
11
+ from lixinger.api.cn.industry.margin_trading.cni import (
12
+ IndustryCniMarginTradingAPI,
13
+ get_industry_cni_margin_trading,
14
+ )
15
+ from lixinger.api.cn.industry.margin_trading.sw import (
16
+ IndustrySwMarginTradingAPI,
17
+ get_industry_sw_margin_trading,
18
+ )
19
+ from lixinger.api.cn.industry.margin_trading.sw_2021 import (
20
+ IndustrySw2021MarginTradingAPI,
21
+ get_industry_sw_2021_margin_trading,
22
+ )
23
+
24
+ __all__ = [
25
+ # API Classes
26
+ "IndustryCniMarginTradingAPI",
27
+ "IndustrySw2021MarginTradingAPI",
28
+ "IndustrySwMarginTradingAPI",
29
+ # Functional APIs
30
+ "get_industry_cni_margin_trading",
31
+ "get_industry_sw_2021_margin_trading",
32
+ "get_industry_sw_margin_trading",
33
+ ]
@@ -0,0 +1,129 @@
1
+ """Industry (国证) margin trading and securities lending APIs."""
2
+
3
+ from typing import Any
4
+
5
+ import pandas as pd
6
+
7
+ from lixinger.api.base import BaseAPI
8
+ from lixinger.models.cn.industry.margin_trading.cni import IndustryCniMarginTrading
9
+ from lixinger.utils.api import api
10
+ from lixinger.utils.dataframe import get_response_df
11
+
12
+
13
+ class IndustryCniMarginTradingAPI(BaseAPI):
14
+ """国证行业融资融券 API."""
15
+
16
+ async def get_margin_trading(
17
+ self,
18
+ stock_code: str,
19
+ start_date: str,
20
+ end_date: str | None = None,
21
+ limit: int | None = None,
22
+ ) -> pd.DataFrame:
23
+ """获取国证行业融资融券数据.
24
+
25
+ 获取国证(cni)行业每日的融资融券数据. 可按行业代码批量查询返回每日行业融资买入金额、
26
+ 融资偿还金额、融资净买入金额、融资余额、融券卖出金额、融券偿还金额、
27
+ 融券净卖出金额、融券余额等数据. 当用户想了解国证(cni)行业每日的融资融券余额
28
+ 以及变动情况、观察杠杆资金进出节奏或分析做空力量时, 调用此接口.
29
+
30
+ API Endpoint: /cn/industry/margin-trading-and-securities-lending/cni
31
+ API Method: POST
32
+ API Doc: https://www.lixinger.com/open/api/doc?api-key=cn/industry/margin-trading-and-securities-lending/cni
33
+
34
+ Args:
35
+ stock_code: 国证行业代码, 请参考行业信息API获取合法的stockCode
36
+ start_date: 信息起始时间 (YYYY-MM-DD, 北京时间), 开始和结束的时间间隔不超过10年
37
+ end_date: 结束信息日期 (YYYY-MM-DD, 北京时间), 默认为今天结束
38
+ limit: 返回最近数据的数量
39
+
40
+ Returns:
41
+ DataFrame containing margin trading data with columns:
42
+
43
+ - date: 数据时间
44
+ - stock_code: 行业代码
45
+ - financing_purchase_amount: 融资买入金额
46
+ - financing_repayment_amount: 融资偿还金额
47
+ - financing_net_purchase_amount: 融资净买入金额
48
+ - financing_balance: 融资余额
49
+ - securities_sell_amount: 融券卖出金额
50
+ - securities_repayment_amount: 融券偿还金额
51
+ - securities_net_sell_amount: 融券净卖出金额
52
+ - securities_balance: 融券余额
53
+ - financing_balance_to_market_cap: 融资余额占流通市值比例
54
+ - securities_balance_to_market_cap: 融券余额占流通市值比例
55
+
56
+ Example:
57
+ 获取国证行业融资融券数据::
58
+
59
+ from lixinger import AsyncLixingerClient
60
+
61
+ async with AsyncLixingerClient() as client:
62
+ df = await client.cn_industry.margin_trading.cni.get_margin_trading(
63
+ stock_code="C07",
64
+ start_date="2025-06-13",
65
+ end_date="2026-06-13",
66
+ )
67
+ print(df)
68
+
69
+ """
70
+ payload: dict[str, Any] = {
71
+ "stockCode": stock_code,
72
+ "startDate": start_date,
73
+ }
74
+ if end_date is not None:
75
+ payload["endDate"] = end_date
76
+ if limit is not None:
77
+ payload["limit"] = limit
78
+
79
+ data = await self._request(
80
+ "POST",
81
+ "/cn/industry/margin-trading-and-securities-lending/cni",
82
+ json=payload,
83
+ )
84
+ for item in data:
85
+ item["stockCode"] = stock_code
86
+ return get_response_df(data, IndustryCniMarginTrading)
87
+
88
+
89
+ # Functional API instance
90
+ _api_instance = IndustryCniMarginTradingAPI()
91
+
92
+
93
+ @api
94
+ async def get_industry_cni_margin_trading(
95
+ stock_code: str,
96
+ start_date: str,
97
+ end_date: str | None = None,
98
+ limit: int | None = None,
99
+ ) -> pd.DataFrame:
100
+ """获取国证行业融资融券数据.
101
+
102
+ Args:
103
+ stock_code: 国证行业代码
104
+ start_date: 信息起始时间 (YYYY-MM-DD)
105
+ end_date: 结束信息日期 (YYYY-MM-DD)
106
+ limit: 返回最近数据的数量
107
+
108
+ Returns:
109
+ DataFrame containing cni industry margin trading data
110
+
111
+ Example:
112
+ 获取国证行业融资融券数据::
113
+
114
+ from lixinger import get_industry_cni_margin_trading
115
+
116
+ df = await get_industry_cni_margin_trading(
117
+ stock_code="C07",
118
+ start_date="2025-06-13",
119
+ end_date="2026-06-13",
120
+ )
121
+ print(df)
122
+
123
+ """
124
+ return await _api_instance.get_margin_trading(
125
+ stock_code=stock_code,
126
+ start_date=start_date,
127
+ end_date=end_date,
128
+ limit=limit,
129
+ )
@@ -0,0 +1,129 @@
1
+ """Industry (申万) margin trading and securities lending APIs."""
2
+
3
+ from typing import Any
4
+
5
+ import pandas as pd
6
+
7
+ from lixinger.api.base import BaseAPI
8
+ from lixinger.models.cn.industry.margin_trading.sw import IndustrySwMarginTrading
9
+ from lixinger.utils.api import api
10
+ from lixinger.utils.dataframe import get_response_df
11
+
12
+
13
+ class IndustrySwMarginTradingAPI(BaseAPI):
14
+ """申万行业融资融券 API."""
15
+
16
+ async def get_margin_trading(
17
+ self,
18
+ stock_code: str,
19
+ start_date: str,
20
+ end_date: str | None = None,
21
+ limit: int | None = None,
22
+ ) -> pd.DataFrame:
23
+ """获取申万行业融资融券数据.
24
+
25
+ 获取申万(sw)行业每日的融资融券数据. 可按行业代码批量查询返回每日行业融资买入金额、
26
+ 融资偿还金额、融资净买入金额、融资余额、融券卖出金额、融券偿还金额、
27
+ 融券净卖出金额、融券余额等数据. 当用户想了解申万(sw)行业每日的融资融券余额
28
+ 以及变动情况、观察杠杆资金进出节奏或分析做空力量时, 调用此接口.
29
+
30
+ API Endpoint: /cn/industry/margin-trading-and-securities-lending/sw
31
+ API Method: POST
32
+ API Doc: https://www.lixinger.com/open/api/doc?api-key=cn/industry/margin-trading-and-securities-lending/sw
33
+
34
+ Args:
35
+ stock_code: 申万行业代码, 请参考行业信息API获取合法的stockCode
36
+ start_date: 信息起始时间 (YYYY-MM-DD, 北京时间), 开始和结束的时间间隔不超过10年
37
+ end_date: 结束信息日期 (YYYY-MM-DD, 北京时间), 默认为今天结束
38
+ limit: 返回最近数据的数量
39
+
40
+ Returns:
41
+ DataFrame containing margin trading data with columns:
42
+
43
+ - date: 数据时间
44
+ - stock_code: 行业代码
45
+ - financing_purchase_amount: 融资买入金额
46
+ - financing_repayment_amount: 融资偿还金额
47
+ - financing_net_purchase_amount: 融资净买入金额
48
+ - financing_balance: 融资余额
49
+ - securities_sell_amount: 融券卖出金额
50
+ - securities_repayment_amount: 融券偿还金额
51
+ - securities_net_sell_amount: 融券净卖出金额
52
+ - securities_balance: 融券余额
53
+ - financing_balance_to_market_cap: 融资余额占流通市值比例
54
+ - securities_balance_to_market_cap: 融券余额占流通市值比例
55
+
56
+ Example:
57
+ 获取申万行业融资融券数据::
58
+
59
+ from lixinger import AsyncLixingerClient
60
+
61
+ async with AsyncLixingerClient() as client:
62
+ df = await client.cn_industry.margin_trading.sw.get_margin_trading(
63
+ stock_code="490000",
64
+ start_date="2025-06-13",
65
+ end_date="2026-06-13",
66
+ )
67
+ print(df)
68
+
69
+ """
70
+ payload: dict[str, Any] = {
71
+ "stockCode": stock_code,
72
+ "startDate": start_date,
73
+ }
74
+ if end_date is not None:
75
+ payload["endDate"] = end_date
76
+ if limit is not None:
77
+ payload["limit"] = limit
78
+
79
+ data = await self._request(
80
+ "POST",
81
+ "/cn/industry/margin-trading-and-securities-lending/sw",
82
+ json=payload,
83
+ )
84
+ for item in data:
85
+ item["stockCode"] = stock_code
86
+ return get_response_df(data, IndustrySwMarginTrading)
87
+
88
+
89
+ # Functional API instance
90
+ _api_instance = IndustrySwMarginTradingAPI()
91
+
92
+
93
+ @api
94
+ async def get_industry_sw_margin_trading(
95
+ stock_code: str,
96
+ start_date: str,
97
+ end_date: str | None = None,
98
+ limit: int | None = None,
99
+ ) -> pd.DataFrame:
100
+ """获取申万行业融资融券数据.
101
+
102
+ Args:
103
+ stock_code: 申万行业代码
104
+ start_date: 信息起始时间 (YYYY-MM-DD)
105
+ end_date: 结束信息日期 (YYYY-MM-DD)
106
+ limit: 返回最近数据的数量
107
+
108
+ Returns:
109
+ DataFrame containing sw industry margin trading data
110
+
111
+ Example:
112
+ 获取申万行业融资融券数据::
113
+
114
+ from lixinger import get_industry_sw_margin_trading
115
+
116
+ df = await get_industry_sw_margin_trading(
117
+ stock_code="490000",
118
+ start_date="2025-06-13",
119
+ end_date="2026-06-13",
120
+ )
121
+ print(df)
122
+
123
+ """
124
+ return await _api_instance.get_margin_trading(
125
+ stock_code=stock_code,
126
+ start_date=start_date,
127
+ end_date=end_date,
128
+ limit=limit,
129
+ )
@@ -0,0 +1,129 @@
1
+ """Industry (申万2021版) margin trading and securities lending APIs."""
2
+
3
+ from typing import Any
4
+
5
+ import pandas as pd
6
+
7
+ from lixinger.api.base import BaseAPI
8
+ from lixinger.models.cn.industry.margin_trading.sw_2021 import IndustrySw2021MarginTrading
9
+ from lixinger.utils.api import api
10
+ from lixinger.utils.dataframe import get_response_df
11
+
12
+
13
+ class IndustrySw2021MarginTradingAPI(BaseAPI):
14
+ """申万2021版行业融资融券 API."""
15
+
16
+ async def get_margin_trading(
17
+ self,
18
+ stock_code: str,
19
+ start_date: str,
20
+ end_date: str | None = None,
21
+ limit: int | None = None,
22
+ ) -> pd.DataFrame:
23
+ """获取申万2021版行业融资融券数据.
24
+
25
+ 获取申万2021版行业每日的融资融券数据. 可按行业代码批量查询返回每日行业融资买入金额、
26
+ 融资偿还金额、融资净买入金额、融资余额、融券卖出金额、融券偿还金额、
27
+ 融券净卖出金额、融券余额等数据. 当用户想了解申万2021版行业每日的融资融券余额
28
+ 以及变动情况、观察杠杆资金进出节奏或分析做空力量时, 调用此接口.
29
+
30
+ API Endpoint: /cn/industry/margin-trading-and-securities-lending/sw_2021
31
+ API Method: POST
32
+ API Doc: https://www.lixinger.com/open/api/doc?api-key=cn/industry/margin-trading-and-securities-lending/sw_2021
33
+
34
+ Args:
35
+ stock_code: 申万2021版行业代码, 请参考行业信息API获取合法的stockCode
36
+ start_date: 信息起始时间 (YYYY-MM-DD, 北京时间), 开始和结束的时间间隔不超过10年
37
+ end_date: 结束信息日期 (YYYY-MM-DD, 北京时间), 默认为今天结束
38
+ limit: 返回最近数据的数量
39
+
40
+ Returns:
41
+ DataFrame containing margin trading data with columns:
42
+
43
+ - date: 数据时间
44
+ - stock_code: 行业代码
45
+ - financing_purchase_amount: 融资买入金额
46
+ - financing_repayment_amount: 融资偿还金额
47
+ - financing_net_purchase_amount: 融资净买入金额
48
+ - financing_balance: 融资余额
49
+ - securities_sell_amount: 融券卖出金额
50
+ - securities_repayment_amount: 融券偿还金额
51
+ - securities_net_sell_amount: 融券净卖出金额
52
+ - securities_balance: 融券余额
53
+ - financing_balance_to_market_cap: 融资余额占流通市值比例
54
+ - securities_balance_to_market_cap: 融券余额占流通市值比例
55
+
56
+ Example:
57
+ 获取申万2021版行业融资融券数据::
58
+
59
+ from lixinger import AsyncLixingerClient
60
+
61
+ async with AsyncLixingerClient() as client:
62
+ df = await client.cn_industry.margin_trading.sw_2021.get_margin_trading(
63
+ stock_code="490000",
64
+ start_date="2025-06-13",
65
+ end_date="2026-06-13",
66
+ )
67
+ print(df)
68
+
69
+ """
70
+ payload: dict[str, Any] = {
71
+ "stockCode": stock_code,
72
+ "startDate": start_date,
73
+ }
74
+ if end_date is not None:
75
+ payload["endDate"] = end_date
76
+ if limit is not None:
77
+ payload["limit"] = limit
78
+
79
+ data = await self._request(
80
+ "POST",
81
+ "/cn/industry/margin-trading-and-securities-lending/sw_2021",
82
+ json=payload,
83
+ )
84
+ for item in data:
85
+ item["stockCode"] = stock_code
86
+ return get_response_df(data, IndustrySw2021MarginTrading)
87
+
88
+
89
+ # Functional API instance
90
+ _api_instance = IndustrySw2021MarginTradingAPI()
91
+
92
+
93
+ @api
94
+ async def get_industry_sw_2021_margin_trading(
95
+ stock_code: str,
96
+ start_date: str,
97
+ end_date: str | None = None,
98
+ limit: int | None = None,
99
+ ) -> pd.DataFrame:
100
+ """获取申万2021版行业融资融券数据.
101
+
102
+ Args:
103
+ stock_code: 申万2021版行业代码
104
+ start_date: 信息起始时间 (YYYY-MM-DD)
105
+ end_date: 结束信息日期 (YYYY-MM-DD)
106
+ limit: 返回最近数据的数量
107
+
108
+ Returns:
109
+ DataFrame containing sw_2021 industry margin trading data
110
+
111
+ Example:
112
+ 获取申万2021版行业融资融券数据::
113
+
114
+ from lixinger import get_industry_sw_2021_margin_trading
115
+
116
+ df = await get_industry_sw_2021_margin_trading(
117
+ stock_code="490000",
118
+ start_date="2025-06-13",
119
+ end_date="2026-06-13",
120
+ )
121
+ print(df)
122
+
123
+ """
124
+ return await _api_instance.get_margin_trading(
125
+ stock_code=stock_code,
126
+ start_date=start_date,
127
+ end_date=end_date,
128
+ limit=limit,
129
+ )
@@ -0,0 +1,88 @@
1
+ """Industry namespace for grouping related APIs."""
2
+
3
+ from typing import Any
4
+
5
+ import pandas as pd
6
+
7
+ from lixinger.api.cn.industry.margin_trading.cni import IndustryCniMarginTradingAPI
8
+ from lixinger.api.cn.industry.margin_trading.sw import IndustrySwMarginTradingAPI
9
+ from lixinger.api.cn.industry.margin_trading.sw_2021 import (
10
+ IndustrySw2021MarginTradingAPI,
11
+ )
12
+
13
+
14
+ class IndustryMarginTradingNamespace:
15
+ """Namespace for industry margin trading APIs.
16
+
17
+ Groups all industry margin trading APIs by industry classification system:
18
+
19
+ - sw: 申万行业 (Shenwan / SW)
20
+ - sw_2021: 申万2021版行业 (Shenwan 2021)
21
+ - cni: 国证行业 (CNI)
22
+
23
+ """
24
+
25
+ def __init__(
26
+ self,
27
+ sw: IndustrySwMarginTradingAPI,
28
+ sw_2021: IndustrySw2021MarginTradingAPI,
29
+ cni: IndustryCniMarginTradingAPI,
30
+ ) -> None:
31
+ """Initialize the industry margin trading namespace.
32
+
33
+ Args:
34
+ sw: 申万行业融资融券 API
35
+ sw_2021: 申万2021版行业融资融券 API
36
+ cni: 国证行业融资融券 API
37
+
38
+ """
39
+ self.sw = sw
40
+ self.sw_2021 = sw_2021
41
+ self.cni = cni
42
+
43
+
44
+ class IndustryNamespace:
45
+ """Namespace for industry-related APIs.
46
+
47
+ This class groups all industry-related APIs under a single namespace.
48
+ Access APIs via their specific attributes:
49
+
50
+ - margin_trading: 行业融资融券 API 组
51
+ - margin_trading.sw: 申万行业
52
+ - margin_trading.sw_2021: 申万2021版行业
53
+ - margin_trading.cni: 国证行业
54
+
55
+ """
56
+
57
+ def __init__(
58
+ self,
59
+ margin_trading_sw: IndustrySwMarginTradingAPI,
60
+ margin_trading_sw_2021: IndustrySw2021MarginTradingAPI,
61
+ margin_trading_cni: IndustryCniMarginTradingAPI,
62
+ ) -> None:
63
+ """Initialize the industry namespace.
64
+
65
+ Args:
66
+ margin_trading_sw: 申万行业融资融券 API
67
+ margin_trading_sw_2021: 申万2021版行业融资融券 API
68
+ margin_trading_cni: 国证行业融资融券 API
69
+
70
+ """
71
+ self.margin_trading = IndustryMarginTradingNamespace(
72
+ sw=margin_trading_sw,
73
+ sw_2021=margin_trading_sw_2021,
74
+ cni=margin_trading_cni,
75
+ )
76
+
77
+ # Convenience aliases for shorter access
78
+ async def get_sw_margin_trading(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
79
+ """Alias for margin_trading.sw.get_margin_trading."""
80
+ return await self.margin_trading.sw.get_margin_trading(*args, **kwargs)
81
+
82
+ async def get_sw_2021_margin_trading(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
83
+ """Alias for margin_trading.sw_2021.get_margin_trading."""
84
+ return await self.margin_trading.sw_2021.get_margin_trading(*args, **kwargs)
85
+
86
+ async def get_cni_margin_trading(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
87
+ """Alias for margin_trading.cni.get_margin_trading."""
88
+ return await self.margin_trading.cni.get_margin_trading(*args, **kwargs)
lixinger/client.py CHANGED
@@ -44,6 +44,12 @@ from lixinger.api.cn.index import (
44
44
  TrackingFundAPI,
45
45
  )
46
46
  from lixinger.api.cn.index.namespace import IndexNamespace
47
+ from lixinger.api.cn.industry import (
48
+ IndustryCniMarginTradingAPI,
49
+ IndustrySw2021MarginTradingAPI,
50
+ IndustrySwMarginTradingAPI,
51
+ )
52
+ from lixinger.api.cn.industry.namespace import IndustryNamespace
47
53
  from lixinger.config import get_config_from_env
48
54
  from lixinger.utils.rate_limiter import AsyncRateLimiter
49
55
 
@@ -224,6 +230,25 @@ class AsyncLixingerClient:
224
230
  self.cn_index_fs_security = cn_index_fs_security
225
231
  self.cn_index_fs_hybrid = cn_index_fs_hybrid
226
232
 
233
+ # Industry APIs
234
+ cn_industry_margin_trading_sw = IndustrySwMarginTradingAPI(self._http_client, self.config, self._rate_limiter)
235
+ cn_industry_margin_trading_sw_2021 = IndustrySw2021MarginTradingAPI(
236
+ self._http_client, self.config, self._rate_limiter
237
+ )
238
+ cn_industry_margin_trading_cni = IndustryCniMarginTradingAPI(self._http_client, self.config, self._rate_limiter)
239
+
240
+ # Industry namespace (groups all industry APIs)
241
+ self.cn_industry = IndustryNamespace(
242
+ margin_trading_sw=cn_industry_margin_trading_sw,
243
+ margin_trading_sw_2021=cn_industry_margin_trading_sw_2021,
244
+ margin_trading_cni=cn_industry_margin_trading_cni,
245
+ )
246
+
247
+ # Legacy flat access for industry APIs (deprecated, for backward compatibility)
248
+ self.cn_industry_margin_trading_sw = cn_industry_margin_trading_sw
249
+ self.cn_industry_margin_trading_sw_2021 = cn_industry_margin_trading_sw_2021
250
+ self.cn_industry_margin_trading_cni = cn_industry_margin_trading_cni
251
+
227
252
  # Fund APIs
228
253
  self.cn_fund = FundAPI(self._http_client, self.config, self._rate_limiter)
229
254
  self.cn_fund_profile = FundProfileAPI(self._http_client, self.config, self._rate_limiter)
@@ -260,6 +285,11 @@ class AsyncLixingerClient:
260
285
  """Alias for cn_index."""
261
286
  return self.cn_index
262
287
 
288
+ @property
289
+ def industry(self) -> IndustryNamespace:
290
+ """Alias for cn_industry."""
291
+ return self.cn_industry
292
+
263
293
  @property
264
294
  def candlestick(self) -> CandlestickAPI:
265
295
  """Alias for cn_company_candlestick."""
@@ -0,0 +1,13 @@
1
+ """Industry-related models."""
2
+
3
+ from lixinger.models.cn.industry.margin_trading import (
4
+ IndustryCniMarginTrading,
5
+ IndustrySw2021MarginTrading,
6
+ IndustrySwMarginTrading,
7
+ )
8
+
9
+ __all__ = [
10
+ "IndustryCniMarginTrading",
11
+ "IndustrySw2021MarginTrading",
12
+ "IndustrySwMarginTrading",
13
+ ]
@@ -0,0 +1,11 @@
1
+ """Industry margin trading and securities lending models."""
2
+
3
+ from lixinger.models.cn.industry.margin_trading.cni import IndustryCniMarginTrading
4
+ from lixinger.models.cn.industry.margin_trading.sw import IndustrySwMarginTrading
5
+ from lixinger.models.cn.industry.margin_trading.sw_2021 import IndustrySw2021MarginTrading
6
+
7
+ __all__ = [
8
+ "IndustryCniMarginTrading",
9
+ "IndustrySw2021MarginTrading",
10
+ "IndustrySwMarginTrading",
11
+ ]
@@ -0,0 +1,29 @@
1
+ """Industry (国证) margin trading and securities lending model."""
2
+
3
+ import pandera.pandas as pa
4
+
5
+
6
+ class IndustryCniMarginTrading(pa.DataFrameModel):
7
+ """国证行业融资融券数据模型.
8
+
9
+ 表示单个国证行业每日的融资(financing)与融券(securities lending)指标.
10
+ """
11
+
12
+ class Config:
13
+ """Pandera configuration."""
14
+
15
+ coerce = True
16
+ strict = False
17
+
18
+ date: pa.typing.Series[pa.typing.DateTime]
19
+ stock_code: pa.typing.Series[str]
20
+ financing_purchase_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
21
+ financing_repayment_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
22
+ financing_net_purchase_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
23
+ financing_balance: pa.typing.Series[float] | None = pa.Field(nullable=True)
24
+ securities_sell_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
25
+ securities_repayment_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
26
+ securities_net_sell_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
27
+ securities_balance: pa.typing.Series[float] | None = pa.Field(nullable=True)
28
+ financing_balance_to_market_cap: pa.typing.Series[float] | None = pa.Field(nullable=True)
29
+ securities_balance_to_market_cap: pa.typing.Series[float] | None = pa.Field(nullable=True)
@@ -0,0 +1,29 @@
1
+ """Industry (申万) margin trading and securities lending model."""
2
+
3
+ import pandera.pandas as pa
4
+
5
+
6
+ class IndustrySwMarginTrading(pa.DataFrameModel):
7
+ """申万行业融资融券数据模型.
8
+
9
+ 表示单个申万行业每日的融资(financing)与融券(securities lending)指标.
10
+ """
11
+
12
+ class Config:
13
+ """Pandera configuration."""
14
+
15
+ coerce = True
16
+ strict = False
17
+
18
+ date: pa.typing.Series[pa.typing.DateTime]
19
+ stock_code: pa.typing.Series[str]
20
+ financing_purchase_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
21
+ financing_repayment_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
22
+ financing_net_purchase_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
23
+ financing_balance: pa.typing.Series[float] | None = pa.Field(nullable=True)
24
+ securities_sell_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
25
+ securities_repayment_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
26
+ securities_net_sell_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
27
+ securities_balance: pa.typing.Series[float] | None = pa.Field(nullable=True)
28
+ financing_balance_to_market_cap: pa.typing.Series[float] | None = pa.Field(nullable=True)
29
+ securities_balance_to_market_cap: pa.typing.Series[float] | None = pa.Field(nullable=True)
@@ -0,0 +1,29 @@
1
+ """Industry (申万2021版) margin trading and securities lending model."""
2
+
3
+ import pandera.pandas as pa
4
+
5
+
6
+ class IndustrySw2021MarginTrading(pa.DataFrameModel):
7
+ """申万2021版行业融资融券数据模型.
8
+
9
+ 表示单个申万2021版行业每日的融资(financing)与融券(securities lending)指标.
10
+ """
11
+
12
+ class Config:
13
+ """Pandera configuration."""
14
+
15
+ coerce = True
16
+ strict = False
17
+
18
+ date: pa.typing.Series[pa.typing.DateTime]
19
+ stock_code: pa.typing.Series[str]
20
+ financing_purchase_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
21
+ financing_repayment_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
22
+ financing_net_purchase_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
23
+ financing_balance: pa.typing.Series[float] | None = pa.Field(nullable=True)
24
+ securities_sell_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
25
+ securities_repayment_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
26
+ securities_net_sell_amount: pa.typing.Series[float] | None = pa.Field(nullable=True)
27
+ securities_balance: pa.typing.Series[float] | None = pa.Field(nullable=True)
28
+ financing_balance_to_market_cap: pa.typing.Series[float] | None = pa.Field(nullable=True)
29
+ securities_balance_to_market_cap: pa.typing.Series[float] | None = pa.Field(nullable=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lixinger-python
3
- Version: 0.3.10
3
+ Version: 0.3.11
4
4
  Summary: Python SDK for Lixinger Financial Data API
5
5
  Project-URL: Homepage, https://www.lixinger.com
6
6
  Project-URL: Documentation, https://www.lixinger.com/open/api/doc
@@ -1,5 +1,5 @@
1
- lixinger/__init__.py,sha256=q-HBT1HyVJ6NKlsP_T6T5WCq_bYn330wAo9bsfD-lNQ,2750
2
- lixinger/client.py,sha256=_oj9vlfMTWDbbn89A3DCZ0epBY2nMs1iQKBIrLO4vQA,12905
1
+ lixinger/__init__.py,sha256=mDw-kB3UVdtderRekHCA2xPsWr2GiPuBPyBOelEkgE0,3055
2
+ lixinger/client.py,sha256=EXxE1hEczIaVpe3HxgQ7wWd71YjzkRNIAitPnhyV9MY,14290
3
3
  lixinger/config.py,sha256=JPz8EOrf1kP4Do-Z5-MsnOM0pMrNE1ZsP-Qoarh9y4c,2008
4
4
  lixinger/exceptions.py,sha256=haJOQzZinH0tKk_e2BTUzJfPbtnyLHyRR7HSnWHeKfk,516
5
5
  lixinger/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -50,6 +50,12 @@ lixinger/api/cn/index/fs/bank.py,sha256=zjDB_d06E_gxAvVNyk9Byoa5ShlevNoc75z5gVBH
50
50
  lixinger/api/cn/index/fs/hybrid.py,sha256=qs25ZXdCBiIRQ3mm2yyXQngSGtLIs1W93nvRxQDubIE,4429
51
51
  lixinger/api/cn/index/fs/non_financial.py,sha256=XlP9Jl5bHUto6mybj4WGCb11LjYINzwYhJaG_WEHYww,4599
52
52
  lixinger/api/cn/index/fs/security.py,sha256=l1Raf8GuYpthRDgNSMnVjDn9AcKLG5qP-wVKMd4GKQw,4458
53
+ lixinger/api/cn/industry/__init__.py,sha256=RyBtbJuc-4DEgcpv3soXtmCI_NJtHlD-HiG96Ehwo9Q,583
54
+ lixinger/api/cn/industry/namespace.py,sha256=GBl4gYrP6CYp9qeC7UelID2qhzrk4DeK_uh5F_G1rhM,2966
55
+ lixinger/api/cn/industry/margin_trading/__init__.py,sha256=4JZDCF6v2TPg9uyBLKXAfHKVrDGpshjQkoJejdKwCC4,944
56
+ lixinger/api/cn/industry/margin_trading/cni.py,sha256=7IqidE2N2_INiVybeiTt5qFRUY4PJsY6nUPEGtdWJlM,4600
57
+ lixinger/api/cn/industry/margin_trading/sw.py,sha256=hjC5Uf7XXSwiiqoloIWFx5nDzbxd_D5bB1QPQCEjUjg,4591
58
+ lixinger/api/cn/industry/margin_trading/sw_2021.py,sha256=uZWAiIdPPLWnvYduAULPythgzgNzLFeVkqP5OEMq_vw,4706
53
59
  lixinger/models/__init__.py,sha256=OAUYpI_JaGZExFqZ0H6l8fJ5qyLW0oFnnO4JGJQknTE,154
54
60
  lixinger/models/cn/__init__.py,sha256=mhTq_PfPJ_0720E1rTKdqBTpb9A14_ZDDWLfJXjcVck,27
55
61
  lixinger/models/cn/company/__init__.py,sha256=7E7p1NED5qr0yf_wcmOq_DDvOq2hzXv3bD4cLjHTtSQ,957
@@ -93,13 +99,18 @@ lixinger/models/cn/index/fs/bank.py,sha256=DA_sRFSsK5IE0JQtp3pHdvPJQxbipHsSyKahc
93
99
  lixinger/models/cn/index/fs/hybrid.py,sha256=AlCoEfkkPdWGxE_K71rBKgwWpR4iWTaMJ8bc56YxYrk,565
94
100
  lixinger/models/cn/index/fs/non_financial.py,sha256=UpWXDDMiOdJN6WNc5R-PsHy9l9Th3xsKnOjUbID4Gug,585
95
101
  lixinger/models/cn/index/fs/security.py,sha256=VTYDvTQ5CKhqZsXeEyWqFNvugZ4UA3CLW0DkYTrOHtc,571
102
+ lixinger/models/cn/industry/__init__.py,sha256=TlUmf_uAoCdyO8uNJDoXWUV7-P8C3H8FLJKF8HN2b9Q,296
103
+ lixinger/models/cn/industry/margin_trading/__init__.py,sha256=JHzyvqzawYkgHa3HPNcY1B58PN2SZe-ZXhThHXlmSJ8,432
104
+ lixinger/models/cn/industry/margin_trading/cni.py,sha256=D8O-SXFR1_6lboRzMMNxaLA3KnSlHHeS1N5kjUIUPrs,1375
105
+ lixinger/models/cn/industry/margin_trading/sw.py,sha256=GyBhpZxSm1aoQHdzJvjb5INp_lrTFh4Alp2WaDyPhVM,1374
106
+ lixinger/models/cn/industry/margin_trading/sw_2021.py,sha256=JWdEVXarlKso3JOpMJ7zvkw-I5tsLlXagJFXEJxYC3s,1399
96
107
  lixinger/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
108
  lixinger/utils/api.py,sha256=BktR40JtKCMe9excFWo4ujsq3GiQK4ypJLG3MpJgo2s,402
98
109
  lixinger/utils/dataframe.py,sha256=tYBrNdmJ4poyuwD-9XgzHt3A_A8bBo0cdHiu8Yy9e9A,2208
99
110
  lixinger/utils/dict.py,sha256=yvbUtv8QpRmy0d_o_7gCuEwwiEfBji5_xB490ANxilw,589
100
111
  lixinger/utils/rate_limiter.py,sha256=ZHlRTTL60L62uRA_f--LD26qkAfk-pHBllRqPapAXQM,1141
101
112
  lixinger/utils/retry.py,sha256=sXtb0ESp12_JedjzDxoeIH48TlOrbxtIA0j1V33DW7M,1026
102
- lixinger_python-0.3.10.dist-info/METADATA,sha256=dSxFGEZE6ajZsnOnLeMc4dKYCyXK2-ZYlTLGsrEhYJI,9207
103
- lixinger_python-0.3.10.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
104
- lixinger_python-0.3.10.dist-info/licenses/LICENSE,sha256=5oOwRq1lHSOScbNGCHr2feuNnhNYdGcArj6fSUfsC5U,1064
105
- lixinger_python-0.3.10.dist-info/RECORD,,
113
+ lixinger_python-0.3.11.dist-info/METADATA,sha256=wqCIHQktxMBfmP8Wzz45QT1_belv6nIcck0YZ_Dhkhg,9207
114
+ lixinger_python-0.3.11.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
115
+ lixinger_python-0.3.11.dist-info/licenses/LICENSE,sha256=5oOwRq1lHSOScbNGCHr2feuNnhNYdGcArj6fSUfsC5U,1064
116
+ lixinger_python-0.3.11.dist-info/RECORD,,