Where do published support and resistance levels come from?
Support and resistance are a charting idea, taught properly in the Technical Analysis domain's Charting Basics course. But levels also arrive as data — a tidy table of numbers per date — and it is worth knowing exactly what you are being handed before you join it to anything.
What comes back
EODHD's tooling exposes a support-and-resistance calculation over daily, weekly or monthly bars, with five named methods: classic, fibonacci, woodie, camarilla and demark. A classic daily request for AAPL.US covering 2026-07-20 to 2026-07-27 returned one row per bar. The last of them:
date 2026-07-27 open 334.54 high 339.57 low 334.02 close 336.91
pivot_point 336.8333
resistance_1 339.6467 support_1 334.0967
resistance_2 342.3833 support_2 331.2833
resistance_3 345.1967 support_3 328.5467
Every one of those seven numbers is arithmetic on the three above them:
P = (H + L + C) / 3 = (339.57 + 334.02 + 336.91) / 3 = 1,010.50 / 3 = 336.8333
R1 = 2P − L = 673.6667 − 334.02 = 339.6467
S1 = 2P − H = 673.6667 − 339.57 = 334.0967
R2 = P + (H − L) = 336.8333 + 5.55 = 342.3833
S2 = P − (H − L) = 336.8333 − 5.55 = 331.2833
R3 = H + 2(P − L) = 339.57 + 5.6267 = 345.1967
S3 = L − 2(H − P) = 334.02 − 5.4733 = 328.5467
First consequence: this is not an observation
Nobody measured where buyers stood. A formula was applied to one bar's high, low and close, and the four other methods apply different formulas to the same three numbers. They are conventions with a following, which is a genuine thing in markets — traders watch them, so they occasionally matter for that reason alone. But arriving as JSON does not make a calculation into evidence, and five methods disagreeing on the same bar is the cleanest possible demonstration that these are opinions with arithmetic attached.
Second consequence, and the one that will cost you
Check which bar the levels were computed from. In the response above, the levels on the row dated 2026-07-27 come from 2026-07-27's own high and low — you can see it in the arithmetic. The convention traders use is the opposite: yesterday's bar produces today's levels, precisely because today's high is unknowable until today has ended.
So if you join this series to prices on matching dates and treat the levels as something you could have reacted to during that session, you have used the session's own high and low to make a decision inside the session. That is the look-ahead from Unit 1 in a different costume, and it is easy to miss because both series are indexed by date and line up perfectly.
The fix is one line and a comment: shift the level series forward by one bar yourself, and record that you did it.
Third, said plainly
This calculation is not one of the paths in EODHD's published OpenAPI specification. It is arithmetic over /eod data, and you can reproduce every number above from an OHLC series in a few lines — as this lesson just did. That is not a criticism. It is the reason you are able to verify it, which is more than you can say for most scored data, and it means you are never dependent on the endpoint to have the levels.
Describing how a widely-used convention is calculated is not a suggestion to trade on it. Whether pivot levels carry information is a question the Technical Analysis domain examines; this lesson is about knowing what the numbers in the table are.
Try it now
- Cover the worked lines above and compute P, R1 and S1 by hand from the 2026-07-27 bar's high, low and close. Compare with the served values in the same block. Then compute P for 25 September 2026 from the table in step 2, and check it against that day's Fibonacci R1 there. If they match to four decimals, you now know the formula and can stop calling it.
- This calculation has no REST path we can render, so here are the served values, requested on 28 September 2026 for
AAPL.US, daily bars of 23 to 25 September 2026, once withmethod=camarillaand once withmethod=fibonacci. Measure the distance between the two "resistance 1" values on each day, and as a share of that day's range (H − L). That spread is the size of the methodological choice. Then rebuild one of each from H, L and C: Camarilla R1 is C + 1.1 × (H − L) ÷ 12, Fibonacci R1 is P + 0.382 × (H − L).
| date | high | low | close | camarilla R1 | fibonacci R1 |
|---|---|---|---|---|---|
| 2026-09-23 | 341.80 | 335.50 | 337.02 | 337.5975 | 340.5133 |
| 2026-09-24 | 338.91 | 334.30 | 335.92 | 336.3426 | 338.1377 |
| 2026-09-25 | 341.67 | 334.53 | 341.07 | 341.7245 | 341.8175 |
- Shift the served series forward one bar and re-examine any conclusion you had drawn from it. Whatever does not survive the shift was never there.