krxon 0.1.0__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.
- krxon-0.1.0/PKG-INFO +173 -0
- krxon-0.1.0/README.md +149 -0
- krxon-0.1.0/krx/__init__.py +8 -0
- krxon-0.1.0/krx/client.py +73 -0
- krxon-0.1.0/krx/endpoints/__init__.py +4 -0
- krxon-0.1.0/krx/endpoints/derivatives.py +125 -0
- krxon-0.1.0/krx/endpoints/etp.py +53 -0
- krxon-0.1.0/krx/endpoints/index.py +89 -0
- krxon-0.1.0/krx/endpoints/stock.py +89 -0
- krxon-0.1.0/krx/types.py +548 -0
- krxon-0.1.0/pyproject.toml +38 -0
krxon-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: krxon
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: KRX (Korea Exchange) Open API Python SDK - auto-generated by krxon
|
|
5
|
+
Project-URL: Homepage, https://github.com/seungdols/krxon
|
|
6
|
+
Project-URL: Repository, https://github.com/seungdols/krxon
|
|
7
|
+
Project-URL: Issues, https://github.com/seungdols/krxon/issues
|
|
8
|
+
Author: seungdols
|
|
9
|
+
License: MIT
|
|
10
|
+
Keywords: api,finance,korea-exchange,krx,sdk
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Office/Business :: Financial
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Requires-Dist: httpx>=0.24.0
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# krxon
|
|
26
|
+
|
|
27
|
+
CLI tool for the KRX (Korea Exchange) Open API.
|
|
28
|
+
|
|
29
|
+
## Features
|
|
30
|
+
|
|
31
|
+
- **fetch** - Query KRX market data from the command line
|
|
32
|
+
- **generate** - Generate Python and TypeScript SDK clients from the API spec
|
|
33
|
+
|
|
34
|
+
## Installation
|
|
35
|
+
|
|
36
|
+
### Cargo (Rust)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cargo install krxon
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Python SDK (PyPI)
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install krxon
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### TypeScript SDK (npm)
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm install @krxon/krx
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### From source
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
git clone https://github.com/seungdols/krxon.git
|
|
58
|
+
cd krxon
|
|
59
|
+
cargo build --release
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Getting Started
|
|
63
|
+
|
|
64
|
+
### Prerequisites
|
|
65
|
+
|
|
66
|
+
- A KRX Open API key from [openapi.krx.co.kr](https://openapi.krx.co.kr)
|
|
67
|
+
|
|
68
|
+
### Setup
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Store your API key
|
|
72
|
+
krxon init
|
|
73
|
+
|
|
74
|
+
# Or set via environment variable
|
|
75
|
+
export KRX_API_KEY=your_key_here
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Usage
|
|
79
|
+
|
|
80
|
+
#### Fetch Index Data
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
krxon fetch index krx --date 20250301
|
|
84
|
+
krxon fetch index kospi --date 20250301
|
|
85
|
+
krxon fetch index kosdaq --date 20250301
|
|
86
|
+
krxon fetch index derivatives --date 20250301
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### Fetch Stock Data
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
krxon fetch stock kospi --date 20250301
|
|
93
|
+
krxon fetch stock kosdaq --date 20250301
|
|
94
|
+
krxon fetch stock kospi-info --date 20250301
|
|
95
|
+
krxon fetch stock kosdaq-info --date 20250301
|
|
96
|
+
|
|
97
|
+
# Filter by ISIN code
|
|
98
|
+
krxon fetch stock kospi --date 20250301 --isin KR7005930003
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Fetch ETP Data
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
krxon fetch etp etf --date 20250301
|
|
105
|
+
krxon fetch etp etn --date 20250301
|
|
106
|
+
|
|
107
|
+
# Filter by ISIN code
|
|
108
|
+
krxon fetch etp etf --date 20250301 --isin KR7069500007
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### Fetch Derivatives Data
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Futures
|
|
115
|
+
krxon fetch derivatives futures --date 20250301
|
|
116
|
+
krxon fetch derivatives stock-futures-kospi --date 20250301
|
|
117
|
+
krxon fetch derivatives stock-futures-kosdaq --date 20250301
|
|
118
|
+
|
|
119
|
+
# Options
|
|
120
|
+
krxon fetch derivatives options --date 20250301
|
|
121
|
+
krxon fetch derivatives stock-options-kospi --date 20250301
|
|
122
|
+
krxon fetch derivatives stock-options-kosdaq --date 20250301
|
|
123
|
+
|
|
124
|
+
# Table output
|
|
125
|
+
krxon fetch derivatives futures --date 20250301 --output table
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### Generate SDK Clients
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Generate Python SDK
|
|
132
|
+
krxon generate python --out ./sdk/python
|
|
133
|
+
|
|
134
|
+
# Generate TypeScript SDK
|
|
135
|
+
krxon generate typescript --out ./sdk/typescript
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Common Options
|
|
139
|
+
|
|
140
|
+
- `--date` (required): Base date in YYYYMMDD format
|
|
141
|
+
- `--key`: API key (overrides `KRX_API_KEY` env var)
|
|
142
|
+
- `--output`: `json` (default) or `table`
|
|
143
|
+
|
|
144
|
+
## SDK Usage
|
|
145
|
+
|
|
146
|
+
### Python
|
|
147
|
+
|
|
148
|
+
```python
|
|
149
|
+
from krx import KrxClient
|
|
150
|
+
|
|
151
|
+
client = KrxClient(api_key="your_key")
|
|
152
|
+
records = client.get_kospi_stock_daily(basDd="20250301")
|
|
153
|
+
for r in records:
|
|
154
|
+
print(r["ISU_NM"], r["TDD_CLSPRC"])
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### TypeScript
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
import { KrxClient } from "@krxon/krx";
|
|
161
|
+
|
|
162
|
+
const client = new KrxClient({ apiKey: "your_key" });
|
|
163
|
+
const records = await client.getKospiStockDaily("20250301");
|
|
164
|
+
records.forEach((r) => console.log(r.ISU_NM, r.TDD_CLSPRC));
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Project Structure
|
|
168
|
+
|
|
169
|
+
See [AGENT.md](AGENT.md) for the full project structure and conventions.
|
|
170
|
+
|
|
171
|
+
## License
|
|
172
|
+
|
|
173
|
+
MIT
|
krxon-0.1.0/README.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# krxon
|
|
2
|
+
|
|
3
|
+
CLI tool for the KRX (Korea Exchange) Open API.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **fetch** - Query KRX market data from the command line
|
|
8
|
+
- **generate** - Generate Python and TypeScript SDK clients from the API spec
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
### Cargo (Rust)
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
cargo install krxon
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Python SDK (PyPI)
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pip install krxon
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### TypeScript SDK (npm)
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install @krxon/krx
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### From source
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
git clone https://github.com/seungdols/krxon.git
|
|
34
|
+
cd krxon
|
|
35
|
+
cargo build --release
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Getting Started
|
|
39
|
+
|
|
40
|
+
### Prerequisites
|
|
41
|
+
|
|
42
|
+
- A KRX Open API key from [openapi.krx.co.kr](https://openapi.krx.co.kr)
|
|
43
|
+
|
|
44
|
+
### Setup
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Store your API key
|
|
48
|
+
krxon init
|
|
49
|
+
|
|
50
|
+
# Or set via environment variable
|
|
51
|
+
export KRX_API_KEY=your_key_here
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Usage
|
|
55
|
+
|
|
56
|
+
#### Fetch Index Data
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
krxon fetch index krx --date 20250301
|
|
60
|
+
krxon fetch index kospi --date 20250301
|
|
61
|
+
krxon fetch index kosdaq --date 20250301
|
|
62
|
+
krxon fetch index derivatives --date 20250301
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
#### Fetch Stock Data
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
krxon fetch stock kospi --date 20250301
|
|
69
|
+
krxon fetch stock kosdaq --date 20250301
|
|
70
|
+
krxon fetch stock kospi-info --date 20250301
|
|
71
|
+
krxon fetch stock kosdaq-info --date 20250301
|
|
72
|
+
|
|
73
|
+
# Filter by ISIN code
|
|
74
|
+
krxon fetch stock kospi --date 20250301 --isin KR7005930003
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### Fetch ETP Data
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
krxon fetch etp etf --date 20250301
|
|
81
|
+
krxon fetch etp etn --date 20250301
|
|
82
|
+
|
|
83
|
+
# Filter by ISIN code
|
|
84
|
+
krxon fetch etp etf --date 20250301 --isin KR7069500007
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### Fetch Derivatives Data
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Futures
|
|
91
|
+
krxon fetch derivatives futures --date 20250301
|
|
92
|
+
krxon fetch derivatives stock-futures-kospi --date 20250301
|
|
93
|
+
krxon fetch derivatives stock-futures-kosdaq --date 20250301
|
|
94
|
+
|
|
95
|
+
# Options
|
|
96
|
+
krxon fetch derivatives options --date 20250301
|
|
97
|
+
krxon fetch derivatives stock-options-kospi --date 20250301
|
|
98
|
+
krxon fetch derivatives stock-options-kosdaq --date 20250301
|
|
99
|
+
|
|
100
|
+
# Table output
|
|
101
|
+
krxon fetch derivatives futures --date 20250301 --output table
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### Generate SDK Clients
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Generate Python SDK
|
|
108
|
+
krxon generate python --out ./sdk/python
|
|
109
|
+
|
|
110
|
+
# Generate TypeScript SDK
|
|
111
|
+
krxon generate typescript --out ./sdk/typescript
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Common Options
|
|
115
|
+
|
|
116
|
+
- `--date` (required): Base date in YYYYMMDD format
|
|
117
|
+
- `--key`: API key (overrides `KRX_API_KEY` env var)
|
|
118
|
+
- `--output`: `json` (default) or `table`
|
|
119
|
+
|
|
120
|
+
## SDK Usage
|
|
121
|
+
|
|
122
|
+
### Python
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
from krx import KrxClient
|
|
126
|
+
|
|
127
|
+
client = KrxClient(api_key="your_key")
|
|
128
|
+
records = client.get_kospi_stock_daily(basDd="20250301")
|
|
129
|
+
for r in records:
|
|
130
|
+
print(r["ISU_NM"], r["TDD_CLSPRC"])
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### TypeScript
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
import { KrxClient } from "@krxon/krx";
|
|
137
|
+
|
|
138
|
+
const client = new KrxClient({ apiKey: "your_key" });
|
|
139
|
+
const records = await client.getKospiStockDaily("20250301");
|
|
140
|
+
records.forEach((r) => console.log(r.ISU_NM, r.TDD_CLSPRC));
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Project Structure
|
|
144
|
+
|
|
145
|
+
See [AGENT.md](AGENT.md) for the full project structure and conventions.
|
|
146
|
+
|
|
147
|
+
## License
|
|
148
|
+
|
|
149
|
+
MIT
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# AUTO-GENERATED -- DO NOT EDIT
|
|
2
|
+
# Generated by krxon from spec/endpoints.yaml
|
|
3
|
+
|
|
4
|
+
"""KRX API client."""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
from typing import Any, Optional
|
|
10
|
+
|
|
11
|
+
import httpx
|
|
12
|
+
|
|
13
|
+
from krx.endpoints.index import IndexMixin
|
|
14
|
+
from krx.endpoints.stock import StockMixin
|
|
15
|
+
from krx.endpoints.etp import EtpMixin
|
|
16
|
+
from krx.endpoints.derivatives import DerivativesMixin
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class KrxClient(
|
|
20
|
+
IndexMixin,
|
|
21
|
+
StockMixin,
|
|
22
|
+
EtpMixin,
|
|
23
|
+
DerivativesMixin,
|
|
24
|
+
):
|
|
25
|
+
"""KRX Open API client.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
api_key: API key for authentication (AUTH_KEY header).
|
|
29
|
+
Falls back to KRX_API_KEY environment variable if not provided.
|
|
30
|
+
base_url: Base URL for the KRX API.
|
|
31
|
+
timeout: Request timeout in seconds.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
BASE_URL = "https://data-dbg.krx.co.kr/svc/apis"
|
|
35
|
+
|
|
36
|
+
def __init__(
|
|
37
|
+
self,
|
|
38
|
+
api_key: Optional[str] = None,
|
|
39
|
+
base_url: str = BASE_URL,
|
|
40
|
+
timeout: float = 30.0,
|
|
41
|
+
) -> None:
|
|
42
|
+
resolved_key = api_key or os.environ.get("KRX_API_KEY", "")
|
|
43
|
+
if not resolved_key:
|
|
44
|
+
raise ValueError(
|
|
45
|
+
"API key is required. Pass api_key or set KRX_API_KEY environment variable."
|
|
46
|
+
)
|
|
47
|
+
self.api_key = resolved_key
|
|
48
|
+
self.base_url = base_url.rstrip("/")
|
|
49
|
+
self._client = httpx.Client(
|
|
50
|
+
headers={
|
|
51
|
+
"AUTH_KEY": resolved_key,
|
|
52
|
+
"Content-Type": "application/json",
|
|
53
|
+
},
|
|
54
|
+
timeout=timeout,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def _post(self, path: str, body: dict[str, Any]) -> list[Any]:
|
|
58
|
+
"""Send a POST request and extract OutBlock_1 from the response."""
|
|
59
|
+
url = f"{self.base_url}{path}"
|
|
60
|
+
response = self._client.post(url, json=body)
|
|
61
|
+
response.raise_for_status()
|
|
62
|
+
data = response.json()
|
|
63
|
+
return data.get("OutBlock_1", [])
|
|
64
|
+
|
|
65
|
+
def close(self) -> None:
|
|
66
|
+
"""Close the underlying HTTP client."""
|
|
67
|
+
self._client.close()
|
|
68
|
+
|
|
69
|
+
def __enter__(self) -> KrxClient:
|
|
70
|
+
return self
|
|
71
|
+
|
|
72
|
+
def __exit__(self, *args: Any) -> None:
|
|
73
|
+
self.close()
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# AUTO-GENERATED -- DO NOT EDIT
|
|
2
|
+
# Generated by krxon from spec/endpoints.yaml
|
|
3
|
+
|
|
4
|
+
"""Derivatives (Futures/Options) endpoints."""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from krx.types import (
|
|
12
|
+
FuturesDailyRecord,
|
|
13
|
+
OptionsDailyRecord,
|
|
14
|
+
StockFuturesKosdaqDailyRecord,
|
|
15
|
+
StockFuturesKospiDailyRecord,
|
|
16
|
+
StockOptionsKosdaqDailyRecord,
|
|
17
|
+
StockOptionsKospiDailyRecord,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class DerivativesMixin:
|
|
22
|
+
"""Mixin providing derivatives endpoint methods."""
|
|
23
|
+
|
|
24
|
+
def get_futures_daily(
|
|
25
|
+
self,
|
|
26
|
+
basDd: str,
|
|
27
|
+
) -> list[FuturesDailyRecord]:
|
|
28
|
+
"""선물 일별 시세
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
32
|
+
|
|
33
|
+
Returns:
|
|
34
|
+
List of FuturesDailyRecord records.
|
|
35
|
+
"""
|
|
36
|
+
body: dict[str, str] = {
|
|
37
|
+
"basDd": basDd,
|
|
38
|
+
}
|
|
39
|
+
return self._post("/drv/fut_bydd_trd", body) # type: ignore[attr-defined]
|
|
40
|
+
|
|
41
|
+
def get_options_daily(
|
|
42
|
+
self,
|
|
43
|
+
basDd: str,
|
|
44
|
+
) -> list[OptionsDailyRecord]:
|
|
45
|
+
"""옵션 일별 시세
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
List of OptionsDailyRecord records.
|
|
52
|
+
"""
|
|
53
|
+
body: dict[str, str] = {
|
|
54
|
+
"basDd": basDd,
|
|
55
|
+
}
|
|
56
|
+
return self._post("/drv/opt_bydd_trd", body) # type: ignore[attr-defined]
|
|
57
|
+
|
|
58
|
+
def get_stock_futures_kosdaq_daily(
|
|
59
|
+
self,
|
|
60
|
+
basDd: str,
|
|
61
|
+
) -> list[StockFuturesKosdaqDailyRecord]:
|
|
62
|
+
"""KOSDAQ 주식선물 일별 시세
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
List of StockFuturesKosdaqDailyRecord records.
|
|
69
|
+
"""
|
|
70
|
+
body: dict[str, str] = {
|
|
71
|
+
"basDd": basDd,
|
|
72
|
+
}
|
|
73
|
+
return self._post("/drv/eqkfu_ksq_bydd_trd", body) # type: ignore[attr-defined]
|
|
74
|
+
|
|
75
|
+
def get_stock_futures_kospi_daily(
|
|
76
|
+
self,
|
|
77
|
+
basDd: str,
|
|
78
|
+
) -> list[StockFuturesKospiDailyRecord]:
|
|
79
|
+
"""KOSPI 주식선물 일별 시세
|
|
80
|
+
|
|
81
|
+
Args:
|
|
82
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
List of StockFuturesKospiDailyRecord records.
|
|
86
|
+
"""
|
|
87
|
+
body: dict[str, str] = {
|
|
88
|
+
"basDd": basDd,
|
|
89
|
+
}
|
|
90
|
+
return self._post("/drv/eqsfu_stk_bydd_trd", body) # type: ignore[attr-defined]
|
|
91
|
+
|
|
92
|
+
def get_stock_options_kosdaq_daily(
|
|
93
|
+
self,
|
|
94
|
+
basDd: str,
|
|
95
|
+
) -> list[StockOptionsKosdaqDailyRecord]:
|
|
96
|
+
"""KOSDAQ 주식옵션 일별 시세
|
|
97
|
+
|
|
98
|
+
Args:
|
|
99
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
List of StockOptionsKosdaqDailyRecord records.
|
|
103
|
+
"""
|
|
104
|
+
body: dict[str, str] = {
|
|
105
|
+
"basDd": basDd,
|
|
106
|
+
}
|
|
107
|
+
return self._post("/drv/eqkop_bydd_trd", body) # type: ignore[attr-defined]
|
|
108
|
+
|
|
109
|
+
def get_stock_options_kospi_daily(
|
|
110
|
+
self,
|
|
111
|
+
basDd: str,
|
|
112
|
+
) -> list[StockOptionsKospiDailyRecord]:
|
|
113
|
+
"""KOSPI 주식옵션 일별 시세
|
|
114
|
+
|
|
115
|
+
Args:
|
|
116
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
117
|
+
|
|
118
|
+
Returns:
|
|
119
|
+
List of StockOptionsKospiDailyRecord records.
|
|
120
|
+
"""
|
|
121
|
+
body: dict[str, str] = {
|
|
122
|
+
"basDd": basDd,
|
|
123
|
+
}
|
|
124
|
+
return self._post("/drv/eqsop_bydd_trd", body) # type: ignore[attr-defined]
|
|
125
|
+
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# AUTO-GENERATED -- DO NOT EDIT
|
|
2
|
+
# Generated by krxon from spec/endpoints.yaml
|
|
3
|
+
|
|
4
|
+
"""ETP (ETF/ETN) endpoints."""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from krx.types import (
|
|
12
|
+
EtfDailyRecord,
|
|
13
|
+
EtnDailyRecord,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class EtpMixin:
|
|
18
|
+
"""Mixin providing etp endpoint methods."""
|
|
19
|
+
|
|
20
|
+
def get_etf_daily(
|
|
21
|
+
self,
|
|
22
|
+
basDd: str,
|
|
23
|
+
) -> list[EtfDailyRecord]:
|
|
24
|
+
"""ETF 일별 시세
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
28
|
+
|
|
29
|
+
Returns:
|
|
30
|
+
List of EtfDailyRecord records.
|
|
31
|
+
"""
|
|
32
|
+
body: dict[str, str] = {
|
|
33
|
+
"basDd": basDd,
|
|
34
|
+
}
|
|
35
|
+
return self._post("/etp/etf_bydd_trd", body) # type: ignore[attr-defined]
|
|
36
|
+
|
|
37
|
+
def get_etn_daily(
|
|
38
|
+
self,
|
|
39
|
+
basDd: str,
|
|
40
|
+
) -> list[EtnDailyRecord]:
|
|
41
|
+
"""ETN 일별 시세
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
List of EtnDailyRecord records.
|
|
48
|
+
"""
|
|
49
|
+
body: dict[str, str] = {
|
|
50
|
+
"basDd": basDd,
|
|
51
|
+
}
|
|
52
|
+
return self._post("/etp/etn_bydd_trd", body) # type: ignore[attr-defined]
|
|
53
|
+
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# AUTO-GENERATED -- DO NOT EDIT
|
|
2
|
+
# Generated by krxon from spec/endpoints.yaml
|
|
3
|
+
|
|
4
|
+
"""Index (KRX/KOSPI/KOSDAQ/Derivatives) endpoints."""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from krx.types import (
|
|
12
|
+
DerivativesIndexDailyRecord,
|
|
13
|
+
KosdaqIndexDailyRecord,
|
|
14
|
+
KospiIndexDailyRecord,
|
|
15
|
+
KrxIndexDailyRecord,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class IndexMixin:
|
|
20
|
+
"""Mixin providing index endpoint methods."""
|
|
21
|
+
|
|
22
|
+
def get_derivatives_index_daily(
|
|
23
|
+
self,
|
|
24
|
+
basDd: str,
|
|
25
|
+
) -> list[DerivativesIndexDailyRecord]:
|
|
26
|
+
"""파생상품 지수 일별 시세
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
List of DerivativesIndexDailyRecord records.
|
|
33
|
+
"""
|
|
34
|
+
body: dict[str, str] = {
|
|
35
|
+
"basDd": basDd,
|
|
36
|
+
}
|
|
37
|
+
return self._post("/idx/drvprod_dd_trd", body) # type: ignore[attr-defined]
|
|
38
|
+
|
|
39
|
+
def get_kosdaq_index_daily(
|
|
40
|
+
self,
|
|
41
|
+
basDd: str,
|
|
42
|
+
) -> list[KosdaqIndexDailyRecord]:
|
|
43
|
+
"""KOSDAQ 지수 일별 시세
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
List of KosdaqIndexDailyRecord records.
|
|
50
|
+
"""
|
|
51
|
+
body: dict[str, str] = {
|
|
52
|
+
"basDd": basDd,
|
|
53
|
+
}
|
|
54
|
+
return self._post("/idx/kosdaq_dd_trd", body) # type: ignore[attr-defined]
|
|
55
|
+
|
|
56
|
+
def get_kospi_index_daily(
|
|
57
|
+
self,
|
|
58
|
+
basDd: str,
|
|
59
|
+
) -> list[KospiIndexDailyRecord]:
|
|
60
|
+
"""KOSPI 지수 일별 시세
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
List of KospiIndexDailyRecord records.
|
|
67
|
+
"""
|
|
68
|
+
body: dict[str, str] = {
|
|
69
|
+
"basDd": basDd,
|
|
70
|
+
}
|
|
71
|
+
return self._post("/idx/kospi_dd_trd", body) # type: ignore[attr-defined]
|
|
72
|
+
|
|
73
|
+
def get_krx_index_daily(
|
|
74
|
+
self,
|
|
75
|
+
basDd: str,
|
|
76
|
+
) -> list[KrxIndexDailyRecord]:
|
|
77
|
+
"""KRX 지수 일별 시세
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
List of KrxIndexDailyRecord records.
|
|
84
|
+
"""
|
|
85
|
+
body: dict[str, str] = {
|
|
86
|
+
"basDd": basDd,
|
|
87
|
+
}
|
|
88
|
+
return self._post("/idx/krx_dd_trd", body) # type: ignore[attr-defined]
|
|
89
|
+
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# AUTO-GENERATED -- DO NOT EDIT
|
|
2
|
+
# Generated by krxon from spec/endpoints.yaml
|
|
3
|
+
|
|
4
|
+
"""Stock (KOSPI/KOSDAQ daily trading and info) endpoints."""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from krx.types import (
|
|
12
|
+
KosdaqStockDailyRecord,
|
|
13
|
+
KosdaqStockInfoRecord,
|
|
14
|
+
KospiStockDailyRecord,
|
|
15
|
+
KospiStockInfoRecord,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class StockMixin:
|
|
20
|
+
"""Mixin providing stock endpoint methods."""
|
|
21
|
+
|
|
22
|
+
def get_kosdaq_stock_daily(
|
|
23
|
+
self,
|
|
24
|
+
basDd: str,
|
|
25
|
+
) -> list[KosdaqStockDailyRecord]:
|
|
26
|
+
"""KOSDAQ 주식 일별 시세
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
List of KosdaqStockDailyRecord records.
|
|
33
|
+
"""
|
|
34
|
+
body: dict[str, str] = {
|
|
35
|
+
"basDd": basDd,
|
|
36
|
+
}
|
|
37
|
+
return self._post("/sto/ksq_bydd_trd", body) # type: ignore[attr-defined]
|
|
38
|
+
|
|
39
|
+
def get_kosdaq_stock_info(
|
|
40
|
+
self,
|
|
41
|
+
basDd: str,
|
|
42
|
+
) -> list[KosdaqStockInfoRecord]:
|
|
43
|
+
"""KOSDAQ 종목 기본 정보
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
List of KosdaqStockInfoRecord records.
|
|
50
|
+
"""
|
|
51
|
+
body: dict[str, str] = {
|
|
52
|
+
"basDd": basDd,
|
|
53
|
+
}
|
|
54
|
+
return self._post("/sto/ksq_isu_base_info", body) # type: ignore[attr-defined]
|
|
55
|
+
|
|
56
|
+
def get_kospi_stock_daily(
|
|
57
|
+
self,
|
|
58
|
+
basDd: str,
|
|
59
|
+
) -> list[KospiStockDailyRecord]:
|
|
60
|
+
"""KOSPI 주식 일별 시세
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
List of KospiStockDailyRecord records.
|
|
67
|
+
"""
|
|
68
|
+
body: dict[str, str] = {
|
|
69
|
+
"basDd": basDd,
|
|
70
|
+
}
|
|
71
|
+
return self._post("/sto/stk_bydd_trd", body) # type: ignore[attr-defined]
|
|
72
|
+
|
|
73
|
+
def get_kospi_stock_info(
|
|
74
|
+
self,
|
|
75
|
+
basDd: str,
|
|
76
|
+
) -> list[KospiStockInfoRecord]:
|
|
77
|
+
"""KOSPI 종목 기본 정보
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
basDd: 기준일자 (YYYYMMDD)
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
List of KospiStockInfoRecord records.
|
|
84
|
+
"""
|
|
85
|
+
body: dict[str, str] = {
|
|
86
|
+
"basDd": basDd,
|
|
87
|
+
}
|
|
88
|
+
return self._post("/sto/stk_isu_base_info", body) # type: ignore[attr-defined]
|
|
89
|
+
|
krxon-0.1.0/krx/types.py
ADDED
|
@@ -0,0 +1,548 @@
|
|
|
1
|
+
# AUTO-GENERATED -- DO NOT EDIT
|
|
2
|
+
# Generated by krxon from spec/endpoints.yaml
|
|
3
|
+
|
|
4
|
+
"""Response types for KRX API endpoints.
|
|
5
|
+
|
|
6
|
+
All fields are strings as returned by the KRX API.
|
|
7
|
+
Numeric fields may contain commas (e.g., "1,000,000").
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from typing import TypedDict
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class DerivativesIndexDailyRecord(TypedDict):
|
|
16
|
+
"""파생상품 지수 일별 시세"""
|
|
17
|
+
|
|
18
|
+
BAS_DD: str # 기준일자
|
|
19
|
+
|
|
20
|
+
IDX_CLSS: str # 계열구분
|
|
21
|
+
|
|
22
|
+
IDX_NM: str # 지수명
|
|
23
|
+
|
|
24
|
+
CLSPRC_IDX: str # 종가
|
|
25
|
+
|
|
26
|
+
CMPPREVDD_IDX: str # 대비 (전일 대비 변동)
|
|
27
|
+
|
|
28
|
+
FLUC_RT: str # 등락률 (%)
|
|
29
|
+
|
|
30
|
+
OPNPRC_IDX: str # 시가
|
|
31
|
+
|
|
32
|
+
HGPRC_IDX: str # 고가
|
|
33
|
+
|
|
34
|
+
LWPRC_IDX: str # 저가
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class KosdaqIndexDailyRecord(TypedDict):
|
|
39
|
+
"""KOSDAQ 지수 일별 시세"""
|
|
40
|
+
|
|
41
|
+
BAS_DD: str # 기준일자
|
|
42
|
+
|
|
43
|
+
IDX_CLSS: str # 계열구분
|
|
44
|
+
|
|
45
|
+
IDX_NM: str # 지수명
|
|
46
|
+
|
|
47
|
+
CLSPRC_IDX: str # 종가
|
|
48
|
+
|
|
49
|
+
CMPPREVDD_IDX: str # 대비 (전일 대비 변동)
|
|
50
|
+
|
|
51
|
+
FLUC_RT: str # 등락률 (%)
|
|
52
|
+
|
|
53
|
+
OPNPRC_IDX: str # 시가
|
|
54
|
+
|
|
55
|
+
HGPRC_IDX: str # 고가
|
|
56
|
+
|
|
57
|
+
LWPRC_IDX: str # 저가
|
|
58
|
+
|
|
59
|
+
ACC_TRDVOL: str # 거래량
|
|
60
|
+
|
|
61
|
+
ACC_TRDVAL: str # 거래대금
|
|
62
|
+
|
|
63
|
+
MKTCAP: str # 상장시가총액
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class KospiIndexDailyRecord(TypedDict):
|
|
68
|
+
"""KOSPI 지수 일별 시세"""
|
|
69
|
+
|
|
70
|
+
BAS_DD: str # 기준일자
|
|
71
|
+
|
|
72
|
+
IDX_CLSS: str # 계열구분
|
|
73
|
+
|
|
74
|
+
IDX_NM: str # 지수명
|
|
75
|
+
|
|
76
|
+
CLSPRC_IDX: str # 종가
|
|
77
|
+
|
|
78
|
+
CMPPREVDD_IDX: str # 대비 (전일 대비 변동)
|
|
79
|
+
|
|
80
|
+
FLUC_RT: str # 등락률 (%)
|
|
81
|
+
|
|
82
|
+
OPNPRC_IDX: str # 시가
|
|
83
|
+
|
|
84
|
+
HGPRC_IDX: str # 고가
|
|
85
|
+
|
|
86
|
+
LWPRC_IDX: str # 저가
|
|
87
|
+
|
|
88
|
+
ACC_TRDVOL: str # 거래량
|
|
89
|
+
|
|
90
|
+
ACC_TRDVAL: str # 거래대금
|
|
91
|
+
|
|
92
|
+
MKTCAP: str # 상장시가총액
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class KrxIndexDailyRecord(TypedDict):
|
|
97
|
+
"""KRX 지수 일별 시세"""
|
|
98
|
+
|
|
99
|
+
BAS_DD: str # 기준일자
|
|
100
|
+
|
|
101
|
+
IDX_CLSS: str # 계열구분
|
|
102
|
+
|
|
103
|
+
IDX_NM: str # 지수명
|
|
104
|
+
|
|
105
|
+
CLSPRC_IDX: str # 종가
|
|
106
|
+
|
|
107
|
+
CMPPREVDD_IDX: str # 대비 (전일 대비 변동)
|
|
108
|
+
|
|
109
|
+
FLUC_RT: str # 등락률 (%)
|
|
110
|
+
|
|
111
|
+
OPNPRC_IDX: str # 시가
|
|
112
|
+
|
|
113
|
+
HGPRC_IDX: str # 고가
|
|
114
|
+
|
|
115
|
+
LWPRC_IDX: str # 저가
|
|
116
|
+
|
|
117
|
+
ACC_TRDVOL: str # 거래량
|
|
118
|
+
|
|
119
|
+
ACC_TRDVAL: str # 거래대금
|
|
120
|
+
|
|
121
|
+
MKTCAP: str # 상장시가총액
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class KosdaqStockDailyRecord(TypedDict):
|
|
126
|
+
"""KOSDAQ 주식 일별 시세"""
|
|
127
|
+
|
|
128
|
+
BAS_DD: str # 기준일자
|
|
129
|
+
|
|
130
|
+
ISU_CD: str # 종목코드 (ISIN)
|
|
131
|
+
|
|
132
|
+
ISU_NM: str # 종목명
|
|
133
|
+
|
|
134
|
+
MKT_NM: str # 시장구분
|
|
135
|
+
|
|
136
|
+
SECT_TP_NM: str # 소속부
|
|
137
|
+
|
|
138
|
+
TDD_CLSPRC: str # 종가
|
|
139
|
+
|
|
140
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
141
|
+
|
|
142
|
+
FLUC_RT: str # 등락률 (%)
|
|
143
|
+
|
|
144
|
+
TDD_OPNPRC: str # 시가
|
|
145
|
+
|
|
146
|
+
TDD_HGPRC: str # 고가
|
|
147
|
+
|
|
148
|
+
TDD_LWPRC: str # 저가
|
|
149
|
+
|
|
150
|
+
ACC_TRDVOL: str # 거래량
|
|
151
|
+
|
|
152
|
+
ACC_TRDVAL: str # 거래대금
|
|
153
|
+
|
|
154
|
+
MKTCAP: str # 시가총액
|
|
155
|
+
|
|
156
|
+
LIST_SHRS: str # 상장주식수
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class KosdaqStockInfoRecord(TypedDict):
|
|
161
|
+
"""KOSDAQ 종목 기본 정보"""
|
|
162
|
+
|
|
163
|
+
ISU_CD: str # 표준코드 (ISIN)
|
|
164
|
+
|
|
165
|
+
ISU_SRT_CD: str # 단축코드
|
|
166
|
+
|
|
167
|
+
ISU_NM: str # 한글 종목명
|
|
168
|
+
|
|
169
|
+
ISU_ABBRV: str # 한글 종목약명
|
|
170
|
+
|
|
171
|
+
ISU_ENG_NM: str # 영문 종목명
|
|
172
|
+
|
|
173
|
+
LIST_DD: str # 상장일
|
|
174
|
+
|
|
175
|
+
MKT_TP_NM: str # 시장구분
|
|
176
|
+
|
|
177
|
+
SECUGRP_NM: str # 증권구분
|
|
178
|
+
|
|
179
|
+
SECT_TP_NM: str # 소속부
|
|
180
|
+
|
|
181
|
+
KIND_STKCERT_TP_NM: str # 주식종류
|
|
182
|
+
|
|
183
|
+
PARVAL: str # 액면가
|
|
184
|
+
|
|
185
|
+
LIST_SHRS: str # 상장주식수
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
class KospiStockDailyRecord(TypedDict):
|
|
190
|
+
"""KOSPI 주식 일별 시세"""
|
|
191
|
+
|
|
192
|
+
BAS_DD: str # 기준일자
|
|
193
|
+
|
|
194
|
+
ISU_CD: str # 종목코드 (ISIN)
|
|
195
|
+
|
|
196
|
+
ISU_NM: str # 종목명
|
|
197
|
+
|
|
198
|
+
MKT_NM: str # 시장구분
|
|
199
|
+
|
|
200
|
+
SECT_TP_NM: str # 소속부
|
|
201
|
+
|
|
202
|
+
TDD_CLSPRC: str # 종가
|
|
203
|
+
|
|
204
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
205
|
+
|
|
206
|
+
FLUC_RT: str # 등락률 (%)
|
|
207
|
+
|
|
208
|
+
TDD_OPNPRC: str # 시가
|
|
209
|
+
|
|
210
|
+
TDD_HGPRC: str # 고가
|
|
211
|
+
|
|
212
|
+
TDD_LWPRC: str # 저가
|
|
213
|
+
|
|
214
|
+
ACC_TRDVOL: str # 거래량
|
|
215
|
+
|
|
216
|
+
ACC_TRDVAL: str # 거래대금
|
|
217
|
+
|
|
218
|
+
MKTCAP: str # 시가총액
|
|
219
|
+
|
|
220
|
+
LIST_SHRS: str # 상장주식수
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class KospiStockInfoRecord(TypedDict):
|
|
225
|
+
"""KOSPI 종목 기본 정보"""
|
|
226
|
+
|
|
227
|
+
ISU_CD: str # 표준코드 (ISIN)
|
|
228
|
+
|
|
229
|
+
ISU_SRT_CD: str # 단축코드
|
|
230
|
+
|
|
231
|
+
ISU_NM: str # 한글 종목명
|
|
232
|
+
|
|
233
|
+
ISU_ABBRV: str # 한글 종목약명
|
|
234
|
+
|
|
235
|
+
ISU_ENG_NM: str # 영문 종목명
|
|
236
|
+
|
|
237
|
+
LIST_DD: str # 상장일
|
|
238
|
+
|
|
239
|
+
MKT_TP_NM: str # 시장구분
|
|
240
|
+
|
|
241
|
+
SECUGRP_NM: str # 증권구분
|
|
242
|
+
|
|
243
|
+
SECT_TP_NM: str # 소속부
|
|
244
|
+
|
|
245
|
+
KIND_STKCERT_TP_NM: str # 주식종류
|
|
246
|
+
|
|
247
|
+
PARVAL: str # 액면가
|
|
248
|
+
|
|
249
|
+
LIST_SHRS: str # 상장주식수
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
class EtfDailyRecord(TypedDict):
|
|
254
|
+
"""ETF 일별 시세"""
|
|
255
|
+
|
|
256
|
+
BAS_DD: str # 기준일자
|
|
257
|
+
|
|
258
|
+
ISU_CD: str # 종목코드
|
|
259
|
+
|
|
260
|
+
ISU_NM: str # 종목명
|
|
261
|
+
|
|
262
|
+
TDD_CLSPRC: str # 종가
|
|
263
|
+
|
|
264
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
265
|
+
|
|
266
|
+
FLUC_RT: str # 등락률 (%)
|
|
267
|
+
|
|
268
|
+
TDD_OPNPRC: str # 시가
|
|
269
|
+
|
|
270
|
+
TDD_HGPRC: str # 고가
|
|
271
|
+
|
|
272
|
+
TDD_LWPRC: str # 저가
|
|
273
|
+
|
|
274
|
+
ACC_TRDVOL: str # 거래량
|
|
275
|
+
|
|
276
|
+
ACC_TRDVAL: str # 거래대금
|
|
277
|
+
|
|
278
|
+
MKTCAP: str # 시가총액
|
|
279
|
+
|
|
280
|
+
LIST_SHRS: str # 상장주식수
|
|
281
|
+
|
|
282
|
+
NAV: str # 순자산가치 (Net Asset Value)
|
|
283
|
+
|
|
284
|
+
IDX_IND_NM: str # 기초지수명
|
|
285
|
+
|
|
286
|
+
OBJ_STKPRC_IDX: str # 목적지수
|
|
287
|
+
|
|
288
|
+
CMPPREVDD_IDX: str # 지수대비
|
|
289
|
+
|
|
290
|
+
FLUC_RT_IDX: str # 지수등락률
|
|
291
|
+
|
|
292
|
+
INVSTASST_NETASST_TOTAMT: str # 투자자산순자산총액
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
class EtnDailyRecord(TypedDict):
|
|
297
|
+
"""ETN 일별 시세"""
|
|
298
|
+
|
|
299
|
+
BAS_DD: str # 기준일자
|
|
300
|
+
|
|
301
|
+
ISU_CD: str # 종목코드
|
|
302
|
+
|
|
303
|
+
ISU_NM: str # 종목명
|
|
304
|
+
|
|
305
|
+
TDD_CLSPRC: str # 종가
|
|
306
|
+
|
|
307
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
308
|
+
|
|
309
|
+
FLUC_RT: str # 등락률 (%)
|
|
310
|
+
|
|
311
|
+
TDD_OPNPRC: str # 시가
|
|
312
|
+
|
|
313
|
+
TDD_HGPRC: str # 고가
|
|
314
|
+
|
|
315
|
+
TDD_LWPRC: str # 저가
|
|
316
|
+
|
|
317
|
+
ACC_TRDVOL: str # 거래량
|
|
318
|
+
|
|
319
|
+
ACC_TRDVAL: str # 거래대금
|
|
320
|
+
|
|
321
|
+
MKTCAP: str # 시가총액
|
|
322
|
+
|
|
323
|
+
LIST_SHRS: str # 상장주식수
|
|
324
|
+
|
|
325
|
+
IDX_IND_NM: str # 기초지수명
|
|
326
|
+
|
|
327
|
+
OBJ_STKPRC_IDX: str # 목적지수
|
|
328
|
+
|
|
329
|
+
CMPPREVDD_IDX: str # 지수대비
|
|
330
|
+
|
|
331
|
+
FLUC_RT_IDX: str # 지수등락률
|
|
332
|
+
|
|
333
|
+
INDIC_VAL_AMT: str # 지시가격금액
|
|
334
|
+
|
|
335
|
+
PER1SECU_INDIC_VAL: str # 1증권당 지시가격
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
class FuturesDailyRecord(TypedDict):
|
|
340
|
+
"""선물 일별 시세"""
|
|
341
|
+
|
|
342
|
+
BAS_DD: str # 기준일자
|
|
343
|
+
|
|
344
|
+
ISU_CD: str # 종목코드
|
|
345
|
+
|
|
346
|
+
ISU_NM: str # 종목명
|
|
347
|
+
|
|
348
|
+
PROD_NM: str # 상품명
|
|
349
|
+
|
|
350
|
+
MKT_NM: str # 시장구분
|
|
351
|
+
|
|
352
|
+
TDD_CLSPRC: str # 종가
|
|
353
|
+
|
|
354
|
+
TDD_OPNPRC: str # 시가
|
|
355
|
+
|
|
356
|
+
TDD_HGPRC: str # 고가
|
|
357
|
+
|
|
358
|
+
TDD_LWPRC: str # 저가
|
|
359
|
+
|
|
360
|
+
SETL_PRC: str # 정산가격
|
|
361
|
+
|
|
362
|
+
SPOT_PRC: str # 현물가격
|
|
363
|
+
|
|
364
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
365
|
+
|
|
366
|
+
ACC_TRDVOL: str # 거래량
|
|
367
|
+
|
|
368
|
+
ACC_TRDVAL: str # 거래대금
|
|
369
|
+
|
|
370
|
+
ACC_OPNINT_QTY: str # 미결제약정수량
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
class OptionsDailyRecord(TypedDict):
|
|
375
|
+
"""옵션 일별 시세"""
|
|
376
|
+
|
|
377
|
+
BAS_DD: str # 기준일자
|
|
378
|
+
|
|
379
|
+
ISU_CD: str # 종목코드
|
|
380
|
+
|
|
381
|
+
ISU_NM: str # 종목명
|
|
382
|
+
|
|
383
|
+
PROD_NM: str # 상품명
|
|
384
|
+
|
|
385
|
+
RGHT_TP_NM: str # 권리구분 (콜/풋)
|
|
386
|
+
|
|
387
|
+
TDD_CLSPRC: str # 종가
|
|
388
|
+
|
|
389
|
+
TDD_OPNPRC: str # 시가
|
|
390
|
+
|
|
391
|
+
TDD_HGPRC: str # 고가
|
|
392
|
+
|
|
393
|
+
TDD_LWPRC: str # 저가
|
|
394
|
+
|
|
395
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
396
|
+
|
|
397
|
+
ACC_TRDVOL: str # 거래량
|
|
398
|
+
|
|
399
|
+
ACC_TRDVAL: str # 거래대금
|
|
400
|
+
|
|
401
|
+
ACC_OPNINT_QTY: str # 미결제약정수량
|
|
402
|
+
|
|
403
|
+
IMP_VOLT: str # 내재변동성 (Implied Volatility)
|
|
404
|
+
|
|
405
|
+
NXTDD_BAS_PRC: str # 익일기준가격
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
class StockFuturesKosdaqDailyRecord(TypedDict):
|
|
410
|
+
"""KOSDAQ 주식선물 일별 시세"""
|
|
411
|
+
|
|
412
|
+
BAS_DD: str # 기준일자
|
|
413
|
+
|
|
414
|
+
PROD_NM: str # 상품명
|
|
415
|
+
|
|
416
|
+
MKT_NM: str # 시장구분
|
|
417
|
+
|
|
418
|
+
ISU_CD: str # 종목코드
|
|
419
|
+
|
|
420
|
+
ISU_NM: str # 종목명
|
|
421
|
+
|
|
422
|
+
TDD_CLSPRC: str # 종가
|
|
423
|
+
|
|
424
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
425
|
+
|
|
426
|
+
TDD_OPNPRC: str # 시가
|
|
427
|
+
|
|
428
|
+
TDD_HGPRC: str # 고가
|
|
429
|
+
|
|
430
|
+
TDD_LWPRC: str # 저가
|
|
431
|
+
|
|
432
|
+
SPOT_PRC: str # 현물가격
|
|
433
|
+
|
|
434
|
+
SETL_PRC: str # 정산가격
|
|
435
|
+
|
|
436
|
+
ACC_TRDVOL: str # 거래량
|
|
437
|
+
|
|
438
|
+
ACC_TRDVAL: str # 거래대금
|
|
439
|
+
|
|
440
|
+
ACC_OPNINT_QTY: str # 미결제약정수량
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
class StockFuturesKospiDailyRecord(TypedDict):
|
|
445
|
+
"""KOSPI 주식선물 일별 시세"""
|
|
446
|
+
|
|
447
|
+
BAS_DD: str # 기준일자
|
|
448
|
+
|
|
449
|
+
PROD_NM: str # 상품명
|
|
450
|
+
|
|
451
|
+
MKT_NM: str # 시장구분
|
|
452
|
+
|
|
453
|
+
ISU_CD: str # 종목코드
|
|
454
|
+
|
|
455
|
+
ISU_NM: str # 종목명
|
|
456
|
+
|
|
457
|
+
TDD_CLSPRC: str # 종가
|
|
458
|
+
|
|
459
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
460
|
+
|
|
461
|
+
TDD_OPNPRC: str # 시가
|
|
462
|
+
|
|
463
|
+
TDD_HGPRC: str # 고가
|
|
464
|
+
|
|
465
|
+
TDD_LWPRC: str # 저가
|
|
466
|
+
|
|
467
|
+
SPOT_PRC: str # 현물가격
|
|
468
|
+
|
|
469
|
+
SETL_PRC: str # 정산가격
|
|
470
|
+
|
|
471
|
+
ACC_TRDVOL: str # 거래량
|
|
472
|
+
|
|
473
|
+
ACC_TRDVAL: str # 거래대금
|
|
474
|
+
|
|
475
|
+
ACC_OPNINT_QTY: str # 미결제약정수량
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
class StockOptionsKosdaqDailyRecord(TypedDict):
|
|
480
|
+
"""KOSDAQ 주식옵션 일별 시세"""
|
|
481
|
+
|
|
482
|
+
BAS_DD: str # 기준일자
|
|
483
|
+
|
|
484
|
+
ISU_CD: str # 종목코드
|
|
485
|
+
|
|
486
|
+
ISU_NM: str # 종목명
|
|
487
|
+
|
|
488
|
+
PROD_NM: str # 상품명
|
|
489
|
+
|
|
490
|
+
RGHT_TP_NM: str # 권리구분 (콜/풋)
|
|
491
|
+
|
|
492
|
+
TDD_CLSPRC: str # 종가
|
|
493
|
+
|
|
494
|
+
TDD_OPNPRC: str # 시가
|
|
495
|
+
|
|
496
|
+
TDD_HGPRC: str # 고가
|
|
497
|
+
|
|
498
|
+
TDD_LWPRC: str # 저가
|
|
499
|
+
|
|
500
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
501
|
+
|
|
502
|
+
ACC_TRDVOL: str # 거래량
|
|
503
|
+
|
|
504
|
+
ACC_TRDVAL: str # 거래대금
|
|
505
|
+
|
|
506
|
+
ACC_OPNINT_QTY: str # 미결제약정수량
|
|
507
|
+
|
|
508
|
+
IMP_VOLT: str # 내재변동성 (Implied Volatility)
|
|
509
|
+
|
|
510
|
+
NXTDD_BAS_PRC: str # 익일기준가격
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
class StockOptionsKospiDailyRecord(TypedDict):
|
|
515
|
+
"""KOSPI 주식옵션 일별 시세"""
|
|
516
|
+
|
|
517
|
+
BAS_DD: str # 기준일자
|
|
518
|
+
|
|
519
|
+
ISU_CD: str # 종목코드
|
|
520
|
+
|
|
521
|
+
ISU_NM: str # 종목명
|
|
522
|
+
|
|
523
|
+
PROD_NM: str # 상품명
|
|
524
|
+
|
|
525
|
+
RGHT_TP_NM: str # 권리구분 (콜/풋)
|
|
526
|
+
|
|
527
|
+
TDD_CLSPRC: str # 종가
|
|
528
|
+
|
|
529
|
+
TDD_OPNPRC: str # 시가
|
|
530
|
+
|
|
531
|
+
TDD_HGPRC: str # 고가
|
|
532
|
+
|
|
533
|
+
TDD_LWPRC: str # 저가
|
|
534
|
+
|
|
535
|
+
CMPPREVDD_PRC: str # 대비 (전일 대비 변동)
|
|
536
|
+
|
|
537
|
+
ACC_TRDVOL: str # 거래량
|
|
538
|
+
|
|
539
|
+
ACC_TRDVAL: str # 거래대금
|
|
540
|
+
|
|
541
|
+
ACC_OPNINT_QTY: str # 미결제약정수량
|
|
542
|
+
|
|
543
|
+
IMP_VOLT: str # 내재변동성 (Implied Volatility)
|
|
544
|
+
|
|
545
|
+
NXTDD_BAS_PRC: str # 익일기준가격
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "krxon"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "KRX (Korea Exchange) Open API Python SDK - auto-generated by krxon"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { text = "MIT" }
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "seungdols" },
|
|
14
|
+
]
|
|
15
|
+
keywords = ["krx", "korea-exchange", "finance", "api", "sdk"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 3 - Alpha",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"Intended Audience :: Financial and Insurance Industry",
|
|
20
|
+
"License :: OSI Approved :: MIT License",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Programming Language :: Python :: 3.13",
|
|
26
|
+
"Topic :: Office/Business :: Financial",
|
|
27
|
+
]
|
|
28
|
+
dependencies = [
|
|
29
|
+
"httpx>=0.24.0",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[project.urls]
|
|
33
|
+
Homepage = "https://github.com/seungdols/krxon"
|
|
34
|
+
Repository = "https://github.com/seungdols/krxon"
|
|
35
|
+
Issues = "https://github.com/seungdols/krxon/issues"
|
|
36
|
+
|
|
37
|
+
[tool.hatch.build.targets.wheel]
|
|
38
|
+
packages = ["krx"]
|