Ejemplo n.º 1
0
def optimise_using_correlation(mean_list: list,
                               avg_correlation: float,
                               std: float):
    corr_matrix = boring_corr_matrix_values(len(mean_list), offdiag=avg_correlation)
    stdev_list = np.full(len(mean_list), std)
    sigma = sigma_from_corr_and_std(stdev_list, corr_matrix)

    weights = optimise_from_sigma_and_mean_list(sigma, mean_list)

    return  weights
Ejemplo n.º 2
0
def covariance_from_stdev_and_correlation(
        correlation_estimate: correlationEstimate,
        stdev_estimate: stdevEstimates) -> covarianceEstimate:

    list_of_assets = list(correlation_estimate.columns)
    aligned_stdev_list = stdev_estimate.list_in_key_order(list_of_assets)
    sigma = sigma_from_corr_and_std(aligned_stdev_list,
                                    correlation_estimate.values)

    return covarianceEstimate(sigma, list_of_assets)
Ejemplo n.º 3
0
def get_annualised_risk_given_inputs(std_dev, cmatrix, weights):
    weights = np.array(weights)
    std_dev = np.array(std_dev)
    std_dev, cmatrix, weights = clean_values(std_dev, cmatrix, weights)
    sigma = sigma_from_corr_and_std(std_dev, cmatrix)

    portfolio_variance = weights.dot(sigma).dot(weights.transpose())
    portfolio_std = portfolio_variance**.5

    return portfolio_std
Ejemplo n.º 4
0
def get_annualised_risk(
    std_dev: stdevEstimates, cmatrix: correlationEstimate, weights: portfolioWeights
) -> float:

    weights_as_np = weights.as_np()
    std_dev_as_np = std_dev.as_np()
    cmatrix_as_np = cmatrix.as_np()

    std_dev_as_np, cmatrix_as_np, weights_as_np = clean_values(
        std_dev_as_np, cmatrix_as_np, weights_as_np
    )
    sigma = sigma_from_corr_and_std(std_dev_as_np, cmatrix_as_np)

    portfolio_variance = weights_as_np.dot(sigma).dot(weights_as_np.transpose())
    portfolio_std = portfolio_variance ** 0.5

    return portfolio_std
Ejemplo n.º 5
0
def combine_list_of_correlations_and_stdev(
        rolling_correlations, rolling_stdev):
    corr_index_dates = rolling_correlations.fit_dates
    std_index_dates = list(rolling_stdev.index)
    sigma_list = []
    for corr_index, index_date in enumerate(corr_index_dates):
        std_dev = rolling_stdev.loc[index_date].values
        std_dev[np.isnan(std_dev)] = 0.0
        cmatrix = rolling_correlations.corr_list[corr_index]
        cmatrix = pd.DataFrame(cmatrix)
        cmatrix[cmatrix.isna()] = 1.0
        cmatrix = np.array(cmatrix)
        sigma = sigma_from_corr_and_std(std_dev, cmatrix)

        sigma_list.append(sigma)

    covariance_estimates = CorrelationList(
        sigma_list, rolling_stdev.columns, corr_index_dates
    )

    return covariance_estimates
Ejemplo n.º 6
0
def covariance_from_stdev_and_correlation(
    correlation_estimate: correlationEstimate, stdev_estimate: stdevEstimates
) -> covarianceEstimate:

    all_assets = set(list(correlation_estimate.columns) + stdev_estimate.list_of_keys())
    list_of_assets_with_data = list(
        set(correlation_estimate.assets_with_data()).intersection(
            set(stdev_estimate.assets_with_data())
        )
    )
    assets_without_data = list(all_assets.difference(list_of_assets_with_data))

    aligned_stdev_list = stdev_estimate.list_in_key_order(list_of_assets_with_data)
    aligned_corr_list = correlation_estimate.subset(list_of_assets_with_data)
    sigma = sigma_from_corr_and_std(aligned_stdev_list, aligned_corr_list.values)

    cov_assets_with_data = covarianceEstimate(sigma, columns=list_of_assets_with_data)

    cov = cov_assets_with_data.add_assets_with_nan_values(assets_without_data)

    return cov