@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @section('content') @include('layouts.navbars.auth.topnav', ['title' => ''])
Analisis Perubahan Pemegang Saham

Bandingkan dua snapshot untuk menemukan perubahan yang perlu ditindaklanjuti.

@if (count($period_alerts)) @endif
@if (empty($period_labels))
Tidak ada data histori untuk periode terpilih.
@endif
@php $isHolderComparison = in_array($period_type, ['harian', 'bulanan', 'tahunan'], true); $kpiCards = $isHolderComparison ? [ [ 'Total Pemegang Saham Awal', $summary['investors_before'], $period_start_label ?? '-', 'fa-users', '', ], [ 'Total Pemegang Saham', $summary['investors_after'], 'Klik untuk melihat seluruh pemegang', 'fa-users', '', 'Total', ], [ 'Bertambah', $summary['increased_count'], 'Klik untuk melihat detail pemegang', 'fa-arrow-trend-up', 'delta-up', 'Bertambah', ], [ 'Berkurang', $summary['decreased_count'], 'Klik untuk melihat detail pemegang', 'fa-arrow-trend-down', 'delta-down', 'Berkurang', ], [ 'Baru', $summary['new_count'], 'Klik untuk melihat detail pemegang', 'fa-user-plus', 'delta-up', 'Baru', ], [ 'Keluar', $summary['exited_count'], 'Klik untuk melihat detail pemegang', 'fa-user-minus', 'delta-down', 'Keluar', ], ] : [ [ 'Saham Awal Periode', $summary['shares_before'], $period_start_label ?? '-', 'fa-hourglass-start', '', ], [ 'Saham Akhir Periode', $summary['shares_after'], $period_end_label ?? '-', 'fa-hourglass-end', '', ], [ 'Total Kenaikan Kepemilikan', $summary['total_accumulation'], number_format($summary['changed_investors'], 0, ',', '.') . ' investor mengalami perubahan', 'fa-arrow-trend-up', 'delta-up', ], [ 'Total Penurunan Kepemilikan', $summary['total_distribution'], 'Akumulasi seluruh perubahan negatif', 'fa-arrow-trend-down', 'delta-down', ], ]; @endphp @foreach ($kpiCards as $card)

{{ $card[0] }}

{{ number_format($card[1], 0, ',', '.') }}
{{ $card[2] }}
@endforeach
{{ $isHolderComparison ? 'Tren Jumlah Pemegang Saham' : 'Pergerakan Total Saham Beredar' }}

@if (($period_type ?? 'bulanan') === 'harian') Menampilkan jumlah pemegang pada setiap snapshot dalam rentang tanggal. @elseif(($period_type ?? 'bulanan') === 'bulanan') Menampilkan jumlah pemegang dari snapshot terakhir setiap bulan. @else Menampilkan jumlah pemegang dari snapshot terakhir setiap tahun. @endif

Periode: {{ $period_start_label ?? '-' }} → {{ $period_end_label ?? '-' }}
{{ ucfirst($period_type ?? 'bulanan') }}
@if ($isHolderComparison)
Race Kepemilikan Pemegang Saham
Pergerakan Top 10 pemegang saham per {{ ['harian' => 'snapshot harian', 'bulanan' => 'bulan', 'tahunan' => 'tahun'][$period_type] }}.
@if (count($daily_race_frames))
-
@endif
@if (count($daily_race_frames))
@else
Data race tidak tersedia untuk periode yang dipilih.
@endif
@endif @if ($isHolderComparison)
Detail Total Pemegang Saham
Posisi kepemilikan pada {{ $period_end_label ?? '-' }}.
{{ count($current_holders) }} pemegang
@foreach ($current_holders as $row) @endforeach
Peringkat Investor SID Sekuritas Jumlah Saham
{{ $row['after_rank'] ?? '-' }} {{ $row['name'] }} {{ $row['sid'] }} {{ $row['security_code'] }} {{ number_format($row['after'], 0, ',', '.') }}
@php $detailSections = [ ['Bertambah', 'detailBertambah', $accumulation, 'delta-up'], ['Berkurang', 'detailBerkurang', $distribution, 'delta-down'], ['Baru', 'detailBaru', $new_investors, 'delta-up'], ['Keluar', 'detailKeluar', $exited_investors, 'delta-down'], ]; @endphp
@foreach ($detailSections as [$title, $id, $rows, $colorClass])
Detail Investor {{ $title }}
{{ count($rows) }}
@foreach ($rows as $row) @endforeach
Investor SID Awal Akhir Selisih
{{ $row['name'] }} {{ $row['sid'] }} {{ number_format($row['before'], 0, ',', '.') }} {{ number_format($row['after'], 0, ',', '.') }} {{ $row['change'] > 0 ? '+' : '' }}{{ number_format($row['change'], 0, ',', '.') }}
@endforeach
@else
Audit Seluruh Perubahan Investor
@foreach ($all_movements as $row) @endforeach
InvestorSIDAwalAkhirSelisihRank AwalRank Akhir
{{ $row['name'] }}{{ $row['sid'] }}{{ number_format($row['before'], 0, ',', '.') }}{{ number_format($row['after'], 0, ',', '.') }}{{ $row['change'] > 0 ? '+' : '' }}{{ number_format($row['change'], 0, ',', '.') }}{{ $row['before_rank'] ?? '-' }}{{ $row['after_rank'] ?? '-' }}
@endif
@php $securityCards = [ ['Total Sekuritas Awal', $security_summary['investors_before'], $period_start_label ?? '-', 'fa-building', ''], ['Total Sekuritas Akhir', $security_summary['investors_after'], $period_end_label ?? '-', 'fa-building-columns', ''], ['Bertambah', $security_summary['increased_count'], 'Klik untuk melihat detail', 'fa-arrow-trend-up', 'delta-up', 'Bertambah'], ['Berkurang', $security_summary['decreased_count'], 'Klik untuk melihat detail', 'fa-arrow-trend-down', 'delta-down', 'Berkurang'], ['Baru', $security_summary['new_count'], 'Klik untuk melihat detail', 'fa-circle-plus', 'delta-up', 'Baru'], ['Keluar', $security_summary['exited_count'], 'Klik untuk melihat detail', 'fa-circle-minus', 'delta-down', 'Keluar'], ]; @endphp
@foreach ($securityCards as $card)

{{ $card[0] }}

{{ number_format($card[1], 0, ',', '.') }}
{{ $card[2] }}
@endforeach
Tren Jumlah Sekuritas

Jumlah sekuritas aktif pada setiap snapshot periode terpilih.

Periode: {{ $period_start_label ?? '-' }} → {{ $period_end_label ?? '-' }}
{{ ucfirst($period_type) }}
@if ($isHolderComparison)
Race Kepemilikan per Sekuritas
Pergerakan Top 10 sekuritas berdasarkan total kepemilikan saham.
@if (count($security_race_frames))
-
@endif
@if (count($security_race_frames))
@else
Data race tidak tersedia untuk periode yang dipilih.
@endif
@endif
Detail Perubahan per Sekuritas
Agregasi kepemilikan berdasarkan kode pemegang rekening.
{{ count($security_holder_movements) }} sekuritas
@foreach ($security_holder_movements as $row) @endforeach
Sekuritas Kode Awal Akhir Selisih Status
{{ $row['name'] }} {{ $row['code'] }} {{ number_format($row['before'], 0, ',', '.') }} {{ number_format($row['after'], 0, ',', '.') }} {{ $row['change'] > 0 ? '+' : '' }}{{ number_format($row['change'], 0, ',', '.') }} {{ $row['status'] }}
@php $securityDetailSections = collect(['Bertambah', 'Berkurang', 'Baru', 'Keluar']) ->map(fn($status) => [ 'status' => $status, 'rows' => $security_holder_movements ->where('status', $status) ->sortByDesc(fn($row) => abs($row['change'])) ->values(), 'color' => in_array($status, ['Bertambah', 'Baru'], true) ? 'delta-up' : 'delta-down', ]); @endphp
@foreach ($securityDetailSections as $section)
Sekuritas {{ $section['status'] }}
{{ count($section['rows']) }}
@foreach ($section['rows'] as $row) @endforeach
Sekuritas Kode Awal Akhir Selisih
{{ $row['name'] }} {{ $row['code'] }} {{ number_format($row['before'], 0, ',', '.') }} {{ number_format($row['after'], 0, ',', '.') }} {{ $row['change'] > 0 ? '+' : '' }}{{ number_format($row['change'], 0, ',', '.') }}
@endforeach
Race Chart Investasi
Data race chart diambil dari logika menu Skrcht (per {{ $race_type_label }}).
Buka Race Chart
@if (count($race_frames))
-
Total Saham
-
Top {{ $race_limit }} Saat Ini
Rank Investor Saham
@else
Tidak ada data race chart untuk parameter yang dipilih.
@endif
@endsection @push('js') @endpush