aifinanceadvisor / Reference /enhancedmodel.py
triflix's picture
Upload 53 files
3c4e575 verified
import joblib
import pandas as pd
# Load enhanced model pipeline
pipeline = joblib.load('enhanced_portfolio_model.pkl')
# Sample input (MUST include Profession/City)
test_case = {
'Profession': 'Software Engineer',
'City': 'Mumbai',
'Salary': 150000,
'Expenses': 100000,
'Savings': 50000,
'Lifecycle Stage': 'Mid-Career',
'Risk Appetite': 'Medium',
'Investment Horizon': 'Long-term'
}
# Convert categorical features
test_case['Profession'] = pipeline['profession_encoder'].transform([test_case['Profession']])[0]
test_case['City'] = pipeline['city_encoder'].transform([test_case['City']])[0]
test_case['Lifecycle Stage'] = pipeline['mappings']['lifecycle'][test_case['Lifecycle Stage']]
test_case['Risk Appetite'] = pipeline['mappings']['risk'][test_case['Risk Appetite']]
test_case['Investment Horizon'] = pipeline['mappings']['horizon'][test_case['Investment Horizon']]
# Create feature array IN EXACT ORDER:
# ['Profession', 'City', 'Salary', 'Expenses', 'Savings',
# 'Lifecycle Stage', 'Risk Appetite', 'Investment Horizon']
X = [
test_case['Profession'],
test_case['City'],
test_case['Salary'],
test_case['Expenses'],
test_case['Savings'],
test_case['Lifecycle Stage'],
test_case['Risk Appetite'],
test_case['Investment Horizon']
]
# Scale and predict
X_scaled = pipeline['scaler'].transform([X])
pred = pipeline['model'].predict(X_scaled)[0]
# Normalize to 100%
total = pred.sum()
final_allocation = {
'Equity': round((pred[0]/total)*100, 1),
'Debt': round((pred[1]/total)*100, 1),
'Gold': round((pred[2]/total)*100, 1),
'FD/Cash': round((pred[3]/total)*100, 1)
}
print("Enhanced Model Recommended Portfolio:")
for asset, perc in final_allocation.items():
print(f"{asset}: {perc}%")
print(f"Total: {sum(final_allocation.values())}%")