wbfdm 1.46.11__tar.gz → 1.46.13__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.46.11 → wbfdm-1.46.13}/PKG-INFO +1 -1
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/backends/base.py +8 -2
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/backends/performances.py +2 -1
- wbfdm-1.46.13/wbfdm/contrib/metric/backends/utils.py +5 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tests/backends/test_performances.py +7 -1
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tasks.py +1 -1
- {wbfdm-1.46.11 → wbfdm-1.46.13}/.gitignore +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/pyproject.toml +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/esg.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/instrument_lists.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/instrument_requests.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/instruments_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/admin/options.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/esg/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/esg/enums.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/esg/esg_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/esg/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/technical_analysis/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/technical_analysis/technical_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/technical_analysis/traces.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/apps.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/backends/dto.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/dsws/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/dsws/client.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/dsws/dataloaders/market_data.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/internal/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/internal/dataloaders/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/internal/dataloaders/market_data.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/admin/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/admin/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/admin/metrics.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/apps.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/backends/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/backends/statistics.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/decorators.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/dispatch.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/dto.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/exceptions.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/factories.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/filters.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/migrations/0001_initial.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/migrations/0002_remove_instrumentmetric_unique_instrument_metric_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/migrations/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/models.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/orchestrators.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/registry.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/serializers.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tasks.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tests/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tests/backends/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tests/backends/test_statistics.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tests/conftest.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tests/test_dto.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tests/test_models.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tests/test_tasks.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/tests/test_viewsets.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/urls.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/viewsets/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/viewsets/configs/display.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/viewsets/configs/menus.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/viewsets/configs/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/viewsets/mixins.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/metric/viewsets/viewsets.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/msci/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/msci/client.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/msci/dataloaders/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/msci/dataloaders/esg.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/msci/dataloaders/esg_controversies.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/msci/sync.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/msci/tests/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/msci/tests/conftest.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/msci/tests/test_client.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/apps.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/database_routers.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/dataloaders/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/dataloaders/adjustments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/dataloaders/corporate_actions.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/dataloaders/financials.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/dataloaders/market_data.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/dataloaders/officers.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/dataloaders/reporting_dates.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/dataloaders/statements.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/dataloaders/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/jinja2/qa/sql/companies.sql +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/base_estimates.sql +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/calendarized.sql +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/complete.sql +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/estimates.sql +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/financials.sql +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/jinja2/qa/sql/instruments.sql +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/jinja2/qa/sql/quotes.sql +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/sync/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/sync/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/sync/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/contrib/qa/tasks.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/dataloaders/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/dataloaders/cache.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/dataloaders/protocols.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/dataloaders/proxies.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/dataloaders/types.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/dynamic_preferences_registry.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/enums.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/factories/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/factories/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/factories/controversies.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/factories/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/factories/instrument_list.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/factories/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/factories/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/factories/instruments_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/factories/options.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/figures/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/figures/financials/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/figures/financials/financial_analysis_charts.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/figures/financials/financials_charts.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/filters/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/filters/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/filters/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/filters/financials.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/filters/financials_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/filters/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/filters/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/filters/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/cbinsights/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/cbinsights/deals.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/cbinsights/equities.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/cbinsights/mixin.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/cbinsights/utils/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/cbinsights/utils/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/cbinsights/utils/client.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/fiscal_period.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/forecast.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/fundamental.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/instrument.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/mixin.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/utils/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/utils/controller.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/handlers/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/handlers/instrument.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/handlers/instrument_list.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/handlers/instrument_price.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/handlers/option.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/handlers/private_equities.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/cbinsights/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/cbinsights/deals.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/cbinsights/equities.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/cbinsights/fundamentals.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/refinitiv/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/refinitiv/forecast.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/refinitiv/fundamental.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/refinitiv/instrument.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/parsers/refinitiv/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/resources/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/resources/classification.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/resources/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/resources/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/jinja2.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/management/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/menu.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0001_initial.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0002_rename_statements_instrumentlookup_financials_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0003_instrument_estimate_backend_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0004_rename_financials_instrumentlookup_statements_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0005_instrument_corporate_action_backend.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0006_instrument_officer_backend.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0007_instrument_country_instrument_currency_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0008_controversy.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0009_alter_controversy_flag_alter_controversy_initiated_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0010_classification_classificationgroup_deal_exchange_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0011_delete_instrumentlookup_instrument_corporate_actions_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0012_instrumentprice_created_instrumentprice_modified.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0013_instrument_is_investable_universe_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0014_alter_controversy_instrument.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0015_instrument_instrument_investible_index.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0016_instrumenttype_name_repr.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0017_instrument_instrument_security_index.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0018_instrument_instrument_level_index.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0019_alter_controversy_source.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0020_optionaggregate_option_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0021_delete_instrumentdailystatistics.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0022_instrument_cusip_option_open_interest_20d_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0023_instrument_unique_ric_instrument_unique_rmc_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0024_option_open_interest_10d_option_volume_10d_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0025_instrument_is_primary_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0026_instrument_is_cash_equivalent.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0027_remove_instrument_unique_ric_and_more.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0028_instrumentprice_annualized_daily_volatility.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0029_alter_instrumentprice_volume.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0030_alter_relatedinstrumentthroughmodel_related_type.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/esg/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/esg/controversies.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/exchanges/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/exchanges/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/fields.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/fk_fields.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/indicators.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/instrument_lists.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/instrument_requests.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/llm/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/llm/create_instrument_news_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/mixin/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/mixin/financials_computed.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/mixin/financials_serializer_fields.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/mixin/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/options.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/private_equities.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/querysets.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/models/instruments/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/preferences.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/esg.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/instruments/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/instruments/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/instruments/instrument_lists.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/instruments/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/instruments/instrument_requests.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/instruments/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/instruments/mixins.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/serializers/officers.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/signals.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/sync/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/sync/abstract.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/sync/runner.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/analysis/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/analysis/financial_analysis/test_utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/analysis/test_esg.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/conftest.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/dataloaders/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/dataloaders/test_cache.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/models/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/models/test_classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/models/test_exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/models/test_instrument_list.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/models/test_instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/models/test_instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/models/test_merge.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/models/test_options.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/test_tasks.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/tests/tests.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/urls.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/buttons/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/buttons/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/buttons/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/buttons/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/buttons/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/esg.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/financial_summary.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/instrument_lists.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/instrument_requests.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/instruments_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/monthly_performances.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/officers.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/statement_with_estimates.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/display/statements.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/esg.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/financials_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/instrument_lists.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/instrument_requests.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/instruments_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/endpoints/statements.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/menus/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/menus/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/menus/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/menus/instrument_lists.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/menus/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/menus/instruments_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/esg.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/financial_ratio_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/financials_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/instrument_requests.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/instruments_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/market_data.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/configs/titles/statement_with_estimates.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/esg.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/exchanges.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/financial_analysis/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/financial_analysis/financial_summary.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/instruments/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/instruments/classifications.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/instruments/financials_analysis.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/instruments/instrument_lists.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/instruments/instrument_prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/instruments/instrument_requests.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/instruments/instruments.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/instruments/instruments_relationships.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/instruments/utils.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/market_data.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/mixins.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/officers.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/prices.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/statements/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/statements/statements.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/viewsets/technical_analysis/__init__.py +0 -0
- {wbfdm-1.46.11 → wbfdm-1.46.13}/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.46.
|
|
3
|
+
Version: 1.46.13
|
|
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.*
|
|
@@ -14,6 +14,7 @@ from wbfdm.models import Instrument, InstrumentPrice
|
|
|
14
14
|
|
|
15
15
|
from ..dto import Metric, MetricField, MetricKey
|
|
16
16
|
from ..exceptions import MetricInvalidParameterException
|
|
17
|
+
from .utils import get_today
|
|
17
18
|
|
|
18
19
|
T = TypeVar("T", bound=Model)
|
|
19
20
|
|
|
@@ -82,11 +83,16 @@ class InstrumentMetricBaseBackend(AbstractBackend[Instrument]):
|
|
|
82
83
|
return super().get_queryset().filter(is_investable_universe=True)
|
|
83
84
|
|
|
84
85
|
def _get_valid_date(self, instrument: Instrument) -> date:
|
|
86
|
+
val_date = None
|
|
85
87
|
if self.val_date is None and instrument.last_price_date:
|
|
86
|
-
|
|
88
|
+
val_date = instrument.last_price_date
|
|
87
89
|
elif self.val_date:
|
|
88
90
|
with suppress(InstrumentPrice.DoesNotExist):
|
|
89
|
-
|
|
91
|
+
val_date = instrument.prices.filter(date__lte=self.val_date).latest("date").date
|
|
92
|
+
if val_date:
|
|
93
|
+
return min(
|
|
94
|
+
[val_date, (get_today() - pd.tseries.offsets.BDay(1)).date()]
|
|
95
|
+
) # ensure that value date is at least lower than today (otherwise, we might compute performance for intraday, which we do not want yet
|
|
90
96
|
else:
|
|
91
97
|
raise MetricInvalidParameterException()
|
|
92
98
|
|
|
@@ -12,6 +12,7 @@ from wbfdm.models import Instrument, InstrumentPrice, RelatedInstrumentThroughMo
|
|
|
12
12
|
from ..decorators import register
|
|
13
13
|
from ..dto import Metric, MetricField, MetricKey
|
|
14
14
|
from .base import BaseDataloader, InstrumentMetricBaseBackend
|
|
15
|
+
from .utils import get_today
|
|
15
16
|
|
|
16
17
|
PERFORMANCE_METRIC = MetricKey(
|
|
17
18
|
key="performance",
|
|
@@ -247,7 +248,7 @@ class InstrumentPerformanceMetricBackend(InstrumentMetricBaseBackend):
|
|
|
247
248
|
attrs = super().get_serializer_field_attr(metric_field)
|
|
248
249
|
pivot_date = self.val_date
|
|
249
250
|
if not pivot_date:
|
|
250
|
-
pivot_date = (
|
|
251
|
+
pivot_date = (get_today() - pd.tseries.offsets.BDay(1)).date()
|
|
251
252
|
if "previous" in metric_field.key:
|
|
252
253
|
pivot_date = Dataloader.get_performance_date_map(pivot_date)[metric_field.key.replace("previous_", "")]
|
|
253
254
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from datetime import timedelta
|
|
2
2
|
from decimal import Decimal
|
|
3
|
+
from unittest.mock import patch
|
|
3
4
|
|
|
4
5
|
import pandas as pd
|
|
5
6
|
import pytest
|
|
@@ -14,13 +15,18 @@ fake = Faker()
|
|
|
14
15
|
|
|
15
16
|
@pytest.mark.django_db
|
|
16
17
|
class TestInstrumentPerformanceMetricBackend:
|
|
17
|
-
|
|
18
|
+
@patch("wbfdm.contrib.metric.backends.performances.get_today")
|
|
19
|
+
def test_compute_metrics(self, mock_fct, weekday, instrument, instrument_price_factory):
|
|
18
20
|
from wbfdm.contrib.metric.backends.performances import ( # we import locally to avoid database access pytest error
|
|
19
21
|
InstrumentPerformanceMetricBackend,
|
|
20
22
|
)
|
|
21
23
|
|
|
24
|
+
# mock_fct.return_value = weekday # return weekday as date.today
|
|
22
25
|
backend = InstrumentPerformanceMetricBackend(weekday)
|
|
23
26
|
|
|
27
|
+
price_intraday = instrument_price_factory( # noqa
|
|
28
|
+
instrument=instrument, calculated=False, date=(weekday + BDay(1)).date()
|
|
29
|
+
)
|
|
24
30
|
price_today = instrument_price_factory.create(instrument=instrument, calculated=False, date=weekday)
|
|
25
31
|
price_yesterday = instrument_price_factory.create(
|
|
26
32
|
instrument=instrument, calculated=False, date=weekday - BDay(1)
|
|
@@ -63,7 +63,7 @@ def update_of_investable_universe_data(
|
|
|
63
63
|
investable_universe_updated.send(sender=Instrument, end_date=end)
|
|
64
64
|
if with_background_tasks:
|
|
65
65
|
daily_update_instrument_price_statistics.delay(from_date=start, to_date=end)
|
|
66
|
-
|
|
66
|
+
update_instrument_metrics_as_task.delay()
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
@shared_task(queue="portfolio")
|
|
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.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py
RENAMED
|
File without changes
|
{wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/financial_ratio_analysis.py
RENAMED
|
File without changes
|
{wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py
RENAMED
|
File without changes
|
{wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/analysis/financial_analysis/statement_with_estimates.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.46.11 → wbfdm-1.46.13}/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
|
{wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/import_export/backends/refinitiv/geographic_segment.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
|
{wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0003_instrument_estimate_backend_and_more.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbfdm-1.46.11 → wbfdm-1.46.13}/wbfdm/migrations/0005_instrument_corporate_action_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|