def calculate_portfolio_metrics(returns_1, returns_2, investment=1_000_000):
"""
Calculate metrics for a portfolio of two startups
Parameters:
- returns_1: array of returns for startup 1 (as decimals, e.g., 0.25 for 25%)
- returns_2: array of returns for startup 2
- investment: amount invested in each startup
Returns:
- Dictionary with portfolio metrics
"""
# Portfolio returns (equal weight)
portfolio_returns = 0.5 * returns_1 + 0.5 * returns_2
# Calculate absolute returns in euros
absolute_returns = portfolio_returns * 2 * investment
metrics = {
'mean_return': portfolio_returns.mean(),
'std_dev': portfolio_returns.std(),
'prob_loss': (portfolio_returns < 0).mean(),
'prob_high_return': (portfolio_returns > 0.5).mean(),
'var_5': np.percentile(portfolio_returns, 5),
'expected_profit': absolute_returns.mean()
}
return metrics
def expected_shortfall(returns, percentile=10):
"""
Calculate the expected shortfall (conditional VaR)
Parameters:
- returns: array of returns
- percentile: percentile for worst-case scenarios
Returns:
- Average return in the worst X% of scenarios
"""
threshold = np.percentile(returns, percentile)
worst_returns = returns[returns <= threshold]
return worst_returns.mean() if len(worst_returns) > 0 else 0
# Example usage (delete or modify as needed):
print("Helper functions loaded and ready to use!")