Greasy Fork is available in English.

Yahoo Finance Statistics Highlighter

It highlights some statistics in Yahoo Finance

// ==UserScript==
// @name         Yahoo Finance Statistics Highlighter
// @namespace yahoofinancehighlighter
// @version      0.3
// @description  It highlights some statistics in Yahoo Finance
// @author       Michele
// @match        https://finance.yahoo.com/quote/**
// @grant        GM_registerMenuCommand
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_setClipboard
// @grant GM_addStyle

// @require            https://openuserjs.org/src/libs/sizzle/GM_config.js
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js
// ==/UserScript==

(function() {
//    'use strict';
    GM_config.init(
        {
            'id': 'YFHConfig',
            'title': 'Settings',
            'fields': {
                'roe-green':
                {
                    'label': 'ROE - Green',
                    'type': 'number',
                    'default': '40'
                },
                'roe-red':
                {
                    'label': 'ROE - Red',
                    'type': 'number',
                    'default': '30'
                },
                'current-ratio-green':
                {
                    'label': 'Current Ratio - Green',
                    'type': 'number',
                    'default': '1'
                },
                'current-ratio-red':
                {
                    'label': 'Current Ratio - Red',
                    'type': 'number',
                    'default': '0.8'
                },
                'short-ratio-green':
                {
                    'label': 'Short Ratio - Green',
                    'type': 'number',
                    'default': '3'
                },
                'short-ratio-red':
                {
                    'label': 'Current Ratio - Red',
                    'type': 'number',
                    'default': '9'
                },
                'payout-ratio-green':
                {
                    'label': 'Payout Ratio - Green',
                    'type': 'number',
                    'default': '80'
                },
                'payout-ratio-red':
                {
                    'label': 'Payout Ratio - Red',
                    'type': 'number',
                    'default': '99'
                },
                'revenue-growth-green':
                {
                    'label': 'Revenue Growth - Green',
                    'type': 'number',
                    'default': '10'
                },
                'revenue-growth-red':
                {
                    'label': 'Revenue Growth - Red',
                    'type': 'number',
                    'default': '0'
                },
                'earnings-growth-green':
                {
                    'label': 'Earning Growth - Green',
                    'type': 'number',
                    'default': '10'
                },
                'earnings-growth-red':
                {
                    'label': 'Earning Growth - Red',
                    'type': 'number',
                    'default': '0'
                },
                'operating-margin-green':
                {
                    'label': 'Operating Margin - Green',
                    'type': 'number',
                    'default': '20'
                },
                'operating-margin-red':
                {
                    'label': 'Earning Growth - Red',
                    'type': 'number',
                    'default': '10'
                },
                'roa-green':
                {
                    'label': 'Operating Margin - Green',
                    'type': 'number',
                    'default': '5'
                },
                'roa-red':
                {
                    'label': 'Earning Growth - Red',
                    'type': 'number',
                    'default': '4'
                },
                'de-green':
                {
                    'label': 'Debt/Equity - Green',
                    'type': 'number',
                    'default': '0.6'
                },
                'de-red':
                {
                    'label': 'Debt/Equity - Red',
                    'type': 'number',
                    'default': '1'
                },
            }
        });
    GM_registerMenuCommand('Configure', () => {
        GM_config.open();
    })

    var groups = [
        {"ariaLabel": "Return on Equity", "field": "roe", "bestLower": false},
        {"ariaLabel": "Return on Assets", "field": "roa", "bestLower": false},
        {"ariaLabel": "Current Ratio", "field": "current-ratio", "bestLower": false},
        {"ariaLabel": "Short Ratio", "field": "short-ratio", "bestLower": true, "labelFunction":"startsWith"},
        {"ariaLabel": "Payout Ratio", "field": "payout-ratio", "bestLower": true},
        {"ariaLabel": "Quarterly Revenue Growth", "field": "revenue-growth", "bestLower": false},
        {"ariaLabel": "Quarterly Earnings Growth", "field": "earnings-growth", "bestLower": false},
        {"ariaLabel": "Operating Margin", "field": "operating-margin", "bestLower": false},
        {"ariaLabel": "Total Debt/Equity", "field": "de", "bestLower": true},
    ];

    function best(a, b, group) {
        return group.bestLower ? a < b : a > b;
    }

    function compare(a, b, labelFunction) {
        return labelFunction === undefined ? a == b : a[labelFunction](b);
    }

    setInterval ( function () {
        $.each(groups, function(i, group) {
            $.each($("span:contains('" + group.ariaLabel + "')"), function(i, el) {
                if (compare($(el).text(), group.ariaLabel, group.labelFunction)) {
                    var valueEl = $($(el).parent().siblings()[0]);
                    var currentValue = parseFloat(valueEl.text());
                    var greenValue = parseFloat(GM_config.get(group.field + '-green'));
                    var redValue = parseFloat(GM_config.get(group.field + '-red'));
                    var color = "";
                    if (best(currentValue, greenValue, group)) {
                        color = "green";
                    } else if (!best(currentValue, redValue, group)) {
                        color = "red";
                    } else {
                        color = "orange";
                    }
                    $(el).css("color", color);
                    $(el).css("font-weight", "bold");
                    $(valueEl).css("color", color);
                    $(valueEl).css("font-weight", "bold");
                }
            });

        });
    }, 1000);

})();