ETF_Suite_Portal/test_erosion.py

45 lines
1.7 KiB
Python

from ETF_Portal.services.nav_erosion_service import NavErosionService
import logging
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def test_portfolio():
# Initialize service
service = NavErosionService()
# Test portfolio
portfolio = ['VTI', 'DEPI', 'MSTY', 'JEPI', 'VOO']
try:
# Analyze portfolio
analysis = service.analyze_etf_erosion_risk(portfolio)
# Print results
print("\nPortfolio Analysis Results:")
print("=" * 50)
print(f"Portfolio NAV Risk: {analysis.portfolio_nav_risk:.1f}/9")
print(f"Portfolio Yield Risk: {analysis.portfolio_yield_risk:.1f}/9")
print("\nDetailed Results:")
print("=" * 50)
for result in analysis.results:
print(f"\n{result.ticker}:")
print(f" NAV Erosion Risk: {result.nav_erosion_risk:.1f}/9")
print(f" Yield Erosion Risk: {result.yield_erosion_risk:.1f}/9")
print(f" Estimated NAV Erosion: {result.estimated_nav_erosion:.1%}")
print(f" Estimated Yield Erosion: {result.estimated_yield_erosion:.1%}")
print(f" NAV Risk Explanation: {result.nav_risk_explanation}")
print(f" Yield Risk Explanation: {result.yield_risk_explanation}")
if result.component_risks:
print(" Component Risks:")
for component, value in result.component_risks.items():
print(f" {component}: {value:.1%}")
except Exception as e:
logger.error(f"Error during analysis: {str(e)}")
raise
if __name__ == "__main__":
test_portfolio()