wbfdm 1.49.8__tar.gz → 1.49.9__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.49.8 → wbfdm-1.49.9}/PKG-INFO +1 -1
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/querysets.py +41 -35
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tasks.py +0 -1
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/instrument_prices.py +2 -70
- {wbfdm-1.49.8 → wbfdm-1.49.9}/.gitignore +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/pyproject.toml +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/esg.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/instrument_lists.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/instrument_requests.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/instruments_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/admin/options.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/esg/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/esg/enums.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/esg/esg_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/esg/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/financial_analysis/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/technical_analysis/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/technical_analysis/technical_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/technical_analysis/traces.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/analysis/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/apps.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/backends/dto.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/dsws/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/dsws/client.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/dsws/dataloaders/market_data.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/internal/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/internal/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/internal/dataloaders/market_data.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/admin/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/admin/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/admin/metrics.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/apps.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/backends/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/backends/base.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/backends/performances.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/backends/statistics.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/backends/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/decorators.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/dispatch.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/dto.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/exceptions.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/factories.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/filters.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/migrations/0001_initial.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/migrations/0002_remove_instrumentmetric_unique_instrument_metric_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/migrations/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/models.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/orchestrators.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/registry.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/serializers.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tasks.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tests/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tests/backends/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tests/backends/test_performances.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tests/backends/test_statistics.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tests/conftest.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tests/test_dto.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tests/test_models.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tests/test_tasks.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/tests/test_viewsets.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/urls.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/viewsets/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/viewsets/configs/display.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/viewsets/configs/menus.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/viewsets/configs/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/viewsets/mixins.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/metric/viewsets/viewsets.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/msci/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/msci/client.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/msci/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/msci/dataloaders/esg.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/msci/dataloaders/esg_controversies.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/msci/sync.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/msci/tests/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/msci/tests/conftest.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/msci/tests/test_client.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/apps.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/database_routers.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/dataloaders/adjustments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/dataloaders/corporate_actions.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/dataloaders/financials.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/dataloaders/market_data.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/dataloaders/officers.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/dataloaders/reporting_dates.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/dataloaders/statements.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/dataloaders/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/jinja2/qa/sql/companies.sql +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/base_estimates.sql +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/calendarized.sql +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/complete.sql +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/estimates.sql +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/financials.sql +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/jinja2/qa/sql/instruments.sql +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/jinja2/qa/sql/quotes.sql +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/sync/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/sync/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/sync/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/contrib/qa/tasks.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/dataloaders/cache.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/dataloaders/protocols.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/dataloaders/proxies.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/dataloaders/types.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/dynamic_preferences_registry.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/enums.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/factories/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/factories/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/factories/controversies.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/factories/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/factories/instrument_list.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/factories/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/factories/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/factories/instruments_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/factories/options.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/figures/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/figures/financials/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/figures/financials/financial_analysis_charts.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/figures/financials/financials_charts.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/filters/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/filters/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/filters/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/filters/financials.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/filters/financials_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/filters/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/filters/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/filters/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/cbinsights/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/cbinsights/deals.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/cbinsights/equities.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/cbinsights/mixin.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/cbinsights/utils/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/cbinsights/utils/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/cbinsights/utils/client.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/fiscal_period.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/forecast.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/fundamental.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/instrument.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/mixin.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/utils/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/backends/refinitiv/utils/controller.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/handlers/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/handlers/instrument.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/handlers/instrument_list.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/handlers/instrument_price.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/handlers/option.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/handlers/private_equities.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/cbinsights/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/cbinsights/deals.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/cbinsights/equities.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/cbinsights/fundamentals.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/refinitiv/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/refinitiv/forecast.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/refinitiv/fundamental.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/refinitiv/instrument.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/parsers/refinitiv/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/resources/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/resources/classification.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/resources/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/import_export/resources/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/jinja2.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/management/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/menu.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0001_initial.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0002_rename_statements_instrumentlookup_financials_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0003_instrument_estimate_backend_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0004_rename_financials_instrumentlookup_statements_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0005_instrument_corporate_action_backend.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0006_instrument_officer_backend.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0007_instrument_country_instrument_currency_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0008_controversy.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0009_alter_controversy_flag_alter_controversy_initiated_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0010_classification_classificationgroup_deal_exchange_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0011_delete_instrumentlookup_instrument_corporate_actions_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0012_instrumentprice_created_instrumentprice_modified.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0013_instrument_is_investable_universe_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0014_alter_controversy_instrument.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0015_instrument_instrument_investible_index.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0016_instrumenttype_name_repr.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0017_instrument_instrument_security_index.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0018_instrument_instrument_level_index.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0019_alter_controversy_source.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0020_optionaggregate_option_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0021_delete_instrumentdailystatistics.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0022_instrument_cusip_option_open_interest_20d_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0023_instrument_unique_ric_instrument_unique_rmc_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0024_option_open_interest_10d_option_volume_10d_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0025_instrument_is_primary_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0026_instrument_is_cash_equivalent.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0027_remove_instrument_unique_ric_and_more.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0028_instrumentprice_annualized_daily_volatility.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0029_alter_instrumentprice_volume.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/0030_alter_relatedinstrumentthroughmodel_related_type.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/migrations/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/esg/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/esg/controversies.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/exchanges/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/exchanges/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/fields.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/fk_fields.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/indicators.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/instrument_lists.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/instrument_requests.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/llm/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/llm/create_instrument_news_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/mixin/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/mixin/financials_computed.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/mixin/financials_serializer_fields.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/mixin/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/options.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/private_equities.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/models/instruments/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/preferences.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/esg.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/instruments/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/instruments/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/instruments/instrument_lists.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/instruments/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/instruments/instrument_requests.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/instruments/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/instruments/mixins.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/serializers/officers.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/signals.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/sync/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/sync/abstract.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/sync/runner.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/analysis/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/analysis/financial_analysis/test_utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/analysis/test_esg.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/conftest.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/dataloaders/test_cache.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/models/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/models/test_classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/models/test_exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/models/test_instrument_list.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/models/test_instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/models/test_instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/models/test_merge.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/models/test_options.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/test_tasks.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/tests/tests.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/urls.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/buttons/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/buttons/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/buttons/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/buttons/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/buttons/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/esg.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/financial_summary.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/instrument_lists.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/instrument_requests.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/instruments_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/monthly_performances.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/officers.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/statement_with_estimates.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/display/statements.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/esg.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/financials_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/instrument_lists.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/instrument_requests.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/instruments_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/endpoints/statements.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/menus/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/menus/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/menus/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/menus/instrument_lists.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/menus/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/menus/instruments_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/esg.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/financial_ratio_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/financials_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/instrument_requests.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/instruments_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/market_data.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/configs/titles/statement_with_estimates.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/esg.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/exchanges.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/financial_analysis/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/financial_analysis/financial_summary.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/instruments/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/instruments/classifications.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/instruments/financials_analysis.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/instruments/instrument_lists.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/instruments/instrument_prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/instruments/instrument_requests.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/instruments/instruments.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/instruments/instruments_relationships.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/instruments/utils.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/market_data.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/mixins.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/officers.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/prices.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/statements/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/statements/statements.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/wbfdm/viewsets/technical_analysis/__init__.py +0 -0
- {wbfdm-1.49.8 → wbfdm-1.49.9}/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.49.
|
|
3
|
+
Version: 1.49.9
|
|
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.*
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import math
|
|
2
1
|
from contextlib import suppress
|
|
3
2
|
from datetime import date
|
|
3
|
+
from decimal import Decimal
|
|
4
4
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
import pandas as pd
|
|
7
|
+
from django.core.exceptions import ValidationError
|
|
8
|
+
from django.core.validators import DecimalValidator
|
|
7
9
|
from django.db.models import (
|
|
8
10
|
AutoField,
|
|
9
11
|
Exists,
|
|
@@ -88,43 +90,46 @@ class InstrumentQuerySet(QuerySet):
|
|
|
88
90
|
from wbfdm.models import InstrumentPrice
|
|
89
91
|
|
|
90
92
|
def _dict_to_object(instrument, row):
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
close = row.get("close", None)
|
|
94
|
+
price_date = row.get("date")
|
|
95
|
+
if price_date and close is not None:
|
|
96
|
+
close = round(Decimal(close), 6)
|
|
97
|
+
# we validate that close can be inserting into our table<
|
|
98
|
+
with suppress(ValidationError):
|
|
99
|
+
validator = DecimalValidator(16, 6)
|
|
100
|
+
validator(close)
|
|
97
101
|
try:
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
p.id = None
|
|
109
|
-
return p
|
|
110
|
-
except InstrumentPrice.DoesNotExist:
|
|
111
|
-
with suppress(CurrencyFXRates.DoesNotExist):
|
|
112
|
-
p = InstrumentPrice(
|
|
113
|
-
currency_fx_rate_to_usd=CurrencyFXRates.objects.get(
|
|
114
|
-
# we need to get the currency rate because we bulk create the object, and thus save is not called
|
|
115
|
-
date=price_date,
|
|
116
|
-
currency=instrument.currency,
|
|
117
|
-
),
|
|
118
|
-
instrument=instrument,
|
|
119
|
-
date=price_date,
|
|
120
|
-
calculated=row["calculated"],
|
|
121
|
-
net_value=close,
|
|
122
|
-
gross_value=close,
|
|
123
|
-
volume=row.get("volume", None),
|
|
124
|
-
market_capitalization=row.get("market_capitalization", None),
|
|
125
|
-
)
|
|
102
|
+
try:
|
|
103
|
+
p = InstrumentPrice.objects.get(instrument=instrument, date=price_date, calculated=False)
|
|
104
|
+
except InstrumentPrice.DoesNotExist:
|
|
105
|
+
p = InstrumentPrice.objects.get(instrument=instrument, date=price_date, calculated=True)
|
|
106
|
+
p.net_value = close
|
|
107
|
+
p.gross_value = close
|
|
108
|
+
p.calculated = row["calculated"]
|
|
109
|
+
p.volume = row.get("volume", p.volume)
|
|
110
|
+
p.market_capitalization = row.get("market_capitalization", p.market_capitalization)
|
|
111
|
+
p.market_capitalization_consolidated = p.market_capitalization
|
|
126
112
|
p.set_dynamic_field(False)
|
|
113
|
+
p.id = None
|
|
127
114
|
return p
|
|
115
|
+
except InstrumentPrice.DoesNotExist:
|
|
116
|
+
with suppress(CurrencyFXRates.DoesNotExist):
|
|
117
|
+
p = InstrumentPrice(
|
|
118
|
+
currency_fx_rate_to_usd=CurrencyFXRates.objects.get(
|
|
119
|
+
# we need to get the currency rate because we bulk create the object, and thus save is not called
|
|
120
|
+
date=price_date,
|
|
121
|
+
currency=instrument.currency,
|
|
122
|
+
),
|
|
123
|
+
instrument=instrument,
|
|
124
|
+
date=price_date,
|
|
125
|
+
calculated=row["calculated"],
|
|
126
|
+
net_value=close,
|
|
127
|
+
gross_value=close,
|
|
128
|
+
volume=row.get("volume", None),
|
|
129
|
+
market_capitalization=row.get("market_capitalization", None),
|
|
130
|
+
)
|
|
131
|
+
p.set_dynamic_field(False)
|
|
132
|
+
return p
|
|
128
133
|
|
|
129
134
|
df = pd.DataFrame(
|
|
130
135
|
self.dl.market_data(
|
|
@@ -154,6 +159,7 @@ class InstrumentQuerySet(QuerySet):
|
|
|
154
159
|
dff = dff.reset_index(names="date").dropna(subset=["close"])
|
|
155
160
|
dff = dff.replace([np.inf, -np.inf, np.nan], None)
|
|
156
161
|
instrument = self.get(id=instrument_id)
|
|
162
|
+
|
|
157
163
|
yield from filter(
|
|
158
164
|
lambda x: x, map(lambda row: _dict_to_object(instrument, row), dff.to_dict("records"))
|
|
159
165
|
)
|
|
@@ -51,7 +51,6 @@ def update_of_investable_universe_data(
|
|
|
51
51
|
Instrument.investable_universe.update(
|
|
52
52
|
is_investable_universe=True
|
|
53
53
|
) # ensure all the investable universe is marked as such
|
|
54
|
-
|
|
55
54
|
instruments = Instrument.active_objects.filter(is_investable_universe=True, delisted_date__isnull=True).exclude(
|
|
56
55
|
Q(is_managed=True)
|
|
57
56
|
| Q(dl_parameters__market_data__path="wbfdm.contrib.internal.dataloaders.market_data.MarketDataDataloader")
|
|
@@ -37,70 +37,6 @@ perf_formatting_rules_bold = [
|
|
|
37
37
|
),
|
|
38
38
|
]
|
|
39
39
|
|
|
40
|
-
instrument_formatting_rules = [
|
|
41
|
-
dp.Formatting(
|
|
42
|
-
column="instrument_vs_benchmark",
|
|
43
|
-
formatting_rules=[
|
|
44
|
-
dp.FormattingRule(
|
|
45
|
-
style={"color": WBColor.GREEN_DARK.value},
|
|
46
|
-
condition=("==", True),
|
|
47
|
-
),
|
|
48
|
-
dp.FormattingRule(
|
|
49
|
-
style={"color": WBColor.RED_DARK.value},
|
|
50
|
-
condition=("==", False),
|
|
51
|
-
),
|
|
52
|
-
],
|
|
53
|
-
),
|
|
54
|
-
]
|
|
55
|
-
|
|
56
|
-
benchmark_formatting_rules = [
|
|
57
|
-
dp.Formatting(
|
|
58
|
-
column="instrument_vs_benchmark",
|
|
59
|
-
formatting_rules=[
|
|
60
|
-
dp.FormattingRule(
|
|
61
|
-
style={"color": WBColor.GREEN_DARK.value},
|
|
62
|
-
condition=("==", False),
|
|
63
|
-
),
|
|
64
|
-
dp.FormattingRule(
|
|
65
|
-
style={"color": WBColor.RED_DARK.value},
|
|
66
|
-
condition=("==", True),
|
|
67
|
-
),
|
|
68
|
-
],
|
|
69
|
-
),
|
|
70
|
-
]
|
|
71
|
-
|
|
72
|
-
instrument_one_year_formatting_rules = [
|
|
73
|
-
dp.Formatting(
|
|
74
|
-
column="instrument_vs_benchmark_one_year",
|
|
75
|
-
formatting_rules=[
|
|
76
|
-
dp.FormattingRule(
|
|
77
|
-
style={"color": WBColor.GREEN_DARK.value},
|
|
78
|
-
condition=("==", True),
|
|
79
|
-
),
|
|
80
|
-
dp.FormattingRule(
|
|
81
|
-
style={"color": WBColor.RED_DARK.value},
|
|
82
|
-
condition=("==", False),
|
|
83
|
-
),
|
|
84
|
-
],
|
|
85
|
-
),
|
|
86
|
-
]
|
|
87
|
-
|
|
88
|
-
benchmark_one_year_formatting_rules = [
|
|
89
|
-
dp.Formatting(
|
|
90
|
-
column="instrument_vs_benchmark_one_year",
|
|
91
|
-
formatting_rules=[
|
|
92
|
-
dp.FormattingRule(
|
|
93
|
-
style={"color": WBColor.GREEN_DARK.value},
|
|
94
|
-
condition=("==", False),
|
|
95
|
-
),
|
|
96
|
-
dp.FormattingRule(
|
|
97
|
-
style={"color": WBColor.RED_DARK.value},
|
|
98
|
-
condition=("==", True),
|
|
99
|
-
),
|
|
100
|
-
],
|
|
101
|
-
),
|
|
102
|
-
]
|
|
103
|
-
|
|
104
40
|
|
|
105
41
|
class InstrumentPriceDisplayConfig(DisplayViewConfig):
|
|
106
42
|
def get_list_display(self) -> Optional[dp.ListDisplay]:
|
|
@@ -170,19 +106,15 @@ class FinancialStatisticsInstrumentPandasDisplayConfig(DisplayViewConfig):
|
|
|
170
106
|
),
|
|
171
107
|
],
|
|
172
108
|
),
|
|
173
|
-
dp.Field(
|
|
174
|
-
|
|
175
|
-
),
|
|
176
|
-
dp.Field(key="benchmark_statistics", label="Benchmark", formatting_rules=benchmark_formatting_rules),
|
|
109
|
+
dp.Field(key="instrument_statistics", label="Instrument"),
|
|
110
|
+
dp.Field(key="benchmark_statistics", label="Benchmark"),
|
|
177
111
|
dp.Field(
|
|
178
112
|
key="instrument_one_year",
|
|
179
113
|
label="Instrument - One Year",
|
|
180
|
-
formatting_rules=instrument_one_year_formatting_rules,
|
|
181
114
|
),
|
|
182
115
|
dp.Field(
|
|
183
116
|
key="benchmark_one_year",
|
|
184
117
|
label="Benchmark - One Year",
|
|
185
|
-
formatting_rules=benchmark_one_year_formatting_rules,
|
|
186
118
|
),
|
|
187
119
|
]
|
|
188
120
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.49.8 → wbfdm-1.49.9}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbfdm-1.49.8 → wbfdm-1.49.9}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbfdm-1.49.8 → wbfdm-1.49.9}/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
|