Baca setiap cerita dari Youssef Hosni (dan ribuan penulis lain di Medium). Biaya keanggotaan Anda secara langsung mendukung…youssefraafat57. medium. com Show
1. Bekerja dengan Time Series di Pandas Bagian ini meletakkan dasar untuk memanfaatkan fungsionalitas deret waktu yang kuat yang disediakan oleh cara Panda merepresentasikan tanggal, khususnya oleh DateTimeIndex. Anda akan mempelajari cara membuat dan memanipulasi informasi tanggal dan deret waktu, dan cara melakukan perhitungan dengan DataFrames yang sadar waktu untuk menggeser data Anda dalam waktu atau membuat pengembalian periode tertentu 1. 1. Cara menggunakan data dan waktu dengan pandaBlok bangunan dasar untuk membuat data deret waktu dengan python menggunakan stempel waktu Pandas (pd. Timestamp) ditunjukkan pada contoh di bawah ini Objek timestamp memiliki banyak atribut yang dapat digunakan untuk mengambil informasi waktu tertentu dari data Anda seperti tahun, dan hari kerja. Pada contoh di bawah tahun data diambil Blok bangunan kedua adalah objek periode. Objek periode memiliki atribut freq untuk menyimpan informasi frekuensi. Standarnya adalah frekuensi bulanan dan Anda dapat mengonversi dari frekuensi ke frekuensi lainnya seperti yang ditunjukkan pada contoh di bawah ini Output menunjukkan bahwa frekuensi default adalah frekuensi bulanan. Anda dapat mengubahnya menjadi frekuensi harian menggunakan kode di bawah ini Anda juga dapat mengubah periode menjadi stempel waktu dan sebaliknya. Ini ditunjukkan pada contoh di bawah ini Anda dapat melakukan operasi aritmatika data dasar, misalnya dimulai dengan objek periode Januari 2017 dengan frekuensi bulanan, tambahkan saja angka 2 untuk mendapatkan periode bulanan Maret 2017. Ini ditunjukkan pada contoh di bawah ini Outputnya ditunjukkan pada gambar di bawah ini Untuk membuat deret waktu, Anda harus membuat urutan tanggal. Untuk membuat urutan Stempel Waktu, gunakan fungsi date_range panda. Anda perlu menentukan tanggal mulai, dan/atau tanggal akhir, atau sejumlah periode. Standarnya adalah frekuensi harian. Fungsi mengembalikan urutan tanggal sebagai DateTimeindex dengan informasi frekuensi. Anda akan mengenali elemen pertama sebagai cap waktu panda Ini ditunjukkan pada contoh di bawah ini dan hasilnya ditunjukkan pada gambar di bawah ini 1. 2. Pengindeksan & resampling deret waktuTransformasi dasar termasuk penguraian tanggal yang disediakan sebagai string dan mengubah hasilnya menjadi tipe data Panda yang cocok disebut datetime64. Mereka juga termasuk memilih subperiode dari deret waktu Anda, dan menyetel atau mengubah frekuensi DateTimeIndex. Anda dapat mengubah frekuensi ke nilai yang lebih tinggi atau lebih rendah. upsampling melibatkan peningkatan frekuensi waktu, yang membutuhkan pembuatan data baru. Downsampling berarti mengurangi frekuensi waktu, yang membutuhkan data agregasi Untuk memahami lebih lanjut tentang transformasi, kami akan menerapkannya pada data harga saham google. Pertama, jika Anda memeriksa jenis kolom tanggal itu adalah objek, jadi kami ingin mengubahnya menjadi tipe tanggal dengan kode berikut Informasi tanggal diubah dari string (objek) menjadi datetime64 dan juga kami akan mengatur kolom Tanggal sebagai indeks untuk bingkai data karena memudahkan untuk menangani data dengan menggunakan kode berikut Untuk memiliki intuisi yang lebih baik tentang tampilan data, mari plot harga dengan waktu menggunakan kode di bawah ini Perubahan harga saham google dengan waktuAnda juga dapat mengindeks sebagian data menggunakan indeks tanggal seperti contoh berikut Anda mungkin memperhatikan bahwa DateTimeIndex kami tidak memiliki informasi frekuensi. Anda dapat mengatur informasi frekuensi menggunakan dot-asfreq. Alias 'D' adalah singkatan dari frekuensi hari kalender. Akibatnya, DateTimeIndex sekarang berisi banyak tanggal di mana stok tidak dibeli atau dijual Contoh di bawah menunjukkan konversi DateTimeIndex dari data saham google menjadi frekuensi hari kalender Jumlah instance telah meningkat menjadi 756 karena pengambilan sampel harian ini. Kode di bawah mencetak lima baris pertama dari data sampel ulang harian Kita dapat melihat bahwa ada beberapa nilai NaN yang kehilangan data baru karena resampling harian ini Kami juga dapat mengatur DateTimeIndex ke frekuensi hari kerja menggunakan metode yang sama tetapi mengubah 'D' menjadi 'B' di. metode asfreq(). Ini ditunjukkan pada contoh di bawah ini Jika kita mencetak lima baris pertama maka akan terlihat seperti pada gambar di bawah ini Sekarang data yang tersedia hanya data hari kerja 1. 3. Keterlambatan, perubahan, dan pengembalian untuk seri harga sahamPergeseran atau jeda nilai mundur atau maju mundur dalam waktu. menggeser(). Memindahkan data antara masa lalu & masa depan. Standarnya adalah satu periode ke depan, tetapi Anda dapat mengubahnya, dengan memberikan variabel periode nilai pergeseran yang diinginkan Contoh metode shift ditunjukkan di bawah ini Outputnya ditunjukkan pada gambar di bawah ini Untuk memindahkan data ke masa lalu Anda dapat menggunakan periode = -1 seperti yang ditunjukkan pada gambar di bawah ini Salah satu sifat penting dari data harga saham dan pada umumnya dalam data time series adalah persentase perubahannya. Rumusnya adalah. ((X(t)/X(t-1))-1)*100 Ada dua cara untuk menghitungnya, kita bisa menggunakan fungsi bawaan df. pct_change() atau gunakan fungsi df. div. sub(). mul() dan keduanya akan memberikan hasil yang sama seperti yang ditunjukkan pada contoh di bawah ini Kita juga bisa mendapatkan pengembalian multiperiod dengan menggunakan variabel periode di df. pct_change() metode seperti yang ditunjukkan pada contoh berikut 2. Metrik & Pengambilan Sampel Deret Waktu Dasar Di bagian ini, kita akan menyelami lebih dalam fungsionalitas deret waktu penting yang tersedia melalui DataTimeIndex panda. kami akan memperkenalkan resampling dan cara membandingkan deret waktu yang berbeda dengan menormalkan titik awalnya 2. 1. Pengambilan sampel ulangKita akan mulai dengan resampling yang mengubah frekuensi data time series. Ini adalah operasi yang sangat umum karena Anda sering perlu mengonversi deret dua kali ke frekuensi umum untuk menganalisisnya bersama. Saat Anda melakukan upsample dengan mengonversi data ke frekuensi yang lebih tinggi, Anda membuat baris baru dan perlu memberi tahu panda cara mengisi atau menginterpolasi nilai yang hilang di baris ini. Saat Anda menurunkan sampel, Anda mengurangi jumlah baris dan perlu memberi tahu panda cara menggabungkan data yang ada Untuk mengilustrasikan apa yang terjadi saat Anda mengambil sampel data, mari buat Seri dengan frekuensi triwulanan yang relatif rendah untuk tahun 2016 dengan nilai bilangan bulat 1–4. Saat Anda memilih frekuensi kuartalan, panda default ke Desember untuk akhir kuartal keempat, yang dapat Anda ubah dengan menggunakan bulan yang berbeda dengan alias kuartal Selanjutnya, mari kita lihat apa yang terjadi saat Anda mengambil sampel deret waktu dengan mengonversi frekuensi dari triwulanan menjadi bulanan menggunakan dot-asfreq(). Panda menambahkan tanggal akhir bulan baru ke DateTimeIndex di antara tanggal yang ada. Akibatnya, sekarang ada beberapa bulan dengan data yang hilang antara bulan Maret dan Desember Outputnya ditunjukkan di bawah ini Mari bandingkan tiga cara yang ditawarkan panda untuk mengisi nilai yang hilang saat upsampling. Dua opsi pertama melibatkan pemilihan metode pengisian, baik pengisian maju atau pengisian ulang. Opsi ketiga adalah memberikan nilai penuh Jika Anda membandingkan hasilnya, Anda melihat bahwa isian maju menyebarkan nilai apa pun ke masa depan jika masa depan berisi nilai yang hilang. Isi ulang melakukan hal yang sama untuk masa lalu, dan fill_value hanya mengganti nilai yang hilang Jika Anda menginginkan DateTimeIndex bulanan yang mencakup setahun penuh, Anda dapat menggunakan dot-reindex. Panda menyelaraskan data yang ada dengan nilai bulanan yang baru dan menghasilkan nilai yang hilang di tempat lain. Anda dapat menggunakan opsi isian yang sama persis untuk dot-reindex seperti yang baru saja Anda lakukan untuk dot-asfreq 2. 2. Upsampling dan interpolasiMetode resample mengikuti logika yang mirip dengan dot-groupby. Ini mengelompokkan data dalam periode resampling dan menerapkan metode ke grup ini. Dibutuhkan nilai yang dihasilkan dari metode ini dan menetapkan tanggal baru dalam periode resampling. Tanggal baru ditentukan oleh apa yang disebut offset, dan misalnya, bisa di awal atau akhir periode atau lokasi khusus. Anda akan menggunakan sampel ulang untuk menerapkan metode yang mengisi atau menginterpolasi tanggal yang hilang saat pengambilan sampel naik, atau agregat tersebut saat pengambilan sampel turun Kami akan menerapkan metode sampel ulang ke tingkat pengangguran bulanan. Pertama, kita akan mengunggahnya dan menyimpannya menggunakan kolom DATE dan menjadikannya indeks 85 titik data yang diimpor menggunakan read_csv sejak 2010 tidak memiliki informasi frekuensi. Pemeriksaan baris pertama menunjukkan bahwa data dilaporkan untuk yang pertama dari setiap bulan kalender. Jadi mari kita sampel ulang pada awal setiap bulan kalender menggunakan metode dot-resample dan dot-asfreq Kedua metode itu sama. Saat melihat resampling berdasarkan bulan, sejauh ini kami berfokus pada frekuensi akhir bulan. Dengan kata lain, setelah resampling, data baru akan diberikan pada hari kalender terakhir untuk setiap bulan. Namun, ada beberapa alternatif seperti yang ditunjukkan pada tabel di bawah ini Offset Periode & Frekuensi Pengambilan Sampel UlangBergantung pada konteks Anda, Anda dapat membuat sampel ulang ke awal atau akhir kalender atau bulan bisnis Resampling mengimplementasikan logika berikut. Saat up-sampling, akan ada lebih banyak periode resampling daripada titik data. Setiap periode pengambilan sampel ulang akan memiliki offset tanggal tertentu, misalnya, frekuensi akhir bulan. Anda kemudian perlu memutuskan cara membuat data untuk periode resampling baru. Poin data baru akan ditetapkan ke offset tanggal. Sebaliknya, saat pengambilan sampel turun, ada lebih banyak titik data daripada periode pengambilan sampel ulang. Oleh karena itu, Anda perlu memutuskan cara menggabungkan data Anda untuk mendapatkan satu nilai untuk setiap offset tanggal Sekarang mari kita gunakan seri triwulanan, pertumbuhan PDB riil. Anda melihat bahwa sekali lagi tidak ada info frekuensi, tetapi beberapa baris pertama mengonfirmasi bahwa data dilaporkan untuk hari pertama setiap kuartal Kita dapat menggunakan dot-resample untuk mengonversi seri ini ke frekuensi awal bulan, lalu meneruskan logika pengisian untuk mengisi kekosongan. Kami menggunakan dot-add_suffix untuk membedakan label kolom dari variasi yang akan kami hasilkan selanjutnya Resample juga memungkinkan Anda menginterpolasi nilai yang hilang, yaitu mengisi nilai yang terletak pada garis lurus antara tingkat pertumbuhan triwulanan yang ada. Pandangan pada beberapa baris pertama menunjukkan cara menginterpolasi nilai rata-rata yang ada Kami sekarang akan menggabungkan dua seri menggunakan fungsi pandas dot-concat untuk menggabungkan dua bingkai data. Menggunakan axis=1 membuat panda menyatukan DataFrames secara horizontal, menyelaraskan indeks baris. Plot data selama dua tahun terakhir memvisualisasikan bagaimana titik data baru terletak di garis antara titik yang ada, sedangkan pengisian ke depan menciptakan pola seperti langkah Plot untuk gdp_growth yang disampel ulangSetelah mengambil sampel ulang pertumbuhan PDB, Anda dapat memplot seri pengangguran dan PDB berdasarkan frekuensi umumnya 2. 3. Downsampling & agregasiSejauh ini, kami telah berfokus pada up-sampling, yaitu meningkatkan frekuensi deret waktu, dan cara mengisi atau menginterpolasi nilai yang hilang. Downsampling adalah kebalikannya, yaitu bagaimana mengurangi frekuensi dari data time series. Ini termasuk, misalnya, mengubah data per jam menjadi data harian, atau data harian menjadi data bulanan. Dalam hal ini, Anda perlu memutuskan bagaimana meringkas data yang ada karena 24 jam menjadi satu hari. Pilihan Anda adalah metrik agregasi yang sudah dikenal seperti rata-rata atau median, atau hanya nilai terakhir dan pilihan Anda akan bergantung pada konteksnya Mari gunakan read_csv terlebih dahulu untuk mengimpor data kualitas udara dari Badan Perlindungan Lingkungan. Ini mengandung konsentrasi ozon harian rata-rata untuk New York City mulai tahun 2000. Karena DateTimeIndex yang diimpor tidak memiliki frekuensi, pertama-tama mari kita tetapkan frekuensi hari kalender menggunakan dot-resample. DateTimeIndex yang dihasilkan memiliki entri tambahan, serta informasi frekuensi yang diharapkan Untuk mengonversi data ozon harian menjadi frekuensi bulanan, cukup terapkan metode sampel ulang dengan periode pengambilan sampel baru dan offset. Kami memilih frekuensi bulanan dengan offset akhir bulan default. Selanjutnya, terapkan metode rata-rata untuk mengagregasi data harian ke satu nilai bulanan. Anda dapat melihat bahwa rata-rata bulanan telah ditetapkan ke hari terakhir bulan kalender Data ozon setelah sampel ulang bulananAnda dapat menerapkan median dengan cara yang sama persis Mirip dengan metode groupby, Anda juga dapat menerapkan beberapa agregasi sekaligus Mari memvisualisasikan Seri yang diagregasi dan disampel ulang relatif terhadap data asli pada frekuensi kalender-harian. Kami akan memplot data mulai dari 2016 sehingga Anda dapat melihat lebih detail. Matplotlib memungkinkan Anda untuk memplot beberapa kali pada objek yang sama dengan mereferensikan objek axes yang berisi plot Seri yang diagregasi dan disampel ulang relatif terhadap data asliPlot pertama adalah seri asli, dan plot kedua berisi seri yang disampling ulang dengan akhiran sehingga legenda mencerminkan perbedaannya. Anda melihat bahwa data yang diambil sampelnya jauh lebih mulus karena volatilitas bulanan telah dirata-ratakan. Mari kita lihat juga cara membuat sampel ulang beberapa seri 3. Fungsi Jendela. Metrik Bergulir dan MeluasDi bagian ini, kami akan menunjukkan cara menggunakan fungsi jendela untuk menghitung metrik deret waktu untuk jendela bergulir dan meluas 3. 1. Fungsi jendela dengan pandaFungsi jendela berguna karena memungkinkan Anda untuk beroperasi pada sub-periode deret waktu Anda. Secara khusus, fungsi jendela menghitung metrik untuk data di dalam jendela. Kemudian, hasil perhitungan ini membentuk time series baru, dimana setiap titik data merepresentasikan rangkuman dari beberapa titik data dari time series aslinya. Kami akan membahas dua jenis utama jendela. Jendela putar mempertahankan ukuran yang sama saat meluncur sepanjang deret waktu, sehingga setiap titik data baru adalah hasil dari sejumlah pengamatan tertentu. Memperluas jendela tumbuh dengan deret waktu sehingga perhitungan yang menghasilkan titik data baru adalah hasil dari semua titik data sebelumnya Mari hitung rata-rata pergerakan sederhana untuk melihat cara kerjanya dalam praktik. Kami akan kembali menggunakan data harga saham google selama beberapa tahun terakhir. Kita akan melihat dua cara untuk menentukan rolling window Pertama, kami menerapkan rolling dengan ukuran jendela integer 30. Ini berarti jendela tersebut akan berisi 30 pengamatan atau hari perdagangan sebelumnya. Saat Anda memilih ukuran jendela berbasis bilangan bulat, panda hanya akan menghitung rata-rata jika jendela tidak memiliki nilai yang hilang. Anda dapat mengubah default ini dengan menyetel parameter min_periods ke nilai yang lebih kecil dari ukuran jendela 30 Anda juga dapat membuat jendela berdasarkan offset tanggal. Jika Anda memilih 30D, misalnya, jendela akan berisi hari-hari ketika saham diperdagangkan selama 30 hari kalender terakhir. Sementara jendela tetap dalam hal panjang periode, jumlah pengamatan akan bervariasi. Mari kita lihat seperti apa rata-rata rolling itu Anda juga dapat menghitung rata-rata bergulir 90 hari kalender, dan menggabungkannya dengan harga saham. Metode bergabung memungkinkan Anda untuk menggabungkan Seri atau DataFrame sepanjang sumbu 1, yaitu secara horizontal. Itu hanya cara berbeda menggunakan fungsi dot-concat yang pernah Anda lihat sebelumnya. Anda dapat melihat bagaimana deret waktu yang baru jauh lebih mulus karena setiap titik data kini menjadi rata-rata dari 90 hari kalender sebelumnya Harga vs harga rata-rata selama 90 hariUntuk melihat bagaimana perpanjangan cakrawala waktu memengaruhi rata-rata pergerakan, mari tambahkan rata-rata pergerakan 360 hari kalender 90 dan 360 berarti rata-rata bergulirRangkaian ini sekarang tampak lebih mulus, dan Anda dapat melihat dengan lebih jelas saat tren jangka pendek menyimpang dari tren jangka panjang, misalnya saat rata-rata 90 hari turun di bawah rata-rata 360 hari pada tahun 2015 Mirip dengan dot-groupby, Anda juga dapat menghitung beberapa metrik sekaligus, menggunakan metode dot-agg. Dengan rata-rata pergerakan 90 hari dan standar deviasi, Anda dapat dengan mudah membedakan periode volatilitas tinggi Rata-rata pergerakan 90 hari dan standar deviasiTerakhir, mari tampilkan median bergulir 360 hari kalender, atau kuantil 50 persen, di samping kuantil 10 dan 90 persen. Sekali lagi Anda dapat melihat bagaimana rentang harga saham telah berevolusi dari waktu ke waktu, dengan beberapa periode lebih tidak stabil daripada yang lain Median bergulir 90 hari kalender, kuantil 10 dan 90 persen3. 2. Memperluas fungsi jendela dengan pandaKami akan beralih dari jendela bergulir ke jendela yang diperluas. Anda sekarang akan menghitung metrik untuk grup yang bertambah besar untuk mengecualikan semua data hingga tanggal saat ini. Setiap titik data dari deret waktu yang dihasilkan mencerminkan semua nilai historis hingga saat itu. Memperluas jendela berguna untuk menghitung misalnya tingkat pengembalian kumulatif, atau maksimum atau minimum yang berjalan. Di panda, Anda dapat menggunakan salah satu metode memperluas, yang berfungsi seperti menggulung, atau dalam beberapa kasus, metode singkatan untuk jumlah kumulatif, produk, min, dan maks Kami akan menggunakan data S&P500 selama sepuluh tahun terakhir dalam contoh praktis di bagian ini. Pertama-tama mari kita lihat cara menghitung pengembalian. Pengembalian periode sederhana hanyalah harga saat ini dibagi dengan harga terakhir dikurangi 1. Pengembalian selama beberapa periode adalah produk dari semua pengembalian periode setelah menambahkan 1 dan kemudian mengurangkan 1 dari produk Jadi untuk lebih jelasnya, periode kembali adalah. r(t) = (p(t)/p(t-1)) -1 dan pengembalian multi-periode adalah. R(T) = (1+r(1))(1+r(2))……. (1+r(T)) — 1 Panda membuat perhitungan ini mudah ‘ Anda telah melihat metode untuk perubahan persen(. pct_change) dan matematika dasar (. beda(),. div(),. mul()), dan sekarang Anda akan belajar tentang produk kumulatif Untuk mendapatkan tingkat pengembalian kumulatif atau berjalan pada SP500, cukup ikuti langkah-langkah yang dijelaskan di atas. Hitung pengembalian periode dengan perubahan persen, dan tambahkan 1 Hitung produk kumulatif, dan kurangi satu. Anda dapat mengalikan hasilnya dengan 100, dan memplot hasilnya dalam bentuk persentase. Kode untuk ini ditunjukkan di bawah ini Dari plot terlihat bahwa SP500 naik 60% sejak 2007, meski sempat turun 60% di tahun 2009. Anda juga dapat dengan mudah menghitung min dan maks berjalan dari deret waktu. Terapkan saja metode perluasan dan metode agregasi masing-masing Garis oranye dan hijau menguraikan min dan maks hingga tanggal saat ini untuk setiap hari. Anda juga bisa menggabungkan konsep rolling window dengan perhitungan kumulatif. Mari kita hitung tingkat pengembalian tahunan bergulir, yaitu pengembalian kumulatif untuk semua periode 360 hari kalender selama periode sepuluh tahun yang dicakup oleh data. Perhitungan kumulatif ini tidak tersedia sebagai metode bawaan. Tapi tidak masalah cukup tentukan fungsi multiperiod Anda sendiri, dan gunakan terapkan untuk menjalankannya pada data di jendela bergulir. Data di jendela bergulir tersedia untuk fungsi multi_period_return Anda sebagai larik numpy. Tambahkan 1 untuk menambah semua pengembalian, terapkan fungsi produk numpy, dan kurangi satu untuk menerapkan rumus dari atas. Lewati saja fungsi ini untuk diterapkan setelah membuat jendela 360 hari kalender untuk pengembalian harian. Lipat gandakan pengembalian 1 tahun bergulir dengan 100 untuk menunjukkannya dalam persentase, dan plot di samping indeks menggunakan subplot sama dengan Benar Hasilnya menunjukkan ayunan pengembalian tahunan yang besar setelah krisis 2008 3. 4. Jalan acak dan simulasiPengembalian saham harian terkenal sulit diprediksi, dan model sering menganggap mereka mengikuti jalan acak. Kami akan menggunakan NumPy untuk menghasilkan angka acak, dalam konteks deret waktu. Anda juga akan menggunakan produk kumulatif lagi untuk membuat serangkaian harga dari serangkaian pengembalian Pada contoh pertama, kita akan menghasilkan bilangan acak dari distribusi normal berbentuk lonceng. Ini berarti bahwa nilai di sekitar rata-rata lebih mungkin terjadi daripada yang ekstrem, seperti yang cenderung terjadi pada return saham. Dalam contoh kedua, Anda akan secara acak memilih pengembalian S&P 500 aktual untuk kemudian mensimulasikan harga S&P 500 Untuk menghasilkan angka acak, pertama-tama impor distribusi normal dan fungsi seed dari modul acak numpy. Juga, impor paket norm dari scipy untuk membandingkan distribusi normal dengan sampel acak Anda. Hasilkan 1000 pengembalian acak dari fungsi normal numpy, dan bagi dengan 100 untuk menskalakan nilai dengan tepat. Mari plot distribusi 1.000 pengembalian acak, dan paskan distribusi normal dengan sampel Anda. Anda dapat melihat bahwa sampel sangat cocok dengan bentuk distribusi normal Distribusi normal dan 1000 pengembalian acakUntuk membuat jalur harga acak dari pengembalian acak Anda, kami akan mengikuti prosedur dari subbagian, setelah mengubah array numpy menjadi Seri panda. Tambahkan 1 ke pengembalian periode, hitung produk kumulatif, dan kurangi 1. Plot pengembalian kumulatif, dikalikan dengan 100, dan Anda akan melihat harga yang dihasilkan Pengembalian acakSekarang mari simulasikan SP500 menggunakan jalan yang mengembang secara acak. Impor indeks 10 tahun terakhir, hilangkan nilai yang hilang, dan tambahkan pengembalian harian sebagai kolom baru ke DataFrame. Plot seri indeks dan pengembalian menunjukkan kisaran pengembalian harian tipikal antara +/2–3 persen, serta beberapa outlier selama krisis 2008 Perbandingan distribusi pengembalian S&P 500 dengan distribusi normal menunjukkan bahwa bentuknya tidak cocok dengan baik. Ini adalah temuan tipikal ‘ pengembalian saham harian cenderung memiliki outlier lebih sering daripada yang disarankan oleh distribusi normal Sekarang mari kita pilih secara acak dari pengembalian S&P 500 yang sebenarnya. Anda akan menggunakan fungsi pilihan dari modul acak Numpy. Ini mengembalikan larik NumPy dengan sampel acak dari daftar angka ‘ dalam kasus kami, S&P 500 mengembalikan. Berikan saja sampel yang dikembalikan dan jumlah pengamatan yang Anda inginkan ke fungsi pilihan. Selanjutnya, ubah larik NumPy menjadi seri panda, dan tetapkan indeks ke tanggal pengembalian S&P 500. Jalan acak Anda akan dimulai dengan harga S&P 500 pertama Gunakan metode 'pertama' dengan offset hari kalender untuk memilih harga S&P 500 pertama. Kemudian tambahkan 1 ke pengembalian acak, dan tambahkan seri pengembalian ke nilai awal. Sekarang Anda siap untuk menghitung pengembalian kumulatif berdasarkan nilai awal S&P 500 yang sebenarnya. Tambahkan 1, hitung produk kumulatif, dan kurangi satu. Hasilnya adalah jalan acak untuk SP500 berdasarkan sampel acak dari pengembalian sebenarnya 3. 4. Korelasi antara deret waktuKorelasi adalah ukuran kunci dari hubungan linier antara dua variabel. Di pasar keuangan, korelasi antara pengembalian aset penting untuk model prediktif dan manajemen risiko, misalnya. Panda dan seaborn memiliki berbagai alat untuk membantu Anda menghitung dan memvisualisasikan hubungan ini Koefisien korelasi melihat hubungan berpasangan antara variabel dan mengukur kesamaan pergerakan berpasangan dari dua variabel di sekitar rata-rata masing-masing. Pergerakan bersama berpasangan ini disebut kovarians. Koefisien korelasi membagi ukuran ini dengan produk dari standar deviasi untuk setiap variabel. Akibatnya, koefisien bervariasi antara -1 dan +1. Semakin dekat koefisien korelasi dengan plus atau 1 atau minus 1, maka plot pasangan kedua deret tersebut akan semakin menyerupai garis lurus. Tanda koefisien menyiratkan hubungan positif atau negatif. Hubungan positif berarti bahwa ketika satu variabel berada di atas rata-ratanya, yang lain mungkin juga berada di atas rata-ratanya, dan sebaliknya untuk hubungan negatif. Namun, ada banyak jenis hubungan non-linier yang tidak ditangkap oleh koefisien korelasi kami akan menggunakan seri harga ini untuk lima aset untuk menganalisis hubungan mereka di bagian ini. Anda sekarang memiliki data 10 tahun untuk dua indeks saham, indeks obligasi, minyak, dan emas Seaborn memiliki joint plot yang sangat memudahkan untuk menampilkan distribusi setiap variabel bersamaan dengan scatter plot yang menunjukkan joint distribution. Kami akan menggunakan pengembalian harian untuk analisis kami. Plot bersama mengambil DataFrame, lalu dua label kolom untuk setiap sumbu. S&P 500 dan indeks obligasi misalnya memiliki korelasi rendah mengingat point cloud yang lebih menyebar dan korelasi negatif seperti yang ditunjukkan oleh tren penurunan poin data. Panda memungkinkan Anda menghitung semua koefisien korelasi berpasangan dengan metode tunggal yang disebut dot-corr. Terapkan ke pengembalian DataFrame, dan Anda mendapatkan DataFrame baru dengan koefisien berpasangan. Data secara alami simetris di sekitar diagonal, yang hanya berisi nilai 1 karena korelasi suatu variabel dengan dirinya sendiri tentu saja 1 Seaborn lagi menawarkan alat yang rapi untuk memvisualisasikan koefisien korelasi berpasangan. Peta panas mengambil DataFrame dengan koefisien korelasi sebagai input dan memvisualisasikan setiap nilai pada skala warna yang mencerminkan rentang nilai yang relevan. Parameter annot sama dengan True memastikan bahwa nilai koefisien korelasi juga ditampilkan. Anda dapat melihat bahwa korelasi pengembalian harian di antara berbagai kelas aset sedikit berbeda 4. Menyatukan semuanya. Membangun indeks nilai tertimbang Bab ini menggabungkan konsep-konsep sebelumnya dengan mengajari Anda cara membuat indeks nilai tertimbang. Indeks ini menggunakan data kapitalisasi pasar yang terdapat pada daftar bursa untuk menghitung bobot dan informasi harga saham tahun 2016. Performa indeks kemudian dibandingkan dengan tolok ukur untuk mengevaluasi performa indeks yang Anda buat Untuk membangun indeks berbasis nilai, Anda akan melakukan beberapa langkah. Anda akan memilih perusahaan terbesar dari setiap sektor dengan menggunakan data bursa aktual sebagai komponen indeks. Kemudian, Anda akan menghitung jumlah saham untuk setiap perusahaan, dan memilih rangkaian harga saham yang cocok dari sebuah file. Selanjutnya, Anda akan menghitung bobot untuk setiap perusahaan, dan berdasarkan ini indeks untuk setiap periode. Anda juga akan mengevaluasi dan membandingkan kinerja indeks 4. 1 Pilih komponen indeks & impor dataPertama, mari impor data perusahaan menggunakan fungsi read_excel panda. Anda akan mengimpor lembar kerja ini dengan info daftar dari bursa tertentu sambil memastikan nilai yang hilang dikenali dengan benar Selanjutnya, pindahkan ticker saham ke dalam indeks. Karena Anda akan memilih perusahaan terbesar dari setiap sektor, hapus perusahaan tanpa informasi sektor. Anda dapat menggunakan kata kunci 'subset' untuk mengidentifikasi satu atau beberapa kolom untuk memfilter nilai yang hilang. Anda telah melihat kata kunci 'inplace' untuk menghindari pembuatan salinan DataFrame. Terakhir, bagi kapitalisasi pasar dengan 1 juta untuk menyatakan nilai dalam juta USD. Hasilnya adalah 2177 perusahaan dari bursa saham NYSE Untuk memilih perusahaan terbesar di setiap sektor, kelompokkan perusahaan tersebut berdasarkan sektor, pilih kolom kapitalisasi pasar dan terapkan metode terbesar dengan parameter 1. Hasilnya adalah Seri dengan kapitalisasi pasar jutaan dengan MultiIndex Tingkat indeks pertama berisi sektor, dan yang kedua adalah ticker saham. Untuk memilih ticker dari level indeks kedua, pilih indeks seri, dan terapkan metode 'get_level_values' dengan nama indeks 'Simbol Saham'. Anda juga dapat menggunakan nilai 1 untuk memilih level indeks kedua. Cetak ticker, dan Anda melihat bahwa hasilnya adalah indeks DataFrame tunggal. Gunakan metode dot-tolist untuk mendapatkan hasil berupa daftar Terakhir, gunakan daftar ticker untuk memilih saham Anda dari serangkaian rangkaian waktu harga terkini yang diimpor menggunakan read_csv 4. 2 Bangun indeks tertimbang kapitalisasi pasarUntuk menyusun indeks tertimbang kapitalisasi pasar, Anda perlu menghitung jumlah saham menggunakan kapitalisasi pasar dan harga saham terbaru, karena kapitalisasi pasar hanyalah produk dari jumlah saham dan harga setiap saham. Selanjutnya, Anda akan menggunakan harga saham historis untuk mengonversinya menjadi serangkaian nilai pasar. Kemudian ubah menjadi indeks dengan menormalkan seri untuk memulai dari 100. Anda juga akan melihat pengembalian indeks dan kontribusi setiap komponen terhadap hasilnya Untuk menghitung jumlah saham, tinggal membagi kapitalisasi pasar dengan harga terakhir. Karena kami mengukur kapitalisasi pasar dalam jutaan USD, Anda juga mendapatkan saham dalam jutaan. Sekarang Anda dapat melipatgandakan seri harga saham historis Anda dengan jumlah saham Hasilnya adalah rangkaian waktu kapitalisasi pasar, yaitu nilai pasar saham masing-masing perusahaan. Dengan memilih hari pertama dan hari terakhir dari seri ini, Anda dapat membandingkan bagaimana nilai pasar setiap perusahaan berkembang sepanjang tahun Sekarang Anda hampir memiliki index. hanya mendapatkan nilai pasar untuk semua perusahaan per periode menggunakan metode penjumlahan dengan sumbu parameter sama dengan 1 untuk menjumlahkan setiap baris Sekarang Anda hanya perlu menormalkan seri ini untuk memulai dari 1 dengan membagi seri dengan nilai pertamanya, yang Anda dapatkan menggunakan dot-iloc. Lipat gandakan hasilnya dengan 100 dan Anda mendapatkan nilai awal yang mudah yaitu 100 di mana perbedaan dari nilai awal adalah perubahan dalam persentase 4. 3. Mengevaluasi kinerja indeksSekarang setelah Anda membuat indeks berbobot, Anda dapat menganalisis kinerjanya. Elemen penting dari analisis Anda akan. Pertama, lihat pengembalian indeks, dan kontribusi setiap komponen terhadap hasilnya. Selanjutnya, bandingkan kinerja indeks Anda dengan tolok ukur seperti S&P 500, yang mencakup pasar yang lebih luas, dan juga berbobot nilai. Anda dapat membandingkan kinerja keseluruhan atau rolling return untuk sub-periode Pertama, mari kita lihat kontribusi masing-masing saham terhadap total nilai tambah sepanjang tahun. Kurangi nilai terakhir kapitalisasi pasar agregat dari yang pertama untuk melihat bahwa perusahaan dalam indeks menambahkan kapitalisasi pasar sebesar 315 miliar dolar. Untuk melihat seberapa besar kontribusi masing-masing perusahaan terhadap perubahan total, terapkan metode diff ke nilai terakhir dan pertama dari rangkaian kapitalisasi pasar per perusahaan dan periode. Baris terakhir sekarang berisi total perubahan kapitalisasi pasar sejak hari pertama. Anda dapat memilih baris terakhir menggunakan dot-loc dan tanggal yang berkaitan dengan baris terakhir, atau iloc dengan parameter -1 Untuk menghitung kontribusi setiap komponen terhadap pengembalian indeks, pertama-tama mari kita hitung bobot komponen. Pilih kapitalisasi pasar untuk komponen indeks. Hitung bobot komponen dengan membagi kapitalisasi pasarnya dengan jumlah kapitalisasi pasar semua komponen. Seperti yang Anda lihat, bobotnya bervariasi antara 2 dan 13%. Sekarang hitung total pengembalian indeks dengan membagi nilai indeks terakhir dengan nilai pertama, dikurangi 1, dan dikalikan dengan 100 Sekarang mari kita lanjutkan dan bandingkan kinerja indeks gabungan dengan S&P 500 untuk periode yang sama. Ubah seri indeks menjadi DataFrame sehingga Anda dapat menyisipkan kolom baru. Impor data dari Federal Reserve seperti sebelumnya. Kemudian normalkan S&P 500 untuk memulai dari 100 seperti indeks Anda, dan masukkan sebagai kolom baru, lalu plot kedua deret waktu. Anda dapat melihat bahwa indeks Anda melakukan beberapa poin persentase lebih baik untuk periode tersebut Terakhir, untuk membandingkan kinerja selama berbagai subperiode, buat fungsi multi-periode-return yang menggabungkan larik NumPy dari periode kembali ke multi-periode return seperti yang Anda lakukan di bab 3. Buat pengembalian harian indeks Anda dan S&P 500, jendela bergulir 30 hari kalender, dan terapkan fungsi baru Anda. Plot menunjukkan semua pengembalian 30 hari untuk salah satu seri dan menggambarkan kapan sebaiknya diinvestasikan dalam indeks Anda atau S&P 500 untuk periode 30 hari Bergabunglah dengan Medium dengan tautan referensi saya - Youssef HosniBaca setiap cerita dari Youssef Hosni (dan ribuan penulis lain di Medium). Biaya keanggotaan Anda secara langsung mendukung…youssefraafat57. medium. com Terima kasih sudah membaca. Jika Anda menyukai artikelnya, pastikan untuk bertepuk tangan (hingga 50. ) dan terhubung dengan saya di LinkedIn dan ikuti saya di Medium untuk terus mengikuti artikel baru saya Bagaimana cara mengubah data harian menjadi data bulanan di panda?Seperti yang Anda lihat, data harian kami diubah menjadi mingguan tanpa kehilangan nama kolom dan tanggal lain sebagai indeks. Anda juga dapat mengonversi ke bulan hanya dengan menggunakan “m” daripada “w” . Untuk Misalnya. df. contoh ulang(“m”).
Bagaimana cara mengonversi data harian menjadi mingguan dengan Python?Metode 1. menggunakan for-loop Python . Fungsi new_case_count() mengambil objek DataFrame, mengulanginya dan mengonversi indeks, yang merupakan tanggal dalam format string, ke format Pandas Datetime. Berdasarkan tanggal hari dalam seminggu, jumlah kasus baru setiap minggu dihitung dan disimpan dalam daftar.
Bagaimana Anda mengonversi laba harian menjadi laba bulanan?Cukup ganti 365 dengan jumlah periode pengembalian yang sesuai dalam setahun. Jadi, untuk pengembalian mingguan, Anda akan menaikkan bagian pengembalian harian dari persamaan ke pangkat 52. Untuk pengembalian bulanan, Anda akan menggunakan 12 . Dan, untuk pengembalian triwulanan, Anda akan menggunakan kekuatan keempat.
Bagaimana cara mengonversi data harian menjadi bulanan di tabel pivot?Klik kanan pada sel mana pun dalam kolom Tanggal dan pilih Grup dari daftar keluar. Kemudian pilih Bulan di kotak dialog . |