Skip to content

Guides

Economic calendar

Macro releases as roundels in the time gutter, with actual, forecast and previous on hover. One parameter, off unless you ask for it.

Turning it on

One attribute
<div class="vp-chart"
     data-symbol="BTC-USDT"
     data-datafeed="myfeed"
     data-calendar="1"
     data-height="480"></div>
<script src="https://view.verticalprop.com/embed.js"></script>

Or calendar=1 on the frame URL directly, if you are writing the iframe yourself. It works in BOTH datafeed modes, bringing your own bars does not exclude you from it.

High and medium-impact releases in the gutter. Hover one for actual, forecast and previous; co-timed releases stack.

Why it is off by default

Three reasons, and the third is the one that decided it.

  • It is usually noise. A CPI print is meaningful on EURUSD and irrelevant on a chart of one altcoin. Macro releases move macro markets; drawing them everywhere teaches a reader to ignore them.
  • It is a request we would be making on your reader’s behalf. Marks cost a fetch. A chart that quietly reaches for something the page never asked for is spending somebody else’s network on our idea of what is useful.
  • It is OUR data on a page that may have brought its own. The whole shape of this embed is that the bars are yours. Injecting our calendar underneath them, unasked, contradicts that, and it is precisely the distinction that makes an opt-in fine: naming it is a request, arriving unasked is an injection.
This is a correction, not an original design. The embed previously turned marks on unconditionally for first-party charts and made them impossible for a chart with its own datafeed. Neither was a decision anybody made, both were where the code happened to branch.

The reader can still turn it off

Opting in offers the marks; it does not force them. The chart’s own context menu has Hide news & economic events, and Settings ▸ Symbol ▸ Events has the same switch. That choice is remembered per browser.

Switching it off stops the FETCH as well as the drawing. A hidden roundel that had already been loaded would still have cost the request, and could still answer a hover, which is worse.

What is drawn

CoverageHigh and medium-impact releases. Low-impact prints are omitted, at that density the gutter becomes a texture rather than information.
PlacementThe bottom gutter, at the release time. Co-timed releases stack rather than overlapping.
On hoverThe release name, its currency, and actual / forecast / previous where each is published.
Before releaseA countdown, stamped at render, so a card cannot sit claiming “in 2m” ten minutes later.
It is symbol-AGNOSTIC. Macro releases move every market, so the same set is drawn whatever the instrument, the chart does not try to guess which releases matter to your symbol, because guessing wrong in that direction hides the one that did.

Where it comes from

The same calendar the terminal itself renders, one feed, not a second one wired up for the embed. A roundel that disagreed with the calendar two clicks away would be worse than no roundel, and a second upstream would be a second rate-limit contract for the same information.

The flags are bundled, not fetched from anywhere. Same-origin images, so the canvas is never tainted and no CSP hole is needed on your side. A currency we ship no flag for falls back to its own label rather than drawing nothing.

The parameter

AttributeURLDefaultAccepts
data-calendarcalendarfalse1 · true · yes · on, and their negatives. Anything unrecognised falls back to OFF, never on.

Every other option is on URL parameters.