hawk-sdk 0.0.11__py3-none-any.whl → 0.0.12__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.

Potentially problematic release.


This version of hawk-sdk might be problematic. Click here for more details.

@@ -17,7 +17,7 @@ class Equities:
17
17
  self.repository = EquitiesRepository(environment=environment)
18
18
  self.service = EquitiesService(self.repository)
19
19
 
20
- def get_adjusted_ohlc(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> DataObject:
20
+ def get_adjusted_ohlcv(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> DataObject:
21
21
  """Fetch open, high, low, close data for the given date range and hawk_ids.
22
22
 
23
23
  :param start_date: The start date for the data query (YYYY-MM-DD).
@@ -28,5 +28,17 @@ class Equities:
28
28
  """
29
29
  return DataObject(
30
30
  name="adjusted_equities_ohlcv",
31
- data=self.service.get_adjusted_ohlc(start_date, end_date, interval, hawk_ids)
31
+ data=self.service.get_adjusted_ohlcv(start_date, end_date, interval, hawk_ids)
32
+ )
33
+
34
+ def get_adjusted_ohlcv_snapshot(self, timestamp: str, hawk_ids: List[int]) -> DataObject:
35
+ """Fetch snapshot data for the given date and hawk_ids.
36
+
37
+ :param timestamp: The timestamp for the data query (YYYY-MM-DD HH:MM:SS).
38
+ :param hawk_ids: A list of specific hawk_ids to filter by.
39
+ :return: A hawk DataObject containing the data.
40
+ """
41
+ return DataObject(
42
+ name="equities_adjusted_ohlcv_snapshot",
43
+ data=self.service.get_adjusted_ohlcv_snapshot(timestamp, hawk_ids)
32
44
  )
@@ -21,12 +21,14 @@ class EquitiesRepository:
21
21
  self.bq_client = get_bigquery_client()
22
22
  self.environment = environment
23
23
 
24
- def fetch_adjusted_ohlc(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> Iterator[dict]:
25
- """Fetches raw adjusted OHLC data from BigQuery for the given date range and hawk_ids using query parameters."""
24
+ def fetch_adjusted_ohlcv(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> Iterator[
25
+ dict]:
26
+ """Fetches raw adjusted OHLCV data from BigQuery for the given date range and hawk_ids using query parameters."""
26
27
  open_field = f"adjusted_open_{interval}"
27
28
  high_field = f"adjusted_high_{interval}"
28
29
  low_field = f"adjusted_low_{interval}"
29
30
  close_field = f"adjusted_close_{interval}"
31
+ volume_field = f"volume_{interval}"
30
32
 
31
33
  query = f"""
32
34
  WITH records_data AS (
@@ -36,7 +38,8 @@ class EquitiesRepository:
36
38
  MAX(CASE WHEN f.field_name = @open_field THEN r.double_value END) AS {open_field},
37
39
  MAX(CASE WHEN f.field_name = @high_field THEN r.double_value END) AS {high_field},
38
40
  MAX(CASE WHEN f.field_name = @low_field THEN r.double_value END) AS {low_field},
39
- MAX(CASE WHEN f.field_name = @close_field THEN r.double_value END) AS {close_field}
41
+ MAX(CASE WHEN f.field_name = @close_field THEN r.double_value END) AS {close_field},
42
+ MAX(CASE WHEN f.field_name = @volume_field THEN r.int_value END) AS {volume_field}
40
43
  FROM
41
44
  `wsb-hc-qasap-ae2e.{self.environment}.records` AS r
42
45
  JOIN
@@ -47,7 +50,7 @@ class EquitiesRepository:
47
50
  ON r.hawk_id = hi.hawk_id
48
51
  WHERE
49
52
  r.hawk_id IN UNNEST(@hawk_ids)
50
- AND f.field_name IN (@open_field, @high_field, @low_field, @close_field)
53
+ AND f.field_name IN (@open_field, @high_field, @low_field, @close_field, @volume_field)
51
54
  AND r.record_timestamp BETWEEN @start_date AND @end_date
52
55
  GROUP BY
53
56
  date, ticker
@@ -59,14 +62,13 @@ class EquitiesRepository:
59
62
  {high_field},
60
63
  {low_field},
61
64
  {close_field},
65
+ {volume_field}
62
66
  FROM
63
67
  records_data
64
68
  ORDER BY
65
69
  date;
66
70
  """
67
71
 
68
-
69
-
70
72
  query_params = [
71
73
  bigquery.ArrayQueryParameter("hawk_ids", "INT64", hawk_ids),
72
74
  bigquery.ScalarQueryParameter("start_date", "STRING", start_date),
@@ -74,7 +76,8 @@ class EquitiesRepository:
74
76
  bigquery.ScalarQueryParameter("open_field", "STRING", open_field),
75
77
  bigquery.ScalarQueryParameter("high_field", "STRING", high_field),
76
78
  bigquery.ScalarQueryParameter("low_field", "STRING", low_field),
77
- bigquery.ScalarQueryParameter("close_field", "STRING", close_field)
79
+ bigquery.ScalarQueryParameter("close_field", "STRING", close_field),
80
+ bigquery.ScalarQueryParameter("volume_field", "STRING", volume_field)
78
81
  ]
79
82
 
80
83
  job_config = bigquery.QueryJobConfig(query_parameters=query_params)
@@ -85,3 +88,58 @@ class EquitiesRepository:
85
88
  except Exception as e:
86
89
  logging.error(f"Failed to fetch OHLC data: {e}")
87
90
  raise
91
+
92
+ def fetch_adjusted_ohlcv_snapshot(self, timestamp: str, hawk_ids: List[int]) -> Iterator[dict]:
93
+ """Fetches the most recent snapshot data from BigQuery for the given time and hawk_ids."""
94
+ query = f"""
95
+ WITH records_data AS (
96
+ SELECT
97
+ r.record_timestamp AS date,
98
+ hi.value AS ticker,
99
+ MAX(CASE WHEN f.field_name = 'adjusted_open_snapshot' THEN r.double_value END) AS adjusted_open_snapshot,
100
+ MAX(CASE WHEN f.field_name = 'adjusted_high_snapshot' THEN r.double_value END) AS adjusted_high_snapshot,
101
+ MAX(CASE WHEN f.field_name = 'adjusted_low_snapshot' THEN r.double_value END) AS adjusted_low_snapshot,
102
+ MAX(CASE WHEN f.field_name = 'adjusted_close_snapshot' THEN r.double_value END) AS adjusted_close_snapshot,
103
+ MAX(CASE WHEN f.field_name = 'volume_snapshot' THEN r.int_value END) AS volume_snapshot,
104
+ FROM
105
+ `wsb-hc-qasap-ae2e.{self.environment}.records` AS r
106
+ JOIN
107
+ `wsb-hc-qasap-ae2e.{self.environment}.fields` AS f
108
+ ON r.field_id = f.field_id
109
+ JOIN
110
+ `wsb-hc-qasap-ae2e.{self.environment}.hawk_identifiers` AS hi
111
+ ON r.hawk_id = hi.hawk_id
112
+ WHERE
113
+ r.hawk_id IN UNNEST(@hawk_ids)
114
+ AND f.field_name IN ('adjusted_open_snapshot', 'adjusted_high_snapshot', 'adjusted_low_snapshot', 'adjusted_close_snapshot', 'volume_snapshot')
115
+ AND r.record_timestamp <= @timestamp
116
+ GROUP BY
117
+ date, ticker
118
+ )
119
+ SELECT DISTINCT
120
+ date,
121
+ ticker,
122
+ adjusted_open_snapshot,
123
+ adjusted_high_snapshot,
124
+ adjusted_low_snapshot,
125
+ adjusted_close_snapshot,
126
+ volume_snapshot,
127
+ FROM
128
+ records_data
129
+ ORDER BY
130
+ date;
131
+ """
132
+
133
+ query_params = [
134
+ bigquery.ArrayQueryParameter("hawk_ids", "INT64", hawk_ids),
135
+ bigquery.ScalarQueryParameter("timestamp", "TIMESTAMP", timestamp)
136
+ ]
137
+
138
+ job_config = bigquery.QueryJobConfig(query_parameters=query_params)
139
+
140
+ try:
141
+ query_job = self.bq_client.query(query, job_config=job_config)
142
+ return query_job.result()
143
+ except Exception as e:
144
+ logging.error(f"Failed to fetch snapshot data: {e}")
145
+ raise
@@ -19,7 +19,7 @@ class EquitiesService:
19
19
  """
20
20
  self.repository = repository
21
21
 
22
- def get_adjusted_ohlc(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> pd.DataFrame:
22
+ def get_adjusted_ohlcv(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> pd.DataFrame:
23
23
  """Equities and normalizes data into a pandas DataFrame.
24
24
 
25
25
  :param start_date: The start date for the data query (YYYY-MM-DD).
@@ -28,7 +28,17 @@ class EquitiesService:
28
28
  :param hawk_ids: A list of specific hawk_ids to filter by.
29
29
  :return: A pandas DataFrame containing the normalized data.
30
30
  """
31
- raw_data = self.repository.fetch_adjusted_ohlc(start_date, end_date, interval, hawk_ids)
31
+ raw_data = self.repository.fetch_adjusted_ohlcv(start_date, end_date, interval, hawk_ids)
32
+ return self._normalize_data(raw_data)
33
+
34
+ def get_adjusted_ohlcv_snapshot(self, timestamp: str, hawk_ids: List[int]) -> pd.DataFrame:
35
+ """Fetches and normalizes snapshot data for the given date and hawk_ids.
36
+
37
+ :param timestamp: The timestamp for the data query (YYYY-MM-DD HH:MM:SS).
38
+ :param hawk_ids: A list of specific hawk_ids to filter by.
39
+ :return: A pandas DataFrame containing the normalized data.
40
+ """
41
+ raw_data = self.repository.fetch_adjusted_ohlcv_snapshot(timestamp, hawk_ids)
32
42
  return self._normalize_data(raw_data)
33
43
 
34
44
  @staticmethod
@@ -30,15 +30,3 @@ class Futures:
30
30
  name="futures_ohlcvo",
31
31
  data=self.service.get_ohlcvo(start_date, end_date, interval, hawk_ids)
32
32
  )
33
-
34
- def get_snapshot(self, timestamp: str, hawk_ids: List[int]) -> DataObject:
35
- """Fetch snapshot data for the specified timestamp and hawk_ids.
36
-
37
- :param timestamp: The timestamp for the data query (YYYY-MM-DD HH:MM:SS).
38
- :param hawk_ids: A list of specific hawk_ids to filter by.
39
- :return: A hawk DataObject containing the snapshot data.
40
- """
41
- return DataObject(
42
- name="futures_snapshot",
43
- data=self.service.get_snapshot(timestamp, hawk_ids)
44
- )
@@ -84,60 +84,3 @@ class FuturesRepository:
84
84
  except Exception as e:
85
85
  logging.error(f"Failed to fetch OHLCVO data: {e}")
86
86
  raise
87
-
88
- def fetch_snapshot(self, timestamp: str, hawk_ids: List[int]) -> Iterator[dict]:
89
- """Fetches the most recent snapshot data from BigQuery for the given time and hawk_ids."""
90
- query = f"""
91
- WITH records_data AS (
92
- SELECT
93
- r.record_timestamp AS date,
94
- hi.value AS ticker,
95
- MAX(CASE WHEN f.field_name = 'close_snapshot' THEN r.double_value END) AS close_snapshot,
96
- MAX(CASE WHEN f.field_name = 'high_snapshot' THEN r.double_value END) AS high_snapshot,
97
- MAX(CASE WHEN f.field_name = 'low_snapshot' THEN r.double_value END) AS low_snapshot,
98
- MAX(CASE WHEN f.field_name = 'cvol_snapshot' THEN r.int_value END) AS cvol_snapshot,
99
- MAX(CASE WHEN f.field_name = 'bid_snapshot' THEN r.double_value END) AS bid_snapshot,
100
- MAX(CASE WHEN f.field_name = 'ask_snapshot' THEN r.double_value END) AS ask_snapshot
101
- FROM
102
- `wsb-hc-qasap-ae2e.{self.environment}.records` AS r
103
- JOIN
104
- `wsb-hc-qasap-ae2e.{self.environment}.fields` AS f
105
- ON r.field_id = f.field_id
106
- JOIN
107
- `wsb-hc-qasap-ae2e.{self.environment}.hawk_identifiers` AS hi
108
- ON r.hawk_id = hi.hawk_id
109
- WHERE
110
- r.hawk_id IN UNNEST(@hawk_ids)
111
- AND f.field_name IN ('close_snapshot', 'high_snapshot', 'low_snapshot', 'cvol_snapshot', 'bid_snapshot', 'ask_snapshot')
112
- AND r.record_timestamp <= @timestamp
113
- GROUP BY
114
- date, ticker
115
- )
116
- SELECT DISTINCT
117
- date,
118
- ticker,
119
- close_snapshot,
120
- high_snapshot,
121
- low_snapshot,
122
- cvol_snapshot,
123
- bid_snapshot,
124
- ask_snapshot
125
- FROM
126
- records_data
127
- ORDER BY
128
- date;
129
- """
130
-
131
- query_params = [
132
- bigquery.ArrayQueryParameter("hawk_ids", "INT64", hawk_ids),
133
- bigquery.ScalarQueryParameter("timestamp", "DATETIME", timestamp)
134
- ]
135
-
136
- job_config = bigquery.QueryJobConfig(query_parameters=query_params)
137
-
138
- try:
139
- query_job = self.bq_client.query(query, job_config=job_config)
140
- return query_job.result()
141
- except Exception as e:
142
- logging.error(f"Failed to fetch snapshot data: {e}")
143
- raise
@@ -31,16 +31,6 @@ class FuturesService:
31
31
  raw_data = self.repository.fetch_ohlcvo(start_date, end_date, interval, hawk_ids)
32
32
  return self._normalize_data(raw_data)
33
33
 
34
- def get_snapshot(self, timestamp: str, hawk_ids: List[int]) -> pd.DataFrame:
35
- """Fetches snapshot data and normalizes it into a pandas DataFrame.
36
-
37
- :param timestamp: The timestamp for the data query (YYYY-MM-DD HH:MM:SS).
38
- :param hawk_ids: A list of specific hawk_ids to filter by.
39
- :return: A pandas DataFrame containing the normalized snapshot data.
40
- """
41
- raw_data = self.repository.fetch_snapshot(timestamp, hawk_ids)
42
- return self._normalize_data(raw_data)
43
-
44
34
  @staticmethod
45
35
  def _normalize_data(data: Iterator[dict]) -> pd.DataFrame:
46
36
  """Converts raw data into a normalized pandas DataFrame.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hawk-sdk
3
- Version: 0.0.11
3
+ Version: 0.0.12
4
4
  Requires-Dist: google-cloud-bigquery
5
5
  Requires-Dist: pandas
6
6
 
@@ -1,13 +1,13 @@
1
1
  hawk_sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  hawk_sdk/api/__init__.py,sha256=kraovUX7vWIb9tgl5eJbA9jnp77QpoqZYHLvmz0hNrg,138
3
3
  hawk_sdk/api/equities/__init__.py,sha256=IyyiVMj4FRUbuNQHSHg_8fkKwGBDHeHLMyRhFeUZgxI,48
4
- hawk_sdk/api/equities/main.py,sha256=EeC-h0GKAOYZT9Q2BulO4_NxX1Me-dMgC0yT6y7_Mi0,1380
5
- hawk_sdk/api/equities/repository.py,sha256=lgyHj1QEs0upaDgi8uqeW6bLCkxL1666GhZMGl3zArQ,3328
6
- hawk_sdk/api/equities/service.py,sha256=4t8hcAd7D2cDFxTdiGZzWEnpWdeeP7FwibJLlRHhOKo,1584
4
+ hawk_sdk/api/equities/main.py,sha256=3jaDQsrRokP1R5jNJ_txjQbhAFeweEp4IrdU4OiPXJ8,1928
5
+ hawk_sdk/api/equities/repository.py,sha256=WR0zGK7iWG-o20O6qKUvEq13e4ewOtugLC2rLzobHMw,6065
6
+ hawk_sdk/api/equities/service.py,sha256=QVmLLzxppwJOJBigQVLbrEel2JbXySbWPRVU_-hVFew,2126
7
7
  hawk_sdk/api/futures/__init__.py,sha256=9mL1L6wlZKXTvMrTuQV35Fl9kTy4qjf3RIJzYBXcpeM,46
8
- hawk_sdk/api/futures/main.py,sha256=XNihiVb75wyPx78dOzEVWhQ6vmN-NLHZTk4L7zY-4WQ,1909
9
- hawk_sdk/api/futures/repository.py,sha256=P6dsLJe8hQ2-hkDX_pa-VRoUUXaU-uBhA4S5mwK79_o,5983
10
- hawk_sdk/api/futures/service.py,sha256=0zJn3xJNoHgEOeVVpIF2i0r5g8mvf4y1K_YnvHDF5mU,2078
8
+ hawk_sdk/api/futures/main.py,sha256=KYEqAts7tsMdjLSqEqUgOtdrbt7LDQ2LIL4qtL5yfqI,1391
9
+ hawk_sdk/api/futures/repository.py,sha256=60HcrUKtwsMc0iH6rzOlST1sCvWoRLRh6Xp97d8fgTo,3548
10
+ hawk_sdk/api/futures/service.py,sha256=kAzWLKeLXurD1qu8bCaFfjBwugZy2wtpdBmjibrdXmI,1564
11
11
  hawk_sdk/api/system/__init__.py,sha256=Oy8XUp5WHx4fczjZXzfbkkHluHW-t7BLN4IgrOG6Pk4,44
12
12
  hawk_sdk/api/system/main.py,sha256=t2zWeEHSTYuWZAsqCMLt_CyRWoN8T8N6oEVshPgf6kk,1025
13
13
  hawk_sdk/api/system/repository.py,sha256=IllwoWXZyi46INuCRQeibHJaMDR1TfbT6l2uAhii2Xc,1654
@@ -18,7 +18,7 @@ hawk_sdk/core/common/base_enum.py,sha256=ZgC8gZjTzsoJzzdgN2DjYk3dVL_uM2Stuaky5bo
18
18
  hawk_sdk/core/common/constants.py,sha256=KmsNfRVCwGeXEBHfo3TzSaDYJDMtnL-YEQKsO1DnWV8,33
19
19
  hawk_sdk/core/common/data_object.py,sha256=f4YO415Zz-lm3QYJQ3sJ4ugH9ZX9Dc7T-JvO4IdeyOw,1073
20
20
  hawk_sdk/core/common/utils.py,sha256=bxF-iJzbqXGYtQKElH6k5-bSsdcvft0o51G9slZ1grI,745
21
- hawk_sdk-0.0.11.dist-info/METADATA,sha256=pxnBjXyDsw_EUiibBJs6h1KLRqevdVYKkTuCnqUQ6ds,113
22
- hawk_sdk-0.0.11.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
23
- hawk_sdk-0.0.11.dist-info/top_level.txt,sha256=aSjbudHcWSYsKXH9Wg0L1ltJfDOHXzjYFPO3v3cP-SE,9
24
- hawk_sdk-0.0.11.dist-info/RECORD,,
21
+ hawk_sdk-0.0.12.dist-info/METADATA,sha256=dpigN7LmvKT5jKl2_IggsJ61OcMhWlyI4De3fdnBuR0,113
22
+ hawk_sdk-0.0.12.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
23
+ hawk_sdk-0.0.12.dist-info/top_level.txt,sha256=aSjbudHcWSYsKXH9Wg0L1ltJfDOHXzjYFPO3v3cP-SE,9
24
+ hawk_sdk-0.0.12.dist-info/RECORD,,