Solusi mudah untuk mengakses data fundamental dengan lebih sedikit coding

Perkenalan

Data keuangan yang memadai dan andal sangat penting bagi para pedagang karena data tersebut mempengaruhi keputusan investasi mereka secara lebih luas. Oleh karena itu, proses pendataan dipertimbangkan dan dilakukan secara serius oleh para pedagang untuk memaksimalkan keunggulan mereka terhadap pasar.

Sekarang, data keuangan dapat diekstraksi menggunakan python dengan dua cara berbeda. Cara pertama adalah dengan memanfaatkan API finansial yang ditawarkan oleh berbagai penyedia dan melakukan panggilan API untuk mendapatkan data yang diinginkan. Cara kedua adalah dengan memanfaatkan paket/perpustakaan python sumber terbuka untuk mengambil data.

Kebanyakan orang lebih memilih cara kedua untuk mengekstraksi data yaitu melalui paket python sumber terbuka. Hal ini terutama disebabkan oleh fakta bahwa mendapatkan data menggunakan API keuangan memerlukan upaya yang lebih besar dibandingkan menggunakan paket sumber terbuka dan hal ini menjadi hambatan bagi pemrogram pemula.

Pada artikel ini, kita akan fokus pada paket python bernama eod yang membantu proses pengumpulan data dengan menyediakan jenis data keuangan yang andal dan berbeda. Tanpa basa-basi lagi, mari selami artikelnya!

baik

Sebelum beralih ke bagian pemrograman, penting untuk mengetahui tentang paket yang akan kita gunakan dalam artikel ini. eod adalah pustaka python sumber terbuka yang mendukung sejumlah besar data pasar sehingga dapat diakses oleh setiap pedagang. Paket ini dikembangkan oleh EOD Historical Data APIs (“EODHD APIs”) yang merupakan pemain utama di arena penyedia API keuangan. Mereka membuat proyek sumber terbuka ini dengan tujuan memungkinkan pemrogram pemula berinteraksi dengan API mereka dengan cara yang lebih mudah.

Ada dua keuntungan utama menggunakan paket eod. Pertama, data dapat diekstraksi dengan cara yang sangat mudah dan memerlukan lebih sedikit pengkodean untuk menyelesaikan tugas. Kedua, karena paket ini didukung oleh API finansial EODHD, pengguna memiliki akses ke beragam data pasar mulai dari informasi dasar hingga informasi unik dan penting.

Implementasi Python

Pada bagian ini, kita akan membahas beberapa pengkodean dengan python untuk mengekstrak berbagai data pasar yaitu data fundamental, data harga historis atau akhir hari, data intraday, dan data real-time. Berikut adalah garis besar dasar bagian ini untuk memudahkan tindak lanjut:

1. Importing Packages
2. API Key Activation
3. Fundamental Data
4. Historical Data
5. Intraday Data
6. Real-time Data

Dua topik pertama sebagian besar berkaitan dengan pengaturan lingkungan pemrograman python, dan topik lainnya terkait dengan proses ekstraksi data.

Dari topik ketiga, dilakukan proses tambahan seperti analisis data terhadap data yang diekstraksi untuk memberikan intisari kegunaan praktis dari data yang diperoleh. Mengikuti langkah-langkah tambahan ini tidak wajib, tetapi sangat disarankan untuk melakukannya.

Karena setiap topik berisi penjelasan mendalam dan proses pengkodean yang ekstensif, artikel ini dibagi menjadi beberapa bagian. Artikel ini jelas merupakan bagian pertama dari seri di mana kita akan fokus hanya pada ekstraksi data Fundamental dan topik lainnya akan dibahas di bagian mendatang. Oleh karena itu, mari kita lakukan coding!

Mengimpor Paket

Langkah pertama dan terpenting dalam menyiapkan lingkungan pengkodean adalah mengimpor paket yang diperlukan. Pada artikel ini, kita akan menggunakan tujuh paket berbeda yaitu eod untuk ekstraksi data keuangan, pandas untuk manipulasi data, matplotlib untuk visualisasi data, datetime untuk bekerja dengan tanggal dan waktu, time untuk fungsi terkait waktu tertentu, termcolor untuk menyesuaikan hasil cetak, dan terakhir mplfinance untuk visualisasi finansial. Kode berikut akan mengimpor semua paket yang disebutkan ke dalam lingkungan python kita:

from eod import EodHistoricalData
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
import time
from termcolor import colored as cl 
import mplfinance as mf
plt.style.use('fivethirtyeight')
plt.rcParams['figure.figsize'] = [20, 10]

Dari kode yang disajikan di atas, perlu diperhatikan bahwa selain mengimpor paket penting, kami juga membuat beberapa perubahan pada pengaturan paket matplotlib default untuk menyesuaikan tema dan ukuran visualisasi. Ini adalah langkah opsional yang dilakukan untuk mempercantik plot yang akan dihasilkan nanti di artikel ini.

Selain itu, jika Anda belum menginstal paket apa pun yang diimpor, pastikan untuk melakukannya menggunakan perintah pip di terminal Anda.

Aktivasi Kunci API

Penting untuk mendaftarkan kunci API EODHD dengan paket agar dapat menggunakan fungsinya. Jika Anda tidak memiliki kunci API EODHD, pertama-tama, kunjungi situs web mereka, lalu selesaikan proses pendaftaran untuk membuat akun EODHD, dan terakhir, navigasikan ke halaman 'Pengaturan' di mana Anda bisa temukan kunci API EODHD rahasia Anda. Penting untuk memastikan bahwa kunci API rahasia ini tidak diungkapkan kepada siapa pun. Anda dapat mengaktifkan kunci API dengan mengikuti kode ini:

api_key = '<YOUR API KEY>'
client = EodHistoricalData(api_key)

Kode ini cukup sederhana. Di baris pertama, kita menyimpan kunci API EODHD rahasia ke dalam api_key dan kemudian di baris kedua, kita menggunakan kelas EodHistoricalData yang disediakan oleh paket eod untuk mengaktifkan kunci API dan menyimpan respons di variabel client.

Perhatikan bahwa Anda perlu mengganti <YOUR API KEY> dengan kunci API EODHD rahasia Anda. Selain langsung menyimpan kunci API dengan teks, ada cara lain untuk keamanan yang lebih baik seperti memanfaatkan variabel lingkungan, dan lain sebagainya.

Mengekstraksi Data Fundamental

Data fundamental terdiri dari informasi umum tentang status dan posisi keuangan suatu ekuitas. Jenis data ini memainkan peran penting dalam proses analisis dan membantu memastikan keputusan investasi para pedagang. Data fundamental dari ekuitas tertentu dapat dengan mudah diekstraksi menggunakan kode berikut:

ticker = 'AAPL.US'
aapl_f_info = client.get_fundamental_equity(ticker)
aapl_f_info_keys = list(aapl_f_info.keys())
for i in range(len(aapl_f_info_keys)):
    print(cl(f'{i+1}. {aapl_f_info_keys[i]}', attrs = ['bold']))

Pada baris pertama kode, kita membuat variabel untuk menyimpan simbol ekuitas yang ingin kita ekstrak, yang dalam kasus kita adalah Apple. Kemudian, dengan menggunakan fungsi get_fundamental_equity yang disediakan oleh paket eod, kami mengekstrak data dasar Apple.

Fungsi ini terdiri dari dua parameter: ticker dan filter_ . Pada kode di atas, hanya field ticker yang digunakan yang mengambil simbol saham sebagai inputnya yang dalam kasus kita adalah Apple (AAPL.US). Bidang filter_ akan digunakan nanti di bagian artikel ini.

Terakhir, kami menyimpan respon dalam variabel aapl_f_info. Selain dua baris kode ini, baris kode lainnya bersifat opsional dan ditulis untuk menghasilkan keluaran berikut:

1. General
2. Highlights
3. Valuation
4. SharesStats
5. Technicals
6. SplitsDividends
7. AnalystRatings
8. Holders
9. InsiderTransactions
10. ESGScores
11. outstandingShares
12. Earnings
13. Financials

Output yang dihasilkan di atas adalah daftar semua detail yang terkandung dalam data fundamental Apple yang diekstraksi. Jelas terlihat bahwa data fundamental memberikan penggunanya informasi dalam jumlah yang cukup mulai dari rincian umum hingga keuangan perusahaan dan bahkan transaksi orang dalam.

Namun beberapa orang mungkin merasa sedikit kewalahan dengan banyaknya data karena mereka hanya mencari detail tertentu dari sebuah perusahaan. Di sinilah parameter filter_ yang kita bahas sebelumnya ikut berperan.

Seperti namanya, parameter filter_ dapat digunakan untuk memfilter data dasar dan hanya mengekstrak detail yang diperlukan oleh pengguna. Misalnya, jika seseorang hanya tertarik pada bagian Penghasilan pada data fundamental, maka hal tersebut dapat dengan mudah diekstraksi dengan mengikuti kode ini:

earnings = client.get_fundamental_equity(ticker, filter_ = 'Earnings::History')
earnings_dates = list(earnings.keys())
cols = list(earnings[earnings_dates[0]].keys())
earnings_df = pd.DataFrame(columns = cols)
for i in range(len(earnings_dates)):
    data = earnings[earnings_dates[i]]
    earnings_df.loc[i] = data
earnings_df = earnings_df.drop('reportDate', axis = 1).set_index('date').dropna()
earnings_df = earnings_df.iloc[::-1]

Baris yang paling menuntut perhatian adalah baris pertama. Ini sangat mirip dengan apa yang kita lakukan sebelumnya tetapi satu-satunya perubahan adalah penambahan parameter filter_ pada fungsi get_fundamental_equity. Parameter filter_ mengharapkan format berikut:

<MainCategory>::<SubCategory 1>::<SubCategory 2>....

Di sini, <MainCategory> mengacu pada salah satu dari tiga belas kategori yang sebelumnya diwakili dalam keluaran dan <SubCategory> mengacu pada subdivisi yang ada di dalam masing-masing kategori utama. Pada kode di atas, kami menentukan hingga <SubCategory 1> namun dapat dipersempit lebih lanjut berdasarkan subdivisi yang tersisa.

Baris kode lainnya sebagian besar berfokus pada pengerjaan data yang diekstraksi yang terdiri dari berbagai proses pembersihan data, pemformatan data, dan manipulasi data. Hasil akhirnya adalah kerangka data Pandas yang terlihat seperti ini:

Analisis data

Sekarang kita memiliki data yang diformat dengan baik untuk dikerjakan, mari kita lakukan beberapa analisis data. Sebelum mendalami proses analisis data, kita perlu memahami istilah-istilah yang terkandung dalam kerangka data.

Pertama, EPS mengacu pada Laba Per Saham. Seperti namanya, ini menunjukkan berapa banyak uang yang dihasilkan perusahaan dari satu saham. Dalam bingkai data, kami memiliki tiga kolom yang terkait dengan EPS yaitu: epsActual , epsEstimate , epsDifference . Nama-nama kolom sudah cukup jelas. Kedua,

Persen Kejutan (surprisePercent) mengacu pada pendapatan yang diperoleh melebihi estimasi aktual para analis untuk kuartal tertentu. Misalnya, pada baris ketiga, kita dapat melihat bahwa surprisePercent adalah 10 yang berarti pendapatan Apple selama kuartal tersebut mengalahkan perkiraan analis sebesar 10%.

Kolom yang akan menjadi fokus utama kami untuk proses analisis adalah kolom terkait EPS. Sekarang, kita tidak akan melakukan analisis data secara ekstensif namun hanya melihat sekilas datanya dan cara terbaik untuk melakukannya adalah dengan menjalankan analisis tren. Cara yang paling disukai untuk menganalisis tren data adalah melalui visualisasi data. Kode berikut akan menghasilkan dua plot berbeda untuk pemahaman data yang lebih baik:

earnings_df[['epsActual', 'epsEstimate', 'epsDifference']].plot()
plt.title('AAPL EARNINGS HISTORY')
earnings_df[['epsActual', 'epsEstimate', 'epsDifference']].cumsum().plot()
plt.title('AAPL EARNINGS HISTORY (CUMULATIVE)')

Kode ini sangat sederhana sehingga tidak memerlukan penjelasan mendalam. Di sini, paket Pandas dan matplotlib digunakan dalam proses visualisasi meskipun banyak yang lebih memilih menggunakan matplotlib saja. Kode tersebut menghasilkan dua diagram garis yang terlihat seperti ini:

Gambar di sebelah kiri adalah diagram garis yang menunjukkan tren dari tiga data terkait EPS yang berbeda selama bertahun-tahun dan gambar di sebelah kanan menunjukkan angka pendapatan kumulatif Apple. Dengan mengamati kedua grafik ini, cukup jelas bahwa pendapatan Apple bergerak ke arah positif yang kuat dan tren ini kemungkinan besar akan berlanjut.

Namun satu hal yang perlu diperhatikan secara serius adalah lambatnya penurunan epsDifference yang menunjukkan perbedaan antara pendapatan aktual yang diperoleh dan perkiraan pendapatan para analis. Jadi ketika angka epsDifference mencapai angka negatif, hal ini menunjukkan bahwa pendapatan aktual Apple tidak sesuai dengan nilai yang diharapkan. Ini mungkin bukan masalah yang besar, tetapi tetap saja, dapat dikatakan bahwa ini layak untuk dipertimbangkan.

Catatan Penutup

Pada artikel ini, kita telah mempelajari tentang paket baru bernama eod dan bagaimana paket tersebut dapat digunakan untuk mengekstrak data fundamental ekuitas. Untuk melangkah lebih jauh, kami melakukan beberapa analisis data dasar pada data yang diekstraksi dan memberikan beberapa wawasan mengenai tren pendapatan saham.

Artikel ini akan dilanjutkan pada bagian selanjutnya untuk mengetahui berbagai fungsi paket eod dan artikel selanjutnya akan fokus pada ekstraksi data historis aset menggunakan paket ini. Jadi nantikan bagian selanjutnya segera. Dengan demikian, Anda telah mencapai bagian akhir artikel. Semoga Anda mempelajari sesuatu yang baru hari ini. Selamat membuat kode!