wbfdm 1.54.5__tar.gz → 1.54.7__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.
Potentially problematic release.
This version of wbfdm might be problematic. Click here for more details.
- {wbfdm-1.54.5 → wbfdm-1.54.7}/PKG-INFO +1 -1
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/internal/dataloaders/market_data.py +37 -4
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/dataloaders/market_data.py +4 -3
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/dataloaders/protocols.py +1 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/dataloaders/proxies.py +2 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/dataloaders/types.py +1 -1
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/mixin/instruments.py +1 -1
- {wbfdm-1.54.5 → wbfdm-1.54.7}/.gitignore +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/pyproject.toml +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/esg.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/instrument_lists.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/instrument_requests.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/instruments_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/admin/options.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/esg/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/esg/enums.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/esg/esg_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/esg/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/financial_analysis/change_point_detection.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/financial_analysis/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/technical_analysis/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/technical_analysis/technical_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/technical_analysis/traces.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/apps.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/backends/dto.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/dsws/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/dsws/client.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/dsws/dataloaders/market_data.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/internal/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/internal/dataloaders/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/admin/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/admin/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/admin/metrics.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/apps.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/backends/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/backends/base.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/backends/performances.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/backends/statistics.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/backends/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/decorators.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/dispatch.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/dto.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/exceptions.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/factories.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/filters.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/migrations/0001_initial.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/migrations/0002_remove_instrumentmetric_unique_instrument_metric_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/migrations/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/models.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/orchestrators.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/registry.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/serializers.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tasks.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tests/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tests/backends/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tests/backends/test_performances.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tests/backends/test_statistics.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tests/conftest.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tests/test_dto.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tests/test_models.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tests/test_tasks.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/tests/test_viewsets.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/urls.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/viewsets/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/viewsets/configs/display.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/viewsets/configs/menus.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/viewsets/configs/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/viewsets/mixins.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/metric/viewsets/viewsets.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/msci/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/msci/client.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/msci/dataloaders/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/msci/dataloaders/esg.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/msci/dataloaders/esg_controversies.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/msci/sync.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/msci/tests/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/msci/tests/conftest.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/msci/tests/test_client.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/apps.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/database_routers.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/dataloaders/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/dataloaders/adjustments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/dataloaders/corporate_actions.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/dataloaders/financials.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/dataloaders/officers.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/dataloaders/reporting_dates.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/dataloaders/statements.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/dataloaders/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/jinja2/qa/sql/companies.sql +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/base_estimates.sql +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/calendarized.sql +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/complete.sql +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/estimates.sql +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/financials.sql +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/jinja2/qa/sql/instruments.sql +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/jinja2/qa/sql/quotes.sql +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/sync/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/sync/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/sync/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/contrib/qa/tasks.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/dataloaders/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/dataloaders/cache.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/dynamic_preferences_registry.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/enums.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/factories/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/factories/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/factories/controversies.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/factories/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/factories/instrument_list.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/factories/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/factories/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/factories/instruments_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/factories/options.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/figures/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/figures/financials/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/figures/financials/financial_analysis_charts.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/figures/financials/financials_charts.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/filters/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/filters/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/filters/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/filters/financials.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/filters/financials_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/filters/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/filters/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/filters/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/cbinsights/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/cbinsights/deals.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/cbinsights/equities.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/cbinsights/mixin.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/cbinsights/utils/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/cbinsights/utils/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/cbinsights/utils/client.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/fiscal_period.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/forecast.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/fundamental.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/instrument.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/mixin.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/utils/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/refinitiv/utils/controller.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/handlers/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/handlers/instrument.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/handlers/instrument_list.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/handlers/instrument_price.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/handlers/option.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/handlers/private_equities.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/cbinsights/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/cbinsights/deals.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/cbinsights/equities.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/cbinsights/fundamentals.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/refinitiv/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/refinitiv/forecast.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/refinitiv/fundamental.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/refinitiv/instrument.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/parsers/refinitiv/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/resources/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/resources/classification.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/resources/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/resources/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/jinja2.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/locale/de/LC_MESSAGES/django.mo +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/locale/de/LC_MESSAGES/django.po +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/locale/en/LC_MESSAGES/django.mo +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/locale/en/LC_MESSAGES/django.po +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/locale/fr/LC_MESSAGES/django.mo +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/locale/fr/LC_MESSAGES/django.po +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/management/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0001_initial.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0002_rename_statements_instrumentlookup_financials_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0003_instrument_estimate_backend_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0004_rename_financials_instrumentlookup_statements_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0005_instrument_corporate_action_backend.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0006_instrument_officer_backend.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0007_instrument_country_instrument_currency_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0008_controversy.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0009_alter_controversy_flag_alter_controversy_initiated_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0010_classification_classificationgroup_deal_exchange_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0011_delete_instrumentlookup_instrument_corporate_actions_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0012_instrumentprice_created_instrumentprice_modified.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0013_instrument_is_investable_universe_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0014_alter_controversy_instrument.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0015_instrument_instrument_investible_index.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0016_instrumenttype_name_repr.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0017_instrument_instrument_security_index.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0018_instrument_instrument_level_index.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0019_alter_controversy_source.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0020_optionaggregate_option_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0021_delete_instrumentdailystatistics.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0022_instrument_cusip_option_open_interest_20d_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0023_instrument_unique_ric_instrument_unique_rmc_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0024_option_open_interest_10d_option_volume_10d_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0025_instrument_is_primary_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0026_instrument_is_cash_equivalent.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0027_remove_instrument_unique_ric_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0028_instrumentprice_annualized_daily_volatility.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0029_alter_instrumentprice_volume.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0030_alter_relatedinstrumentthroughmodel_related_type.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/0031_exchange_apply_round_lot_size_and_more.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/migrations/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/esg/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/esg/controversies.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/exchanges/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/exchanges/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/fields.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/fk_fields.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/indicators.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/instrument_lists.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/instrument_requests.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/llm/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/llm/create_instrument_news_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/mixin/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/mixin/financials_computed.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/mixin/financials_serializer_fields.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/options.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/private_equities.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/querysets.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/models/instruments/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/preferences.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/esg.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/instruments/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/instruments/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/instruments/instrument_lists.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/instruments/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/instruments/instrument_requests.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/instruments/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/instruments/mixins.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/serializers/officers.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/signals.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/sync/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/sync/abstract.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/sync/runner.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tasks.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/analysis/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/analysis/financial_analysis/test_utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/analysis/test_esg.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/conftest.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/dataloaders/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/dataloaders/test_cache.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/models/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/models/test_classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/models/test_exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/models/test_instrument_list.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/models/test_instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/models/test_instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/models/test_merge.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/models/test_options.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/test_tasks.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/tests/tests.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/urls.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/buttons/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/buttons/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/buttons/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/buttons/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/buttons/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/esg.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/financial_summary.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/instrument_lists.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/instrument_requests.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/instruments_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/monthly_performances.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/officers.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/statement_with_estimates.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/display/statements.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/esg.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/financials_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/instrument_lists.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/instrument_requests.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/instruments_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/endpoints/statements.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/menus/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/menus/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/menus/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/menus/instrument_lists.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/menus/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/menus/instruments_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/esg.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/financial_ratio_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/financials_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/instrument_requests.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/instruments_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/market_data.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/configs/titles/statement_with_estimates.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/esg.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/exchanges.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/financial_analysis/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/financial_analysis/financial_summary.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/instruments/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/instruments/classifications.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/instruments/financials_analysis.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/instruments/instrument_lists.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/instruments/instrument_prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/instruments/instrument_requests.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/instruments/instruments.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/instruments/instruments_relationships.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/instruments/utils.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/market_data.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/mixins.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/officers.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/prices.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/statements/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/statements/statements.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/technical_analysis/__init__.py +0 -0
- {wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/viewsets/technical_analysis/monthly_performances.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wbfdm
|
|
3
|
-
Version: 1.54.
|
|
3
|
+
Version: 1.54.7
|
|
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.*
|
|
@@ -2,11 +2,14 @@ from datetime import date
|
|
|
2
2
|
from decimal import Decimal
|
|
3
3
|
from typing import Iterator
|
|
4
4
|
|
|
5
|
+
from django.db.models import Value
|
|
6
|
+
from django.db.models.functions import Coalesce
|
|
7
|
+
from wbcore.contrib.currency.models import Currency, CurrencyFXRates
|
|
5
8
|
from wbcore.contrib.dataloader.dataloaders import Dataloader
|
|
6
9
|
|
|
7
10
|
from wbfdm.dataloaders.protocols import MarketDataProtocol
|
|
8
11
|
from wbfdm.dataloaders.types import MarketDataDict
|
|
9
|
-
from wbfdm.enums import MarketData
|
|
12
|
+
from wbfdm.enums import Frequency, MarketData
|
|
10
13
|
from wbfdm.models.instruments.instrument_prices import InstrumentPrice
|
|
11
14
|
|
|
12
15
|
MarketDataMap = {
|
|
@@ -33,11 +36,13 @@ def _cast_decimal_to_float(value: float | Decimal) -> float:
|
|
|
33
36
|
class MarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
34
37
|
def market_data(
|
|
35
38
|
self,
|
|
36
|
-
values: list[MarketData]
|
|
39
|
+
values: list[MarketData] = [MarketData.CLOSE],
|
|
37
40
|
from_date: date | None = None,
|
|
38
41
|
to_date: date | None = None,
|
|
39
42
|
exact_date: date | None = None,
|
|
40
|
-
|
|
43
|
+
frequency: Frequency = Frequency.DAILY,
|
|
44
|
+
target_currency: str | None = None,
|
|
45
|
+
apply_fx_rate: bool = True,
|
|
41
46
|
**kwargs,
|
|
42
47
|
) -> Iterator[MarketDataDict]:
|
|
43
48
|
"""Get prices for instruments.
|
|
@@ -51,7 +56,27 @@ class MarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
|
51
56
|
Returns:
|
|
52
57
|
Iterator[MarketDataDict]: An iterator of dictionaries conforming to the DailyValuationDict.
|
|
53
58
|
"""
|
|
54
|
-
|
|
59
|
+
try:
|
|
60
|
+
target_currency = Currency.objects.get(key=target_currency)
|
|
61
|
+
except Currency.DoesNotExist:
|
|
62
|
+
target_currency = None
|
|
63
|
+
fx_rate = (
|
|
64
|
+
Coalesce(
|
|
65
|
+
CurrencyFXRates.get_fx_rates_subquery_for_two_currencies(
|
|
66
|
+
"date", "instrument__currency", target_currency
|
|
67
|
+
),
|
|
68
|
+
Value(Decimal("1")),
|
|
69
|
+
)
|
|
70
|
+
if target_currency
|
|
71
|
+
else Value(Decimal("1"))
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
prices = (
|
|
75
|
+
InstrumentPrice.objects.filter(instrument__in=self.entities)
|
|
76
|
+
.annotate_market_data()
|
|
77
|
+
.annotate(fx_rate=fx_rate)
|
|
78
|
+
) # type: ignore
|
|
79
|
+
calculated = kwargs.get("calculated", None)
|
|
55
80
|
if calculated is not None:
|
|
56
81
|
prices = prices.filter(calculated=calculated)
|
|
57
82
|
else:
|
|
@@ -72,11 +97,18 @@ class MarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
|
72
97
|
"date",
|
|
73
98
|
"instrument",
|
|
74
99
|
"calculated",
|
|
100
|
+
"fx_rate",
|
|
75
101
|
*set(values_map.values()),
|
|
76
102
|
):
|
|
77
103
|
external_id = row.pop("instrument")
|
|
78
104
|
val_date = row.pop("date")
|
|
79
105
|
if row:
|
|
106
|
+
fx_rate = row["fx_rate"]
|
|
107
|
+
if apply_fx_rate and row.get("net_value"):
|
|
108
|
+
row["net_value"] = row["net_value"] * fx_rate
|
|
109
|
+
if apply_fx_rate and row.get("market_capitalization"):
|
|
110
|
+
row["market_capitalization"] = row["market_capitalization"] * float(fx_rate)
|
|
111
|
+
|
|
80
112
|
yield MarketDataDict(
|
|
81
113
|
id=f"{external_id}_{val_date}",
|
|
82
114
|
valuation_date=val_date,
|
|
@@ -84,5 +116,6 @@ class MarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
|
84
116
|
external_id=external_id,
|
|
85
117
|
source="wbfdm",
|
|
86
118
|
calculated=row["calculated"],
|
|
119
|
+
fx_rate=_cast_decimal_to_float(fx_rate),
|
|
87
120
|
**{MarketData[k].value: _cast_decimal_to_float(row[v]) for k, v in values_map.items()},
|
|
88
121
|
)
|
|
@@ -45,6 +45,7 @@ class DatastreamMarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
|
45
45
|
exact_date: date | None = None,
|
|
46
46
|
frequency: Frequency = Frequency.DAILY,
|
|
47
47
|
target_currency: str | None = None,
|
|
48
|
+
apply_fx_rate: bool = True,
|
|
48
49
|
**kwargs,
|
|
49
50
|
) -> Iterator[MarketDataDict]:
|
|
50
51
|
"""Get market data for instruments.
|
|
@@ -97,7 +98,7 @@ class DatastreamMarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
|
97
98
|
fx_code = pk.Table("DS2FxCode")
|
|
98
99
|
fx_rate = pk.Table("DS2FxRate")
|
|
99
100
|
query = (
|
|
100
|
-
query
|
|
101
|
+
query.select((1 / fx_rate.midrate).as_("fx_rate"))
|
|
101
102
|
# Join FX code table matching currencies and ensuring SPOT rate type
|
|
102
103
|
.left_join(fx_code)
|
|
103
104
|
.on(
|
|
@@ -127,7 +128,7 @@ class DatastreamMarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
|
127
128
|
)
|
|
128
129
|
|
|
129
130
|
value = pricing_2.Close_
|
|
130
|
-
if fx_rate:
|
|
131
|
+
if fx_rate and apply_fx_rate:
|
|
131
132
|
value /= Case().when(pricing_2.Currency == target_currency, 1).else_(fx_rate.midrate)
|
|
132
133
|
|
|
133
134
|
query = query.select(value.as_("undadjusted_close"))
|
|
@@ -145,7 +146,7 @@ class DatastreamMarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
|
145
146
|
):
|
|
146
147
|
ds2_value = DS2MarketData[market_data.name].value
|
|
147
148
|
value = getattr(pricing, ds2_value)
|
|
148
|
-
if fx_rate and market_data is not MarketData.SHARES_OUTSTANDING:
|
|
149
|
+
if fx_rate and apply_fx_rate and market_data is not MarketData.SHARES_OUTSTANDING:
|
|
149
150
|
value /= Case().when(pricing.Currency == target_currency, 1).else_(fx_rate.midrate)
|
|
150
151
|
|
|
151
152
|
query = query.select(value.as_(market_data.value))
|
|
@@ -80,6 +80,7 @@ class InstrumentDataloaderProxy(
|
|
|
80
80
|
exact_date: date | None = None,
|
|
81
81
|
frequency: Frequency = Frequency.DAILY,
|
|
82
82
|
target_currency: str | None = None,
|
|
83
|
+
apply_fx_rate: bool = True,
|
|
83
84
|
) -> Iterator[MarketDataDict]:
|
|
84
85
|
if not values:
|
|
85
86
|
values = list(MarketData)
|
|
@@ -93,6 +94,7 @@ class InstrumentDataloaderProxy(
|
|
|
93
94
|
exact_date=exact_date,
|
|
94
95
|
frequency=frequency,
|
|
95
96
|
target_currency=target_currency,
|
|
97
|
+
apply_fx_rate=apply_fx_rate,
|
|
96
98
|
),
|
|
97
99
|
)
|
|
98
100
|
|
|
@@ -65,7 +65,7 @@ class MarketDataDict(BaseDict):
|
|
|
65
65
|
volume: NotRequired[float]
|
|
66
66
|
market_cap: NotRequired[float]
|
|
67
67
|
calculated: NotRequired[bool]
|
|
68
|
-
|
|
68
|
+
fx_rate: NotRequired[float]
|
|
69
69
|
unadjusted_close: NotRequired[float]
|
|
70
70
|
unadjusted_outstanding_shares: NotRequired[float | int]
|
|
71
71
|
|
|
@@ -42,7 +42,7 @@ class InstrumentPMSMixin:
|
|
|
42
42
|
def get_price(self, val_date: date, price_date_timedelta: int = 3) -> Decimal:
|
|
43
43
|
if self.is_cash:
|
|
44
44
|
return Decimal(1)
|
|
45
|
-
return self._build_dto(val_date, price_date_timedelta=price_date_timedelta).close
|
|
45
|
+
return Decimal(self._build_dto(val_date, price_date_timedelta=price_date_timedelta).close)
|
|
46
46
|
|
|
47
47
|
def _build_dto(self, val_date: date, price_date_timedelta: int = 3) -> PriceDTO: # for backward compatibility
|
|
48
48
|
try:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbfdm-1.54.5 → wbfdm-1.54.7}/wbfdm/import_export/backends/cbinsights/utils/classifications.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|