(Acest articol a fost publicat pentru prima dată pe Ozancan Ozdemirși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)
Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.
Introducere
bddkR Pachetul oferă acces perfect la datele sectorului bancar turc, publicate de Agenția de Regulament Banking și Supraveghere (BDDK). Acest tutorial vă va ghida prin procesul de instalare și va demonstra diverse cazuri de utilizare pentru analiza datelor bancare turcești.
Instalare
Premise
Mai întâi, asigurați -vă că aveți dependențele necesare instalate:
install.packages(c("httr", "jsonlite", "dplyr", "writexl", "lubridate"))
Instalarea BDDKR
# Install devtools if not already installed
if (!require(devtools)) install.packages("devtools")
# Install bddkR from GitHub
devtools::install_github("ozancanozdemir/bddkR")
Încărcarea pachetului
library(bddkR)
Utilizare de bază
Înțelegerea parametrilor
Funcția principală fetch_data() Necesită mai mulți parametri:
start_year: Anul de început (de exemplu, 2023)start_month: Luna de pornire (1-12)end_year: Anul de sfârșit (de exemplu, 2024)end_month: Luna de încheiere (1-12)table_no: Numărul tabelului (1-17)currency: Tip valutar („TL” sau „USD”)group: Codul grupului bancar (10001-30003)lang: Limba („TR” pentru turcă, „ro” pentru engleză)save_excel: Salvați la Excel (True/Fals)
Prima dvs. tragere de date
Să începem cu un exemplu simplu – preluarea datelor bilanțului pentru băncile de depozit:
# Fetch balance sheet data for January 2024 balance_data <- fetch_data( start_year = 2024, start_month = 1, end_year = 2024, end_month = 1, table_no = 1, # Balance Sheet currency = "TL", group = 10001, # Deposit Banks lang = "en", save_excel = FALSE ) # View the structure of the data str(balance_data) head(balance_data)
Tabele și grupuri disponibile
Tabele financiare (table_no)
- Bilanţ – active, pasive și informații despre capitaluri proprii
- Situație de venit – Venituri, cheltuieli și date despre profit
- Portofoliu de împrumuturi – Detalii despre împrumut și clasificări
- Împrumuturi pentru consumatori – Date individuale de creditare
- Distribuția de credit sectorială – Împrumuturi pe sectoare economice
- Finanțarea IMM -urilor – Împrumuturi pentru întreprinderi mici și mijlocii
- Sindicare și securitizare – Instrumente complexe de finanțare
- Portofoliu de valori mobiliare – Dețineri de investiții
- Structura depozitului – Tipuri și valute de depozite
- Depozite bazate pe maturitate – Depozite după perioade de maturitate
- Indicatori de lichiditate – Valorile activelor de numerar și lichid
- Adecvarea capitalului – Raporturi de capital și cerințe
- Poziția valutară – Date de expunere în valută
- Articole din foaie off-balance – active și pasive contingente
- Raporturi financiare – Indicatori cheie de performanță
- Informații operaționale – Date de ramură, bancomat, personal
- Datele sucursalelor internaționale – Operațiuni de peste mări
Grupuri bancare (grup)
10001: Băncile de depozit10002: Băncile de dezvoltare și investiții10003: Băncile de participare10004: Toate băncile20001: Băncile de stat20002: Bănci private20003: Bănci străine30001: Bănci la scară largă30002: Bănci la scară medie30003: Bănci la scară mică
Exemple practice
Exemplul 1: Analiza bilanțului trimestrial
# Fetch quarterly balance sheet data for 2023 quarterly_balance <- fetch_data( start_year = 2023, start_month = 3, # March (Q1) end_year = 2023, end_month = 12, # December (Q4) table_no = 1, currency = "TL", group = 10004, # All Banks lang = "en" ) # View the data structure print(quarterly_balance) # Check available periods unique(quarterly_balance$Period)
Exemplul 2: Compararea tipurilor bancare
# Function to fetch data for different bank groups
fetch_bank_comparison <- function(table_num, year, month) {
bank_types <- list(
"State Banks" = 20001,
"Private Banks" = 20002,
"Foreign Banks" = 20003
)
results <- list()
for (bank_name in names(bank_types)) {
results((bank_name)) <- fetch_data(
start_year = year,
start_month = month,
end_year = year,
end_month = month,
table_no = table_num,
currency = "TL",
group = bank_types((bank_name)),
lang = "en"
)
}
return(results)
}
# Compare income statements across bank types for 2024
income_comparison <- fetch_bank_comparison(2, 2024, 6) # June 2024
# View results for each bank type
lapply(income_comparison, head)
Exemplul 3: Analiza multi-monedă
# Fetch the same data in both TL and USD for comparison
fetch_multi_currency <- function(table_num, year, month, group_code) {
# TL data
tl_data <- fetch_data(
start_year = year,
start_month = month,
end_year = year,
end_month = month,
table_no = table_num,
currency = "TL",
group = group_code,
lang = "en"
)
# USD data
usd_data <- fetch_data(
start_year = year,
start_month = month,
end_year = year,
end_month = month,
table_no = table_num,
currency = "USD",
group = group_code,
lang = "en"
)
return(list("TL" = tl_data, "USD" = usd_data))
}
# Get balance sheet data in both currencies
multi_currency_data <- fetch_multi_currency(1, 2024, 3, 10001)
# Compare the datasets
str(multi_currency_data$TL)
str(multi_currency_data$USD)
Exemplul 4: Analiza seriei de timp
# Fetch monthly data for a full year
monthly_loans <- fetch_data(
start_year = 2023,
start_month = 1,
end_year = 2023,
end_month = 12,
table_no = 3, # Loan Portfolio
currency = "TL",
group = 10001, # Deposit Banks
lang = "en"
)
# Basic time series exploration
library(dplyr)
# Group by period and calculate summary statistics
monthly_summary <- monthly_loans %>%
group_by(Period) %>%
summarise(
total_rows = n(),
periods_available = n_distinct(Period),
.groups="drop"
)
print(monthly_summary)
# Plot time series (if you have ggplot2 installed)
if (require(ggplot2)) {
# This is a basic example - you'll need to adapt based on actual column names
# monthly_loans %>%
# ggplot(aes(x = as.Date(Period), y = some_numeric_column)) +
# geom_line() +
# labs(title = "Banking Data Over Time")
}
Exemplul 5: Exportarea datelor în Excel
# Fetch data and save directly to Excel comprehensive_data <- fetch_data( start_year = 2024, start_month = 1, end_year = 2024, end_month = 6, table_no = 15, # Financial Ratios currency = "TL", group = 10004, # All Banks lang = "en", save_excel = TRUE # This will save the file automatically ) # The file will be saved as "bddk_2024_01_2024_06.xlsx" in your working directory
Exemplul 6: Colectarea datelor de lot
# Function to collect multiple tables for the same period
collect_comprehensive_data <- function(year, month, group_code, currency_type = "TL") {
# Define tables of interest
key_tables <- list(
"Balance_Sheet" = 1,
"Income_Statement" = 2,
"Loans" = 3,
"Deposits" = 9,
"Ratios" = 15
)
results <- list()
for (table_name in names(key_tables)) {
cat("Fetching", table_name, "data...n")
results((table_name)) <- fetch_data(
start_year = year,
start_month = month,
end_year = year,
end_month = month,
table_no = key_tables((table_name)),
currency = currency_type,
group = group_code,
lang = "en"
)
# Add a small delay to be respectful to the API
Sys.sleep(1)
}
return(results)
}
# Collect comprehensive data for June 2024
comprehensive_june_2024 <- collect_comprehensive_data(2024, 6, 10001)
# Check what we collected
names(comprehensive_june_2024)
lapply(comprehensive_june_2024, function(x) if(!is.null(x)) dim(x) else "No data")
Structura de date și numele coloanelor
Pachetul gestionează automat numirea coloanei pe baza răspunsului API. Iată ce să te aștepți:
Coloane comune în toate tabelele
Period: Data în format YYYY-MM-DDTable: Numele tabelului financiarOrder: Număr de secvență de rândSector: Descrierea rândului de date
Coloane specifice tabelului
Fiecare tabel va avea coloane specifice pe baza conținutului său:
- Bilanț: TP (Lira turcă), YP (monedă străină), Toplam (total)
- Situație de venit: diverse categorii de venituri și cheltuieli
- Date de împrumut: diferite tipuri de împrumuturi și clasificări
Gestionarea erorilor și depanarea
Probleme și soluții comune
- Nu au returnat date: Verificați dacă perioada solicitată a publicat date
# Always check if data is not NULL if (is.null(data)) { cat("No data available for the specified parametersn") }
