wbfdm 1.56.3__py2.py3-none-any.whl → 1.56.5__py2.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 wbfdm might be problematic. Click here for more details.

@@ -169,20 +169,22 @@ class DatastreamMarketDataDataloader(MarketDataProtocol, Dataloader):
169
169
  if MarketData.SHARES_OUTSTANDING in values:
170
170
  row["outstanding_shares"] = (row["market_capitalization"] / row["close"]) if row["close"] else None
171
171
  if target_currency:
172
- try:
173
- if target_currency == row["currency"]:
174
- fx_rate = 1.0
175
- else:
176
- fx_rate = fx_rates[f'{row["currency"]}{target_currency}'][row["valuation_date"]] or 1.0
177
- if apply_fx_rate:
178
- for e in MarketData:
179
- if e != MarketData.SHARES_OUTSTANDING and e.value in row and row[e.value]:
180
- row[e.value] = row[e.value] * fx_rate
181
- row["currency"] = target_currency
182
- row["fx_rate"] = fx_rate
183
- except KeyError:
184
- # if we don't find the fx rate but we asked for it, we invalid that row and do not return it
185
- continue
172
+ if target_currency == row["currency"]:
173
+ fx_rate = 1.0
174
+ else:
175
+ currency_fx_rates = fx_rates[f'{row["currency"]}{target_currency}']
176
+ try:
177
+ fx_rate = currency_fx_rates[row["valuation_date"]] or 1.0
178
+ except KeyError:
179
+ max_idx = max(currency_fx_rates.keys())
180
+ fx_rate = currency_fx_rates[max_idx]
181
+ if apply_fx_rate:
182
+ for e in MarketData:
183
+ if e != MarketData.SHARES_OUTSTANDING and e.value in row and row[e.value]:
184
+ row[e.value] = row[e.value] * fx_rate
185
+ row["currency"] = target_currency
186
+ row["fx_rate"] = fx_rate
187
+
186
188
  yield row
187
189
 
188
190
  cursor.execute(MSSQLQuery.drop_table(mapping).get_sql())
@@ -253,6 +253,7 @@ class InstrumentQuerySet(QuerySet):
253
253
  else:
254
254
  fx_rate_df = pd.DataFrame(np.ones(prices_df.shape), index=prices_df.index, columns=prices_df.columns)
255
255
  returns = prices_to_returns(fx_rate_df * prices_df, drop_inceptions_nan=False, fill_nan=True)
256
+
256
257
  return {
257
258
  ts.date(): row for ts, row in prices_df.replace([np.nan], None).to_dict("index").items()
258
259
  }, returns.replace([np.inf, -np.inf, np.nan], 0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbfdm
3
- Version: 1.56.3
3
+ Version: 1.56.5
4
4
  Summary: The workbench module ensures rapid access to diverse financial data (market, fundamental, forecasts, ESG), with features for storing instruments, classifying them, and conducting financial analysis.
5
5
  Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
6
6
  Requires-Dist: roman==4.*
@@ -102,7 +102,7 @@ wbfdm/contrib/qa/dataloaders/adjustments.py,sha256=YAYAiCm71QjPt5dZwzezgCQpm5zRW
102
102
  wbfdm/contrib/qa/dataloaders/corporate_actions.py,sha256=NWk8OCem9niwY5mJCIR11_Wq2gVBbtcrAZedTpzQDYc,2964
103
103
  wbfdm/contrib/qa/dataloaders/financials.py,sha256=xUHpvhUkvmdPL_RyWCrs7XgChgTklX5qemmaXMedgkY,3475
104
104
  wbfdm/contrib/qa/dataloaders/fx_rates.py,sha256=IYkUV8_8Vmvm4_K9xJpz7VaTgjQUz0y4pb3KyaoiqCM,1985
105
- wbfdm/contrib/qa/dataloaders/market_data.py,sha256=whb3xE0A36xly2_bCImgesgYjETOwTYB1DVDXBRz2UI,8009
105
+ wbfdm/contrib/qa/dataloaders/market_data.py,sha256=uKXFB9iGyRvsG1TWVOJWOWa7JvDKfnrwDsxxYKmUnBk,8027
106
106
  wbfdm/contrib/qa/dataloaders/officers.py,sha256=s3kW3sgsXuGE0T-TaZwxrF3YrUN-2v-_hN4ugupryic,2944
107
107
  wbfdm/contrib/qa/dataloaders/reporting_dates.py,sha256=q25ccB0pbGfLJLV1A1_AY1XYWJ_Fa10egY09L1J-C5A,2628
108
108
  wbfdm/contrib/qa/dataloaders/statements.py,sha256=6k8dDwJPLY6XE3G5ZA03_4wRvT7XduRsro4lzuAWCvM,10337
@@ -245,7 +245,7 @@ wbfdm/models/instruments/instrument_requests.py,sha256=XbpofRS8WHadHlTFjvXJyd0o7
245
245
  wbfdm/models/instruments/instruments.py,sha256=TbSOdQOzIcuS1KdPlFnpQmbrdv6NNzieQ26m-OoV-3Y,44551
246
246
  wbfdm/models/instruments/options.py,sha256=AW6mwvVL8IN9K6dEApJsGgDz7T8SBIxQrJvQZ804oas,7286
247
247
  wbfdm/models/instruments/private_equities.py,sha256=-MYXLLvcOO3JVvSpT2H_HxbQzZasipPUQyUgwoaW5xw,2275
248
- wbfdm/models/instruments/querysets.py,sha256=7r3pXNlpROkYgKc6gQH07RNeWX6jGeBAPUabUevE6Jo,11587
248
+ wbfdm/models/instruments/querysets.py,sha256=AzVoTvsHo1NbV3dTD7MET6D5H-uTDLLb1oPqGTpUfSg,11588
249
249
  wbfdm/models/instruments/utils.py,sha256=88jnWINSSC0OwH-mCEOPLZXuhBCtEsxBpSaZ38GteaE,1365
250
250
  wbfdm/models/instruments/llm/__init__.py,sha256=dSmxRmEWb0A4O_lUoWuRKt2mBtUuLCTPVVJqGyi_n40,52
251
251
  wbfdm/models/instruments/llm/create_instrument_news_relationships.py,sha256=f9MT-8cWYlexUfCkaOJa9erI9RaUNI-nqCEyf2tDkbA,3809
@@ -364,6 +364,6 @@ wbfdm/viewsets/statements/__init__.py,sha256=odxtFYUDICPmz8WCE3nx93EvKZLSPBEI4d7
364
364
  wbfdm/viewsets/statements/statements.py,sha256=gA6RCI8-B__JwjEb6OZxpn8Y-9aF-YQ3HIQ7e1vfJMw,4304
365
365
  wbfdm/viewsets/technical_analysis/__init__.py,sha256=qtCIBg0uSiZeJq_1tEQFilnorMBkMe6uCMfqar6-cLE,77
366
366
  wbfdm/viewsets/technical_analysis/monthly_performances.py,sha256=O1j8CGfOranL74LqVvcf7jERaDIboEJZiBf_AbbVDQ8,3974
367
- wbfdm-1.56.3.dist-info/METADATA,sha256=Rcvb_X7ylot-ribNeQItujIi_-WOnRbHY1-Gyn8TUCw,768
368
- wbfdm-1.56.3.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
369
- wbfdm-1.56.3.dist-info/RECORD,,
367
+ wbfdm-1.56.5.dist-info/METADATA,sha256=_I2cXd9RzHbXJiDQn3iZbgnY7QK2_SK2tNq9pvaoBdk,768
368
+ wbfdm-1.56.5.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
369
+ wbfdm-1.56.5.dist-info/RECORD,,
File without changes