Ada banyak program untuk menganalisis dan mengelola portofolio opsi. Mereka berada di terminal perdagangan, dalam bentuk produk atau layanan komersial terpisah di situs. Program-program semacam itu memiliki sejumlah batasan: portofolio terikat pada platform perdagangan, kutipan dipompa dari sumber tertentu, dan parameter atau skenario hanya dapat dihitung menggunakan perangkat lunak yang disediakan.
Saya menyelesaikan tugas mengelola portofolio di pasar yang berbeda menggunakan R. Mesin sumber terbuka menyediakan banyak kemungkinan: portofolio disimpan dalam DBMS atau Excel, atau diunduh dari terminal (QUIK, TWS, lainnya dengan API); kutipan dipompa dari sumbernya (terminal, database atau situs web) dan setiap analisis portofolio tersedia!
Deskripsi Umum
Data dan portofolio pasar dimuat ke dalam objek-objek dari kelas OptPort
dan OptMarket
. Portofolio dinilai kembali menurut pasar, berdasarkan data ini, laba saat ini dan "orang-orang Yunani" dihitung, serta profilnya. Profil portofolio (ketergantungan laba atau "Yunani" pada harga aset dasar) dihitung dan disimpan dalam objek kelas OptProfile
. Fungsi bawaan menggambar grafik profil dan memungkinkan Anda membandingkan profil beberapa portofolio.
Dengan tautan (1) di akhir artikel - opsi mengelola portofolio opsi Mosbirzhy dengan koneksi ke QUIK dan Access.
Harga Pasar OptMarket
Objek kelas OptMarket
diperlukan untuk menyimpan kutipan opsi saham, informasi tentang aset dasar, dan tanggal saat ini.
Tanpa harga pasar, portofolio dinilai kembali pada nilai intrinsik.
# ( ) Access brd = GetBoard_fortsdb(ul) # OptMarket mrkt = OptMarket(ul = 'SiZ9', # ul_price = brd$ul_price, # board = as.tbl(brd$board), # now = as.Date('2019-11-12')) #
OptPort Portofolio
Portofolio dapat terdiri dari opsi dan aset dasar. Konstruktor
menciptakan portofolio berdasarkan tabel transaksi untuk basis tertentu
aset. Transaksi dirangkum dalam posisi yang sama.
# Access ( QUIK) trades = GetTrades_fortsdb() # .. , trades = TickerToParams_fortsboard(trades, mrkt$board)
Berdasarkan transaksi, kami membuat objek kelas OptPort
:
port = OptPort(ul = 'SiZ9', trades = trades, name = 'Spread')
Analisis portofolio
Penilaian portofolio
PortPricing
mengevaluasi kembali portofolio dengan harga saat ini - memilih harga opsi dari OptMarket
dan menambahkannya ke portofolio OptPort
. Untuk opsi Bursa Moskow, hal yang paling sederhana adalah dengan mengevaluasi kembali pada harga teoritis yang ditayangkan pertukaran itu sendiri dan selalu dikenal ( price_at = 'theor'
).
port = PortPricing(port, mrkt, price_at = 'theor')
Untung dan “Orang Yunani”
Fungsi PortValuation
menghitung parameter portofolio - keuntungan yang belum direalisasi dan "orang Yunani". Hasilnya disimpan dalam bidang OptPort
objek OptPort
.
port = PortValuation(port) port$total_value
Profil Portofolio - OptProfile
Objek OptProfile
menyimpan profil portofolio dalam kisaran harga aset yang mendasarinya.
Fungsi PlotProfile
membuat grafik profil berdasarkan ggplot2
.
myprofile = OptProfile(optport = port, params = c('pl', 'delta', 'theta', 'vega'), ul_range = 0.05 # ) PlotProfile(myprofile)

Komposisi Portofolio
Untuk mengubah komposisi portofolio ada fungsi AddTrades
. Dia menambahkan kesepakatan untuk portofolio dan menghitung posisi portofolio baru.
# - newtrade = data.frame(ul='SiZ9', ticker='Si63500BX9', xtype='p', strike=63500, expdate=as.Date('2019-12-19'), tradeprice=500, q=-1 ) # port2 = AddTrades(port = port, trades = newtrade) port2$name = 'Changed'
Profil portofolio baru dapat dibandingkan dengan yang lama. Fungsi JoinProfiles
Menggabungkan data profil untuk membuat grafik umum.
# port2 = port2 %>% PortPricing(., mrkt, price_at = 'theor') %>% PortValuation(.) # myprofile2 = OptProfile(optport = port2, params = c('pl', 'delta','theta', 'vega'), ul_range = 0.05) # profiles = JoinProfiles(list(myprofile, myprofile2)) PlotProfile(profiles)

Total
Fungsi dasar memecahkan masalah dasar. Solusi saya dikembangkan untuk tujuan khusus - analisis banyak portofolio dan pemodelan perubahan dalam portofolio ini. Anda dapat menemukan kode sumber di tautan di bawah ini. Bonus - basis untuk mengimpor data dari QUIK dan menyiapkan QUIK sendiri untuk ekspor.
Referensi:
(1) Kode sumber di GitHub .