{"id":6076,"date":"2024-11-27T06:44:58","date_gmt":"2024-11-27T06:44:58","guid":{"rendered":"https:\/\/eodhd.com\/financial-academy\/?p=6076"},"modified":"2025-02-05T14:10:47","modified_gmt":"2025-02-05T14:10:47","slug":"esg-trends-and-stock-movements","status":"publish","type":"post","link":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements","title":{"rendered":"Tracking ESG Trends and Stock Movements Across Sector"},"content":{"rendered":"\n<p id=\"5a3c\">Environmental, Social, and Governance (ESG) factors have become a cornerstone of modern investing, reflecting the growing demand for sustainable and ethical business practices. ESG evaluates companies on their environmental impact, social responsibility, and governance standards, offering a comprehensive lens beyond traditional financial metrics. This approach is crucial as it helps investors identify long-term risks and opportunities while aligning portfolios with societal values. With mounting concerns over climate change, inequality, and corporate accountability, ESG fosters resilience, mitigates risks, and drives positive change. By integrating ESG principles, businesses not only enhance their reputation but also contribute to a sustainable future and long-term value creation.<\/p>\n\n\n\n<p id=\"b629\">A stock screener is a tool that filters stocks based on specific criteria, such as financial metrics or ESG factors, to streamline investment decisions. Investors should use them to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Identify companies meeting ESG and financial goals.<\/li>\n\n\n\n<li>Compare stocks across industries for sustainability performance.<\/li>\n\n\n\n<li>Avoid companies with poor environmental or governance practices.<\/li>\n\n\n\n<li>Customize filters to align with personal values and strategies.<\/li>\n<\/ul>\n\n\n\n<p id=\"38cd\">Don\u2019t forget also that integrating ESG principles into investing is not just about financial returns; it\u2019s about fostering ethical responsibility. By prioritizing companies with strong ESG scores, investors can drive positive change, promote sustainability, and contribute to a more equitable future while aligning their portfolios with societal and environmental values.<\/p>\n\n\n\n<p id=\"38cd\">In this article, we will develop a screener that includes some basic fundamental information, together with ESG data for the last two years.<\/p>\n\n\n\n<p id=\"0108\">This wouldn\u2019t be possible without using a data provider like EODHD, which can provide an extensive data set; for each listed company, we can have a holistic 360 view from historical prices and fundamentals to dividends, earnings, splits, and many more. In bullet points, what you can expect in this article is to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Get a list of companies of NYSE<\/li>\n\n\n\n<li>Download some fundamental data<\/li>\n\n\n\n<li>Download the ESG scores of those companies, and<\/li>\n\n\n\n<li>finally, we will try to discover some patterns and correlations between company performance and ESG scores<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"efe8\">Get the data!<\/h2>\n\n\n\n<p>First things first, let\u2019s do our imports and define our API<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-e6283f5c66bddef6193eba8d48da22de\"><code lang=\"python\" class=\"language-python\">import requests\nimport json\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\ntoken = \"&lt;YOUR TOKEN HERE&gt;\"<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p>Now we need to define our stock universe for which we will create the stock screener. For that, we will use the&nbsp;<a href=\"https:\/\/eodhd.com\/financial-apis\/exchanges-api-list-of-tickers-and-trading-hours\" target=\"_blank\" rel=\"noreferrer noopener\">APIs that support the exchanges<\/a>. First, let\u2019s check how the API for the list of exchanges behaves:<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-cc67a0823d67c56899362ebe6a3d86a1\"><code lang=\"python\" class=\"language-python\">url = 'https:\/\/eodhd.com\/api\/exchanges-list\/'\nquerystring = {\"api_token\":token,\"fmt\":\"json\"}\nresponse = requests.get(url, params=querystring).json()\n\ndf_exchanges = pd.DataFrame.from_dict(response)\ndf_exchanges[df_exchanges['CountryISO3'] == 'USA']<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"d5af\">You will notice that if you search for exchanges based in the US, you will get one result. If you want to run the code of this article for countries other than the US, EODHD API returns a significant number of countries and exchanges like London, Toronto, Frankfurt, and Paris, as well as from Asia and Africa.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:875\/1*hGwyPS3nzEQgWnom_3_RJQ.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"d8cf\">This means that to get all the symbols, listed in the NYSE, we should use the API that lists the symbols, and filter them to NYSE stock exchange. Additionally, we are going to look for equities, so we should further filter by type for \u2018Common Stock\u2019.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-4b6d86d82ed101cf31d20768800a6ef8\"><code lang=\"python\" class=\"language-python\">EXCHANGE_CODE = 'US'\nurl = f'https:\/\/eodhd.com\/api\/exchange-symbol-list\/{EXCHANGE_CODE}'\nquerystring = {\"api_token\":token,\"fmt\":\"json\"}\nresponse = requests.get(url, params=querystring).json()\n\ndf_symbols = pd.DataFrame.from_dict(response)\ndf_symbols = df_symbols[(df_symbols['Exchange'] == 'NYSE') &amp; (df_symbols['Type'] == 'Common Stock')]\ndf_symbols<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:875\/1*aizeJetv9L3LTd4THV7SYA.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"2472\">There are 2283 stocks in this list. We just need now to keep everything to a dictionary as we move along the code.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-102f4844f014fa602e96a0111cb8404c\"><code lang=\"python\" class=\"language-python\">symbols = df_symbols.set_index('Code').to_dict(orient='index')<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"9aa7\">At this point, we will select some basic fundamentals that every screener should have, like market capitalization, PE ratio, profit margin, PriceSalesTTM, and Analyst Ratings. We will use the&nbsp;<a href=\"https:\/\/eodhd.com\/financial-apis\/stock-etfs-fundamental-data-feeds\" target=\"_blank\" rel=\"noreferrer noopener\">API for the fundamentals<\/a>. EODHD API returns hundreds of data points, such as pre-recalculated technical metrics, valuations, and detailed insider transactions. With a small tweak in the code, you can easily add all this to the dataset below.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-972ae77d5db642d43614ce390647a6cc\"><code lang=\"python\" class=\"language-python\">for symbol in symbols:\n    url = f'https:\/\/eodhd.com\/api\/fundamentals\/{symbol}.{EXCHANGE_CODE}'\n    querystring = {\"api_token\":token,\"fmt\":\"json\"}\n    try:\n        response = requests.get(url, params=querystring).json()\n        symbols[symbol]['Sector'] = response.get('General', {}).get('Sector', None)\n        symbols[symbol]['Industry'] = response.get('General', {}).get('Industry', None)\n        symbols[symbol]['MarketCapitalization'] = response.get('Highlights', {}).get('MarketCapitalization', None)\n        symbols[symbol]['PERatio'] = response.get('Highlights', {}).get('PERatio', None)\n        symbols[symbol]['ProfitMargin'] = response.get('Highlights', {}).get('ProfitMargin', None)\n        symbols[symbol]['PriceSalesTTM'] = response.get('Valuation', {}).get('PriceSalesTTM', None)\n        symbols[symbol]['AnalystRating'] = response.get('AnalystRatings', {}).get('Rating', None)\n    except Exception as e:\n        print(f\"Error for {symbol} with error {e}\")\n        continue<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"fcb6\">However, as we said, this article focuses on the ESG data for each company. Using the&nbsp;<a href=\"https:\/\/eodhd.com\/marketplace\/investverte\/esg_data\/docs\" target=\"_blank\" rel=\"noreferrer noopener\">ESG API<\/a>, we will also gather the ESG rating for each stock. We will get only the last 2 years that are needed in our case, but EODHD API has more than 10 years of data with the detailed yearly and quarterly ESG score, together with the detailed ones like e (environmental), s (social), g (governance) data.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-339f805ffdc9805c021fa928975df684\"><code lang=\"python\" class=\"language-python\">for symbol in symbols:\n    for year in [2022, 2023]:\n        url = f'https:\/\/eodhd.com\/api\/mp\/investverte\/esg\/{symbol}'\n        querystring = {\"api_token\": token, \"fmt\": \"json\", 'frequency': 'FY', 'year': year}\n        try:\n            response = requests.get(url, params=querystring).json()\n            symbols[symbol][f'{str(year)}_esg'] = response[0].get('esg', None)\n            symbols[symbol][f'{str(year)}_e'] = response[0].get('e', None)\n            symbols[symbol][f'{str(year)}_s'] = response[0].get('s', None)\n            symbols[symbol][f'{str(year)}_g'] = response[0].get('g', None)\n        except Exception as e:\n            print(f\"Error for {symbol} and {year} with error {e}\")\n            continue<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"0f37\">Now we will convert our data to a dataframe, and also we will drop some rows with missing data.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a1339cb78d9029ea9a0dd9a019210c32\"><code lang=\"python\" class=\"language-python\">df = pd.DataFrame(symbols).transpose()\n\n# Drop rows where 2022_esg or 2023_esg with no value\ndf.dropna(subset=['2022_esg', '2023_esg'], inplace=True)\ndf = df[(df['2022_esg'] != 0) &amp; (df['2023_esg'] != 0)]\n\n# Drop rows where sector with no value\ndf.dropna(subset=['Sector'], inplace=True)\ndf = df[df['Sector'] != \"\"]<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"b230\">Get our data ready for action!<\/h2>\n\n\n\n<p id=\"ca2b\">Now that we have our data, we should pre-calculate some information that we consider crucial for our screener.<\/p>\n\n\n\n<p id=\"5c7a\">First, we will assign a ranking to the ESG score for each symbol. In fact, we will calculate the ranking globally (for the whole dataframe), as well as the ranking of the symbol in the sector itself. Additionally, we will calculate the difference in position from 2022 to 2023.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-602e54b9c27cda6d990a0e3acda8bb30\"><code lang=\"python\" class=\"language-python\">df['ESG_Rank_2022'] = df[['2022_esg']].rank(ascending=False)\ndf['ESG_Rank_2023'] = df[['2023_esg']].rank(ascending=False)\ndf['Places_Difference'] = df['ESG_Rank_2022'] - df['ESG_Rank_2023']\n\n\ndf['ESG_Rank_Sector_2022'] = df.groupby('Sector')['2022_esg'].rank(ascending=False)\ndf['ESG_Rank_Sector_2023'] = df.groupby('Sector')['2023_esg'].rank(ascending=False)\ndf['Places_Difference_Sector'] = df['ESG_Rank_Sector_2022'] - df['ESG_Rank_Sector_2023']<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"4fae\">And before we go to the actual analysis, let\u2019s do some grouping on the fundamental data for better understanding.<\/p>\n\n\n\n<p id=\"1c50\">First, we will give an actual name to the capitalization of the stock. Based on their market capitalization, we will assign them to mega, large, mid, small, micro, and nano.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-8f696167e021d3a888a75d45e208bf50\"><code lang=\"python\" class=\"language-python\"># Define the bins and labels for each capitalization category\nbins = [0, 50_000_000, 300_000_000, 2_000_000_000, 10_000_000_000, 200_000_000_000, float('inf')]\nlabels = ['nano', 'micro', 'small', 'mid', 'large', 'mega']\n\n# Filter out rows with None values in 'MarketCapitalization'\nfiltered_df = df.dropna(subset=['MarketCapitalization'])\n# Apply pd.cut to the filtered DataFrame\nfiltered_df.loc[:, 'MarketCapitalization_Binned'] = pd.cut(filtered_df['MarketCapitalization'], bins=bins, labels=labels)\n\n# Merge the result back to the original DataFrame to maintain the structure\ndf = df.drop(columns=['MarketCapitalization_Binned'], errors='ignore')\ndf = df.merge(filtered_df[['MarketCapitalization', 'MarketCapitalization_Binned']],                     how='left',\n on='MarketCapitalization')<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"7667\">Some insights<\/h2>\n\n\n\n<p id=\"fea8\">For starters, we can check if we see any major differences between the sectors, with the use of a boxplot:<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-12186293e4eb1822b9764fd6951777df\"><code lang=\"python\" class=\"language-python\">plt.figure(figsize=(12, 8))\nsns.boxplot(x='Sector', y='2023_esg', data=df)\nplt.title('ESG Score by Sector for 2023')\nplt.xticks(rotation=90)\nplt.xlabel('Sector')\nplt.ylabel('ESG Score')\nplt.show()<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:875\/1*CMeL6jvaiLaA1J8CuGomAQ.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"aa71\">This gives us a very high-level understanding, that there are some sectors where their ESG score is higher than the rest of the sectors. In a nutshell:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>All of the sectors look like having a median of around 60+, which indicates a moderate sustainability performance<\/li>\n\n\n\n<li>The financial sector looks slightly higher than the rest, but without any major outliers either upwards or downwards. The reason behind it, is that the financial sector is more regulated than the rest mostly in their obligation to promote sustainable finance.<\/li>\n\n\n\n<li>Some sectors like Financials, Consumer Cyclical, and Basic Materials have tighter interquartile ranges, suggesting more consistent ESG performance within these sectors. In those cases, the competitive advantage of an ESG score does not appear to be particularly strong.<\/li>\n<\/ul>\n\n\n\n<p id=\"4915\">Now we should do the same based on the capitalization of the companies.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-b832e7837e06459071f94933eff08301\"><code lang=\"python\" class=\"language-python\"># Define the order of categories explicitly\ncategory_order = ['nano', 'micro', 'small', 'mid', 'large', 'mega']\n\nplt.figure(figsize=(12, 8))\nsns.boxplot(x='MarketCapitalization_Binned', y='2023_esg', data=df, order=category_order)\nplt.title('ESG Score by Market Capitalization for 2023')\nplt.xticks(rotation=90)\nplt.xlabel('Market Capitalization')\nplt.ylabel('ESG Score')\nplt.show()<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:875\/1*43jMkecv5rP4nb8kAvGkRw.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"d732\">This diagram does not show us as much as the one before. All different capitalizations, are the same, with probably the only comment that the mega ones are tighter, again indicating the fact that when you are big, you don\u2019t want to be seen as the \u2018bad guy,\u2019 nor do you need to be \u2018the best guy\u2019\u2026<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"d04f\">The screener<\/h2>\n\n\n\n<p id=\"21c0\">But as promised, this article focuses on creating a custom screener, so we should not spend too much effort on boring charts, but let\u2019s see how a screener should work.<\/p>\n\n\n\n<p id=\"0ae4\">First, you should save the screener in CSV format, as shown below, and with the help and magic of Excel, you can open this file and start filtering.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-b653bf63005d4806ee28b1caa54ba4b7\"><code lang=\"python\" class=\"language-python\">df.to_csv('screener.csv', index=False)\n<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:875\/1*dpwpiz3sDkEK691npxp7Aw.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"4524\">Then the limit is the sky. You can start filtering and sorting to identify opportunities to start your investigation. (apparently, this can be done also using Python and pandas, which we are also going to show).<\/p>\n\n\n\n<p id=\"b46c\">As we said in the beginning, all of us have different approach when it comes to selecting the stocks that we believe have the potential for better profits. Of course, this is very broad, and cannot be described in detail, so we will aim to inspire you with ideas, by trying to answer questions that might come to you while having in front of you an Excel with thousands of data points.<\/p>\n\n\n\n<p id=\"75f8\"><strong><em>Which stock has the best ESG score<\/em><\/strong><\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-03c09130bf18aa7898044ffb6887633a\"><code lang=\"python\" class=\"language-python\"># Which stock has the best ESG score\ndf[df['ESG_Rank_2023'] == 1]<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"5c41\">The winner is Fresenius Medical Care Corporation (FMS) with an impressive 81.79.<\/p>\n\n\n\n<p id=\"400c\">With some Python, we will be able to get some quick answers<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-2558bda47d2aaa75a5d11e41e75c2322\"><code lang=\"python\" class=\"language-python\">symbol = 'FMS'\nselected = df[df['Symbol'] == symbol]\n\nif not selected.empty:\n    # get the sector and its dataframe\n    sector = selected['Sector'].values[0]\n    sector_df = df[df['Sector'] == sector]\n    # ESG Report\n    esg_rank = selected['ESG_Rank_2023'].values[0]\n    place_diff = selected['Places_Difference'].values[0]\n    esg_rank_sector = selected['ESG_Rank_Sector_2023'].values[0]\n    place_diff_sector = selected['Places_Difference_Sector'].values[0]\n    # PE Ratio\n    pe_ratio = selected['PERatio'].values[0]\n    better_overall_pe_ratio = (df['PERatio'] &gt; pe_ratio).sum() \/ len(df) * 100\n    better_sector_pe_ratio = (sector_df['PERatio'] &gt; pe_ratio).sum() \/ len(sector_df) * 100\n    # Profit Margin\n    profit_margin = selected['ProfitMargin'].values[0]\n    better_overall_profit_margin = (df['ProfitMargin'] &gt; profit_margin).sum() \/ len(df) * 100\n    better_sector_profit_margin = (sector_df['ProfitMargin'] &gt; profit_margin).sum() \/ len(sector_df) * 100\n    # PriceSalesTTM\n    price_sales_ttm = selected['PriceSalesTTM'].values[0]\n    better_overall_price_sales_ttm = (df['PriceSalesTTM'] &gt; price_sales_ttm).sum() \/ len(df) * 100\n    better_sector_price_sales_ttm = (sector_df['PriceSalesTTM'] &gt; price_sales_ttm).sum() \/ len(sector_df) * 100\n    # AnalystRating\n    analyst_rating = selected['AnalystRating'].values[0]\n    better_overall_analyst_rating = (df['AnalystRating'] &lt; analyst_rating).sum() \/ len(df) * 100\n    better_sector_analyst_rating = (sector_df['AnalystRating'] &lt; analyst_rating).sum() \/ len(sector_df) * 100\n\n\n    print(f'===== ESG ======')\n    print(f\"ESG Rank 2023: {esg_rank} ({place_diff:+.0f} from 2022)\")\n    print(f\"ESG Rank 2023 in {sector}: {esg_rank_sector} ({place_diff_sector:+.0f} from 2022)\")\n    print(f'===== PE Ratio ======')\n    print(f\"PE Ratio: {pe_ratio}\")\n    print(f\"Percentage of symbols with higher PE Ratio overall: {better_overall_pe_ratio:.2f}% and in {sector} {better_sector_pe_ratio:.2f}%\")\n    print(f'===== Profit Margin ======')\n    print(f\"Profit Margin: {profit_margin}\")\n    print(f\"Percentage of symbols with higher Profit Margin overall: {better_overall_profit_margin:.2f}% and in {sector} {better_sector_profit_margin:.2f}%\")\n    print(f'===== PriceSalesTTM ======')\n    print(f\"PriceSalesTTM: {price_sales_ttm}\")\n    print(f\"Percentage of symbols with higher PriceSalesTTM overall: {better_overall_price_sales_ttm:.2f}% and in {sector} {better_sector_price_sales_ttm:.2f}%\")\n    print(f'===== AnalystRating ======')\n    print(f\"AnalystRating: {analyst_rating}\")\n    print(f\"Percentage of symbols with lower AnalystRating overall: {better_overall_analyst_rating:.2f}% and in {sector} {better_sector_analyst_rating:.2f}%\")\nelse:\n    print(f\"Symbol '{symbol}' not found in the dataset.\")<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p>The results are:<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-background\" style=\"background-color:#f0f0f0\"><code lang=\"python\" class=\"language-python\">===== ESG ======\nESG Rank 2023: 1.0 (+0 from 2022)\nESG Rank 2023 in Healthcare: 1.0 (+0 from 2022)\n===== PE Ratio ======\nPE Ratio: 18.7458\nPercentage of symbols with higher PE Ratio overall: 46.80% and in Healthcare 51.72%\n===== Profit Margin ======\nProfit Margin: 0.0343\nPercentage of symbols with higher Profit Margin overall: 65.51% and in Healthcare 50.57%\n===== PriceSalesTTM ======\nPriceSalesTTM: 0.6747\nPercentage of symbols with higher PriceSalesTTM overall: 75.47% and in Healthcare 72.41%\n===== AnalystRating ======\nAnalystRating: 3.0\nPercentage of symbols with lower AnalystRating overall: 5.83% and in Healthcare 3.45%<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"caf4\">Fresenius Medical Care excels in ESG performance and valuation metrics, with a low P\/S ratio, and looks like it is trading at a discount. However, modest profit margins and neutral analyst sentiment suggest operational challenges and limited near-term growth potential.<\/p>\n\n\n\n<p id=\"1d30\"><strong><em>Which stock is the best of the mega stocks?<\/em><\/strong><\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-0997c0271dc5790d71627abb4e0a6166\"><code lang=\"python\" class=\"language-python\">mega_stocks = df[df['MarketCapitalization_Binned'] == 'mega']\nmega_stocks.loc[mega_stocks['2023_esg'].idxmax()]<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"9203\">Accenture plc (ACN) looks like a charm with 75.78. A quick look (using the above script) is below:<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-background\" style=\"background-color:#f0f0f0\"><code lang=\"python\" class=\"language-python\">===== ESG ======  \nESG Rank 2023: 9.0 (-2 from 2022)\nESG Rank 2023 in Technology: 1.0 (+0 from 2022)\n===== PE Ratio ======\nPE Ratio: 30.9668\nPercentage of symbols with higher PE Ratio overall: 23.97% and in Technology 28.17%\n===== Profit Margin ======\nProfit Margin: 0.1119\nPercentage of symbols with higher Profit Margin overall: 32.33% and in Technology 30.99%\n===== PriceSalesTTM ======\nPriceSalesTTM: 3.4155\nPercentage of symbols with higher PriceSalesTTM overall: 24.53% and in Technology 26.76%\n===== AnalystRating ======\nAnalystRating: 4.0\nPercentage of symbols with lower AnalystRating overall: 50.38% and in Technology 50.70%<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"e3ef\">Accenture&#8217;s high P\/E and price-to-sales ratios reflect premium valuation, which is supported by solid profit margins and balanced analyst sentiment (4.0 rating).<\/p>\n\n\n\n<p id=\"7d34\"><strong><em>Which has the best ESG Score for the Financial Sector?<\/em><\/strong><\/p>\n\n\n\n<p id=\"2b59\">We show before, that the financial sector is very close when it comes to ESG ratios, with only one overperforming in that area. Let\u2019s see which one it is.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-8417cf62168da4b1b9a860f66b6c40d7\"><code lang=\"python\" class=\"language-python\">mega_stocks = df[df['Sector'] == 'Financial Services']\nmega_stocks.loc[mega_stocks['2023_esg'].idxmax()]<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"b7a6\">Janus Henderson Group PLC (JHG) is the one, within a sector with most of them in the 60s, this one has an ESG ratio of 75.24.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-background\" style=\"background-color:#f0f0f0\"><code lang=\"python\" class=\"language-python\">===== ESG ======\nESG Rank 2023: 12.0 (+10 from 2022)\nESG Rank 2023 in Financial Services: 1.0 (+0 from 2022)\n===== PE Ratio ======\nPE Ratio: 17.5494\nPercentage of symbols with higher PE Ratio overall: 50.47% and in Financial Services 48.41%\n===== Profit Margin ======\nProfit Margin: 0.175\nPercentage of symbols with higher Profit Margin overall: 17.29% and in Financial Services 51.59%\n===== PriceSalesTTM ======\nPriceSalesTTM: 3.0314\nPercentage of symbols with higher PriceSalesTTM overall: 28.20% and in Financial Services 69.84%\n===== AnalystRating ======\nAnalystRating: 3.0\nPercentage of symbols with lower AnalystRating overall: 5.83% and in Financial Services 8.73%<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p id=\"b67a\">A quick look at the fundamentals will show interesting results since it looks like the PE ratio is in a moderate state, while the company\u2019s profit margin and price-to-sales are in a good state globally and average in a sector where those numbers are already on the high side. What is interesting is that it is not the analyst&#8217;s favorite. However, we are talking about a company that YTD (~11 months at the time of reading this article) has a 75% steady increase in their stock price.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ad4c\">Let\u2019s wrap it up and takeaways<\/h2>\n\n\n\n<p id=\"5905\">The aim of this article is to guide you through downloading data, gaining a basic understanding of it, and creating a dataset. This dataset can be explored using tools like Excel to experiment with different approaches and answer key questions. The goal is to empower you with insights for informed decision-making.<\/p>\n\n\n\n<p id=\"0ee1\"><strong>ESG Scores as a Strategic Filter.&nbsp;<\/strong>We tried to demonstrate how to integrate Environmental, Social, and Governance (ESG) scores into a stock screener. By ranking companies based on ESG performance, investors can identify businesses that align with sustainability goals and societal values. For example, sectors like Financial Services show consistent ESG performance due to regulatory obligations. Investors can use this information to focus on industries or companies with strong ESG practices, which often indicate long-term resilience and reduced risk exposure.<\/p>\n\n\n\n<p id=\"d759\"><strong>Sector and Market Capitalization Insights.&nbsp;<\/strong>Analysis of ESG scores by sector and market capitalization reveals trends that investors can leverage. For instance, mega-cap companies tend to have tighter ESG score ranges, reflecting their efforts to maintain reputations while avoiding extreme outliers. Similarly, sectors like Consumer Cyclical or Basic Materials exhibit narrower ESG performance ranges, suggesting less differentiation among peers. These insights help investors tailor strategies, such as targeting undervalued companies within high-performing sectors or avoiding sectors with limited ESG variability.<\/p>\n\n\n\n<p id=\"57dd\"><strong>Customizable Screening for Investment Decisions.<\/strong>&nbsp;The article provides tools to create a custom stock screener that combines ESG data with key financial metrics like P\/E ratios, profit margins, and analyst ratings. For instance, Fresenius Medical Care Corporation (FMS) stands out for its high ESG score but has modest profit margins, signaling potential operational challenges. Investors can use these screeners in Excel or Python to filter stocks based on personal criteria, enabling data-driven decisions that align with both financial goals and ethical considerations.<\/p>\n\n\n\n<p id=\"6bc4\">We are still far from proving that companies with top ESG scores will consistently outperform others.&nbsp;However, as methodologies and data improve, the connection between strong ESG practices and financial success will likely become clearer, paving the way for more reliable insights into sustainable investing. So as a closure, there is not much to say.. only 4 words. Invest green, profit clean!<\/p>\n\n\n\n<p id=\"85fa\"><em>Written in collaboration with&nbsp;Filippos Tzimopoulos<\/em><a href=\"https:\/\/medium.com\/@phitzi?source=post_page---byline--555f9c60079c--------------------------------\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Environmental, Social, and Governance (ESG) factors have become a cornerstone of modern investing, reflecting the growing demand for sustainable and ethical business practices. ESG evaluates companies on their environmental impact, social responsibility, and governance standards, offering a comprehensive lens beyond traditional financial metrics. This approach is crucial as it helps investors identify long-term risks and [&hellip;]<\/p>\n","protected":false},"author":18,"featured_media":6077,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"coding-language":[30],"ready-to-go-solution":[],"qualification":[31,32,33],"financial-apis-category":[36],"financial-apis-manuals":[],"class_list":["post-6076","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fundamental-analysis-examples","coding-language-python","qualification-experienced","qualification-guru","qualification-newbie","financial-apis-category-stock-market-prices","has_thumb"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.9 (Yoast SEO v26.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tracking ESG Trends and Stock Movements Across Sector | EODHD APIs Academy<\/title>\n<meta name=\"description\" content=\"Analyze ESG data with EODHD&#039;s API using Python. This guide highlights practical applications of ESG metrics for sustainable finance.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tracking ESG Trends and Stock Movements Across Sector\" \/>\n<meta property=\"og:description\" content=\"Analyze ESG data with EODHD&#039;s API using Python. This guide highlights practical applications of ESG metrics for sustainable finance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements\" \/>\n<meta property=\"og:site_name\" content=\"Financial Academy\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eodhistoricaldata\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-27T06:44:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-05T14:10:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image-1024x768.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nikhil Adithyan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:site\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nikhil Adithyan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#article\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements\"},\"author\":{\"name\":\"Nikhil Adithyan\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/67681e71050cf7d8d0efb91fee5f0402\"},\"headline\":\"Tracking ESG Trends and Stock Movements Across Sector\",\"datePublished\":\"2024-11-27T06:44:58+00:00\",\"dateModified\":\"2025-02-05T14:10:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements\"},\"wordCount\":1827,\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#primaryimage\"},\"thumbnailUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image.png\",\"articleSection\":[\"Fundamental Analysis Examples\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements\",\"name\":\"Tracking ESG Trends and Stock Movements Across Sector | EODHD APIs Academy\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#primaryimage\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#primaryimage\"},\"thumbnailUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image.png\",\"datePublished\":\"2024-11-27T06:44:58+00:00\",\"dateModified\":\"2025-02-05T14:10:47+00:00\",\"description\":\"Analyze ESG data with EODHD's API using Python. This guide highlights practical applications of ESG metrics for sustainable finance.\",\"breadcrumb\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#primaryimage\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image.png\",\"contentUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image.png\",\"width\":1974,\"height\":1481,\"caption\":\"Investing in the Future: Tracking ESG Trends and Stock Movements Across Sector\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/eodhd.com\/financial-academy\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tracking ESG Trends and Stock Movements Across Sector\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#website\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/\",\"name\":\"Financial APIs Academy | EODHD\",\"description\":\"Financial Stock Market Academy\",\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/eodhd.com\/financial-academy\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\",\"name\":\"EODHD (EOD Historical Data)\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"contentUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"width\":159,\"height\":82,\"caption\":\"EODHD (EOD Historical Data)\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/eodhistoricaldata\",\"https:\/\/x.com\/EOD_data\",\"https:\/\/www.reddit.com\/r\/EODHistoricalData\/\",\"https:\/\/eod-historical-data.medium.com\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/67681e71050cf7d8d0efb91fee5f0402\",\"name\":\"Nikhil Adithyan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/eb53ce41bde412555cee22b8b4c09c2ff51625fff05ba3696b20cac7a7c0d938?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/eb53ce41bde412555cee22b8b4c09c2ff51625fff05ba3696b20cac7a7c0d938?s=96&d=mm&r=g\",\"caption\":\"Nikhil Adithyan\"},\"description\":\"Founder at BacktestZone | Streamlit Student Ambassador | FinTech &amp; Quantitative Finance enthusiast\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/author\/nikhiladithyan\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tracking ESG Trends and Stock Movements Across Sector | EODHD APIs Academy","description":"Analyze ESG data with EODHD's API using Python. This guide highlights practical applications of ESG metrics for sustainable finance.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements","og_locale":"en_US","og_type":"article","og_title":"Tracking ESG Trends and Stock Movements Across Sector","og_description":"Analyze ESG data with EODHD's API using Python. This guide highlights practical applications of ESG metrics for sustainable finance.","og_url":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements","og_site_name":"Financial Academy","article_publisher":"https:\/\/www.facebook.com\/eodhistoricaldata","article_published_time":"2024-11-27T06:44:58+00:00","article_modified_time":"2025-02-05T14:10:47+00:00","og_image":[{"width":1024,"height":768,"url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image-1024x768.png","type":"image\/png"}],"author":"Nikhil Adithyan","twitter_card":"summary_large_image","twitter_creator":"@EOD_data","twitter_site":"@EOD_data","twitter_misc":{"Written by":"Nikhil Adithyan","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#article","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements"},"author":{"name":"Nikhil Adithyan","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/67681e71050cf7d8d0efb91fee5f0402"},"headline":"Tracking ESG Trends and Stock Movements Across Sector","datePublished":"2024-11-27T06:44:58+00:00","dateModified":"2025-02-05T14:10:47+00:00","mainEntityOfPage":{"@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements"},"wordCount":1827,"publisher":{"@id":"https:\/\/eodhd.com\/financial-academy\/#organization"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#primaryimage"},"thumbnailUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image.png","articleSection":["Fundamental Analysis Examples"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements","url":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements","name":"Tracking ESG Trends and Stock Movements Across Sector | EODHD APIs Academy","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-academy\/#website"},"primaryImageOfPage":{"@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#primaryimage"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#primaryimage"},"thumbnailUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image.png","datePublished":"2024-11-27T06:44:58+00:00","dateModified":"2025-02-05T14:10:47+00:00","description":"Analyze ESG data with EODHD's API using Python. This guide highlights practical applications of ESG metrics for sustainable finance.","breadcrumb":{"@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#primaryimage","url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image.png","contentUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image.png","width":1974,"height":1481,"caption":"Investing in the Future: Tracking ESG Trends and Stock Movements Across Sector"},{"@type":"BreadcrumbList","@id":"https:\/\/eodhd.com\/financial-academy\/fundamental-analysis-examples\/esg-trends-and-stock-movements#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/eodhd.com\/financial-academy\/"},{"@type":"ListItem","position":2,"name":"Tracking ESG Trends and Stock Movements Across Sector"}]},{"@type":"WebSite","@id":"https:\/\/eodhd.com\/financial-academy\/#website","url":"https:\/\/eodhd.com\/financial-academy\/","name":"Financial APIs Academy | EODHD","description":"Financial Stock Market Academy","publisher":{"@id":"https:\/\/eodhd.com\/financial-academy\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/eodhd.com\/financial-academy\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/eodhd.com\/financial-academy\/#organization","name":"EODHD (EOD Historical Data)","url":"https:\/\/eodhd.com\/financial-academy\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/","url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","contentUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","width":159,"height":82,"caption":"EODHD (EOD Historical Data)"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/eodhistoricaldata","https:\/\/x.com\/EOD_data","https:\/\/www.reddit.com\/r\/EODHistoricalData\/","https:\/\/eod-historical-data.medium.com\/"]},{"@type":"Person","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/67681e71050cf7d8d0efb91fee5f0402","name":"Nikhil Adithyan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/eb53ce41bde412555cee22b8b4c09c2ff51625fff05ba3696b20cac7a7c0d938?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eb53ce41bde412555cee22b8b4c09c2ff51625fff05ba3696b20cac7a7c0d938?s=96&d=mm&r=g","caption":"Nikhil Adithyan"},"description":"Founder at BacktestZone | Streamlit Student Ambassador | FinTech &amp; Quantitative Finance enthusiast","url":"https:\/\/eodhd.com\/financial-academy\/author\/nikhiladithyan"}]}},"jetpack_featured_media_url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/image.png","jetpack_shortlink":"https:\/\/wp.me\/pdOdVT-1A0","jetpack_sharing_enabled":true,"acf":[],"_links":{"self":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/6076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/comments?post=6076"}],"version-history":[{"count":9,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/6076\/revisions"}],"predecessor-version":[{"id":6308,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/6076\/revisions\/6308"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/media\/6077"}],"wp:attachment":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/media?parent=6076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/categories?post=6076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/tags?post=6076"},{"taxonomy":"coding-language","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/coding-language?post=6076"},{"taxonomy":"ready-to-go-solution","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/ready-to-go-solution?post=6076"},{"taxonomy":"qualification","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/qualification?post=6076"},{"taxonomy":"financial-apis-category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/financial-apis-category?post=6076"},{"taxonomy":"financial-apis-manuals","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/financial-apis-manuals?post=6076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}