EA - εργασία 004


Βιβλιοθήκες Εργασίας

library(tidyverse)
library(lubridate)
library(janitor)
library(ggplot2)

1. Dataset


1.1 Περιγραφή του Dataset

Για την ανάλυση επιλέχθηκε το dataset Microsoft Stock Data. Το dataset περιέχει καθημερινά χρηματιστηριακά δεδομένα της εταιρείας Microsoft. Κάθε γραμμή αντιστοιχεί σε μια ημέρα συναλλαγής και περιλαμβάνει τα πεδία:

  • Date: η ημερομηνία της συναλλαγής
  • Open: η τιμή της μετοχής όταν άνοιξε το χρηματιστήριο την συγκεκριμένη ημέρα
  • High: η υψηλότερη τιμή που έφτασε η μετοχή μέσα στη μέρα
  • Low: η χαμηλότερη τιμή της μετοχής μέσα στη μέρα
  • Close: η τιμή της μετοχής όταν έκλεισε το χρηματιστήριο
  • Adj Close: τιμή κλεισίματος προσαρμοσμένη ώστε να αντικατοπτρίζει την αξία μετά τον υπολογισμό τυχόν εταιρικών ενεργειών
  • Volume: ο αριθμός των συναλλαγών που πραγματοποιήθηκαν εκείνη την ημέρα

Η πηγή όπου πήρα το dataset είναι το Kaggle.

Kaggle: Microsoft Stock Data


1.2 Αιτιολόγηση Επιλογής του Dataset

Το συγκεκριμένο dataset είναι κατάλληλο για επιχειρηματική αναλυτική γιατί:

  • Παρέχει μεγάλο χρονικό εύρος το οποίο διευκολύνει την ανίχνευση τάσεων (trends)

  • Επιτρέπει μοντέλα πρόβλεψης τιμών και αξιολόγηση επενδυτικών στρατηγικών. (forecasting)

  • Μπορεί να συσχετιστεί με χρηματοοικονομικά γεγονότα, ανακοινώσεις κερδών ή αλλαγές στρατηγικής της εταιρείας.

  • Είναι ακριβές και δομημένο σταθερά, άρα υποστηρίζει αξιόπιστα στατιστικά μοντέλα.


1.3 Πιθανά επιχειρηματικά ερωτήματα

  • Πώς μεταβάλλεται η τιμή της μετοχής της Microsoft με την πάροδο του χρόνου.

  • Ποια περίοδος έχει τη μεγαλύτερη αστάθεια.

  • Υπάρχει σχέση μεταξύ όγκου συναλλαγών και μεταβολής της τιμής κλεισίματος.

  • Ποιες μέρες εμφανίζουν ασυνήθιστα υψηλό όγκο και τι σημαίνει αυτό.

  • Πόσο προβλέψιμες είναι οι τιμές βάσει των ιστορικών δεδομένων.


1.4 Περιγραφή Μεταβλητών

Το dataset MSFT περιέχει 6 αριθμητικές μεταβλητές και 1 χρονική μεταβλητή.

Πιο αναλυτικά:

Μεταβλητή Τύπος Περιγραφή Εύρος Τιμών Μονάδες μέτρησης
Date Date / Character Ημερομηνία χρηματιστηριακής συνεδρίασης 1986 – 2022 -
Open Numeric Τιμή ανοίγματος της ημέρας 0.06 – 350 USD
High Numeric Μέγιστη τιμή ημέρας 0.10 – 350+ USD
Low Numeric Ελάχιστη τιμή ημέρας 0.05 – 340 USD
Close Numeric Τιμή κλεισίματος 0.09 – 340+ USD
Adj Close Numeric Προσαρμοσμένη τιμή κλεισίματος 0.06 – 330 USD
Volume Integer Πλήθος μετοχών που διακινήθηκαν Από λίγα M-~300M Μετοχές

2. Περιγραφικά Στατιστικά


2.1 Μέτρα Κεντρικής Τάσης


2.1.1 Μέσος Όρος:

  • Ο μέσος όρος δείχνει την “κεντρική” τιμή της μεταβλητής. Βοηθά να δούμε ποια ήταν η τυπική τιμή ανοίγματος, κλεισίματος και ποιος ήταν ο μέσος όγκος συναλλαγών.

    # Μέσος Όρος (Mean)
    mean_open  <- mean(df$open, na.rm = TRUE)
    mean_close <- mean(df$close, na.rm = TRUE)
    mean_volume <- mean(df$volume, na.rm = TRUE)
    
    mean_open
    mean_close
    mean_volume

    2.1.2 Διάμεσος

  • Η διάμεσος είναι η τιμή που βρίσκεται στη μέση όταν ταξινομήσουμε τις παρατηρήσεις και είναι πιο σταθερό μέτρο από τον μέσο όρο όταν υπάρχουν ακραίες τιμές.

median_open  <- median(df$open, na.rm = TRUE)
median_close <- median(df$close, na.rm = TRUE)
median_volume <- median(df$volume, na.rm = TRUE)

median_open
median_close
median_volume

2.1.3 Επικρατούσα Τιμή

  • Η επικρατούσα τιμή είναι η τιμή που εμφανίζεται πιο συχνά. Στα χρηματιστηριακά δεδομένα συνήθως δεν έχει ιδιαίτερη χρήση, γιατί οι τιμές είναι συνεχείς και δύσκολα επαναλαμβάνονται ακριβώς.

    mode_fn <- function(x){
      ux <- unique(x)
      ux[which.max(tabulate(match(x, ux)))]
    }
    
    mode_open  <- mode_fn(df$open)
    mode_close <- mode_fn(df$close)
    mode_volume <- mode_fn(df$volume)
    
    mode_open
    mode_close
    mode_volume

    2.2 Μέτρα Διασποράς


    2.2.1 Τυπική Απόκλιση

Η τυπική απόκλιση είναι ένα από τα πιο βασικά μέτρα διασποράς και μας δείχνει πόσο απλώνονται οι τιμές της μεταβλητής γύρω από τον μέσο όρο.

  • Μικρή τυπική απόκλιση: οι τιμές είναι συγκεντρωμένες κοντά στον μέσο όρο (χαμηλή μεταβλητότητα)

  • Μεγάλη τυπική απόκλιση: οι τιμές απέχουν πολύ από τον μέσο όρο (υψηλή μεταβλητότητα)

Στο χρηματιστήριο, η τυπική απόκλιση είναι πολύ χρήσιμη γιατί δείχνει πόσο “ήρεμη” ή “ασταθής” είναι η μετοχή.

sd_open   <- sd(df$open, na.rm = TRUE)
sd_close  <- sd(df$close, na.rm = TRUE)
sd_volume <- sd(df$volume, na.rm = TRUE)

sd_open
sd_close
sd_volume

2.2.2 Διακύμανση

Η διακύμανση είναι μέτρο διασποράς που μας δείχνει πόσο αποκλίνουν οι τιμές από τον μέσο όρο και πρακτικά μετράει πόσο διαφορετικές είναι οι τιμές μεταξύ τους.

  • Υψηλή διακύμανση: οι τιμές αλλάζουν πολύ από μέρα σε μέρα (υψηλή αστάθεια)

  • Χαμηλή διακύμανση: οι τιμές είναι πιο κοντά η μία στην άλλη (σταθερότερη συμπεριφορά)

Στα χρηματιστηριακά δεδομένα η διακύμανση είναι πολύ χρήσιμη γιατί επιτρέπει να καταλάβουμε πόσο επικίνδυνη/μεταβλητή είναι μια μετοχή. Η Microsoft, για παράδειγμα, στις σύγχρονες περιόδους δείχνει σχετικά σταθερή μεταβολή τιμών, ενώ ο όγκος συναλλαγών έχει συνήθως πολύ μεγαλύτερη διακύμανση.

var_open   <- var(df$open, na.rm = TRUE)
var_close  <- var(df$close, na.rm = TRUE)
var_volume <- var(df$volume, na.rm = TRUE)

var_open
var_close
var_volum

2.2.3 Εύρος

Το εύρος (range) είναι ένα πολύ απλό και χρήσιμο μέτρο διασποράς. Δείχνει τη συνολική “απόσταση” που καλύπτει μια μεταβλητή μέσα στο dataset.

  • Μεγάλο εύρος: μεγάλη συνολική μεταβολή των τιμών

  • Μικρό εύρος: πιο συγκεντρωμένες τιμές

Για τις τιμές μιας μετοχής: δείχνει πόσο έχει κινηθεί μέσα στο διάστημα της ανάλυσης
Για τον όγκο συναλλαγών: συνήθως είναι τεράστιο και μπορεί να κυμαίνεται από λίγα εκατομμύρια έως εκατοντάδες εκατομμύρια μετοχές.

range_open   <- max(df$open, na.rm = TRUE) - min(df$open, na.rm = TRUE)
range_close  <- max(df$close, na.rm = TRUE) - min(df$close, na.rm = TRUE)
range_volume <- max(df$volume, na.rm = TRUE) - min(df$volume, na.rm = TRUE)

range_open
range_close
range_volume

3. Διερεύνηση Συσχετίσεων

Η συσχέτιση (correlation) δείχνει πόσο σχετίζονται δύο αριθμητικές μεταβλητές μεταξύ τους.
Οι τιμές της συσχέτισης κυμαίνονται από:

  • 1: τέλεια θετική συσχέτιση

  • 0: καμία γραμμική σχέση

  • −1: τέλεια αρνητική συσχέτιση (η μία αυξάνει, η άλλη μειώνεται)

Στο dataset της Microsoft:

  • Open, High, Low, Close: έχουν πολύ υψηλή συσχέτιση, επειδή αφορούν την ίδια μέρα

  • Adj Close: έχει σχεδόν τέλεια συσχέτιση με την Close επειδή είναι προσαρμοσμένη έκδοση της ίδιας τιμής.

  • Volume: έχει μικρότερη συσχέτιση με τις τιμές γιατί ο όγκος δεν ανεβοκατεβαίνει απαραίτητα μαζί με την τιμή της μετοχής.

Όλες αυτές οι συσχετίσεις φαίνονται ξεκάθαρα στον πίνακα συσχετίσεων:

cor_matrix <- cor(df[, c("open", "high", "low", "close", "adj_close", "volume")],
                  use = "complete.obs")

cor_matrix

4. Δημιουργία Διαγραμμάτων


4.1 Scatterplot

Σχέση Τιμής Ανοίγματος και Τιμής Κλεισίματος

  • 👩🏻‍💻

    ggplot(data = MSFT, aes(x = Open, y = Close)) +
      geom_point(size = 3, alpha = 0.7, color = "blue") +
      labs(
        title = "Τιμή Ανοίγματος vs Τιμή Κλεισίματος Μετοχής Microsoft",
        x = "Τιμή Ανοίγματος",
        y = "Τιμή Κλεισίματος"
      ) +
      theme_classic()

    • Σχολιασμός

      Το διάγραμμα δείχνει τη σχέση μεταξύ της τιμής ανοίγματος και της τιμής κλεισίματος της μετοχής. Παρατηρείται ότι οι δύο μεταβλητές έχουν ισχυρή συσχέτιση, καθώς όταν η τιμή ανοίγματος είναι υψηλότερη, και η τιμή κλεισίματος είναι υψηλή. Αυτό δείχνει ότι οι ημερήσιες μεταβολές της μετοχής είναι συνήθως μικρές σε σχέση με τη συνολική της αξία.


4.2 Boxplot

Κατανομή Τιμών Κλεισίματος ανά Έτος

  • 👩🏻‍💻

    #Δημιουργώ το έτος από την ημερομηνία
    MSFT$Year <- format(as.Date(MSFT$Date), "%Y")
    ggplot(data = MSFT, aes(x = factor(Year), y = Close, fill = factor(Year))) +
      geom_boxplot(alpha = 0.7) +
      labs(
        title = "Κατανομή Τιμής Κλεισίματος ανά Έτος",
        x = "Έτος",
        y = "Τιμή Κλεισίματος",
        fill = "Έτος"
      ) +
      theme_minimal() +
      theme(axis.text.x = element_text(angle = 45, hjust = 1))
      # Τροποποίηση της εμφάνισης των ετικετών στον άξονα x 
      # Με γωνία 45 μοιρών για να διβάζονται καλύτερα

    • Σχολιασμός

      Το διάγραμμα δείχνει την κατανομή της τιμής κλεισίματος της μετοχής ανά έτος. Κάθε κουτί στο διάγραμμα δείχνει πώς κατανέμονται οι τιμές της μετοχής μέσα στη συγκεκριμένη χρονιά. Έτσι, μπορούμε να δούμε πώς μεταβάλλεται η τιμή της μετοχής της Microsoft μέσα στα χρόνια και αν υπάρχουν μεγάλες διακυμάνσεις.


4.3 Histogram

Κατανομή Τιμής Κλεισίματος

  • 👩🏻‍💻

    ggplot(data = MSFT, aes(x = Close)) +
        geom_histogram(binwidth = 10, fill = "purple", color = "#4302d9") +
        labs(
            title = "Κατανομή Τιμής Κλεισίματος της Μετοχής Microsoft",
            x = "Τιμή Κλεισίματος",
            y = "Συχνότητα"
        ) +
        theme_minimal()

    • Σχολιασμός

      Το ιστόγραμμα παρουσιάζει τη συχνότητα εμφάνισης των τιμών κλεισίματος της μετοχής της Microsoft. Μέσα από το διάγραμμα μπορούμε να εντοπίσουμε σε ποια επίπεδα τιμών εμφανίζονται πιο συχνά οι τιμές της μετοχής και να παρατηρήσουμε τη συνολική μορφή της κατανομής.


4.4 Bar Chart

Μέση Τιμή Κλεισίματος ανά Έτος

  • 👩🏻‍💻

    ggplot(data = MSFT, aes(x = factor(Year), y = Close, fill = factor(Year))) +
      stat_summary(fun = mean, geom = "bar") +
      labs(
        title = "Μέση Τιμή Κλεισίματος της Μετοχής Microsoft ανά Έτος",
        x = "Έτος",
        y = "Μέση Τιμή Κλεισίματος"
      ) +
      theme_minimal() +
      theme(
        axis.text.x = element_text(angle = 45, hjust = 1),
        legend.position = "none"
      # Τροποποίηση της εμφάνισης των ετικετών στον άξονα x 
      # Με γωνία 45 μοιρών για να διβάζονται καλύτερα
      )

    • Σχολιασμός

      Το bar chart παρουσιάζει τη μέση τιμή κλεισίματος της μετοχής της Microsoft για κάθε έτος. Κάθε μπάρα αντιστοιχεί σε ένα έτος και το ύψος της δείχνει τη μέση τιμή κλεισίματος των ημερών του αντίστοιχου έτους. Το διάγραμμα βοηθά στην κατανόηση της γενικής τάσης της μετοχής μέσα στον χρόνο.