Analisis Keuangan Umum dengan Python (Bagian 1)

Artikel terakhir membahas bagaimana Anda bisa mendapatkan informasi tentang instrumen keuangan. Selanjutnya, beberapa artikel akan dipublikasikan tentang apa yang awalnya dapat dilakukan dengan data yang diperoleh, bagaimana menganalisis dan menyusun strategi. Materi didasarkan pada publikasi dalam sumber dan kursus asing di salah satu platform online.

Artikel ini akan membahas cara menghitung profitabilitas, volatilitas, dan membangun salah satu indikator utama.

import pandas as pd
import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt

sber = yf.download('SBER.ME','2016-01-01')

Profitabilitas


Nilai ini merupakan persentase perubahan nilai saham untuk satu hari perdagangan. Itu tidak memperhitungkan dividen dan komisi akun. Mudah untuk menghitung menggunakan fungsi pct_change () dari paket Pandas.

Sebagai aturan, log profitabilitas digunakan, karena memungkinkan Anda untuk lebih memahami dan menyelidiki perubahan seiring waktu.

#   `
daily_close = sber[['Adj Close']]

#  
daily_pct_change = daily_close.pct_change()

#  NA   0
daily_pct_change.fillna(0, inplace=True)

print(daily_pct_change.head())

#   
daily_log_returns = np.log(daily_close.pct_change()+1)

print(daily_log_returns.head())

gambar

Untuk mengetahui profitabilitas mingguan dan / atau bulanan dari data yang diperoleh, gunakan fungsi resample ().

#   `sber`      
monthly = sber.resample('BM').apply(lambda x: x[-1])

#  
print(monthly.pct_change().tail())

#  `sber`        
quarter = sber.resample("4M").mean()

#  
print(quarter.pct_change().tail())

gambar

Fungsi pct_change () nyaman digunakan, tetapi pada gilirannya menyembunyikan bagaimana nilai diperoleh. Perhitungan serupa, yang akan membantu memahami mekanisme, dapat dilakukan dengan menggunakan shift () dari paket dari paket Pandas. Harga penutupan harian dibagi dengan harga masa lalu (digeser oleh satu) dan unit dikurangkan dari nilai yang diterima. Tetapi ada satu minus kecil - nilai pertama sebagai hasilnya adalah NA.

Perhitungan profitabilitas didasarkan pada rumus:

gambar

Di mana, p adalah harga, t adalah waktu instan dan r adalah profitabilitas.

Selanjutnya, diagram distribusi profitabilitas dibuat dan statistik utama dihitung:

#  
daily_pct_change = daily_close / daily_close.shift(1) - 1

print(daily_pct_change.head())

gambar

#  `daily_pct_c`
daily_pct_change.hist(bins=50)

plt.show()

#  
print(daily_pct_change.describe())

gambar

Distribusi terlihat sangat simetris dan terdistribusi normal dengan nilai 0,00. Untuk mendapatkan nilai statistik lainnya, fungsi description () digunakan. Akibatnya, terlihat bahwa nilai rata-rata sedikit lebih besar dari nol, dan standar deviasi hampir 0,02.

Pengembalian kumulatif


Pengembalian harian kumulatif berguna untuk menentukan nilai investasi selama periode waktu tertentu. Itu dapat dihitung seperti yang ditunjukkan pada kode di bawah ini.

#   
cum_daily_return = (1 + daily_pct_change).cumprod()

print(cum_daily_return.tail())

gambar

#    
cum_daily_return.plot(figsize=(12,8))

plt.show()

gambar

Anda dapat menghitung ulang hasil dalam periode bulanan:

#   
cum_monthly_return = cum_daily_return.resample("M").mean()

print(cum_monthly_return.tail())

gambar

Mengetahui cara menghitung pengembalian sangat berharga saat menganalisis saham. Tetapi itu bahkan lebih berharga jika dibandingkan dengan saham lain.

Ambil beberapa saham (pilihan mereka benar-benar acak) dan bangun grafik mereka.

ticker = ['AFLT.ME','DSKY.ME','IRAO.ME','PIKK.ME', 'PLZL.ME','SBER.ME','ENRU.ME']

stock = yf.download(ticker,'2018-01-01')

#    `daily_close_px`
daily_pct_change = stock['Adj Close'].pct_change()

# 
daily_pct_change.hist(bins=50, sharex=True, figsize=(20,8))

plt.show()

gambar

Grafik lain yang bermanfaat adalah matriks pencar. Itu dapat dengan mudah dibangun menggunakan fungsi scatter_matrix (), yang merupakan bagian dari panda library. Daily_pct_change digunakan sebagai argumen dan parameter Estimasi Densitas Kernel diatur. Selain itu, Anda dapat mengatur transparansi menggunakan parameter alfa dan ukuran grafik menggunakan parameter figsize.

from pandas.plotting import scatter_matrix

#   `daily_pct_change`  
scatter_matrix(daily_pct_change, diagonal='kde', alpha=0.1,figsize=(20,20))

plt.show()

gambar

Itu saja untuk saat ini. Artikel selanjutnya akan membahas menghitung volatilitas, rata-rata dan menggunakan metode kuadrat terkecil.

All Articles