Algoritma / Programming · 18 Mei 2024 0

Metode Sainte-Laguë: Alokasi Dana yang Proporsional dan Adil

Dalam dunia pemilihan umum, Metode Sainte-Laguë adalah salah satu teknik yang digunakan untuk mendistribusikan kursi secara proporsional di parlemen. Namun, kejeniusan metode ini tidak terbatas pada politik semata. Ketika diterapkan dalam dunia investasi saham, Metode Sainte-Laguë menawarkan pendekatan yang cerdas dan efisien untuk mengalokasikan dana berdasarkan potensi kenaikan harga saham.

Mengalokasikan dana dalam investasi saham sering kali menjadi tantangan tersendiri. Investor ingin memastikan bahwa dana mereka ditempatkan pada saham yang memberikan potensi keuntungan terbesar. Dalam mengelola alokasi dana dalam investasi saham, terdapat beberapa pendekatan yang dapat dipilih. Tiga di antaranya adalah cara sederhana, ratio komposisi, dan metode Sainte-Laguë. Setiap pendekatan memiliki prinsip dan metode perhitungan yang berbeda, serta dapat memberikan hasil yang berbeda pula dalam alokasi dana. Pemahaman yang baik tentang ketiga cara ini dapat membantu investor dalam mengambil keputusan alokasi dana yang tepat sesuai dengan tujuan investasi dan tingkat risiko yang diinginkan. Dalam konteks ini, saya akan menjelaskan lebih lanjut mengenai ketiga cara tersebut.

  1. Cara Sederhana:
    • Latar Belakang: Cara sederhana digunakan untuk membagi dana kelola dengan cara yang mudah dipahami dan diterapkan tanpa perlu perhitungan yang rumit.
    • Tujuan: Memastikan setiap saham mendapatkan bagian yang sama dari total dana kelola, sehingga tidak ada saham yang mendominasi alokasi.
    • Garis Besar Prinsip: Memisahkan dana kelola menjadi bagian yang sama untuk setiap saham, seringkali dengan pembagian menjadi bagian yang sama, seperti 1/10 dari total dana kelola.
  2. Ratio Komposisi:
    • Latar Belakang: Menggunakan perhitungan proporsi dari total potensi kenaikan harga saham untuk menentukan alokasi dana untuk setiap saham.
    • Tujuan: Memberikan alokasi yang lebih besar untuk saham-saham dengan potensi kenaikan harga yang lebih tinggi, sehingga meningkatkan peluang mendapatkan keuntungan yang lebih besar.
    • Garis Besar Prinsip: Menghitung perbandingan antara potensi kenaikan harga saham setiap saham dengan total potensi, dan mengalokasikan dana sesuai dengan perbandingan tersebut.
  3. Metode Sainte-Laguë:
    • Latar Belakang: Metode ini berasal dari perhitungan dalam sistem pemilihan umum di beberapa negara, di mana perhitungan dipakai untuk mendistribusikan kursi di parlemen berdasarkan jumlah suara yang diperoleh oleh setiap partai.
    • Tujuan: Mengalokasikan dana berdasarkan potensi kenaikan harga saham relatif dari setiap saham, sehingga memberikan kesempatan yang lebih adil bagi saham-saham dengan potensi yang lebih tinggi.
    • Garis Besar Prinsip: Melibatkan perhitungan kompleks yang mempertimbangkan alokasi sebelumnya dan potensi kenaikan harga saham relatif, dengan tujuan mendistribusikan dana secara proporsional dan adil berdasarkan potensi kenaikan harga saham masing-masing.

Contoh kasus sederhana untuk memperjelas metode alokasi dana:

Misalkan kita memiliki 10 saham dengan total potensi kenaikan harga saham sebesar 100%. Dari total potensi tersebut, saham A memiliki potensi 20%, saham B 15%, saham C 10%, dan seterusnya hingga saham J dengan potensi 1%.

Cara AlokasiProsesContoh Alokasi (dalam unit)
Cara SederhanaMembagi dana kelola menjadi 10 bagianSaat total dana kelola adalah 20.000 unit, setiap saham mendapatkan 2.000 unit. Saat total dana kelola adalah 30.000 unit, setiap saham mendapatkan 3.000 unit.
Ratio KomposisiMenghitung perbandingan ratio setiap saham dari total komposisiJika total potensi kenaikan harga saham adalah 100, saham A memiliki 20% potensi, sehingga dana yang ditempatkan untuk saham A adalah 20% dari total dana kelola.
Metode Sainte-LaguëMemperhitungkan alokasi sebelumnya dengan potensi kenaikan harga saham relatif dari setiap sahamAlokasi dana untuk setiap saham dipengaruhi oleh alokasi sebelumnya dan potensi kenaikan harga saham relatif. Saat total dana kelola adalah 20.000 unit, alokasi Sainte-Laguë dapat memberikan jumlah dana yang berbeda untuk setiap saham dibandingkan dengan cara sederhana atau ratio komposisi.

Alur Logika Metode Sainte-Laguë

Metode Sainte-Laguë memiliki beberapa langkah penting dalam proses alokasi dana. Pertama, setiap saham diberi nilai indeks awal berdasarkan potensi kenaikan harganya. Selanjutnya, total dana yang akan dialokasikan (misalnya 10.000 unit) dibagi-bagi ke setiap saham secara proporsional berdasarkan indeks tersebut. Proses alokasi dilakukan secara berulang hingga semua unit dana telah dialokasikan.

Tujuan utama dari teknik ini adalah memastikan bahwa dana Anda ditempatkan pada saham-saham yang memiliki potensi kenaikan harga tertinggi. Dengan memanfaatkan Metode Sainte-Laguë, Anda dapat mengoptimalkan portofolio investasi Anda, mengurangi risiko, dan meningkatkan potensi keuntungan secara keseluruhan.

Alur logika metode Sainte-Laguë dalam proses alokasi dana dapat dijelaskan sebagai berikut:

  1. Pengumpulan Data Saham:
    • Kumpulkan data saham termasuk kode saham dan potensi kenaikan harga (potensi dalam persentase).
  2. Inisialisasi Variabel:
    • Setiap saham diberi divisor awal 1 dan unit alokasi awal 0.
    • Hitung indeks awal untuk setiap saham dengan rumus: potensi / divisor.
  3. Proses Alokasi:
    • Alokasikan total unit dana yang akan dibagi (misalnya 10.000 unit) menggunakan loop.
    • Pada setiap iterasi, pilih saham dengan indeks tertinggi yang belum mencapai batas alokasi.
    • Tambahkan satu unit ke saham terpilih, tingkatkan divisornya sebesar 2, dan perbarui indeksnya.
    • Kurangi satu unit dari total unit yang tersisa.
  4. Hitung Persentase Alokasi:
    • Setelah semua unit dialokasikan, hitung persentase alokasi untuk setiap saham dengan rumus: allocated_units / total_units.

Keuntungan Menggunakan Metode Sainte-Laguë

Metode Sainte-Laguë memiliki beberapa keuntungan yang membuatnya menarik untuk digunakan dalam alokasi dana investasi saham:

  1. Proporsional dan Adil: Metode ini memastikan bahwa dana dialokasikan secara proporsional berdasarkan potensi kenaikan harga saham. Hal ini memungkinkan setiap saham mendapatkan alokasi yang sesuai dengan potensinya, sehingga memberikan perlakuan yang lebih adil bagi setiap saham.
  2. Ketelitian Tinggi: Dengan menggunakan unit alokasi yang besar (misalnya 10.000), metode ini memberikan hasil yang sangat detail hingga empat digit desimal. Hal ini memungkinkan untuk melakukan alokasi dana dengan tingkat ketelitian yang tinggi, sehingga memungkinkan pengelolaan portofolio yang lebih presisi.
  3. Optimalisasi Portofolio: Dengan alokasi yang proporsional, potensi keuntungan portofolio secara keseluruhan dapat dimaksimalkan. Metode ini membantu investor untuk mengoptimalkan portofolio investasi mereka dengan memperhitungkan potensi kenaikan harga saham relatif dari setiap saham.

Dengan keuntungan-keuntungan tersebut, metode Sainte-Laguë dapat menjadi pilihan yang baik bagi investor yang ingin melakukan alokasi dana yang proporsional, detail, dan optimal dalam investasi saham mereka.

Untuk melihat contoh silahkan mengklik link tautan ini https://autoportofolio.canonnimu.net/lague.php
Kode PHP yang bisa saya bagikan:

<?php

function calculateIndex($stock) {
    return $stock['potensi'] / $stock['divisor'];
}

function calculateAllocationAmounts($stocks, $totalUnits) {

    // Inisialisasi divisor dan alokasi unit
    foreach ($stocks as &$stock) {
        $stock['divisor'] = 1;
        $stock['allocated_units'] = 0;
        $stock['index'] = calculateIndex($stock);
        $stock['allocated_percentage'] = 0; // Menambahkan inisialisasi alokasi dana
    }
    unset($stock); // Memastikan tidak ada referensi yang tersisa

    // Hitung indeks alokasi untuk setiap saham
    $stockIndices = array_column($stocks, 'index', 'kode');

    // Alokasi unit menggunakan metode Sainte-Laguë
    while ($totalUnits > 0) {
        // Temukan saham dengan indeks alokasi terbesar yang belum mencapai alokasi maksimum
        $maxIndex = -1;
        $selectedStockIndex = null;

        foreach ($stocks as $index => $stock) {
            if ($stock['allocated_units'] < $totalUnits && $stock['index'] > $maxIndex) {
                $maxIndex = $stock['index'];
                $selectedStockIndex = $index;
            }
        }

        if ($selectedStockIndex === null) {
            break; // Semua saham telah mencapai alokasi maksimum
        }

        // Alokasikan satu unit ke saham yang dipilih dan update indeks alokasi
        $stocks[$selectedStockIndex]['allocated_units'] += 1;
        $stocks[$selectedStockIndex]['divisor'] += 2;
        $stocks[$selectedStockIndex]['index'] = calculateIndex($stocks[$selectedStockIndex]);
        $stocks[$selectedStockIndex]['allocated_percentage'] = ($stocks[$selectedStockIndex]['allocated_units'] / 10000);

        // Kurangi total unit yang tersisa
        $totalUnits--;
    }

    return $stocks;
}


function displayAllocation($stocks,$totalDana) {
    echo "Hasil Alokasi Unit, Indeks Alokasi, dan Dana:<br>\n";
    $total = 0;
    foreach ($stocks as $stock) {
        echo "Kode Saham: " . $stock['kode'] . " | Potensi: " . $stock['potensi'] . "% | Alokasi : " . ($stock['allocated_percentage']*100)." % x Rp ".number_format($totalDana, 0, ',', '.').' = Rp '. number_format(($stock['allocated_percentage']*$totalDana), 0, ',', '.') . "<br>\n";
        $total += ($stock['allocated_percentage']*$totalDana);
    }
    echo "<br>\n";
    echo "Total Dana yang digunakan : Rp ".number_format(($total), 0, ',', '.')."<br>\n";
}

// Contoh data saham dengan potensi kenaikan harga (lebih dari 200 saham)
$stocks = [];
$jumlah_saham = 20;
for ($i = 0; $i < $jumlah_saham; $i++) {
    $stocks[] = [
        "kode" => "SAHAM" . str_pad($i, 3, '0', STR_PAD_LEFT),
        "potensi" => rand(1, 300) // Nilai potensi acak antara 1% hingga 300%
    ];
}
usort($stocks, function($a, $b) {
    return $b['potensi'] <=> $a['potensi'];
});

// Jumlah unit dana yang akan dialokasikan
$totalUnits = 10000; // Bisa juga disesuaikan lebih besar dari 100 untuk lebih banyak saham

// Total dana yang akan dialokasikan
$totalDana = 125000000; // Contoh: Rp 125.000.000

// Hitung alokasi dana berdasarkan unit alokasi
$allocatedStocks = calculateAllocationAmounts($stocks, $totalUnits);

// Tampilkan hasil alokasi

//displayAllocation($allocatedStocks,$totalDana);

?>