Spaces:
Running
Running
| from backend.utils.peer_comparison import calculate_normalized_scores_v2 | |
| import json | |
| def test_normalization(): | |
| print("Testing Normalization Logic...") | |
| # Case 1: High Growth, High Profit | |
| sample_1 = { | |
| 'returns_5y': 150.0, # Expect 100 | |
| 'roe': 35.0, # Expect 100 | |
| 'roce': 40.0, # Expect 100 | |
| 'pe_ratio': 20.0, | |
| 'industry_pe': 25.0, # Undervalued -> Expect high score | |
| 'dividend_yield': 1.5, # Expect ~37.5 (1.5/4 * 100 ?) No, range 0-5. 1.5/5 * 100 = 30? Wait formula is linear 0-5. | |
| 'returns_1y': 80.0 # Expect High | |
| } | |
| scores_1 = calculate_normalized_scores_v2(sample_1) | |
| print(f"\nSample 1 (High Performance):\n{json.dumps(scores_1, indent=2)}") | |
| # Case 2: Poor Performance | |
| sample_2 = { | |
| 'returns_5y': -30.0, # Expect 0 (min -20) | |
| 'roe': -5.0, # Expect 0 | |
| 'roce': 2.0, # Expect low | |
| 'pe_ratio': 50.0, | |
| 'industry_pe': 25.0, # Overvalued -> Expect low score | |
| 'dividend_yield': 0.0, # Expect 0 | |
| 'returns_1y': -60.0 # Expect 0 (min -50) | |
| } | |
| scores_2 = calculate_normalized_scores_v2(sample_2) | |
| print(f"\nSample 2 (Poor Performance):\n{json.dumps(scores_2, indent=2)}") | |
| # Case 3: Average / Missing | |
| sample_3 = { | |
| 'pe_ratio': 25.0, | |
| 'industry_pe': 25.0 # Fair value | |
| # Others missing -> Expect 50 | |
| } | |
| scores_3 = calculate_normalized_scores_v2(sample_3) | |
| print(f"\nSample 3 (Average/Missing):\n{json.dumps(scores_3, indent=2)}") | |
| if __name__ == "__main__": | |
| try: | |
| test_normalization() | |
| print("\n✅ Verification Successful: Logic runs without errors.") | |
| except Exception as e: | |
| print(f"\n❌ Verification Failed: {e}") | |