Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
Carbon frontier

Hi all,

I am currently trying to build a carbon frontier - meaning, the tracking error of a portfolio regarding it's carbon intensity just like the picture : https://www.google.com/imgres?imgurl=https%3A%2F%2Fwww.candriam.fr%2F4a249e%2Fsiteassets%2Fimage%2Fmarketinsights%2Fsri%2F2019%2Freducing-portfolio-carbon-exclusion-vs-optimisation%2Fdecarb2en.png&imgrefurl=https%3A%2F%2Fwww.candriam.fr%2Fen%2Fprofessional%2Fmarket-insights%2Ftopics%2Fsri%2Freducing-portfolio-carbon-exclusion-vs-optimisation%2F&tbnid=3gl8ZGD5FC_XuM&vet=12ahUKEwj8_fHyhI7pAhVMyRoKHUzdA5oQMygAegUIARDRAQ..i&docid=f-yk9g96C4re6M&w=808&h=537&itg=1&q=tracking%20error%20and%20carbon%20intensity&client=firefox-b-d&ved=2ahUKEwj8_fHyhI7pAhVMyRoKHUzdA5oQMygAegUIARDRAQ

so I have the intensities for each asset in "intensity"

But i think I have to link those two, knowing that the unknowns are w and TE :

intensity_portfolio = np.dot(wRP_1['w'].T, intensity)
TERP_1 = np.std(np.mean(wRP_1['w'].T * returns.sub(wEW['w'].T * returns, axis = 'index')) * frequency)

Or maybe I could find a way to build 30 portfolio or smth like this with 30 intensity target for the portfolio ( but i have to estimate the optimal weights that minimize tracking error for each portfolio.

Can you help me with that please?

Many thanks

1 response

If this is anything like the efficient frontier, it can be reduced to a quadratic problem and solved using CVXPY. A simpler approach could as well be to generate a number of random combination and select the smallest tracking error.