qis 3.1.1__tar.gz → 3.1.2__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.
- {qis-3.1.1 → qis-3.1.2}/PKG-INFO +1 -1
- {qis-3.1.1 → qis-3.1.2}/pyproject.toml +1 -1
- {qis-3.1.1 → qis-3.1.2}/qis/file_utils.py +5 -5
- {qis-3.1.1 → qis-3.1.2}/qis/settings.yaml +0 -2
- {qis-3.1.1 → qis-3.1.2}/LICENSE.txt +0 -0
- {qis-3.1.1 → qis-3.1.2}/README.md +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/best_returns.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/bond_futures_portfolio.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/bootstrap_analysis.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/boxplot_conditional_returns.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/btc_asset_corr.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/constant_notional.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/constant_weight_portfolios.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/core/perf_bbg_prices.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/core/price_plots.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/core/us_election.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/credit_spreads.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/credit_trackers.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/europe_futures.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/factsheets/multi_assets.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/factsheets/multi_strategy.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/factsheets/pyblogs_reports.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/factsheets/strategy.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/factsheets/strategy_benchmark.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/generate_option_rolls.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/interpolation_infrequent_returns.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/leveraged_strategies.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/long_short.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/momentum_indices.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/ohlc_vol_analysis.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/overnight_returns.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/perf_external_assets.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/perp_pricing.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/readme_performances.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/risk_return_frontier.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/rolling_performance.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/seasonality.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/sharpe_vs_sortino.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/simulate_quant_strats.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/test_ewm.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/test_scatter.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/try_pybloqs.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/universe_corrs.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/vix_beta_to_equities_bonds.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/vix_conditional_returns.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/vix_spy_by_year.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/vix_tenor_analysis.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/examples/vol_without_weekends.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/local_path.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/README.md +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/auto_corr.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/corr_cov_matrix.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/ewm.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/ewm_convolution.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/ewm_factors.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/ewm_winsor_outliers.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/pca.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/plot_correlations.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/linear/ra_returns.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/stats/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/stats/bootstrap.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/stats/ohlc_vol.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/stats/rolling_stats.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/models/stats/test_bootstrap.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/README.md +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/cond_regression.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/config.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/desc_table.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/fx_ops.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/perf_stats.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/regime_classifier.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/returns.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/perfstats/timeseries_bfill.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/README.md +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/bars.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/boxplot.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/contour.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/data_timeseries.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/desc_table.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/drawdowns.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/perf_table.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/prices.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/regime_class_table.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/regime_data.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/regime_pdf.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/regime_scatter.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/returns_heatmap.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/derived/returns_scatter.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/errorbar.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/heatmap.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/histogram.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/histplot2d.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/lineplot.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/pie.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/qqplot.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/reports/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/reports/econ_data_single.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/reports/gantt_data_history.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/reports/price_history.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/reports/utils.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/scatter.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/stackplot.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/table.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/time_series.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/plots/utils.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/README.md +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/backtester.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/ewm_portfolio_risk.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/multi_portfolio_data.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/portfolio_data.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/brinson_attribution.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/config.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/multi_assets_factsheet.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/multi_strategy_factseet_pybloqs.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/multi_strategy_factsheet.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/strategy_benchmark_factsheet.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/strategy_benchmark_factsheet_pybloqs.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/strategy_factsheet.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/reports/strategy_signal_factsheet.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/strats/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/strats/quant_strats_delta1.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/portfolio/strats/seasonal_strats.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/sql_engine.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/test_data.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/README.md +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/__init__.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/dates.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/df_agg.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/df_cut.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/df_freq.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/df_groups.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/df_melt.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/df_ops.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/df_str.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/df_to_scores.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/df_to_weights.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/generic.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/np_ops.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/ols.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/sampling.py +0 -0
- {qis-3.1.1 → qis-3.1.2}/qis/utils/struct_ops.py +0 -0
{qis-3.1.1 → qis-3.1.2}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: qis
|
3
|
-
Version: 3.1.
|
3
|
+
Version: 3.1.2
|
4
4
|
Summary: Implementation of visualisation and reporting analytics for Quantitative Investment Strategies
|
5
5
|
License: LICENSE.txt
|
6
6
|
Keywords: quantitative,investing,portfolio optimization,systematic strategies,volatility
|
@@ -231,14 +231,14 @@ def save_df_to_excel(data: Union[pd.DataFrame, List[pd.DataFrame], Dict[str, pd.
|
|
231
231
|
if sheet_names is None:
|
232
232
|
sheet_names = [f"Sheet {n+1}" for n, _ in enumerate(data)]
|
233
233
|
for df, name in zip(data, sheet_names):
|
234
|
-
if df is not None:
|
234
|
+
if df is not None and isinstance(df, pd.DataFrame):
|
235
235
|
df = delocalize_df(df)
|
236
236
|
if transpose:
|
237
237
|
df = df.T
|
238
238
|
df.to_excel(excel_writer=excel_writer, sheet_name=name)
|
239
239
|
elif isinstance(data, dict): # publish with sheet names
|
240
240
|
for key, df in data.items():
|
241
|
-
if df is not None:
|
241
|
+
if df is not None and isinstance(df, pd.DataFrame):
|
242
242
|
df = delocalize_df(df)
|
243
243
|
if transpose:
|
244
244
|
df = df.T
|
@@ -482,7 +482,7 @@ def save_df_dict_to_csv(datasets: Dict[Union[str, Enum, NamedTuple], pd.DataFram
|
|
482
482
|
file_name = f"{file_name}_{pd.Timestamp.now().strftime(DATE_FORMAT)}"
|
483
483
|
|
484
484
|
for key, data in datasets.items():
|
485
|
-
if data is not None:
|
485
|
+
if data is not None and isinstance(data, pd.DataFrame):
|
486
486
|
file_path = get_local_file_path(file_name=file_name,
|
487
487
|
file_type=FileTypes.CSV,
|
488
488
|
local_path=local_path,
|
@@ -541,7 +541,7 @@ def save_df_dict_to_sql(engine: Engine,
|
|
541
541
|
save pandas dict to sql engine
|
542
542
|
"""
|
543
543
|
for key, df in dfs.items():
|
544
|
-
if df is not None:
|
544
|
+
if df is not None and isinstance(df, pd.DataFrame):
|
545
545
|
if index_col is not None:
|
546
546
|
df = df.reset_index(names=index_col)
|
547
547
|
df.to_sql(f"{table_name}_{key}", engine, schema=schema, if_exists='replace')
|
@@ -672,7 +672,7 @@ def save_df_dict_to_feather(dfs: Dict[Union[str, Enum, NamedTuple], pd.DataFrame
|
|
672
672
|
pandas dict to csv files
|
673
673
|
"""
|
674
674
|
for key, df in dfs.items():
|
675
|
-
if df is not None:
|
675
|
+
if df is not None and isinstance(df, pd.DataFrame):
|
676
676
|
file_path = get_local_file_path(file_name=file_name,
|
677
677
|
file_type=FileTypes.FEATHER,
|
678
678
|
local_path=local_path,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|