clevercx-security-master-types 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.
- clevercx_security_master_types-0.1.0/.gitignore +50 -0
- clevercx_security_master_types-0.1.0/PKG-INFO +77 -0
- clevercx_security_master_types-0.1.0/README.md +54 -0
- clevercx_security_master_types-0.1.0/clevercx_security_master_types/__init__.py +44 -0
- clevercx_security_master_types-0.1.0/clevercx_security_master_types/models.py +419 -0
- clevercx_security_master_types-0.1.0/clevercx_security_master_types/py.typed +0 -0
- clevercx_security_master_types-0.1.0/pyproject.toml +38 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
node_modules/
|
|
3
|
+
__pycache__/
|
|
4
|
+
*.pyc
|
|
5
|
+
.venv/
|
|
6
|
+
venv/
|
|
7
|
+
|
|
8
|
+
# Build outputs
|
|
9
|
+
packages/typescript/dist/
|
|
10
|
+
packages/python/dist/
|
|
11
|
+
packages/python/*.egg-info/
|
|
12
|
+
packages/python/build/
|
|
13
|
+
|
|
14
|
+
# IDE
|
|
15
|
+
.idea/
|
|
16
|
+
.vscode/
|
|
17
|
+
*.swp
|
|
18
|
+
*.swo
|
|
19
|
+
|
|
20
|
+
# OS
|
|
21
|
+
.DS_Store
|
|
22
|
+
Thumbs.db
|
|
23
|
+
|
|
24
|
+
# Logs
|
|
25
|
+
*.log
|
|
26
|
+
npm-debug.log*
|
|
27
|
+
|
|
28
|
+
# Environment
|
|
29
|
+
.env
|
|
30
|
+
.env.local
|
|
31
|
+
.env.*.local
|
|
32
|
+
|
|
33
|
+
# Package lock files
|
|
34
|
+
# Note: package-lock.json is committed for CI (npm ci requires it)
|
|
35
|
+
|
|
36
|
+
# Python
|
|
37
|
+
*.egg
|
|
38
|
+
*.egg-info/
|
|
39
|
+
.eggs/
|
|
40
|
+
*.so
|
|
41
|
+
.Python
|
|
42
|
+
develop-eggs/
|
|
43
|
+
downloads/
|
|
44
|
+
eggs/
|
|
45
|
+
lib/
|
|
46
|
+
lib64/
|
|
47
|
+
parts/
|
|
48
|
+
sdist/
|
|
49
|
+
var/
|
|
50
|
+
wheels/
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: clevercx-security-master-types
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Python type definitions for CleverCX Security Master database entities
|
|
5
|
+
Project-URL: Homepage, https://github.com/clevercx/level-api
|
|
6
|
+
Project-URL: Repository, https://github.com/clevercx/level-api.git
|
|
7
|
+
Author-email: CleverCX <dev@clevercx.com>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
Keywords: clevercx,database,security-master,types
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Typing :: Typed
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Provides-Extra: dev
|
|
20
|
+
Requires-Dist: psycopg2-binary>=2.9.0; extra == 'dev'
|
|
21
|
+
Requires-Dist: sqlacodegen>=3.2.0; extra == 'dev'
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
# clevercx-security-master-types
|
|
25
|
+
|
|
26
|
+
Python type definitions for CleverCX Security Master database entities.
|
|
27
|
+
|
|
28
|
+
**Generated from**: PostgreSQL database via `sqlacodegen`
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pip install clevercx-security-master-types
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
from clevercx_security_master_types import (
|
|
40
|
+
Security,
|
|
41
|
+
SecurityHistoricalPrice,
|
|
42
|
+
SecurityCalculation,
|
|
43
|
+
SecurityReferenceVersion,
|
|
44
|
+
SecurityMetadataVersion,
|
|
45
|
+
SecuritySettingsVersion,
|
|
46
|
+
SecurityComposition,
|
|
47
|
+
VSecuritiesCurrent,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
# Use with your database queries
|
|
51
|
+
def get_security(row: dict) -> Security:
|
|
52
|
+
return Security(**row)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Available Types
|
|
56
|
+
|
|
57
|
+
- `Security` - Core security identity
|
|
58
|
+
- `SecurityHistoricalPrice` - Historical price data
|
|
59
|
+
- `SecurityCalculation` - Calculated metrics
|
|
60
|
+
- `SecurityReferenceVersion` - Vendor reference data
|
|
61
|
+
- `SecurityMetadataVersion` - Internal metadata
|
|
62
|
+
- `SecuritySettingsVersion` - Calculation settings
|
|
63
|
+
- `SecurityComposition` - Portfolio composition
|
|
64
|
+
- `SecurityReturn` - Return data
|
|
65
|
+
- `DataSource` - Data source definitions
|
|
66
|
+
- `VSecuritiesCurrent` - Current security view (denormalized)
|
|
67
|
+
|
|
68
|
+
## Related Packages
|
|
69
|
+
|
|
70
|
+
| Package | Purpose |
|
|
71
|
+
|---------|---------|
|
|
72
|
+
| `@clevercx/security-master-types` (npm) | TypeScript types |
|
|
73
|
+
| `@clevercx/security-master-prisma` (npm) | Prisma schema for querying |
|
|
74
|
+
|
|
75
|
+
## License
|
|
76
|
+
|
|
77
|
+
MIT
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# clevercx-security-master-types
|
|
2
|
+
|
|
3
|
+
Python type definitions for CleverCX Security Master database entities.
|
|
4
|
+
|
|
5
|
+
**Generated from**: PostgreSQL database via `sqlacodegen`
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install clevercx-security-master-types
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from clevercx_security_master_types import (
|
|
17
|
+
Security,
|
|
18
|
+
SecurityHistoricalPrice,
|
|
19
|
+
SecurityCalculation,
|
|
20
|
+
SecurityReferenceVersion,
|
|
21
|
+
SecurityMetadataVersion,
|
|
22
|
+
SecuritySettingsVersion,
|
|
23
|
+
SecurityComposition,
|
|
24
|
+
VSecuritiesCurrent,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
# Use with your database queries
|
|
28
|
+
def get_security(row: dict) -> Security:
|
|
29
|
+
return Security(**row)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Available Types
|
|
33
|
+
|
|
34
|
+
- `Security` - Core security identity
|
|
35
|
+
- `SecurityHistoricalPrice` - Historical price data
|
|
36
|
+
- `SecurityCalculation` - Calculated metrics
|
|
37
|
+
- `SecurityReferenceVersion` - Vendor reference data
|
|
38
|
+
- `SecurityMetadataVersion` - Internal metadata
|
|
39
|
+
- `SecuritySettingsVersion` - Calculation settings
|
|
40
|
+
- `SecurityComposition` - Portfolio composition
|
|
41
|
+
- `SecurityReturn` - Return data
|
|
42
|
+
- `DataSource` - Data source definitions
|
|
43
|
+
- `VSecuritiesCurrent` - Current security view (denormalized)
|
|
44
|
+
|
|
45
|
+
## Related Packages
|
|
46
|
+
|
|
47
|
+
| Package | Purpose |
|
|
48
|
+
|---------|---------|
|
|
49
|
+
| `@clevercx/security-master-types` (npm) | TypeScript types |
|
|
50
|
+
| `@clevercx/security-master-prisma` (npm) | Prisma schema for querying |
|
|
51
|
+
|
|
52
|
+
## License
|
|
53
|
+
|
|
54
|
+
MIT
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Auto-generated - DO NOT EDIT
|
|
2
|
+
# Generated from PostgreSQL database via sqlacodegen
|
|
3
|
+
|
|
4
|
+
from .models import (
|
|
5
|
+
Security,
|
|
6
|
+
SecurityHistoricalPrice,
|
|
7
|
+
SecurityCalculation,
|
|
8
|
+
SecurityReferenceVersion,
|
|
9
|
+
SecurityMetadataVersion,
|
|
10
|
+
SecuritySettingsVersion,
|
|
11
|
+
SecurityComposition,
|
|
12
|
+
SecurityVersion,
|
|
13
|
+
SecurityReturn,
|
|
14
|
+
DataSource,
|
|
15
|
+
FactsetJobTracking,
|
|
16
|
+
FactsetFailedSecurity,
|
|
17
|
+
VSecuritiesCurrent,
|
|
18
|
+
VSecurityVersionHistory,
|
|
19
|
+
SecurityTypeEnum,
|
|
20
|
+
VersionChangeTypeEnum,
|
|
21
|
+
FactsetJobStatusEnum,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
__all__ = [
|
|
25
|
+
"Security",
|
|
26
|
+
"SecurityHistoricalPrice",
|
|
27
|
+
"SecurityCalculation",
|
|
28
|
+
"SecurityReferenceVersion",
|
|
29
|
+
"SecurityMetadataVersion",
|
|
30
|
+
"SecuritySettingsVersion",
|
|
31
|
+
"SecurityComposition",
|
|
32
|
+
"SecurityVersion",
|
|
33
|
+
"SecurityReturn",
|
|
34
|
+
"DataSource",
|
|
35
|
+
"FactsetJobTracking",
|
|
36
|
+
"FactsetFailedSecurity",
|
|
37
|
+
"VSecuritiesCurrent",
|
|
38
|
+
"VSecurityVersionHistory",
|
|
39
|
+
"SecurityTypeEnum",
|
|
40
|
+
"VersionChangeTypeEnum",
|
|
41
|
+
"FactsetJobStatusEnum",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
__version__ = "0.1.0"
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
"""
|
|
2
|
+
clevercx-security-master-types
|
|
3
|
+
Auto-generated Python type definitions for CleverCX Security Master database entities
|
|
4
|
+
|
|
5
|
+
DO NOT EDIT MANUALLY - Generated from PostgreSQL database via sqlacodegen
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from dataclasses import dataclass, field
|
|
9
|
+
from datetime import datetime
|
|
10
|
+
from decimal import Decimal
|
|
11
|
+
from enum import Enum
|
|
12
|
+
from typing import Any, Dict, List, Optional
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# ============================================================
|
|
16
|
+
# ENUMS
|
|
17
|
+
# ============================================================
|
|
18
|
+
|
|
19
|
+
class SecurityTypeEnum(str, Enum):
|
|
20
|
+
"""Maps to security_type_enum in PostgreSQL"""
|
|
21
|
+
ETF = "ETF"
|
|
22
|
+
ETN = "ETN"
|
|
23
|
+
ETC = "ETC"
|
|
24
|
+
INDEX = "INDEX"
|
|
25
|
+
MODEL = "MODEL"
|
|
26
|
+
MUTUAL_FUND = "MUTUAL_FUND"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class VersionChangeTypeEnum(str, Enum):
|
|
30
|
+
"""Maps to version_change_type in PostgreSQL"""
|
|
31
|
+
CREATED = "CREATED"
|
|
32
|
+
REFERENCE_UPDATE = "REFERENCE_UPDATE"
|
|
33
|
+
METADATA_UPDATE = "METADATA_UPDATE"
|
|
34
|
+
SETTINGS_UPDATE = "SETTINGS_UPDATE"
|
|
35
|
+
BULK_UPDATE = "BULK_UPDATE"
|
|
36
|
+
CORRECTION = "CORRECTION"
|
|
37
|
+
RESTATEMENT = "RESTATEMENT"
|
|
38
|
+
SYSTEM_MIGRATION = "SYSTEM_MIGRATION"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class FactsetJobStatusEnum(str, Enum):
|
|
42
|
+
"""Maps to factset_job_status in PostgreSQL"""
|
|
43
|
+
QUEUED = "queued"
|
|
44
|
+
EXECUTING = "executing"
|
|
45
|
+
CREATED = "created"
|
|
46
|
+
SUCCEEDED = "succeeded"
|
|
47
|
+
FAILED = "failed"
|
|
48
|
+
CANCELLED = "cancelled"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# ============================================================
|
|
52
|
+
# CORE ENTITIES
|
|
53
|
+
# ============================================================
|
|
54
|
+
|
|
55
|
+
@dataclass
|
|
56
|
+
class Security:
|
|
57
|
+
"""
|
|
58
|
+
Core security identity table.
|
|
59
|
+
Maps to: securities
|
|
60
|
+
"""
|
|
61
|
+
security_id: int
|
|
62
|
+
internal_id: str
|
|
63
|
+
created_at: datetime
|
|
64
|
+
ticker: Optional[str] = None
|
|
65
|
+
isin: Optional[str] = None
|
|
66
|
+
cusip: Optional[str] = None
|
|
67
|
+
sedol: Optional[str] = None
|
|
68
|
+
security_type: Optional[SecurityTypeEnum] = None
|
|
69
|
+
authoritative_data_source_id: Optional[int] = None
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@dataclass
|
|
73
|
+
class DataSource:
|
|
74
|
+
"""
|
|
75
|
+
Master list of data providers.
|
|
76
|
+
Maps to: data_sources
|
|
77
|
+
"""
|
|
78
|
+
data_source_id: int
|
|
79
|
+
source_name: str
|
|
80
|
+
source_code: str
|
|
81
|
+
is_active: bool
|
|
82
|
+
created_at: datetime
|
|
83
|
+
updated_at: datetime
|
|
84
|
+
source_type: Optional[str] = None
|
|
85
|
+
description: Optional[str] = None
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
# ============================================================
|
|
89
|
+
# VERSION TABLES
|
|
90
|
+
# ============================================================
|
|
91
|
+
|
|
92
|
+
@dataclass
|
|
93
|
+
class SecurityReferenceVersion:
|
|
94
|
+
"""
|
|
95
|
+
Vendor reference data from FactSet and other providers.
|
|
96
|
+
Maps to: security_reference_versions
|
|
97
|
+
"""
|
|
98
|
+
reference_version_id: int
|
|
99
|
+
security_id: int
|
|
100
|
+
internal_id: str
|
|
101
|
+
version_number: int
|
|
102
|
+
is_current: bool
|
|
103
|
+
created_at: datetime
|
|
104
|
+
data_frequencies: List[str] = field(default_factory=lambda: ["DAILY"])
|
|
105
|
+
name: Optional[str] = None
|
|
106
|
+
description: Optional[str] = None
|
|
107
|
+
asset_class_primary: Optional[str] = None
|
|
108
|
+
asset_class_secondary: Optional[str] = None
|
|
109
|
+
asset_class_tertiary: Optional[str] = None
|
|
110
|
+
assets_under_management: Optional[Decimal] = None
|
|
111
|
+
domicile_country_code: Optional[str] = None
|
|
112
|
+
primary_exposure_region: Optional[str] = None
|
|
113
|
+
primary_exposure_country: Optional[str] = None
|
|
114
|
+
trading_currency: Optional[str] = None
|
|
115
|
+
base_currency: Optional[str] = None
|
|
116
|
+
primary_listing_exchange: Optional[str] = None
|
|
117
|
+
status: Optional[str] = None
|
|
118
|
+
inception_date: Optional[datetime] = None
|
|
119
|
+
issuer_company: Optional[str] = None
|
|
120
|
+
asset_manager: Optional[str] = None
|
|
121
|
+
security_url: Optional[str] = None
|
|
122
|
+
data_source_id: Optional[int] = None
|
|
123
|
+
source_updated_at: Optional[datetime] = None
|
|
124
|
+
created_by: Optional[str] = None
|
|
125
|
+
change_reason: Optional[str] = None
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
@dataclass
|
|
129
|
+
class SecurityMetadataVersion:
|
|
130
|
+
"""
|
|
131
|
+
Internal CleverCX metadata.
|
|
132
|
+
Maps to: security_metadata_versions
|
|
133
|
+
"""
|
|
134
|
+
metadata_version_id: int
|
|
135
|
+
security_id: int
|
|
136
|
+
internal_id: str
|
|
137
|
+
version_number: int
|
|
138
|
+
is_current: bool
|
|
139
|
+
is_template: bool
|
|
140
|
+
is_company_model: bool
|
|
141
|
+
is_archived: bool
|
|
142
|
+
created_at: datetime
|
|
143
|
+
custom_attributes: Dict[str, Any] = field(default_factory=dict)
|
|
144
|
+
pdf_url: Optional[str] = None
|
|
145
|
+
planning_objective: Optional[str] = None
|
|
146
|
+
creator_id: Optional[str] = None
|
|
147
|
+
risk_type: Optional[str] = None
|
|
148
|
+
index_id: Optional[int] = None
|
|
149
|
+
mongo_id: Optional[str] = None
|
|
150
|
+
created_by: Optional[str] = None
|
|
151
|
+
change_reason: Optional[str] = None
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
@dataclass
|
|
155
|
+
class SecuritySettingsVersion:
|
|
156
|
+
"""
|
|
157
|
+
Calculation configuration.
|
|
158
|
+
Maps to: security_settings_versions
|
|
159
|
+
"""
|
|
160
|
+
settings_version_id: int
|
|
161
|
+
security_id: int
|
|
162
|
+
internal_id: str
|
|
163
|
+
version_number: int
|
|
164
|
+
is_current: bool
|
|
165
|
+
created_at: datetime
|
|
166
|
+
calculation_parameters: Dict[str, Any] = field(default_factory=dict)
|
|
167
|
+
data_frequency: Optional[str] = "DAILY"
|
|
168
|
+
stats_loopback_years: Optional[int] = 5
|
|
169
|
+
statistics_window: Optional[int] = None
|
|
170
|
+
risk_free_rate: Optional[Decimal] = None
|
|
171
|
+
created_by: Optional[str] = None
|
|
172
|
+
change_reason: Optional[str] = None
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
@dataclass
|
|
176
|
+
class SecurityVersion:
|
|
177
|
+
"""
|
|
178
|
+
Composite snapshot pointing to all version tables.
|
|
179
|
+
Maps to: security_versions
|
|
180
|
+
"""
|
|
181
|
+
security_version_id: int
|
|
182
|
+
security_id: int
|
|
183
|
+
internal_id: str
|
|
184
|
+
version_number: int
|
|
185
|
+
is_current: bool
|
|
186
|
+
reference_version_id: int
|
|
187
|
+
metadata_version_id: int
|
|
188
|
+
settings_version_id: int
|
|
189
|
+
change_type: VersionChangeTypeEnum
|
|
190
|
+
created_at: datetime
|
|
191
|
+
change_summary: Optional[str] = None
|
|
192
|
+
ticker_snapshot: Optional[str] = None
|
|
193
|
+
name_snapshot: Optional[str] = None
|
|
194
|
+
created_by: Optional[str] = None
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
# ============================================================
|
|
198
|
+
# DATA TABLES
|
|
199
|
+
# ============================================================
|
|
200
|
+
|
|
201
|
+
@dataclass
|
|
202
|
+
class SecurityComposition:
|
|
203
|
+
"""
|
|
204
|
+
Portfolio structure and benchmarks.
|
|
205
|
+
Maps to: security_composition
|
|
206
|
+
|
|
207
|
+
composition_type: STRUCTURE (holdings) or BENCHMARK
|
|
208
|
+
"""
|
|
209
|
+
composition_id: int
|
|
210
|
+
settings_version_id: int
|
|
211
|
+
composition_type: str # 'STRUCTURE' or 'BENCHMARK'
|
|
212
|
+
constituent_internal_id: str
|
|
213
|
+
weight: Decimal
|
|
214
|
+
position: int = 0
|
|
215
|
+
constituent_security_id: Optional[int] = None
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
@dataclass
|
|
219
|
+
class SecurityCalculation:
|
|
220
|
+
"""
|
|
221
|
+
Point-in-time calculated metrics.
|
|
222
|
+
Maps to: security_calculations
|
|
223
|
+
"""
|
|
224
|
+
calculation_id: int
|
|
225
|
+
security_id: int
|
|
226
|
+
internal_id: str
|
|
227
|
+
calculation_date: datetime
|
|
228
|
+
calculated_at: datetime
|
|
229
|
+
extended_metrics: Dict[str, Any] = field(default_factory=dict)
|
|
230
|
+
settings_version_id: Optional[int] = None
|
|
231
|
+
risk_number: Optional[Decimal] = None
|
|
232
|
+
return_value: Optional[Decimal] = None
|
|
233
|
+
risk_score: Optional[Decimal] = None
|
|
234
|
+
sharpe: Optional[Decimal] = None
|
|
235
|
+
sortino: Optional[Decimal] = None
|
|
236
|
+
standard_deviation: Optional[Decimal] = None
|
|
237
|
+
max_drawdown: Optional[Decimal] = None
|
|
238
|
+
cagr: Optional[Decimal] = None
|
|
239
|
+
beta: Optional[Decimal] = None
|
|
240
|
+
alpha: Optional[Decimal] = None
|
|
241
|
+
data_points_used: Optional[int] = None
|
|
242
|
+
calculation_start_date: Optional[datetime] = None
|
|
243
|
+
calculation_end_date: Optional[datetime] = None
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
@dataclass
|
|
247
|
+
class SecurityHistoricalPrice:
|
|
248
|
+
"""
|
|
249
|
+
Historical price data.
|
|
250
|
+
Maps to: security_historical_prices
|
|
251
|
+
"""
|
|
252
|
+
price_id: int
|
|
253
|
+
internal_id: str
|
|
254
|
+
data_source_id: int
|
|
255
|
+
price_date: datetime
|
|
256
|
+
is_latest: bool
|
|
257
|
+
ingested_at: datetime
|
|
258
|
+
security_id: Optional[int] = None
|
|
259
|
+
open_price: Optional[Decimal] = None
|
|
260
|
+
high_price: Optional[Decimal] = None
|
|
261
|
+
low_price: Optional[Decimal] = None
|
|
262
|
+
close_price: Optional[Decimal] = None
|
|
263
|
+
adjusted_close_price: Optional[Decimal] = None
|
|
264
|
+
volume: Optional[int] = None
|
|
265
|
+
turnover_value: Optional[Decimal] = None
|
|
266
|
+
dividend_currency: Optional[str] = None
|
|
267
|
+
currency: Optional[str] = None
|
|
268
|
+
price_type: Optional[str] = None
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
@dataclass
|
|
272
|
+
class SecurityReturn:
|
|
273
|
+
"""
|
|
274
|
+
Return data.
|
|
275
|
+
Maps to: security_returns
|
|
276
|
+
"""
|
|
277
|
+
return_id: int
|
|
278
|
+
internal_id: str
|
|
279
|
+
data_source_id: int
|
|
280
|
+
return_date: datetime
|
|
281
|
+
return_frequency: str
|
|
282
|
+
return_value_type: str
|
|
283
|
+
ingested_at: datetime
|
|
284
|
+
security_id: Optional[int] = None
|
|
285
|
+
return_value: Optional[Decimal] = None
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
# ============================================================
|
|
289
|
+
# FACTSET TRACKING
|
|
290
|
+
# ============================================================
|
|
291
|
+
|
|
292
|
+
@dataclass
|
|
293
|
+
class FactsetJobTracking:
|
|
294
|
+
"""
|
|
295
|
+
Tracks FactSet batch jobs.
|
|
296
|
+
Maps to: factset_job_tracking
|
|
297
|
+
"""
|
|
298
|
+
job_id: str
|
|
299
|
+
status: FactsetJobStatusEnum
|
|
300
|
+
submitted_at: datetime
|
|
301
|
+
created_at: datetime
|
|
302
|
+
updated_at: datetime
|
|
303
|
+
job_name: Optional[str] = None
|
|
304
|
+
securities_count: Optional[int] = None
|
|
305
|
+
records_retrieved: Optional[int] = None
|
|
306
|
+
error_message: Optional[str] = None
|
|
307
|
+
completed_at: Optional[datetime] = None
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
@dataclass
|
|
311
|
+
class FactsetFailedSecurity:
|
|
312
|
+
"""
|
|
313
|
+
Failed security fetches.
|
|
314
|
+
Maps to: factset_failed_securities
|
|
315
|
+
"""
|
|
316
|
+
id: int
|
|
317
|
+
failed_at: datetime
|
|
318
|
+
retry_count: int
|
|
319
|
+
resolved: bool
|
|
320
|
+
security_id: Optional[int] = None
|
|
321
|
+
internal_id: Optional[str] = None
|
|
322
|
+
ticker: Optional[str] = None
|
|
323
|
+
security_type: Optional[SecurityTypeEnum] = None
|
|
324
|
+
job_id: Optional[str] = None
|
|
325
|
+
failure_reason: Optional[str] = None
|
|
326
|
+
last_retry_at: Optional[datetime] = None
|
|
327
|
+
resolved_at: Optional[datetime] = None
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
# ============================================================
|
|
331
|
+
# VIEWS (Denormalized)
|
|
332
|
+
# ============================================================
|
|
333
|
+
|
|
334
|
+
@dataclass
|
|
335
|
+
class VSecuritiesCurrent:
|
|
336
|
+
"""
|
|
337
|
+
Current state of all securities (denormalized view).
|
|
338
|
+
Maps to: v_securities_current
|
|
339
|
+
"""
|
|
340
|
+
security_id: int
|
|
341
|
+
internal_id: str
|
|
342
|
+
security_created_at: datetime
|
|
343
|
+
ticker: Optional[str] = None
|
|
344
|
+
isin: Optional[str] = None
|
|
345
|
+
cusip: Optional[str] = None
|
|
346
|
+
sedol: Optional[str] = None
|
|
347
|
+
security_type: Optional[str] = None
|
|
348
|
+
authoritative_data_source_id: Optional[int] = None
|
|
349
|
+
data_source_name: Optional[str] = None
|
|
350
|
+
security_version_id: Optional[int] = None
|
|
351
|
+
version_number: Optional[int] = None
|
|
352
|
+
last_change_type: Optional[str] = None
|
|
353
|
+
version_created_at: Optional[datetime] = None
|
|
354
|
+
version_created_by: Optional[str] = None
|
|
355
|
+
name: Optional[str] = None
|
|
356
|
+
description: Optional[str] = None
|
|
357
|
+
asset_class_primary: Optional[str] = None
|
|
358
|
+
asset_class_secondary: Optional[str] = None
|
|
359
|
+
asset_class_tertiary: Optional[str] = None
|
|
360
|
+
assets_under_management: Optional[Decimal] = None
|
|
361
|
+
domicile_country_code: Optional[str] = None
|
|
362
|
+
primary_exposure_region: Optional[str] = None
|
|
363
|
+
primary_exposure_country: Optional[str] = None
|
|
364
|
+
trading_currency: Optional[str] = None
|
|
365
|
+
base_currency: Optional[str] = None
|
|
366
|
+
primary_listing_exchange: Optional[str] = None
|
|
367
|
+
status: Optional[str] = None
|
|
368
|
+
inception_date: Optional[datetime] = None
|
|
369
|
+
issuer_company: Optional[str] = None
|
|
370
|
+
asset_manager: Optional[str] = None
|
|
371
|
+
security_url: Optional[str] = None
|
|
372
|
+
data_frequencies: Optional[List[str]] = None
|
|
373
|
+
pdf_url: Optional[str] = None
|
|
374
|
+
planning_objective: Optional[str] = None
|
|
375
|
+
creator_id: Optional[str] = None
|
|
376
|
+
is_template: Optional[bool] = None
|
|
377
|
+
is_company_model: Optional[bool] = None
|
|
378
|
+
risk_type: Optional[str] = None
|
|
379
|
+
is_archived: Optional[bool] = None
|
|
380
|
+
mongo_id: Optional[str] = None
|
|
381
|
+
custom_attributes: Optional[Dict[str, Any]] = None
|
|
382
|
+
data_frequency: Optional[str] = None
|
|
383
|
+
stats_loopback_years: Optional[int] = None
|
|
384
|
+
statistics_window: Optional[int] = None
|
|
385
|
+
settings_version_id: Optional[int] = None
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
@dataclass
|
|
389
|
+
class VSecurityVersionHistory:
|
|
390
|
+
"""
|
|
391
|
+
Complete version history for audit.
|
|
392
|
+
Maps to: v_security_version_history
|
|
393
|
+
"""
|
|
394
|
+
security_id: int
|
|
395
|
+
internal_id: str
|
|
396
|
+
security_version_id: int
|
|
397
|
+
version_number: int
|
|
398
|
+
change_type: str
|
|
399
|
+
is_current: bool
|
|
400
|
+
version_created_at: datetime
|
|
401
|
+
reference_version_id: int
|
|
402
|
+
reference_version: int
|
|
403
|
+
metadata_version_id: int
|
|
404
|
+
metadata_version: int
|
|
405
|
+
settings_version_id: int
|
|
406
|
+
settings_version: int
|
|
407
|
+
ticker: Optional[str] = None
|
|
408
|
+
change_summary: Optional[str] = None
|
|
409
|
+
created_by: Optional[str] = None
|
|
410
|
+
name: Optional[str] = None
|
|
411
|
+
asset_class_primary: Optional[str] = None
|
|
412
|
+
status: Optional[str] = None
|
|
413
|
+
reference_change_reason: Optional[str] = None
|
|
414
|
+
is_archived: Optional[bool] = None
|
|
415
|
+
is_template: Optional[bool] = None
|
|
416
|
+
metadata_change_reason: Optional[str] = None
|
|
417
|
+
data_frequency: Optional[str] = None
|
|
418
|
+
stats_loopback_years: Optional[int] = None
|
|
419
|
+
settings_change_reason: Optional[str] = None
|
|
File without changes
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "clevercx-security-master-types"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Python type definitions for CleverCX Security Master database entities"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
authors = [
|
|
12
|
+
{ name = "CleverCX", email = "dev@clevercx.com" }
|
|
13
|
+
]
|
|
14
|
+
keywords = ["clevercx", "security-master", "types", "database"]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 4 - Beta",
|
|
17
|
+
"Intended Audience :: Developers",
|
|
18
|
+
"License :: OSI Approved :: MIT License",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Typing :: Typed",
|
|
24
|
+
]
|
|
25
|
+
requires-python = ">=3.10"
|
|
26
|
+
|
|
27
|
+
[project.optional-dependencies]
|
|
28
|
+
dev = [
|
|
29
|
+
"sqlacodegen>=3.2.0",
|
|
30
|
+
"psycopg2-binary>=2.9.0",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
[project.urls]
|
|
34
|
+
Homepage = "https://github.com/clevercx/level-api"
|
|
35
|
+
Repository = "https://github.com/clevercx/level-api.git"
|
|
36
|
+
|
|
37
|
+
[tool.hatch.build.targets.wheel]
|
|
38
|
+
packages = ["clevercx_security_master_types"]
|