PyQuantimClient 2.0.31__tar.gz → 2.0.33__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.
Files changed (24) hide show
  1. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/PKG-INFO +1 -1
  2. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/PyQuantimClient.egg-info/PKG-INFO +1 -1
  3. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/setup.py +1 -1
  4. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/risk.py +7 -4
  5. pyquantimclient-2.0.33/src/utils.py +26 -0
  6. pyquantimclient-2.0.31/src/utils.py +0 -15
  7. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/PyQuantimClient.egg-info/SOURCES.txt +0 -0
  8. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/PyQuantimClient.egg-info/dependency_links.txt +0 -0
  9. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/PyQuantimClient.egg-info/top_level.txt +0 -0
  10. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/README.md +0 -0
  11. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/setup.cfg +0 -0
  12. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/__init__.py +0 -0
  13. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/alm.py +0 -0
  14. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/api.py +0 -0
  15. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/benchmarks.py +0 -0
  16. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/bi.py +0 -0
  17. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/credit.py +0 -0
  18. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/data.py +0 -0
  19. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/energy.py +0 -0
  20. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/performance.py +0 -0
  21. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/portfolios.py +0 -0
  22. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/preprocess_co.py +0 -0
  23. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/private_debt.py +0 -0
  24. {pyquantimclient-2.0.31 → pyquantimclient-2.0.33}/src/returns.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PyQuantimClient
3
- Version: 2.0.31
3
+ Version: 2.0.33
4
4
  Summary: Python client to access quantIM services
5
5
  Author: Daniel Velasquez
6
6
  Author-email: daniel.velasquez@sura-im.com
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PyQuantimClient
3
- Version: 2.0.31
3
+ Version: 2.0.33
4
4
  Summary: Python client to access quantIM services
5
5
  Author: Daniel Velasquez
6
6
  Author-email: daniel.velasquez@sura-im.com
@@ -4,7 +4,7 @@ setup(
4
4
  name='PyQuantimClient',
5
5
  packages=['PyQuantimClient'],
6
6
  package_dir={'PyQuantimClient': 'src'},
7
- version='2.0.31',
7
+ version='2.0.33',
8
8
  description='Python client to access quantIM services',
9
9
  author='Daniel Velasquez',
10
10
  author_email='daniel.velasquez@sura-im.com',
@@ -4,7 +4,7 @@ import numpy as np
4
4
  import datetime as dt
5
5
  from dateutil.relativedelta import relativedelta as rd
6
6
  from .api import quantim
7
- from .utils import get_csv_separator
7
+ from .utils import generate_unique_id, generate_timestamp
8
8
 
9
9
  class risk_data(quantim):
10
10
  def __init__(self, username, password, secretpool, env="pdn", api_url=None):
@@ -80,7 +80,7 @@ class risk_data(quantim):
80
80
 
81
81
  '''
82
82
  if new_oper is not False:
83
- cols=['type', 'secDesc1', 'counterparty', 'isin', 'assetId', 'issuerId', 'issuerLongName', 'ccy', 'duration', 'avgRating', 'ratingType', 'SIM_SECTOR', 'linkedEntity', 'quantity', 'mktValue', 'maturity']
83
+ cols=['type', 'secDesc1', 'counterparty', 'isin', 'assetId', 'issuerId', 'issuerLongName', 'ccy', 'duration', 'avgRating', 'ratingType', 'SIM_SECTOR', 'linkedEntity', 'quantity', 'mktValue', 'maturity', 'indexRate', 'cpn', 'modDur', 'yieldToMaturity']
84
84
  if not set(cols).issubset(new_oper.columns):
85
85
  raise ValueError(f"Las nuevas operaciones deben contener la siguiente informacion: {cols}. Por favor revisar")
86
86
  if not set(new_oper["type"].unique()).issubset({"BUY", "SELL"}):
@@ -106,7 +106,7 @@ class risk_data(quantim):
106
106
  '''
107
107
  if not subgroup:
108
108
  subgroup = portfolioName
109
- cols=['type', 'secDesc1', 'counterparty', 'isin', 'assetId', 'issuerId', 'issuerLongName', 'ccy', 'duration', 'avgRating', 'ratingType', 'SIM_SECTOR', 'linkedEntity', 'quantity', 'mktValue', 'maturity']
109
+ cols=['type', 'secDesc1', 'counterparty', 'isin', 'assetId', 'issuerId', 'issuerLongName', 'ccy', 'duration', 'avgRating', 'ratingType', 'SIM_SECTOR', 'linkedEntity', 'quantity', 'mktValue', 'maturity', 'indexRate', 'cpn', 'modDur', 'yieldToMaturity']
110
110
  missing_cols = set(cols) - set(new_data.columns)
111
111
  if missing_cols:
112
112
  raise ValueError(f"Las nuevas operaciones deben contener las siguientes columnas faltantes: {missing_cols}. Por favor revisar.")
@@ -115,7 +115,10 @@ class risk_data(quantim):
115
115
  if not set(["portfolioName","subGroup"]).issubset(new_data.columns):
116
116
  new_data["portfolioName"],new_data["subGroup"]=portfolioName,subgroup
117
117
  new_data = new_data[["portfolioName","subGroup"]+cols]
118
- new_data["registered"]=True
118
+ new_data["status"] = "created"
119
+ new_data["id"] = generate_unique_id()
120
+ new_data["timeStamp"] = generate_timestamp()
121
+ new_data["user"] = self.username
119
122
  new_data=new_data.to_dict(orient="records")
120
123
  fecha=dt.date.today().strftime("%Y/%m/%d")
121
124
  data = {'bucket': 'condor-sura', 'key': f'output/pretrade/CO/trades/{fecha}/trades.csv', 'sep': sep, 'new_data': new_data}
@@ -0,0 +1,26 @@
1
+ import time
2
+ import random
3
+ import string
4
+ from datetime import datetime
5
+
6
+
7
+ def get_csv_separator(csv_file_path):
8
+ with open(csv_file_path, 'r') as file:
9
+ first_line = file.readline().strip() # Read the first line
10
+ # Define a list of common separators to check
11
+ common_separators = [',', ';', '\t', '|']
12
+ # Find the separator used in the first line
13
+ for separator in common_separators:
14
+ if separator in first_line:
15
+ return separator
16
+ # If none of the common separators are found, return None
17
+ return None
18
+
19
+ def generate_unique_id():
20
+ timestamp = int(time.time() * 1000) # Equivalent to Date.now()
21
+ random_part = ''.join(random.choices(string.ascii_lowercase + string.digits, k=10)) # Equivalent to Math.random().toString(36).substring(2)
22
+ return f"{timestamp:x}{random_part}"
23
+
24
+ def generate_timestamp():
25
+ iso_timestamp = datetime.utcnow().isoformat() + "Z"
26
+ return iso_timestamp
@@ -1,15 +0,0 @@
1
-
2
- def get_csv_separator(csv_file_path):
3
- with open(csv_file_path, 'r') as file:
4
- first_line = file.readline().strip() # Read the first line
5
-
6
- # Define a list of common separators to check
7
- common_separators = [',', ';', '\t', '|']
8
-
9
- # Find the separator used in the first line
10
- for separator in common_separators:
11
- if separator in first_line:
12
- return separator
13
-
14
- # If none of the common separators are found, return None
15
- return None