Metodologi
3. Metodologi: CanonMR Integrated Valuation Model (CIVM)
Bagian ini menguraikan arsitektur dan logika komputasi dari CanonMR Integrated Valuation Model (CIVM) secara rinci, berdasarkan implementasi AutoPortofolio@CanonNimu.
3.1. Arsitektur Sistem CIVM
CIVM dirancang sebagai sistem modular yang memproses data input melalui serangkaian komponen analisis untuk menghasilkan skor saham terintegrasi, yang kemudian digunakan untuk alokasi portofolio awal dan pengelolaan dinamis berkelanjutan melalui rebalancing aktif. Alur kerja umumnya adalah sebagai berikut:
Deskripsi Flowchart:
Data input (A) diproses untuk menghasilkan metrik dasar (B). Dari sini, sistem menjalankan tiga komponen analisis paralel: Valuasi Fundamental (C), Analisis Risiko Z-Score (D), dan Analisis Teknikal (E). Valuasi menghasilkan nilai wajar (F: fp), analisis risiko menghasilkan status Z-Score (G: zst), dan analisis teknikal menghasilkan rekomendasi trading (H).
Hasil valuasi dan risiko digabungkan menjadi Skor CIVM (I). Saham dengan skor positif menjadi input algoritma Sainte-Laguë (J) yang menghasilkan bobot target portofolio (K). Sistem kemudian memasuki fase pengelolaan dinamis (L) yang memonitor harga pasar terkini dan posisi aktual. Setelah mengevaluasi perbedaan antara target dan aktual (M), sistem merekomendasikan transaksi (N) dengan mempertimbangkan status risiko dan sinyal teknikal sebagai filter.
Transaksi mengubah kas dan posisi portofolio (O), yang menjadi input baru untuk siklus evaluasi berikutnya. Proses ini berulang secara periodik, menghasilkan portofolio terkelola yang adaptif (P). Jalur putus-putus dari A ke L menunjukkan penggunaan langsung data harga pasar terkini dalam proses pengelolaan dinamis.
Keunggulan pendekatan ini terletak pada integrasinya yang sistematis antara analisis fundamental (valuasi dan risiko), sinyal pasar (analisis teknikal), dan pengelolaan portofolio yang dinamis dan terkontrol. Proses modular ini memungkinkan evaluasi menyeluruh terhadap setiap saham dan keputusan transaksi yang lebih terdisiplin berdasarkan parameter yang jelas.
3.2. Sumber Data dan Pra-pemrosesan
Sumber Data
- Data laporan keuangan kuartalan (format XBRL/terstruktur) dari BEI/penyedia data
- Data harga saham harian (OHLC), volume
- Data jumlah saham beredar, data dividen historis
- Data sektoral/industri
- Data makroekonomi (imbal hasil obligasi currentBondYield)
Pra-pemrosesan
- Pembersihan data (nilai hilang, outlier)
- Standarisasi item laporan keuangan
- Perhitungan rasio dasar
- Pengisian data kuartalan hilang (interpolasi/carry-forward)
- Penyesuaian harga historis untuk aksi korporasi
3.3. Komponen 1: Valuasi Fundamental CanonMR (Inti)
Komponen ini menghitung nilai wajar intrinsik berdasarkan modifikasi metode Graham, seperti diimplementasikan dalam AutoPortofolio@CanonNimu.
3.3.1. Perhitungan Metrik Dasar dan TTM
Hitung metrik per kuartal: Laba Bersih Kuartalan (income_q), Dividen (dividend_cash_q, dividend_stock_q), Ekuitas (equity), lalu hitung nilai TTM untuk Income (metrics['ttmIncome']), ROE (metrics['ttmROE']), BVPS (metrics['bvps']), EPS (metrics['ttmEPS']), dan DPR (metrics['dividendPayoutRatio']).
3.3.2. Analisis Pertumbuhan dan Volatilitas (CV)
Hitung pertumbuhan kuartalan dan Coefficient of Variation (CV) untuk BVPS dan TTM ROE. Kemudian hitung nilai TTM untuk pertumbuhan (metrics['ttmBookValueGrowth'], metrics['ttmROEGrowth']) dan CV (metrics['ttmBookValueCV'], metrics['ttmROECV']).
3.3.3. Perhitungan Graham Number (GN)
GNt = ⌊√(22.5 × max(0, EPSTTM,t) × max(0, BVPSt))⌋
Formula implementasi standar disimpan dalam metrics['grahamNumber'].
3.3.4. Perhitungan Graham Formula Termodifikasi (CanonMR)
GFmod,t = ⌊max(0, EPSTTM,t) × (8.5 + 2 × Gadj,t) × (4.4 / Ybond)⌋
dimana Gadj,t = Gt jika Gt ≥ 0,
dan Gadj,t = max(exp(Gt) - 1, -0.1) jika Gt < 0
Formula ini diimplementasikan dalam metrics['grahamFormulaMod'].
3.3.5. Kombinasi Hibrida Graham Berbasis CV
FairPriceRaw,t = ⌊BobotGN,t × GNt + BobotGF,t × GFmod,t⌋
Nilai wajar awal ini menggabungkan GN dan GFmod dengan bobot berdasarkan stabilitas relatif (inverse CV), disimpan dalam metrics['combinedFairPriceRaw'].
3.3.6. Penyesuaian Nilai Wajar Berdasarkan DPR
Sesuaikan FairPriceRaw,t berdasarkan DPRt relatif terhadap rentang optimal (misal 28%-42%) dengan mekanisme penalti (jika di bawah) atau bonus terbatas (jika di atas). Hasil akhirnya adalah metrics['adjustedFairPrice'] (disebut fp di tabel hasil).
3.4. Komponen 2: Analisis Risiko Z-Score Adaptif
Komponen ini menilai risiko kebangkrutan menggunakan model Z-Score yang diadaptasi, seperti diimplementasikan dalam AutoPortofolio@CanonNimu.
3.4.1. Formula Dasar Z-Score
Menggunakan varian model Z-Score Altman yang diperluas dengan hingga 10 rasio keuangan (X1-X10) yang mencakup likuiditas, profitabilitas, leverage, efisiensi, arus kas, cakupan bunga, dan stabilitas pendapatan.
Z = w1X1 + w2X2 + ... + w10X10
dimana wi adalah bobot untuk rasio Xi
3.4.2. Mekanisme Adaptasi Multi-Dimensi
Adaptasi Berdasarkan Sektor/Tipe
Sistem memilih kalkulator Z-Score yang sesuai (Bank, Consumer Non-Cyclicals, General/Default) berdasarkan klasifikasi sektor/industri perusahaan. Setiap kalkulator menggunakan:
- Ambang batas (thresholds) 'Safe'/'Grey'/'Distress' yang berbeda untuk interpretasi skor akhir, disesuaikan dengan risiko inheren sektor.
- Bobot dasar (weights_correlation) yang berbeda untuk setiap rasio X1-X10.
- Parameter spesifik (companySpecificParams) dan penyesuaian logika minor untuk tipe industri tertentu (misal, agrikultur).
Adaptasi Bobot Berdasarkan Struktur Modal
Bobot aktual ($weights['XN']) yang diterapkan pada setiap rasio XN saat menghitung skor Z-Score tidak statis, melainkan dihitung secara dinamis berdasarkan nilai ekuitas perusahaan ($weightEquity) relatif terhadap aset atau liabilitasnya:
Ini mengintegrasikan pengaruh struktur modal ke dalam kontribusi setiap rasio.
3.4.3. Rasionalisasi Pendekatan Adaptif
Adaptasi ini bertujuan meningkatkan relevansi dan akurasi skor Z-Score dengan memperhitungkan perbedaan karakteristik risiko antar sektor industri dan pengaruh struktur permodalan unik setiap perusahaan.
Output: Hasil utama adalah status kesehatan finansial ('Safe', 'Grey Zone', 'Distress') yang disimpan sebagai zst di tabel hasil.
3.4.4. Sharpe Ratio Fundamental (SRF)
Selain Status Z-Score, sistem CIVM menggunakan Sharpe Ratio Fundamental (SRF) untuk mengukur risk-adjusted return fundamental sebuah perusahaan. Berbeda dengan Sharpe Ratio tradisional yang menggunakan return harga saham, SRF mengukur konsistensi pertumbuhan fundamental perusahaan.
SRF = (Mean(Rfund) - Risk_Free_Rate) / StdDev(Rfund)
dimana Rfund(t) = (Equityt - Equityt-1 + Dividendt) / Equityt-1
Interpretasi SRF:
| SRF Normalized | Kategori | Interpretasi |
|---|---|---|
| > 0.5 | Excellent | Konsisten menghasilkan return tinggi dengan volatilitas rendah |
| 0.2 - 0.5 | Good | Return fundamental baik dengan risiko moderat |
| 0.0 - 0.2 | Average | Return sesuai dengan tingkat risiko yang diambil |
| < 0.0 | Poor | Return tidak sebanding dengan risiko fundamental |
Contoh Perhitungan SRF
Data 4 Kuartal PT ABC:
- Rfund Q1: 5%, Q2: 6%, Q3: 4%, Q4: 7%
- Mean(Rfund) = (5% + 6% + 4% + 7%) / 4 = 5.5%
- StdDev(Rfund) = 1.12%
- Risk Free Rate = 7% / 4 kuartal = 1.75%
SRF = (5.5% - 1.75%) / 1.12% = 3.35
Kategori: Excellent (SRF > 0.5 setelah normalisasi)
3.4.5. Z-Score Benchmarking Kuantitatif
Untuk memberikan konteks relatif terhadap perusahaan sejenis, sistem menghitung Z-Score Benchmarking dengan membandingkan skor perusahaan terhadap rata-rata sektor dan subsektor.
Zsektor = (ZScoresaham - Meansektor) / StdDevsektor
Zsubsektor = (ZScoresaham - Meansubsektor) / StdDevsubsektor
Zbenchmarking = max(Zsektor, Zsubsektor)
Berdasarkan hasil benchmarking, sistem menerapkan diskon eksponensial pada nilai wajar untuk saham dengan posisi relatif lemah:
Discount = MaxDiscount × (1 - e-(1 - Z) / k)
dimana MaxDiscount = 0.90 (90%), k = 1.2 (konstanta smoothing)
Jika Z > 1.0, maka Discount = 0%
Tabel Diskon Eksponensial Berdasarkan Z-Score Benchmarking:
| Z-Score Benchmarking | Discount | Fair Price Efektif |
|---|---|---|
| > 1.0 | 0% | 100% × FP |
| 1.0 | 0% | 100% × FP |
| 0.5 | 31% | 69% × FP |
| 0.0 | 52% | 48% × FP |
| -0.5 | 66% | 34% × FP |
| -1.0 | 75% | 25% × FP |
3.4.6. Margin of Safety Berbasis FFRN dan SRF
Margin of Safety (MoS) dalam CIVM dihitung secara dinamis berdasarkan Free Float Ratio Normalized (FFRN) dan disesuaikan dengan Risk Adjustment Factor dari SRF.
MoSFFRN = f(Free_Float_Ratio_Normalized)
Risk_Adjustment_Factor = 1 / (1 + β × SRF)
MoSrequired = MoSFFRN × Risk_Adjustment_Factor
dimana β = 0.3 (koefisien sensitivitas)
Harga maksimum pembelian kemudian dihitung sebagai:
Max_Buy_Price = Fair_Value × (1 - MoSrequired)
Contoh Perhitungan Max Buy Price
Data Saham XYZ:
- Fair Value (fp) = Rp 1,000
- FFRN = 0.65 → MoSFFRN = 15%
- SRF = 0.45 (Good)
Kalkulasi:
- Risk_Adjustment_Factor = 1 / (1 + 0.3 × 0.45) = 0.881
- MoSrequired = 15% × 0.881 = 13.2%
- Max_Buy_Price = Rp 1,000 × (1 - 0.132) = Rp 868
Artinya: saham XYZ hanya akan dibeli jika harganya ≤ Rp 868
Rasionalisasi: Saham dengan SRF tinggi (fundamental konsisten) membutuhkan margin of safety lebih kecil karena risikonya lebih rendah. Sebaliknya, saham dengan fundamental volatil memerlukan diskon lebih besar sebagai kompensasi risiko.
3.5. Komponen 3: Integrasi Analisis Teknikal
Komponen ini menyediakan sinyal pasar jangka pendek/menengah, seperti diimplementasikan dalam AutoPortofolio@CanonNimu.
3.5.1. Indikator Teknikal yang Dipilih
Moving Averages
- SMA (Simple Moving Average - 20, 50, 200)
- EMA (Exponential Moving Average - 9, 20, 50, 200)
- MACD (Moving Average Convergence Divergence - 12, 26, 9)
Oscillators
- RSI (Relative Strength Index - 14)
- Stochastic Oscillator (14)
Volatility & Bands
- Bollinger Bands (20, 2)
- ATR (Average True Range - 14)
Special & Advanced
- Ichimoku Cloud (Tenkan, Kijun, Kumo)
- VWAP (Volume Weighted Average Price)
- SuperTrend (ATR-based trend following)
- KAMA (Kaufman's Adaptive Moving Average)
- Kalman Filter (noise reduction)
- Elder Force Index (EFI)
Support/Resistance
- Support/Resistance (berdasarkan Min/Max historis)
Patterns
- Pola Candlestick (Bullish/Bearish Engulfing, Hammer/Shooting Star, Morning/Evening Star)
- Divergence (MACD, RSI, Stochastic)
3.5.2. Pembentukan Sinyal Teknikal
Fungsi generateRecommendation menggabungkan sinyal dari berbagai indikator di atas. Setiap indikator memberikan kontribusi bullish atau bearish berdasarkan aturan standar (misal, RSI < 30 bullish, SMA50 > SMA200 bullish, dll.). Kontribusi ini diberi bobot ($optimizedWeights atau default) untuk menghasilkan skor kekuatan beli (buyStrength) dan kekuatan jual (sellStrength).
RSI < 30 → Bullish
Bearish × Bobot → sellStrength
3.5.3. Metode Integrasi Sinyal TA
Rekomendasi akhir ('BUY', 'SELL', 'HOLD') dihasilkan berdasarkan perbandingan buyStrength vs sellStrength (misal, 'BUY' jika buyStrength >= 60%). Rekomendasi 'BUY' ini kemudian digunakan sebagai filter wajib dalam Komponen 6 (Pengelolaan Dinamis) sebelum eksekusi pembelian dapat dilakukan.
3.6. Komponen 4: Skor Saham Terintegrasi (CIVM Score)
Komponen ini menghasilkan skor tunggal yang merepresentasikan kelayakan investasi suatu saham untuk alokasi, berdasarkan implementasi di AutoPortofolio@CanonNimu.
3.6.1. Formula Perhitungan Skor
Hitung potensi upside valuasi (pt) dari Komponen 1:
pt = (AdjustedFairPrice - HargaPasar) / HargaPasar
Periksa status Z-Score (zst) dari Komponen 2.
CIVM Score (disebut $adjustedPotential dalam kode) didefinisikan sebagai:
CIVM_Score = pt, jika status Z-Score (zst) adalah 'Safe'
CIVM_Score = -9999, jika status Z-Score bukan 'Safe'
Hitung CapG (Capital Gain Weighted) untuk alokasi proporsional:
CapG = pt × HargaPasar × JumlahSahamBeredar × FFR
dimana FFR = Free Float Ratio (proporsi saham yang dapat diperdagangkan)
CapG mencerminkan potensi keuntungan dalam nilai absolut rupiah, bukan hanya persentase. Ini memastikan saham dengan kapitalisasi besar dan likuid mendapat alokasi proporsional.
Hitung Allocation Score (normalisasi CapG):
allocation_scorei = CapGi / Σ(CapG)
Skor alokasi adalah proporsi CapG saham i terhadap total CapG semua saham eligible
Contoh Perhitungan CapG dan Allocation Score
Data 3 Saham Eligible:
| Saham | pt | Harga | Saham Beredar | FFR | CapG | Allocation |
|---|---|---|---|---|---|---|
| A | 15% | Rp 5,000 | 10 miliar | 60% | Rp 4.5 T | 45% |
| B | 20% | Rp 2,000 | 5 miliar | 50% | Rp 1.0 T | 10% |
| C | 10% | Rp 10,000 | 9 miliar | 50% | Rp 4.5 T | 45% |
Meskipun Saham B memiliki pt tertinggi (20%), alokasi-nya hanya 10% karena kapitalisasi pasarnya lebih kecil. Ini mencerminkan pertimbangan likuiditas dan kapasitas investasi.
Skor ini secara langsung mengintegrasikan ekspektasi return (upside valuasi) dengan filter risiko finansial utama (status Z-Score 'Safe') dan menimbang berdasarkan kapitalisasi × FFR. Analisis Teknikal tidak masuk dalam nilai skor ini tetapi digunakan sebagai filter transaksi.
3.7. Komponen 5: Alokasi Portofolio Awal Sainte-Laguë
Komponen ini menentukan alokasi modal awal ke saham-saham yang memenuhi syarat, berdasarkan implementasi di AutoPortofolio@CanonNimu.
3.7.1. Algoritma Sainte-Laguë Standar
Menggunakan metode pembagi Sainte-Laguë murni: alokasi unit modal satu per satu ke saham i yang memiliki kuosien tertinggi:
Qi = CIVM_Scorei / (2ni + 1)
dengan pembagi: 1, 3, 5, ...
3.7.2. Adaptasi untuk Alokasi Portofolio Keuangan
- "Suara" adalah CIVM_Scorei ($adjustedPotential) yang dihitung di 3.6.
- "Kursi" didefinisikan sebagai unit modal diskrit (misal, 1/10000 dari total target dana kelolaan, menghasilkan 10000 unit).
Proses Alokasi Awal
Algoritma dijalankan hingga 10000 unit modal teralokasi. Saham i yang menerima ni unit akan memiliki bobot target awal Wtarget,i = ni / 10000. Hanya saham dengan CIVM_Score ≥ 0 yang secara efektif akan menerima alokasi.
Contoh Alokasi Sainte-Laguë
| Saham | CIVM Score | Bobot Alokasi | Logika |
|---|---|---|---|
| A | 0.35 | 35% | Proporsional terhadap skor |
| B | 0.25 | 25% | Proporsional terhadap skor |
| C | 0.40 | 40% | Proporsional terhadap skor |
| D | -0.15 | 0% | Skor negatif tidak dialokasikan |
| E | -9999 | 0% | Z-Score bukan 'Safe' |
3.7.3. Justifikasi Pemilihan Sainte-Laguë
Metode Sainte-Laguë dipilih karena beberapa keunggulan:
- Menghasilkan alokasi yang lebih proporsional terhadap skor input
- Mencegah konsentrasi modal yang berlebihan pada saham dengan skor tertinggi
- Tidak memerlukan estimasi matriks kovarians yang kompleks dan sering tidak akurat
- Memberikan pendekatan sistematis untuk alokasi berdasarkan merit (skor CIVM)
3.7.4. Pengembangan Lebih Lanjut: Integrasi Kapitalisasi Pasar
Evolusi Metode Alokasi
Metode Original (Berbasis Potensi Persentase)
Metode awal menggunakan potensi kenaikan harga dalam persentase sebagai dasar alokasi dana dengan algoritma Sainte-Laguë, seperti dijelaskan di atas. Ini merupakan inovasi yang telah menunjukkan kinerja baik dan konsisten dengan prinsip investasi value. Namun, setelah evaluasi mendalam, ditemukan beberapa keterbatasan:
- Cenderung memberikan bobot berlebihan pada saham berkapitalisasi kecil dengan potensi persentase tinggi
- Tidak memperhitungkan likuiditas saham yang umumnya berkorelasi dengan kapitalisasi pasar
- Kurang mempertimbangkan potensi keuntungan dalam nilai absolut
Metode Baru (Integrasi Potensi × Kapitalisasi Pasar)
Sebagai pengembangan lebih lanjut, metode alokasi kemudian disempurnakan dengan mengubah definisi CIVM_Score menjadi:
CIVM_Scorei = adjustedPotentiali × MarketCapi
Dalam bahasa sederhana:
- "Suara" kini adalah hasil perkalian antara potensi kenaikan (dalam %) dan kapitalisasi pasar perusahaan
- Ini memberikan gambaran potensi keuntungan dalam nilai rupiah absolut, bukan hanya persentase
Contoh Perbandingan
| Saham | Potensi Kenaikan | Kapitalisasi Pasar | CIVM Score Baru | Alokasi Metode Baru | Alokasi Metode Lama |
|---|---|---|---|---|---|
| A | 15% | Rp 20T | Rp 3T | 40% | 25% |
| B | 20% | Rp 10T | Rp 2T | 26.7% | 33.3% |
| C | 10% | Rp 25T | Rp 2.5T | 33.3% | 16.7% |
| D | 30% | Rp 5T | Rp 1.5T | 0%* | 25% |
* Diasumsikan saham D memiliki Z-Score buruk dalam contoh ini
Manfaat Pendekatan Baru
- Keseimbangan Lebih Baik: Alokasi yang lebih seimbang antara perusahaan besar dan kecil
- Mempertimbangkan Ukuran Riil: Mencerminkan potensi keuntungan dalam nilai rupiah absolut
- Pertimbangan Likuiditas: Saham berkapitalisasi besar umumnya lebih likuid dan memerlukan porsi alokasi yang lebih besar
- Manajemen Risiko Lebih Baik: Mengurangi konsentrasi pada saham spekulatif berkapitalisasi kecil
Metode Sainte-Laguë yang dimodifikasi ini tetap mempertahankan keunggulan proporsionalitas dan pencegahan konsentrasi modal berlebihan dari metode asli, dengan tambahan pertimbangan ukuran pasar yang penting dalam konteks investasi nyata.
3.8. Komponen 6: Pengelolaan Portofolio Dinamis (Rebalancing Aktif)
Komponen ini secara aktif mengelola portofolio setelah alokasi awal, menyesuaikan posisi berdasarkan target dinamis dan filter transaksi, seperti logika dalam AutoPortofolio@CanonNimu.
3.8.1. Tujuan
Mempertahankan alokasi portofolio agar mendekati target proporsional yang dihasilkan oleh skor CIVM dan Sainte-Laguë, sambil mengoptimalkan eksekusi transaksi.
3.8.2. Dasar Evaluasi
Sistem mengevaluasi portofolio secara periodik (misal, harian saat data harga baru masuk).
3.8.3. Perhitungan Target Dinamis
Target nilai alokasi untuk setiap saham i (TargetNilaii) dihitung ulang berdasarkan persentase alokasi Sainte-Laguë terakhir (allocated_percentagei) dikalikan dengan nilai total portofolio saat ini (TotalPortofoliot).
TargetNilaii = allocated_percentagei × TotalPortofoliot
3.8.4. Perhitungan Koreksi
Sistem membandingkan target nilai dinamis (TargetNilaii) dengan nilai aktual saham i yang dipegang (NilaiAktuali). Selisihnya (KoreksiNilaii = TargetNilaii - NilaiAktuali) diterjemahkan menjadi jumlah lot yang perlu dikoreksi ($koreksi_lot).
3.8.5. Eksekusi Koreksi (Rebalancing) dengan Filter
Rekomendasi beli dieksekusi hanya jika:
- Rekomendasi Teknikal (dari Komponen 3) adalah 'BUY'
- Status Z-Score (dari Komponen 2) adalah 'Safe'
- Laporan keuangan tidak terlambat
- Tersedia kas yang cukup
Rekomendasi jual dieksekusi, namun dapat ditunda jika posisi saat ini belum mencapai target profit minimum (filter HANYAJUALKETIKAPROFIT).
Alur Rebalancing Dinamis
3.8.6. Rasionalisasi
Mekanisme ini melakukan rebalancing aktif menuju target alokasi yang dinamis, memastikan portofolio terus merefleksikan pandangan model sambil menerapkan filter risiko, timing, dan operasional pada eksekusi transaksi. Pendekatan ini memungkinkan:
- Pemeliharaan alokasi yang proporsional meskipun harga saham berfluktuasi
- Penerapan disiplin yang sistematis dalam keputusan jual-beli
- Minimalisasi risiko melalui filter multidimensi (risiko, teknikal, operasional)
- Pengambilan keuntungan secara terkontrol (profit-taking)