mainsequence 3.2.0__tar.gz → 3.3.0__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.
- {mainsequence-3.2.0 → mainsequence-3.3.0}/PKG-INFO +1 -1
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/models_tdag.py +33 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/models_vam.py +3 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/utils.py +1 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments/__init__.py +1 -1
- mainsequence-3.3.0/mainsequence/instruments/instruments/bond.py +969 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments/position.py +1 -1
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/pricing_models/indices.py +8 -3
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/data_nodes/data_nodes.py +10 -6
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/data_nodes/persist_managers.py +16 -1
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence.egg-info/PKG-INFO +1 -1
- {mainsequence-3.2.0 → mainsequence-3.3.0}/pyproject.toml +1 -1
- mainsequence-3.2.0/mainsequence/instruments/instruments/bond.py +0 -480
- {mainsequence-3.2.0 → mainsequence-3.3.0}/LICENSE +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/README.md +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/__main__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/cli/api.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/cli/cli.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/cli/config.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/base.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/data_sources_interfaces/timescale.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/client/models_report_studio.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/assets/config.toml +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/assets/favicon.png +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/assets/image_1_base64.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/assets/image_2_base64.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/assets/image_3_base64.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/assets/image_4_base64.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/assets/image_5_base64.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/assets/logo.png +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/core/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/core/theme.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/pages/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/dashboards/streamlit/scaffold.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/data_interface/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/data_interface/data_interface.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments/base_instrument.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments/european_option.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments/interest_rate_swap.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments/json_codec.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments/knockout_fx_option.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments/ql_fields.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments/vanilla_fx_option.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/instruments.default.toml +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/pricing_models/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/pricing_models/black_scholes.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/pricing_models/bond_pricer.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/pricing_models/fx_option_pricer.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/pricing_models/knockout_fx_pricer.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/pricing_models/swap_pricer.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/settings.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/instruments/utils.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/logconf.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/reportbuilder/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/reportbuilder/__main__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/reportbuilder/examples/ms_template_report.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/reportbuilder/model.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/reportbuilder/slide_templates.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/__main__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/config.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/data_nodes/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/data_nodes/build_operations.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/data_nodes/run_operations.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/data_nodes/utils.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/future_registry.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/tdag/utils.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/agent_interface.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/config_handling.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/etf_replicator_app.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/generate_report.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/load_external_portfolio.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/news_app.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/portfolio_report_app.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/portfolio_table.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/run_named_portfolio.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/run_portfolio.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/templates/base.html +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/apps/templates/report.html +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/data_nodes/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/data_nodes/external_weights.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/data_nodes/intraday_trend.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/data_nodes/market_cap.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/data_nodes/mock_signal.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/data_nodes/portfolio_replicator.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/prices/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/prices/data_nodes.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/prices/utils.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/rebalance_strategies.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/data_nodes.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/enums.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/models.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/notebook_handling.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/portfolio_interface.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/resource_factory/__init__.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/resource_factory/app_factory.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/resource_factory/base_factory.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/resource_factory/rebalance_factory.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/resource_factory/signal_factory.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence/virtualfundbuilder/utils.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/setup.cfg +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/tests/test_agent.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/tests/test_portfolio.py +0 -0
- {mainsequence-3.2.0 → mainsequence-3.3.0}/tests/test_replicator.py +0 -0
|
@@ -1035,6 +1035,39 @@ class DataNodeStorage(BasePydanticModel, BaseObjectOrm):
|
|
|
1035
1035
|
) from err
|
|
1036
1036
|
# Filter the data based on time_index_name and last_time_index_value
|
|
1037
1037
|
|
|
1038
|
+
def get_last_observation(self,unique_identifier_list:List[str],timeout=None):
|
|
1039
|
+
base_url = self.get_object_url()
|
|
1040
|
+
payload = {"json": {"unique_identifier_list":unique_identifier_list}}
|
|
1041
|
+
s = self.build_session()
|
|
1042
|
+
url = f"{base_url}/{self.id}/get_last_observation/"
|
|
1043
|
+
r = make_request(
|
|
1044
|
+
r_type="POST",
|
|
1045
|
+
url=url,
|
|
1046
|
+
payload=payload,
|
|
1047
|
+
s=s,
|
|
1048
|
+
loaders=self.LOADERS,
|
|
1049
|
+
)
|
|
1050
|
+
if r.status_code != 200:
|
|
1051
|
+
raise Exception(f"Error in request {r.text}")
|
|
1052
|
+
df=pd.DataFrame(r.json())
|
|
1053
|
+
stc = self.sourcetableconfiguration
|
|
1054
|
+
try:
|
|
1055
|
+
df[stc.time_index_name] = pd.to_datetime(df[stc.time_index_name], format="ISO8601")
|
|
1056
|
+
except Exception as e:
|
|
1057
|
+
raise e
|
|
1058
|
+
columns_to_loop =stc.column_dtypes_map.keys()
|
|
1059
|
+
for c, c_type in stc.column_dtypes_map.items():
|
|
1060
|
+
if c not in columns_to_loop:
|
|
1061
|
+
continue
|
|
1062
|
+
if c != stc.time_index_name:
|
|
1063
|
+
if c_type == "object":
|
|
1064
|
+
c_type = "str"
|
|
1065
|
+
df[c] = df[c].astype(c_type)
|
|
1066
|
+
df = df.set_index(stc.index_names)
|
|
1067
|
+
return df
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
|
|
1038
1071
|
def get_data_between_dates_from_api(
|
|
1039
1072
|
self,
|
|
1040
1073
|
start_date: datetime.datetime = None,
|
|
@@ -1710,6 +1710,9 @@ class Portfolio(BaseObjectOrm, BasePydanticModel):
|
|
|
1710
1710
|
if r.status_code != 200:
|
|
1711
1711
|
raise RuntimeError(f"PATCH {url} failed: {r.status_code} {r.text}")
|
|
1712
1712
|
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
|
|
1713
1716
|
def get_latest_weights(self, timeout=None) -> dict[str, float]:
|
|
1714
1717
|
url = f"{self.get_object_url()}/{self.id}/get_latest_weights/"
|
|
1715
1718
|
r = make_request(
|