Democratize the information of Indonesia Stocks and more to investors from retail to institution.
Consists of high-end analysis tools based on data with top-down analysis:
- Conservation of money (forex/crypto - bond - stocks)
- External factor (commodities, national/international issues, sentiments)
- Fundamental: business performance, corporate action
- Transaction: foreign flow, broker summary clustering, done trade, 5% shares holder, share holder distribution
- Behaviour: supply & demand, momentum, trend, time
For more information, you can find us at:
The foreign and broker volume-profile screeners accept these screener_vprofile_criteria query values:
vprofile_inside— membership only: a recent close touched the selected profile zone.vprofile_breakout— exactrole=resistance,behavior=breakout_up: approach from below, touch, then close above.vprofile_breakdown— exactrole=support,behavior=breakdown: approach from above, touch, then close below.vprofile_support_bounce— exactrole=support,behavior=rejection: approach from above, touch, then close above.vprofile_resistance_rejection— exactrole=resistance,behavior=rejection: approach from below, touch, then close below.
The directional criteria require their exact role and behavior pair; a role alone, membership alone, or a close still inside the zone is not selected.
Selected-zone annotations also include vprofile_zone_strength (absolute node flow
relative to the strongest node), vprofile_zone_prominence (raw peak/valley
prominence relative to the strongest absolute histogram flow),
vprofile_zone_flow_share (absolute node flow divided by total absolute profile
flow), and vprofile_event_date (latest close date as YYYY-MM-DD). These are
JSON-safe scalars; all four are None when no profile zone is selected. Existing
zone levels, role, behavior, distance, and touch count remain unchanged.
web_contract.py is the single source of truth for the semantic chart payload the
web frontend consumes. It is versioned (schema_version, currently 1.0) and
deliberately independent of /whaleanalysis, which keeps returning rendered Plotly
figures for Telegram and the existing public API. Nothing in the web contract is
coupled to a chart library.
Sections: instrument, period, summary, price, indicators, profile_zones,
holding_composition, annotations, meta.
Guarantees the frontend relies on, pinned by test_web_contract.py:
- Numbers, never formatted strings.
proportionis0.3342, not"33.42%";money_flowis-1.0e12, not"-1.00T". Ratios stay ratios (correlations-1..1, proportions0..1); money and price stay in their native units. nullfor missing. NaN and infinity are normalized tonull; a column the source never produced comes back as an all-nullseries of the right length.- One date axis. Every
price.*andindicators.*list is aligned index-for-index withprice.dates, so the frontend never re-joins on date. - ISO dates, explicit timestamp. Dates are
YYYY-MM-DD;meta.generated_atis a timezone-aware ISO 8601 datetime. - Explicit profile-zone boundaries. Each zone carries
low,high,mid,net_valueandis_peak; a boundary is never implied by a mid point.
COMPOSITE and IHSG resolve to the same instrument (backend code composite,
display_name "IHSG / COMPOSITE"). Resolution is case- and whitespace-insensitive,
and an empty code falls back to composite.
Authentication is unchanged: the route is mounted behind the same X-API-KEY
dependency as every other router, so a browser is never the direct caller. The
frontend repo's Cloudflare worker is the intended caller and holds the key as a
worker secret.
Money-flow accumulated results rank by total flow descending; distributed results rank ascending, so the strongest negative flow is first. Ties use ascending stock code. VWAP rally ranks by the largest positive close-to-VWAP gap. VWAP around ranks by the smallest absolute gap. VWAP breakout and breakdown rank by the freshest valid cross first, then the smallest distance from VWAP, then price follow-through. Flow is not used for VWAP ordering. Volume-profile rankings use prominence, then strength, then flow in the event direction (inside/upward descending, downward ascending), with ascending stock code as the final tie-break. Volume-profile annotations are computed for every criterion member before the requested limit is applied.
Copyright (c) 2023 Quantist.io. All rights reserved. This works, including all modifications made by any third party, is the property of Quantist.io and is protected by copyright law.