Performance and Grading

內容

The logical flow of grading a stock is more complex than one might first think.

Data Updates and Performance

GrahamValue's server stats from the last 24 hours and 7 days are given below.

As can be seen from the graphs, GrahamValue's hardware is sufficiently redundant for all normal usage.

Data Updates

The synchronized bumps in CPU and RAM usage every 2-3 days is from the Data Update, which takes about 20 hours.

The data download runs 24/7 as can be seen from the Network graphs, but the actual Update only runs once the download has completed.

Data Updates are usually run during low-load hours.

Note: The Network and Ping usage graphs are relatively scaled, and have varying y-axis limits. The actual Network limit is 400 Mbps.

Screener Queries

Screener Queries can be 30-40% slower when the Data Update is running, or during other peak-load hours.

The performance of Screener Queries is limited less by GrahamValue's hardware, but more by the complexity of data.

The time taken for a screener query depends on multiple factors - number/types of filters used, data queried, data returned etc. Text/Select filters usually take longer than Numerical filters, Text sorts may take longer than Numerical sorts, and so on.

Server Upgrade

Note the updated stats after doubling both CPU and RAM, in the middle of a Data Update.

Note that the graphs drop by half in the middle of the Data Update after the Server Upgrade, and then almost to zero after the Data Update.

Also note the spike in traffic on May 20th.

Grading Flow

The Production Source Code for assigning Graham Grades is given below.

The logical flow of grading a stock is more complex than one might first think. The system tries to assign the highest possible Intrinsic Value to each stock, or to leave it at the highest possible Graham Grade.

These two directives have a tendency to pull in opposite directions. This code is probably more than a decade old, and so the terms used are different from what is now displayed on the UI.

field_issuetype is Graham Grade.
field_optimumpricedec is Intrinsic Value.
field_quantitative_result is Intrinsic Value(%).
field_eps2011 is the current Earnings Per Share (EPS) and so on.

Please note that this flow implies that the free Classic Graham Screener may actually show some Enterprising or NCAV grade stocks in the 70-100% range of Intrinsic Value(%), but are displaying a higher </>Graham Grade and a lower Intrinsic Value.

This is because a stock is not downgraded unless its Intrinsic Value(%) can exceed 100% as a result of doing so.

GrahamValue's hardware is sufficiently redundant for all normal usage.

Watch Video

總結
The article discusses the complexities involved in grading stocks using the _GrahamValue_ system. It highlights the server's performance metrics over the last 24 hours and 7 days, indicating that the hardware is adequately redundant for typical operations. Data updates occur every 2-3 days, taking about 20 hours, during which CPU and RAM usage spikes. Screener queries can slow down by 30-40% during these updates due to the complexity of the data rather than hardware limitations. The article also notes a recent server upgrade that significantly improved performance. The grading process for stocks is intricate, aiming to assign the highest possible intrinsic value while maintaining the highest Graham Grade. This dual objective can conflict, as the system is designed to avoid downgrading stocks unless their intrinsic value exceeds 100%. The article emphasizes that the free Classic Graham Screener may display stocks with high intrinsic values but lower grades, reflecting the underlying complexity of the grading logic. Overall, the article provides insights into the operational aspects of stock grading and the technical considerations of the _GrahamValue_ platform.