• Tidak ada hasil yang ditemukan

BAB 3 PERANCANGAN PROGRAM APLIKASI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 3 PERANCANGAN PROGRAM APLIKASI"

Copied!
32
0
0

Teks penuh

(1)

PERANCANGAN PROGRAM APLIKASI

3.1 Gambaran Umum Perancangan

Untuk merancang program aplikasi perhitungan portofolio ini, penulis menggunakan bahasa C++ dan Qt sebagai GUI toolkit yang dioperasikan pada sistem operasi GNU Linux. Secara umum, program aplikasi dapat dibagi menjadi 3 bagian, yaitu input, proses dan output. Bagian input adalah di mana user dapat memasukkan data saham-saham yang akan membentuk portofolio. Bagian proses adalah proses penghitungan untuk menghasilkan kurva efficient frontier. Bagian output adalah kurva efficient frontier dan diagram lingkaran.

Algoritma Critical Line yang digunakan untuk menghasilkan kurva efficient frontier [http://www.stanford.edu/~wfsharpe/mia/opt/mia_opt3.htm] adalah sebagai berikut :

• Tentukan saham-saham yang akan dimasukkan ke dalam portofolio.

Tiap saham yang dimasukkan tersebut akan memiliki informasi return, risiko, nilai batas bawah dan nilai batas atas. Nilai default batas bawah dan batas atas adalah 0 dan 1.

• Hitung matriks korelasi dan matrik kovarians dari saham-saham tersebut.

Buat variabel CP bertipe array untuk menampung corner portfolio yang dihasilkan.

• Inisialisasi matriks D, matriks k dan matrik f.

(2)

1) dan elemen yang terletak pada dimensi (jumlah_saham) x (jumlah_saham) adalah 2 * matriks kovarians saham-saham.

⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 0 1 1 1 1 ) , ( * 2 ) 1 , ( * 2 1 1 ) , 1 ( * 2 ) 1 , 1 ( * 2 n n Cov n Cov n Cov Cov D L M L M L

Matriks k dan f berupa matriks dengan ukuran (jumlah_saham + 1) x 1.

⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 1 0 0 M k dan ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 0 ) ( Re ) 1 ( Re n turn turn f M

Inisialisasi nilai variabel risk tolerance rt dengan sembarang nilai positif.

Tentukan portofolio dengan komposisi yang memberikan nilai return yang maksimum. Selanjutnya, kita dapat memberi status pada tiap variabel proporsi dengan kriteria sebagai berikut :

1. down : X(i) = LowerBound(i)

2. in : LowerBound(i) < X(i) < UpperBound(i) 3. up : X(i) = UpperBound(i)

Simpan portofolio yang dihasilkan ke dalam variabel CP. • Selama nilai rt > 0 maka lakukan :

− Hitung nilai matriks DD, kk dan ff berdasarkan status variabel yang ada dan bentuk persamaan DD * y = kk + rt * ff. Matriks DD, kk dan ff diperoleh dengan cara mengeluarkan variabel yang tidak masuk dalam nilai batasan batas bawah dan batas atas.

(3)

Persamaan y = inv(DD) * kk + rt * inv(DD) * ff dapat diubah menjadi y = ya + yb * rt dengan ya = inv(DD) * kk dan yb = inv(DD) * ff.

− Hitung nilai ∂L, ∂la dan ∂lb.

Dari bab sebelumnya diketahui bahwa ∂L=rt*fD*y dan y = ya + yb * rt didapat : rt lb la L rt yb ya D f rt L * ) * ( * * ∂ + ∂ = ∂ + − = ∂ dengan ∂la=−D*yadan ∂lb= fD*yb.

− Hitung nilai kritis rt berikutnya di mana akan terjadi perubahan status pada salah satu variabel. Sebuah variabel akan berubah statusnya dalam 4 kondisi berikut :

1. Jika yb(i) bernilai negatif, variabel yang berstatus in berubah menjadi up dengan nilai kritis crt(i) = (UpperBound(i) – ya(i)) / yb(i).

2. Jika yb(i) bernilai positif, variabel yang berstatus in berubah menjadi down dengan nilai kritis crt(i) = (LowerBound(i) – ya(i)) / yb(i).

3. Jika ∂lb(i) bernilai negatif, variabel yang berstatus down berubah menjadi in dengan nilai kritis crt(i) = -∂la(i) / ∂lb(i) .

4. Jika ∂lb(i) bernilai positif, variabel yang berstatus up berubah menjadi in dengan nilai kritis crt(i) = -∂la(i) / ∂lb(i) .

Nilai rt berikutnya adalah nilai crt yang maksimum dan variabel yang berubah status adalah variabel yang membuat nilai crt menjadi maksimum.

- Hitung corner portfolio y = inv(DD) * kk + rt * ff dengan nilai rt yang didapat sebelumnya dan simpan portofolio ke dalam variabel CP.

(4)

Gambar kurva efficient frontier menggunakan data corner portfolio yang tersimpan pada variabel CP.

3.2 Diagram Alir Algoritma Critical Line

(5)
(6)
(7)

3.3 Contoh Perhitungan

Berikut ini adalah contoh perhitungan dengan menggunakan contoh data dari [http://www.stanford.edu/~wfsharpe/mia/opt/mia_opt3.htm]. Terdapat 3 saham dengan data berikut : R e t u r n =

[

2 .8 0 0 6 .3 0 0 1 0 .8 0 0

]

, R is k =

[

1 .0 0 0 7 .4 0 0 1 5 .4 0 0

]

Co r r e la t io n =

[

1 .0 0 0 0 .4 0 0 0 .1 5 0 0 .4 0 0 1 .0 0 0 0 .3 5 0 0 .1 5 0 0 .3 5 0 1 .0 0 0

]

L o w e r B o u n d =

[

0 .2 0 0 0 .2 0 0 0 .2 0 0

]

, U p p e r B o u n d =

[

0 .5 0 0 0 .5 0 0 0 .5 0 0

]

Langkah 1 :

Hitung matriks kovarians dengan menggunakan data-data di atas. n Correlatio Risk Risk iance Covar =( . T). ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ = 160 . 237 886 . 39 310 . 2 386 . 39 760 . 54 960 . 2 310 . 2 960 . 2 000 . 1 var iance Co Langkah 2 :

Inisialisasi matriks D , k dan f dan bentuk persamaan D * y = k + rt * f

⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ + ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 0 ) 3 ( Re ) 2 ( Re ) 1 ( Re * 1 0 0 0 ) 3 ( ) 2 ( ) 1 ( * 0 1 1 1 1 ) 3 , 3 ( * 2 ) 2 , 3 ( * 2 ) 1 , 3 ( * 2 1 ) 3 , 2 ( * 2 ) 2 , 2 ( * 2 ) 1 , 2 ( * 2 1 ) 3 , 1 ( * 2 ) 2 , 1 ( * 2 ) 1 , 1 ( * 2 tur turn turn rt tmup X X X Cov Cov Cov Cov Cov Cov Cov Cov Cov

(8)

Langkah 3 :

Tentukan portofolio dengan komposisi yang memberikan nilai return maksimum dan simpan status dari variabel proporsi dari masing-masing saham. Portofolio ini merupakan corner portfolio yang pertama kali dihasilkan. Dari contoh di atas, maka dengan :

X =

[

0 .2 0 0 0 .3 0 0

0 .5 0 0

]

memberikan nilai return maksimum

Dari data di atas, maka didapat :

X(1) = down , X(2) = in , X(3) = up .

Langkah 4 :

Bentuk persamaan baru DD * y = kk + rt * f dengan cara memodifikasi persamaan D * y = k + rt * f. Modifikasi yang dilakukan adalah membuang variabel yang statusnya up dan down yakni X(1) dan X(3) sehingga didapat :

⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ + ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 0 0 ) 2 ( Re 0 * 1 ) 3 ( Re 0 ) 1 ( Re ) 3 ( ) 2 ( ) 1 ( * 0 1 1 1 1 1 0 0 1 ) 3 , 2 ( * 2 ) 2 , 2 ( * 2 ) 1 , 2 ( * 2 0 0 0 1 turn rt turn turn tmup X X X Cov Cov Cov Langkah 5 :

Hitung nilai ya dan yb yang didapat dari persamaan DD * y = kk + rt * f. y = inv(DD) * kk + rt * inv(DD) * kk dapat ditulis sebagai :

y = ya + yb *rt

(9)

Dari contoh data di atas, maka didapat : y a =

[

0 .2 0 0 0 .3 0 0 0 .5 0 0 − 7 3 .9 2 6

]

dan y b =

[

0 .0 0 0 0 .0 0 0 0 .0 0 0 6 .3 0 0

]

Langkah 6 :

Hitung nilai ∂ladan ∂lb.

Dari contoh data di atas maka didapat :

∂ la =

[

6 9 .4 4 0 0 .0 0 0 − 1 8 8 .0 8 9 − 1 .0 0 0

]

dan ∂ lb =

[

− 3 .5 0 0 0 .0 0 0 4 .5 0 0 0 .0 0 0

]

Selanjutnya cari nilai kritis crt dan variabel mana yang statusnya akan berubah, kemudian cari nilai rt berikutnya yang merupakan nilai kritis crt yang maksimum. Dari contoh data di atas, didapat :

c r t =

[

1 9 .8 4 0 0 .0 0 0

4 1 .7 9 8

]

dan rt = max(crt)

Jadi nilai rt = 41.798 dan variabel yang berubah status adalah X(3) dari up menjadi in .

Langkah 7 :

Hitung nilai y dari persamaan DD * y = kk + rt * f dengan menggunakan nilai rt yang didapat dari langkah 6.

y = inv(DD) * kk + rt * inv(DD) * ff y = ya + yb * rt

(10)

ya = inv(DD) *kk ; yb = inv(DD) * ff Dari contoh data di atas dan dengan nilai rt =41.798 , maka didapat :

y =

[

0 .2 0 0 0 .3 0 0 0 .5 0 0 1 9 4 .3 6 1

]

Matriks y yang dihasilkan merupakan salah satu corner portfolio yang akan membentuk kurva efficient frontier . Matriks y berisi proporsi dari masing-masing saham. Dengan demikian, return dan risiko portofolio dapat dihitung.

Selanjutanya portofolio disimpan dalam variabel array CP yang menampung semua corner portfolio yang dihasilkan.

Langkah 8 :

Ulangi langkah 4 sampai langkah 6 selama nilai rt bernilai lebih besar dari 0.

Setelah semua iterasi dilakukan, maka akan diperoleh sejumlah corner portfolio. Dengan semua corner portfolio tersebut, dapat digambarkan kurva efficient frontier.

3.4 Pengumpulan Data

Pengumpulan data berupa data harga saham-saham dilakukan dengan cara mengambil data sekunder yaitu data historis yang sudah ada melalui situs internet (finance.yahoo.com).

Dalam perancangan ini, penulis mengambil sampel berupa saham-saham emiten yang secara fundamental kinerjanya baik dan telah tercatat di Bursa Efek Indonesia (BEI) selama lebih dari 5 tahun. Seluruh data yang digunakan dalam perancangan merupakan data harga saham-saham yang berbasis waktu triwulan

(11)

(kuartal) selama 3 tahun pengamatan yang dimulai dari awal Januari 2005 sampai dengan akhir Desember 2007. Penulis akan mengambil saham-saham dari tiap sektor usaha berikut :

1. Sektor Pertambangan

ƒ Bumi Resources Tbk (BUMI) ƒ Timah Tbk (TINS)

ƒ Tambang Batubara Bukit Asam Tbk (PTBA) ƒ Medco Energi Internasional Tbk (MEDC) 2. Sektor Infrastruktur

ƒ Telekomunikasi Indonesia Tbk (TLKM) ƒ Perusahan Gas Negara (Persero) Tbk (PGAS) ƒ Berlian Laju Tanker Tbk (BLTA)

ƒ Citra Marga Nusaphala Persada Tbk (CMNP) 3. Sektor Properti dan Real Estate

ƒ Bakrieland Development Tbk (ELTY) ƒ Ciputra Development Tbk (CTRA) ƒ Modernland Realty Tbk (MDLN) ƒ Summarecon Agung Tbk (SMRA) 4. Sektor Keuangan

ƒ Bank Central Asia Tbk (BBCA) ƒ Bank Mandiri (Persero) Tbk (BMRI)

ƒ Bank Rakyat Indonesia (Persero) Tbk (BBRI) ƒ Bank Negara Indonesia Tbk (BBNI)

(12)

5. Sektor Barang Konsumsi

ƒ Indofood Sukses Makmur Tbk (INDF) ƒ Tunas Baru Lampung Tbk (TBLA) ƒ Kalbe Farma Tbk (KLBF)

ƒ Unilever Indonesia Tbk (UNVR)

3.5. Perancangan Struktur Menu 3.5.1 Struktur Menu Utama

Gambar 3.4 Struktur Menu Utama

3.5.2 Struktur Menu File

(13)

3.5.3 Struktur Menu View

Gambar 3.6 Struktur Menu View

3.5.4 Struktur Menu Insert

Gambar 3.7 Struktur Menu Insert

3.5.5 Struktur Menu Help

(14)

3.6 Perancangan Basis Data

Basis data yang digunakan adalah SQLite 3. Basis data disimpan dalam satu file yang tipenya dot db(.db). Penggunaan basis data dimaksudkan agar data-data lebih mudah diolah. Penulis akan membuat dua buah tabel di dalam database yakni sebagai berikut :

1. Tabel ms_header_stock

Tabel ms_header_stock berisi informasi utama tentang saham seperti kode emiten, nama saham dan sektor usahanya.

Tabel 3.1 Struktur tabel ms_header_stock

Kolom Tipe Keterangan

code Char(4) Kode emiten

name Varchar(100) Nama emiten

sector Varchar(50) Sektor usaha emiten

2. Tabel ms_detail_stock

Tabel ms_detail_stock berisi informasi harga pembukaan dan penutupan saham dalam periode tertentu.

Tabel 3.2 Struktur Tabel ms_detail_stock

Kolom Tipe Keterangan

code Char(4) Kode emiten

(15)

Kolom Tipe Keterangan

open numeric Harga pembukaan

close numeric Harga penutupan

3.7 Diagram Transisi (State Transition Diagram )

Diagram transisi memberikan keterangan kepada sistem tentang apa yang harus dikerjakan (action) dan kondisi (state) tertentu. Kondisi adalah suatu event pada external environment yang dapat dideteksi oleh sistem misalnya sinyal, interrupt, data, dan lain sebagainya. Hal ini akan menyebabkan perubahan terhadap state dari aktivitas x ke aktivitas y. Action adalah hal yang dapat dilakukan oleh sistem bila terjadi perubahan state atau data. Action akan menghasilkan output, message display pada layar, menghasilkan kalkulasi atau menghasilkan informasi lainnya.

(16)

3.7.1 STD Layar Utama

(17)

3.7.2 STD Menu File

(18)

3.7.3 STD Menu View

Gambar 3.11 STD Menu View 3.7.4 STD Menu Insert

(19)

3.7.5 STD Menu Help

Gambar 3.13 STD Menu Help

3.8 Perancangan Layar

Pada program aplikasi ini, penulis akan membuat rancangan layar sebagai berikut : 1. Layar Utama, terdiri atas 2 bagian, yaitu :

a. Layar Stock Data b. Layar Efficient Frontier 2. Layar Add Stock

3. Layar Insert New Portfolio 4. Layar About

3.8.1 Layar Stocks Data

(20)

yang akan dimasukkan ke dalam portofolio. Melalui layar ini, user dapat menambah , mengurangi serta mengubah variabel dan informasi yang berkaitan dengan saham terkait.

Untuk membuat file baru, user bisa memilih menu File | New. Sebelum dapat memasukkan data saham, user harus mengimpor database saham yang telah disediakan dengan memilih menu File | Import Database.

Selanjutnya untuk menambah / memasukkan data saham baru, user dapat menekan tombol 'Add Stock'. Setelah itu, akan muncul dialog 'Add Stock' di mana user akan bisa memilih saham dengan mengetikkan kode saham ataupun memilihnya dari daftar yang sudah ada. Informasi saham-saham yang telah dimasukkan akan ditampilkan pada tabel 'Stock Information'.

Untuk menghapus saham yang telah dimasukkan, user dapat memilih saham tersebut pada kemudian menekan tombol 'Remove Stock'. Untuk menghapus semua saham yang telah dimasukkan, user dapat menggunakan tombol 'Clear All'.

Tombol 'Reset Constraints' berguna untuk mengatur ulang nilai variabel min. bound dan max. bound menjadi nilai default yaitu 0 dan 1. Setelah semua data saham dimasukkan, user bisa menekan tombol 'Calculate Matrix' untuk menghitung matriks korelasi dari saham-saham yang telah dimasukkan. Matriks korelasi ditampilkan pada tabel 'Correlation Matrix'.

Setelah semua data telah siap, user dapat menekan tombol 'Generate Frontier' untuk menghitung dan menghasilkan kurva efficient frontier yang akan ditampilkan pada layar tab Efficient Frontier. Data yang tercatat di dalam tabel – tabel dapat disimpan ke dalam file melalui menu File | Save Data As.. dan dapat dibuka kembali melalui menu File | Load Data.

(21)

Gambar 3.14 Layar Stocks Data

3.8.2 Layar Efficient Frontier

Layar Efficient Frontier dirancang sebagai layar output yang menampilkan kurva efficient frontier beserta diagram lingkaran. Diagram lingkaran menampilkan komposisi saham-saham yang membentuk portofolio yang terletak pada sepanjang kurva efficient frontier . Tampilan pada kurva dapat diubah dengan memilih menu View pada layar utama. Menu 'Show Grid' untuk menampilkan garis-garis pembantu. Menu 'Show Frontier' untuk menampilkan kurva efficient frontier. Menu 'Show Stock' untuk menampilkan saham-saham yang membentuk portofolio secara terpisah. Menu 'Show Portfolio' untuk menampilkan portofolio baru yang dimasukkan oleh user melalui menu 'Insert New Portfolio' pada layar utama.

Pada layar ini, user bisa menggunakan mouse untuk mengklik titik – titik pada kurva dan portofolio yang dipilih akan ditampilkan pada diagram lingkaran. Selanjutnya, user dapat memasukkan jumlah modal dalam Rupiah dan tekan

(22)

tombol 'Calculate' untuk menghitung jumlah lot pada tiap saham yang membentuk portofolio yang telah dipilih dan hasil akan ditampilkan pada tabel. Tombol 'Save As...' untuk menyimpan data di tabel ke dalam file. Tombol 'Clear' untuk menghapus data-data pada tabel.

Gambar kurva efficient frontier dan diagram lingkaran dapat disimpan ke dalam file gambar melalui menu File | Save Frontier As.. dan menu File | Save Chart As.. pada layar utama.

Gambar 3.15 Layar Efficient Frontier

3.8.3 Layar Add Stock

Layar Add Stock merupakan dialog yang akan muncul ketika user memasukkan data saham baru dengan menekan tombol 'Add Stock' pada layar tab 'Stocks Data'. User dapat memilih saham dengan mengetik kode saham atau dengan memilihnya dari daftar yang tersedia. Setelah user memilih salah satu saham, maka

(23)

dialog ini akan menampilkan informasi mengenai nama saham, sektor usaha, daftar harga pembukaan dan penutupan setiap periode, return beserta risikonya. Tombol 'Add' untuk menambahkan saham tersebut ke dalam daftar. Tombol 'Cancel' untuk membatalkan dan menutup dialog.

Gambar 3.16 Layar Add Stock

3.8.4 Layar Insert New Portfolio

Layar 'Insert New Portfolio' merupakan dialog yang muncul ketika user mengklik menu 'Insert New Portfolio' pada layar utama. Pada layar ini, user dapat membuat portofolio baru dengan menetapkan komposisi dari masing-masing saham yang membentuk portofolio. User dapat menekan tombol 'OK' untuk memproses dan tombol 'Cancel' untuk membatalkan dan menutup dialog. Portofolio baru tersebut akan ditampilkan pada layar kurva efficient frontier .

(24)

Gambar 3.17 Layar Insert New Portfolio

3.8.5 Layar About

Layar About menampilkan informasi singkat dari program aplikasi seperti judul, data mahasiswa, dosen pembimbing, dan sebagainya.

(25)

3.9 Perancangan Modul

Untuk merancang program aplikasi, penulis menggunakan bahasa C++. Oleh karena itu, perancangan modul disusun dalam bentuk class(kelas). Adapun kelas-kelas yang dipakai dalam program aplikasi adalah sebagai berikut :

ƒ Kelas Stock, StockGroup dan Portfolio

Kelas-kelas ini adalah kelas-kelas yang berperan dalam menyimpan informasi saham, kumpulan saham dan portofolio. Kelas-kelas ini dilengkapi dengan metode-metode yang lengkap untuk mengolah data misalnya data return dan risiko.

ƒ Kelas Matrix, Statistic dan CriticalLineMethod

Kelas Matrix dan Statistic merupakan kelas dipakai untuk membantu perhitungan matematis dalam program. Kelas CriticalLineMethod merupakan kelas yang berisi algoritma inti CriticalLineMethod yang digunakan penulis dalam penulisan skripsi ini.

ƒ Kelas PlotWidget, ChartWidget, StockDataWidget

Ketiga kelas ini adalah kelas-kelas yang menangani tampilan GUI pada program aplikasi seperti grafik kurva, chart, tabel data, dsb.

ƒ Kelas MainWindow

Kelas MainWindow adalah kelas utama yang menggabungkan tampilan GUI dan algoritma matematis ke dalam satu kesatuan program aplikasi.

(26)

3.9.1 Layar Utama Modul Menu_Utama Mulai modul

Tampilkan menu utama

Lakukan pemilihan menu

Pilih popup menu 'File | Import Database'

Panggil modul New

Tutup modul menu utama Pilih popup menu 'File | Import Database'

Panggil modul Import

Tutup modul menu utama Pilih popup menu 'File | Load Data'

Panggil modul Load

Tutup modul menu utama Pilih popup menu 'File | Save Data'

Panggil modul Save

Tutup modul menu utama Pilih popup menu 'File | Save Data As ...'

Panggil modul Save_Data

Tutup modul menu utama

Pilih popup modul 'File | Save Frontier As ...'

Panggil menu Save_Frontier

Tutup modul menu utama Pilih popup menu 'File | Save Chart As ...'

Panggil modul Save_Chart

Tutup modul menu utama Pilih popup menu 'File | Quit'

Panggil modul Quit

Tutup modul menu utama Pilih popup menu 'View | Show Grid'

Panggil modul Show_Grid

Tutup modul menu utama Pilih popup menu 'View | Show Frontier'

Panggil modul Show_Frontier

Tutup modul menu utama

Pilih popup menu 'View | Show Individual Stock'

Panggil modul Show Stock

Tutup modul menu utama

Pilih popup menu 'View | Show Other Portfolio'

Panggil modul Show_Portfolio

Tutup modul menu utama Pilih popup menu 'Insert | New Portfolio' Panggil modul Insert_Portfolio

Tutup modul menu utama Pilih popup menu 'Help | About'

(27)

Tutup modul menu utama Pilihan selesai

Akhir modul menu utama Modul New

Tampilkan dialog box 'Are you to close this application ?' Jika user menekan tombol 'Yes' maka

Hapus isi tabel 'Stock Information' Hapus isi tabel 'Correlation Matrix'

Hapus grafik dan diagram lingkaran pada layar 'Efficient Frontier' Akhir jika

Tutup dialog box Akhir modul New Modul Import Mulai modul

Tampilkan import dialog box

Pilih file database yang akan diimpor Jika user menekan tombol 'OK' maka

Baca file database dan simpan ke dalam variabel objek database Tampilkan kotak pesan 'Database imported.'

Akhir jika Tutup import dialog box Akhir modul Import

Modul Load_Data Mulai modul

Jika database telah diimpor maka Tampilkan open dialog box

Pilih file data yang akan dibaca Jika user menekan tombol 'OK' maka

Baca file data yang dipilih dan simpan ke dalam

variabel

Tampilkan data pada tabel-tabel

Akhir jika

Tutup open dialog box selain itu

Tampilkan kotak pesan 'Please import database before loading data.' Akhir jika

Akhir modul Load_Data Modul Save

Mulai modul

Simpan file dengan filename yang sama

Tampilkan status file tersimpan di bagian status bar Akhir modul Save

(28)

Modul Save_Data Mulai modul

Tampilkan save as dialog box

Pilih lokasi dan ketik filename yang hendak disimpan Jika user menekan tombol 'OK' maka

Simpan data di tabel-tabel ke dalam file

Tampilkan status file tersimpan pada bagian status bar Akhir jika

Tutup save as dialog box Akhir modul Save_Data

Modul Save_Frontier Mulai modul

Tampilkan save as dialog box

Pilih lokasi dan ketik filename yang hendak disimpan Jika user menekan tombol 'OK' maka

Simpan kurva efficient frontier ke dalam file

Tampilkan status file tersimpan pada bagian status bar Akhir jika

Tutup save as dialog box Akhir modul Save_Frontier Modul Save_Chart

Mulai modul

Tampilkan save as dialog box

Pilih lokasi dan ketik filename yang hendak disimpan Jika user menekan tombol 'OK' maka

Simpan diagram lingkaran ke dalam file

Tampilkan status file tersimpan pada bagian status bar Akhir jika

Tutup save as dialog box Akhir modul Save_Chart

Modul Quit Mulai modul

Tampilkan dialog box 'Are you to close this application ?' Jika user menekan tombol 'Yes' maka

Keluar dari program Akhir jika

Tutup dialog box Akhir modul Quit Modul Show_Grid Mulai modul

Tampilkan grid pada bagian grafik Akhir modul Show_Grid

(29)

Modul Show_Frontier Mulai modul

Tampilkan kurva frontier pada bagian grafik Akhir modul Show_Frontier

Modul Show_Stock Mulai modul

Tampilkan masing-masing stock pada bagian grafik Akhir modul Show_Stock

Modul Show_Portfolio Mulai modul

Tampilkan portofolio yang dibuat oleh user pada bagian grafik Akhir modul Show_Portfolio

Modul Insert_Portfolio Mulai modul

Tampilkan dialog 'Insert New Portfolio' Isi data pada dialog

Jika user menekan tombol 'OK' maka

Simpan data portofolio dan tampilkan pada bagian grafik Akhir jika

Tutup dialog 'Insert Portfolio' Akhir modul Insert_Portfolio Modul About

Mulai modul

Tampilkan dialog 'About' Klik 'OK'

Tutup dialog 'About' Akhir modul About 3.9.2 Layar Stocks Data Modul Add_Stock

Jika jumlah baris pada tabel 'Stock Information' = 20 maka

Tampilkan kotak pesan 'Maximum 20 stocks reached.' selain itu

Jika database belum diimpor maka

Tampilkan kotak pesan 'Please import database

before add stock.'

selain itu

Tampilkan dialog 'Add Stock' Pilih salah satu saham

Jika user menekan tombol 'OK' maka

Tambahkan satu baris informasi saham

(30)

Information'

Akhir jika

Tutup dialog 'Add Stock'

Akhir jika

Akhir jika Akhir modul Add_Stock Modul Remove_Stock

Jika jumlah baris pada tabel 'Stock Information' > 0 maka

Tampilkan dialog box 'Are you sure to remove this stock data ?' Jika user menekan tombol 'Yes' maka

Hapus baris saham yang dipilih oleh user pada tabel 'Stock

Information'

Nonaktifkan tombol 'Generate Frontier' Akhir jika

Tutup dialog box Akhir jika

Akhir modul Remove_Stock Modul Clear_All

Tampilkan dialog box 'Are you sure to clear all the stock data?' Jika user menekan tombol 'Yes' maka

Hapus semua data saham pada tabel 'Stock Information' Nonaktifkan tombol 'Remove Stock'

Nonaktifkan tombol 'Clear All'

Nonaktifkan tombol 'Reset Constraints' Nonaktifkan tombol 'Calculate Matrix' Nonaktifkan tombol 'Generate Frontier' Akhir jika

Tutup dialog box Akhir modul Clear_All Modul Reset_Constraints

Jika jumlah baris pada tabel 'Stock Information' > 0 maka Set n = jumlah baris pada tabel 'Stock Information' Lakukan pengulangan dari i=0 sampai i=n – 1

Set nilai kolom 'Min. Bound' pada baris ke-i menjadi 0 Set nilai kolom 'Max. Bound' pada baris ke-i menjadi 0 Akhir pengulangan

Akhir jika

Akhir modul Reset_Constraints Modul Calculate_Matrix

Jika jumlah baris pada tabel 'Stock Information' > 0 maka Set n = jumlah baris pada tabel 'Stock Information' Ambil data return dan risk dari tabel 'Stock Information'

(31)

dengan jumlah baris pada tabel 'Stock Information' Lakukan pengulangan dari i = 0 sampai i = n – 1

Lakukan pengulangan dari j = 0 sampai j = n - 1

Hitung nilai korelasi antara saham[i] dengan saham[j]

Tampilkan hasil tersebut pada tabel 'Correlation Matrix' baris ke-i dan kolom ke-j

Akhir pengulangan

Akhir pengulangan

Aktifkan tombol 'Generate Frontier' Akhir jika

Akhir modul Calculate_Matrix Modul Generate_Frontier

Ambil data-data pada tabel 'Stock Information' dan tabel 'Correlation Matrix' Hitung titik – titik pada kurva dengan menggunakan algoritma Critical Line Gambar kurva efficient frontier pada bagian layar 'Efficient Frontier'

Tampilkan kotak pesan 'Efficient frontier generated.' Pindahkan tampilan aktif ke layar 'Efficient Frontier' Akhir modul Generate_Frontier

3.9.3 Layar Efficient Frontier Modul Draw_Stock

Ambil nilai variabel array _stocks yang berisi semua saham yang dimasukkan user Set n = jumlah data dalam variabel array _stocks

Set warna titik menjadi biru

Lakukan pengulangan dari i =0 sampai i = n – 1 Set x = _stocks[i].risk

Set y = _stocks[i].return

Kalkulasi nilai x dan nilai y yang sesuai dengan ukuran window Gambar titik (x, y) pada layar

Akhir pengulangan Akhir Modul Draw_Stock Modul Draw_Portfolio

Ambil nilai variabel array _portfolios yang berisi portofolio yang dimasukkan oleh user

Set n = jumlah data dalam variabel array _portfolios Set warna titik menjadi ungu

Lakukan pengulangan dari i =0 sampai i = n – 1 Set x = _portfolios[i].risk

Set y = _portfolios[i].return

Kalkulasi nilai x dan nilai y yang sesuai dengan ukuran window Gambar titik (x, y) pada layar

Akhir pengulangan Akhir Modul Draw_Portfolio

(32)

Modul Draw_Frontier

Ambil nilai variabel array _frontier yang dihasilkan dari algoritma Critical Line Set n = jumlah data dalam variabel array _frontier

Set warna kurva menjadi hijau

Lakukan pengulangan dari i =0 sampai i = n – 1 Set x = _frontier[i].risk

Set y = _frontier[i].return

Kalkulasi nilai x dan nilai y yang sesuai dengan ukuran window Simpan nilai x dan y ke array points

Akhir pengulangan

Gambar garis yang menghubungkan titik-titik pada array _points Akhir modul Draw_Frontier

Modul Calculate

Ambil data variabel bobot portofolio pada diagram lingkaran Set n = jumlah saham pada diagram lingkaran

Lakukan pengulangan dari nilai i = 0 sampai i = n – 1 Set lot = ( capital * 1000000 / harga saham[i] ) / 500

Tampilkan kode saham dan jumlah lot pada baris ke-i dari tabel Akhir pengulangan

Akhir modul Calculate Modul Clear

Hapus semua data pada tabel layar 'Efficient Frontier' Akhir modul Clear

Modul Save_As

Tampilkan save as dialog box

Pilih lokasi dan ketik filename yang hendak disimpan Jika user menekan tombol 'OK' maka

Simpan data di tabel-tabel ke dalam file Akhir jika

Tutup save as dialog box Akhir modul Save_As

Gambar

Gambar 3.1 Flowchart Algoritma Critical Line (Bagian 1)
Gambar 3.2 Flowchart Algoritma Critical Line (Bagian 2)
Gambar 3.3 Flowchart Hitung Corner Portfolio
Gambar 3.4 Struktur Menu Utama
+7

Referensi

Dokumen terkait

Ruang lingkup penelitian ini adalah data jumlah konsumsi pangan rumah tangga petani karet, kandungan dan jumlah zat gizi protein dan energi yang terkandung dalam pangan

Hasil penelitian ini sejalan dengan penelitian sebelumnya yang dilakukan oleh Saraswati dan Sujana (2017) dan Rosa, dkk (2017) yang menunjukkan bahwa terdapat hubungan

Penanganan lumber dari kilang penggergajian ke tempat penimbunan untuk kemudian menuju pengeringan (alami/ secara kiln) dilakukan dengan mempertimbangkan jenis (spesies),

Arah penelitian ini untuk mengembangkan ilmu pendidikan Islami yang digali dari al-Quran sebagai sumber utama pendidikan Islam dan untuk memperbaiki kualitas pembelajaran agama Islam

Pembangunan sumberdaya alam dan lingkungan hidup sebaiknya menjadi acuan bagi kegiatan berbagai sektor pembangunan agar tercipta keseimbangan dan kelestarian fungsi

Hysteresis controller seperti Gambar 2.29 ini digunakan untuk membangkitkan pulsa sebagai masukan dari inverter, yaitu dengan cara membandingkan nilai dari

Bayesian network dan Algoritme genetika dapat digunakan untuk mengombinasikan fitur citra dengan memberikan bobot-bobot fitur citra secara automatis sehingga dapat

Mobile Hydraulics, Mechatronics, Fluid Power Systems, Virtual Machine, Hydrostatic Transmission, Simulation, Efficiency, Electrohydraulic Main Control