I am building a portfolio-optimization module and need a Python expert who is comfortable working in a full Scientific-Python stack—numpy, pandas, matplotlib and seaborn will be in constant use. My focus is strictly on portfolio optimization, so every line of code should advance that goal. I want three methods implemented side-by-side so I can compare their outputs on the same data set: • Mean-Variance Optimization • Black-Litterman Model • Factor Models Please structure the work in a clean Jupyter notebook (or a set of modular .py files if you prefer) that: 1. Pulls in raw market data, cleans it and stores it in tidy pandas DataFrames. 2. Runs the three techniques above with clearly separated functions or classes. 3. Outputs key metrics and produces intuitive visualizations (efficient frontiers, weight heatmaps, risk/return plots, etc.) using matplotlib or seaborn. 4. Includes concise inline commentary so I can follow the math as well as the code. I will test the notebook by running it end-to-end on my machine, so please ensure all dependencies are imported and any random seeds set for reproducibility. If you have suggestions for additional libraries (e.g., cvxpy for constrained optimization) feel free to include them, just keep the environment lightweight. Once the notebook runs without errors and the visual results match the numerical outputs, the job is done.