{% set pj = profile.profile_json if profile and profile.profile_json else {} %} {% set pjn = pj.get('profile_json', {}) if pj.get('profile_json') else pj %} {# ── Macro: format big numbers (T/B/M) ── #} {% macro big(val, prefix='') %} {% set v = val|float %} {% if v|abs >= 1e12 %}{{ prefix }}{{ '{:,.1f}'.format(v / 1e12) }}T {% elif v|abs >= 1e9 %}{{ prefix }}{{ '{:,.1f}'.format(v / 1e9) }}B {% elif v|abs >= 1e6 %}{{ prefix }}{{ '{:,.0f}'.format(v / 1e6) }}M {% else %}{{ prefix }}{{ '{:,.0f}'.format(v) }}{% endif %} {% endmacro %} {# ── Macro: format decimal ratio → percentage (0.15 → 15.00%) ── #} {# Use for: ROE, ROA, margins, growth, payoutRatio, ownership, trailingAnnualDividendYield #} {% macro dec2pct(val, sign=false) %} {% set v = val|float * 100 %} {% if sign %}{{ '{:+.2f}'.format(v) }}%{% else %}{{ '{:.2f}'.format(v) }}%{% endif %} {% endmacro %} {# ── Macro: display already-percentage value as-is (0.38 → 0.38%) ── #} {# Use for: dividendYield, fiveYearAvgDividendYield, fiftyTwoWeekChangePercent #} {% macro rawpct(val, sign=false) %} {% set v = val|float %} {% if sign %}{{ '{:+.2f}'.format(v) }}%{% else %}{{ '{:.2f}'.format(v) }}%{% endif %} {% endmacro %} {# ── Macro: format timestamp to date ── #} {% macro ts_date(val) %} {% if val and val|int > 0 %} {{ val|int|timestamp_to_date }} {% else %}-{% endif %} {% endmacro %} {# ── Currency prefix ── #} {% set ps = '$ ' if coin.asset_type == 'stock_us' else 'Rp ' %}
{% if coin.description %}

Tentang Perusahaan

{{ coin.description }}

{% endif %}

Informasi Perusahaan

{% if pjn.get('full_time_employees') %} {% endif %} {% if pjn.get('phone') %} {% endif %} {% if pjn.get('first_trade_date') %} {% endif %} {% if pjn.get('last_fiscal_year_end') %} {% endif %} {% if pjn.get('most_recent_quarter') %} {% endif %}
Nama Lengkap {{ pjn.get('long_name') or coin.name }}
Sektor {{ pjn.get('sector') or coin.sector or '-' }}
Industri {{ pjn.get('industry') or coin.sub_sector or '-' }}
Karyawan {{ '{:,.0f}'.format(pjn.full_time_employees) }}
Website {% if coin.website %} {{ coin.website }} {% else %}-{% endif %}
Telepon {{ pjn.phone }}
IPO / Listing {{ (pjn.first_trade_date / 1000)|int|timestamp_to_date }}
Akhir Tahun Fiskal {{ pjn.last_fiscal_year_end|int|timestamp_to_date }}
Kuartal Terakhir {{ pjn.most_recent_quarter|int|timestamp_to_date }}

Alamat Kantor

{% if pjn.get('address') or pjn.get('city') %}
{% if pjn.get('address') %}

{{ pjn.address }}

{% endif %} {% if pjn.get('address2') %}

{{ pjn.address2 }}

{% endif %}

{% if pjn.get('city') %}{{ pjn.city }}{% endif %} {% if pjn.get('state') %}, {{ pjn.state }}{% endif %} {% if pjn.get('zip') %} {{ pjn.zip }}{% endif %}

{% if pjn.get('country') %}

{{ pjn.country }}

{% endif %} {% if pjn.get('fax') %}

Fax: {{ pjn.fax }}

{% endif %}
{% else %}

Data alamat belum tersedia. Klik Sync untuk memperbarui.

{% endif %} {% if pjn.get('recommendation_key') %}

Rekomendasi Analis

{% set rec = pjn.recommendation_key %} {{ rec|upper|replace('_', ' ') }} {% if pjn.get('target_mean_price') %} Target: {{ ps }}{{ '{:,.0f}'.format(pjn.target_mean_price|float) if coin.asset_type == 'stock' else '{:,.2f}'.format(pjn.target_mean_price|float) }} {% endif %} {% if pjn.get('number_of_analyst_opinions') %} ({{ pjn.number_of_analyst_opinions }} analis) {% endif %}
{% if pjn.get('average_analyst_rating') %}

Rating: {{ pjn.average_analyst_rating }}

{% endif %}
{% endif %}

Metrik Valuasi

{% set val_metrics = [ ('P/E (TTM)', pjn.get('pe_ratio'), 'num'), ('Forward P/E', pjn.get('forward_pe'), 'num'), ('P/B Ratio', pjn.get('pb_ratio'), 'num'), ('P/S Ratio', pjn.get('price_to_sales'), 'num'), ('PEG Ratio', pjn.get('peg_ratio'), 'num'), ('EV/EBITDA', pjn.get('ev_to_ebitda'), 'num'), ('EV/Revenue', pjn.get('ev_to_revenue'), 'num'), ('Enterprise Value', pjn.get('enterprise_value'), 'big'), ] %} {% for label, val, kind in val_metrics %} {% if val is not none %}

{{ label }}

{% if kind == 'big' %}{{ big(val) }}{% else %}{{ '{:,.2f}'.format(val|float) }}{% endif %}

{% endif %} {% endfor %}

Metrik Keuangan

{% set fin_metrics = [ ('EPS (TTM)', pjn.get('eps'), 'num'), ('EPS Forward', pjn.get('eps_forward'), 'num'), ('EPS Current Year', pjn.get('eps_current_year'), 'num'), ('Beta', pjn.get('beta'), 'num3'), ('Book Value', pjn.get('book_value'), 'num'), ('Debt/Equity', pjn.get('debt_to_equity'), 'num'), ('ROE', pjn.get('roe'), 'pct'), ('ROA', pjn.get('roa'), 'pct'), ('Revenue', pjn.get('revenue'), 'big'), ('Net Income', pjn.get('net_income'), 'big'), ('EBITDA', pjn.get('ebitda'), 'big'), ('Gross Profit', pjn.get('gross_profit'), 'big'), ('Revenue/Share', pjn.get('revenue_per_share'), 'num'), ('Cash/Share', pjn.get('total_cash_per_share'), 'num'), ] %} {% for label, val, kind in fin_metrics %} {% if val is not none %}

{{ label }}

{% if kind == 'pct' %}{{ dec2pct(val) }} {% elif kind == 'num3' %}{{ '{:.3f}'.format(val|float) }} {% elif kind == 'big' %}{{ big(val) }} {% else %}{{ '{:,.2f}'.format(val|float) }}{% endif %}

{% endif %} {% endfor %}
{% set mg_metrics = [ ('Profit Margin', pjn.get('profit_margins'), 'margin'), ('Operating Margin', pjn.get('operating_margins'), 'margin'), ('Gross Margin', pjn.get('gross_margins'), 'margin'), ('EBITDA Margin', pjn.get('ebitda_margins'), 'margin'), ('Revenue Growth', pjn.get('revenue_growth'), 'growth'), ('Earnings Growth', pjn.get('earnings_growth'), 'growth'), ('Quarterly Earnings', pjn.get('earnings_quarterly_growth'), 'growth'), ('Current Ratio', pjn.get('current_ratio'), 'ratio'), ('Quick Ratio', pjn.get('quick_ratio'), 'ratio'), ] %} {% set mg_filtered = mg_metrics | selectattr(1) | list %} {% if mg_filtered %}
{% for label, val, kind in mg_filtered %}

{{ label }}

{% set v = val|float %}

{% if kind in ('margin', 'growth') %}{{ dec2pct(val, sign=true) }} {% else %}{{ '{:.2f}'.format(v) }}{% endif %}

{% endfor %}
{% endif %}
{% if pjn.get('dividend_yield') or pjn.get('dividend_rate') or pjn.get('last_dividend_value') %}

Dividen

{% if pjn.get('dividend_yield') is not none %}

Dividend Yield

{{ rawpct(pjn.dividend_yield) }}

{% endif %} {% if pjn.get('dividend_rate') is not none %}

Dividend Rate/Share

{{ ps }}{{ '{:,.2f}'.format(pjn.dividend_rate|float) }}

{% endif %} {% if pjn.get('payout_ratio') is not none %}

Payout Ratio

{# payout_ratio is always a ratio (1.0 = 100%), always multiply by 100 #} {% set pr = pjn.payout_ratio|float * 100 %}

{{ '{:.2f}'.format(pr) }}%

{% endif %} {% if pjn.get('five_year_avg_dividend_yield') is not none %}

5Y Avg Yield

{{ rawpct(pjn.five_year_avg_dividend_yield) }}

{% endif %} {% if pjn.get('last_dividend_value') is not none %}

Last Dividend

{{ ps }}{{ '{:,.2f}'.format(pjn.last_dividend_value|float) }}

{% endif %} {% if pjn.get('trailing_annual_dividend_rate') is not none %}

Trailing Annual Rate

{{ ps }}{{ '{:,.2f}'.format(pjn.trailing_annual_dividend_rate|float) }}

{% endif %} {% if pjn.get('trailing_annual_dividend_yield') is not none %}

Trailing Annual Yield

{{ dec2pct(pjn.trailing_annual_dividend_yield) }}

{% endif %} {% if pjn.get('ex_dividend_date') %}

Ex-Dividend Date

{{ pjn.ex_dividend_date|int|timestamp_to_date }}

{% endif %} {% if pjn.get('dividend_date') %}

Dividend Payment

{{ pjn.dividend_date|int|timestamp_to_date }}

{% endif %} {% if pjn.get('last_dividend_date') %}

Last Dividend Date

{{ pjn.last_dividend_date|int|timestamp_to_date }}

{% endif %}
{% endif %}

Saham Beredar

{% if pjn.get('shares_outstanding') %} {% endif %} {% if pjn.get('free_float') %} {% endif %} {% if pjn.get('held_percent_insiders') is not none %} {% endif %} {% if pjn.get('held_percent_institutions') is not none %} {% endif %} {% if pjn.get('total_cash') %} {% endif %} {% if pjn.get('total_debt') %} {% endif %}
Shares Outstanding {{ '{:,.0f}'.format(pjn.shares_outstanding) }}
Free Float {{ '{:,.0f}'.format(pjn.free_float) }}
Insider Ownership {{ dec2pct(pjn.held_percent_insiders) }}
Institutional Ownership {{ dec2pct(pjn.held_percent_institutions) }}
Total Cash {{ big(pjn.total_cash) }}
Total Debt {{ big(pjn.total_debt) }}

Harga & Moving Average

{% if profile %} {% set cp = profile.current_price_usd if coin.asset_type == 'stock_us' else profile.current_price_idr %} {% if cp %} {% endif %} {% if profile.ath_idr %} {% endif %} {% if profile.atl_idr %} {% endif %} {% endif %} {% if pjn.get('all_time_high') %} {% endif %} {% if pjn.get('all_time_low') %} {% endif %} {% if pjn.get('fifty_two_week_change') is not none %} {% set wk_chg = pjn.fifty_two_week_change|float %} {% endif %} {% if pjn.get('sp500_52_week_change') is not none %} {% set sp_chg = pjn.sp500_52_week_change|float %} {% endif %} {% if pjn.get('fifty_day_avg') %} {% endif %} {% if pjn.get('two_hundred_day_avg') %} {% endif %}
Harga Saat Ini {{ ps }}{{ '{:,.2f}'.format(cp|float) }}
52W High {{ ps }}{{ '{:,.2f}'.format(profile.ath_idr|float) }}
52W Low {{ ps }}{{ '{:,.2f}'.format(profile.atl_idr|float) }}
All-Time High {{ ps }}{{ '{:,.2f}'.format(pjn.all_time_high|float) }}
All-Time Low {{ ps }}{{ '{:,.2f}'.format(pjn.all_time_low|float) }}
52W Change{{ rawpct(pjn.fifty_two_week_change, sign=true) }}
S&P500 52W Change{{ dec2pct(pjn.sp500_52_week_change, sign=true) }}
MA 50 {{ '{:,.2f}'.format(pjn.fifty_day_avg|float) }}
MA 200 {{ '{:,.2f}'.format(pjn.two_hundred_day_avg|float) }}
{% if pjn.get('avg_volume_10d') or pjn.get('avg_volume_3m') %}

Volume Rata-Rata

{% if pjn.get('avg_volume_10d') %}

Avg Volume (10 Hari)

{{ '{:,.0f}'.format(pjn.avg_volume_10d) }}

{% endif %} {% if pjn.get('avg_volume_3m') %}

Avg Volume (3 Bulan)

{{ '{:,.0f}'.format(pjn.avg_volume_3m) }}

{% endif %} {% if profile and profile.total_volume_idr %}

Volume Hari Ini (IDR)

{{ big(profile.total_volume_idr, 'Rp ') }}

{% endif %}
{% endif %} {% if pjn.get('operating_cashflow') or pjn.get('free_cashflow') %}

Arus Kas

{% if pjn.get('operating_cashflow') %}

Operating Cashflow

{% set ocf = pjn.operating_cashflow|float %}

{% if ocf|abs >= 1e12 %}{{ '{:+,.1f}'.format(ocf / 1e12) }}T {% elif ocf|abs >= 1e9 %}{{ '{:+,.1f}'.format(ocf / 1e9) }}B {% else %}{{ '{:+,.0f}'.format(ocf / 1e6) }}M{% endif %}

{% endif %} {% if pjn.get('free_cashflow') %}

Free Cashflow

{% set fcf = pjn.free_cashflow|float %}

{% if fcf|abs >= 1e12 %}{{ '{:+,.1f}'.format(fcf / 1e12) }}T {% elif fcf|abs >= 1e9 %}{{ '{:+,.1f}'.format(fcf / 1e9) }}B {% else %}{{ '{:+,.0f}'.format(fcf / 1e6) }}M{% endif %}

{% endif %}
{% endif %} {% if pjn.get('shares_short') or pjn.get('short_ratio') %}

Short Interest

{% if pjn.get('shares_short') %}

Shares Short

{{ '{:,.0f}'.format(pjn.shares_short) }}

{% endif %} {% if pjn.get('short_ratio') %}

Short Ratio (Days)

{{ '{:.2f}'.format(pjn.short_ratio|float) }}

{% endif %} {% if pjn.get('short_percent_of_float') is not none %}

Short % of Float

{{ dec2pct(pjn.short_percent_of_float) }}

{% endif %}
{% endif %} {% if pjn.get('earnings_timestamp') or pjn.get('next_fiscal_year_end') or pjn.get('last_split_factor') %}

Kalender & Event

{% if pjn.get('earnings_timestamp') %}

Earnings Date

{{ pjn.earnings_timestamp|int|timestamp_to_date }}

{% endif %} {% if pjn.get('next_fiscal_year_end') %}

Next Fiscal Year End

{{ pjn.next_fiscal_year_end|int|timestamp_to_date }}

{% endif %} {% if pjn.get('last_split_factor') %}

Last Stock Split

{{ pjn.last_split_factor }}

{% if pjn.get('last_split_date') %}

{{ pjn.last_split_date|int|timestamp_to_date }}

{% endif %}
{% endif %}
{% endif %} {% set officers = pjn.get('company_officers', []) %} {% if officers %}

Dewan Direksi & Manajemen

{% for o in officers %}
{{ o.get('name', '?')[0]|upper }}

{{ o.get('name', '-') }}

{{ o.get('title', '-') }}

{% if o.get('age') %}

Usia: {{ o.age }}

{% endif %} {% if o.get('total_pay') %}

Kompensasi: ${{ '{:,.0f}'.format(o.total_pay) }}

{% endif %} {% if o.get('exercised_value') %}

Exercised: ${{ '{:,.0f}'.format(o.exercised_value) }}

{% endif %} {% if o.get('unexercised_value') %}

Unexercised: ${{ '{:,.0f}'.format(o.unexercised_value) }}

{% endif %}
{% endfor %}
{% endif %} {% if coin.asset_type in ('stock', 'stock_us') %}

Laporan Keuangan

TTM Cash Flow (Trailing Twelve Months)

Earnings

Riwayat Dividen & Stock Split

Dividen ( records)

Stock Split ( records)

Rekomendasi Analis

Kepemilikan Saham

Options Chain

Estimasi Analis

ESG / Sustainability

SEC Filings

Berita Terbaru

{% endif %}{# end stock-only extended data #} {% if not pjn or (not pjn.get('pe_ratio') and not pjn.get('long_business_summary') and not officers) %}

Data profil perusahaan belum lengkap.

Klik tombol Sync di header untuk memperbarui data dari Yahoo Finance.

{% endif %} {% if profile and profile.fetched_at %}

Data profil terakhir disinkronkan: {{ profile.fetched_at|wib_short }}

{% endif %}
{% if coin.asset_type in ('stock', 'stock_us') %} {% endif %}