2025-02-18

Big Tech Stock Analysis

Stock Market Analysis
In [4]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

Įvadas:

Šiame darbe atliekama išsami akcijų kainų analizė nuo 2010-01 iki 2023-01, kuri susideda iš trijų pagrindinių dalių:

1. Koreliacijos analizė visų įmonių akcijų kainų:

Šioje dalyje analizuojamas reikšmingas ryšys tarp skirtingų įmonių akcijų kainų. Tikslas – nustatyti, ar egzistuoja stipri koreliacija tarp įmonių, kuri galėtų būti naudinga investuotojams.

2. Kainų sezoniškumo analizė:

Šioje dalyje nagrinėjami akcijų kainų svyravimai priklausomai nuo metų laiko (mėnesių) ir savaitės dienų. Tikslas – nustatyti, ar egzistuoja sezoniniai ar savaitiniai modeliai, kurie galėtų būti panaudoti prognozuojant kainų pokyčius.

3. „Apple“ (AAPL) ir „Microsoft“ (MSFT) palyginimas:

Šioje dalyje lyginami dviejų technologijų gigantų – „Apple“ ir „Microsoft“ – akcijų elgesys. Tikslas – įvertinti jų kainų svyravimų panašumus ir skirtumus, taip pat nustatyti, ar jų akcijos elgiasi panašiai ar skirtingai.

Šios analizės tikslas – nustatyti reikšmingus modelius, susijusius su akcijų kainų elgesiu, ir pateikti rekomendacijas investuotojams, kurie nori numatyti kainų pokyčius ir priimti pagrįstus sprendimus.

Duomenų šaltinis:

Duomenys buvo surinkti iš Kaggle duomenų rinkinio, esančio adresu: Big Tech Giants Stock Price Data. Jie apima įvairių technologijų įmonių akcijų kainas per tam tikrą laikotarpį.


In [9]:
data = pd.read_csv('big_tech_stock_prices.csv')
data
Out[9]:
stock_symbol date open high low close adj_close volume
0 AAPL 2010-01-04 7.622500 7.660714 7.585000 7.643214 6.515213 493729600
1 AAPL 2010-01-05 7.664286 7.699643 7.616071 7.656429 6.526476 601904800
2 AAPL 2010-01-06 7.656429 7.686786 7.526786 7.534643 6.422664 552160000
3 AAPL 2010-01-07 7.562500 7.571429 7.466071 7.520714 6.410790 477131200
4 AAPL 2010-01-08 7.510714 7.571429 7.466429 7.570714 6.453412 447610800
... ... ... ... ... ... ... ... ...
45083 TSLA 2022-12-22 136.000000 136.630005 122.260002 125.349998 125.349998 210090300
45084 TSLA 2022-12-23 126.370003 128.619995 121.019997 123.150002 123.150002 166989700
45085 TSLA 2022-12-27 117.500000 119.669998 108.760002 109.099998 109.099998 208643400
45086 TSLA 2022-12-28 110.349998 116.269997 108.239998 112.709999 112.709999 221070500
45087 TSLA 2022-12-29 120.389999 123.570000 117.500000 121.820000 121.820000 221923300

45088 rows × 8 columns


In [11]:
print(data.describe())
               open          high           low         close     adj_close  \
count  45088.000000  45088.000000  45088.000000  45088.000000  45088.000000   
mean      89.266584     90.369825     88.111930     89.271306     85.209631   
std      101.626955    103.001073    100.124399    101.592916    100.995967   
min        1.076000      1.108667      0.998667      1.053333      1.053333   
25%       25.670000     25.930135     25.360001     25.660000     22.076433   
50%       47.930000     48.459999     47.465000     47.970001     45.377333   
75%      128.662502    129.848900    127.253945    128.640609    113.672460   
max      696.280029    700.989990    686.090027    691.690002    691.690002   

             volume  
count  4.508800e+04  
mean   5.297813e+07  
std    9.324730e+07  
min    5.892000e+05  
25%    9.629425e+06  
50%    2.646315e+07  
75%    5.839768e+07  
max    1.880998e+09  
In [12]:
data['date'] = pd.to_datetime(data['date'])  

plt.figure(figsize=(10, 6))
for company in data['stock_symbol'].unique():
    company_data = data[data['stock_symbol'] == company]
    plt.plot(company_data['date'], company_data['close'], label=company)

plt.xlabel('Date')
plt.ylabel('Closing Price')
plt.title('Big Tech Giants Stock Prices Over Time')
plt.legend()
plt.show()
No description has been provided for this image

Koreliacija

Tarp akcijų uždarymo kainos ir prekybos apimties yra sąsajų, kurios gali būti skirtingos priklausomai nuo įmonės. Manoma, kad didesnė prekybos apimtis gali būti susijusi su didesniu kainų svyravimu, tačiau šis ryšys gali skirtis tarp skirtingų įmonių.

In [15]:
correlation = data.groupby('stock_symbol')[['close', 'volume']].corr()
print(correlation)
                        close    volume
stock_symbol                           
AAPL         close   1.000000 -0.499448
             volume -0.499448  1.000000
ADBE         close   1.000000 -0.235545
             volume -0.235545  1.000000
AMZN         close   1.000000 -0.117717
             volume -0.117717  1.000000
CRM          close   1.000000 -0.130655
             volume -0.130655  1.000000
CSCO         close   1.000000 -0.446773
             volume -0.446773  1.000000
GOOGL        close   1.000000 -0.473636
             volume -0.473636  1.000000
IBM          close   1.000000 -0.187114
             volume -0.187114  1.000000
INTC         close   1.000000 -0.419022
             volume -0.419022  1.000000
META         close   1.000000 -0.393080
             volume -0.393080  1.000000
MSFT         close   1.000000 -0.317646
             volume -0.317646  1.000000
NFLX         close   1.000000 -0.469467
             volume -0.469467  1.000000
NVDA         close   1.000000 -0.069553
             volume -0.069553  1.000000
ORCL         close   1.000000 -0.466982
             volume -0.466982  1.000000
TSLA         close   1.000000  0.059654
             volume  0.059654  1.000000
In [16]:
plt.figure(figsize=(10, 8))
sns.heatmap(correlation, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Koreliacijos matrica')
plt.show()
No description has been provided for this image

Išvados

Analizė atskleidė ryšį tarp akcijų uždarymo kainų ir prekybos apimčių.

1. Neigiama koreliacija

Daugelio įmonių (pvz., AAPL, GOOGL, MSFT) akcijų kainos ir prekybos apimtis turi neigiamą koreliaciją. Didėjant apimčiai, kainos linkusios mažėti.

2. Silpna koreliacija

Kai kurių įmonių (pvz., NVDA, TSLA) koreliacija tarp kainų ir apimčių yra labai silpna, rodant beveik nepriklausomą elgesį.

3. Teigiama koreliacija (TSLA)

Tik TSLA atveju pastebima silpna teigiama koreliacija (0.059654), rodanti, kad didėjant apimčiai, kainos šiek tiek kyla.


Apple vs Microsoft – Akcijų kainų palyginimas

Apple ir Microsoft akcijų kainos gali elgtis skirtingai dėl skirtingų rinkos sąlygų.

Palyginome vidutinį kainos pokytį ir volatilumą tarp Apple ir Microsoft. Nustatėme, kad Microsoft akcijos turi didesnį svyravimą, o Apple akcijos yra stabilesnės.

In [20]:
apple_data = data[data['stock_symbol'] == 'AAPL']
microsoft_data = data[data['stock_symbol'] == 'MSFT']
In [21]:
apple_avg = apple_data['close'].mean()
microsoft_avg = microsoft_data['close'].mean()

apple_max = apple_data['high'].max()
microsoft_max = microsoft_data['high'].max()

apple_min = apple_data['low'].min()
microsoft_min = microsoft_data['low'].min()

companies = ['Apple', 'Microsoft']
avg_prices = [apple_avg, microsoft_avg]
max_prices = [apple_max, microsoft_max]
min_prices = [apple_min, microsoft_min]

##
# X pozicijos grafikui
x = np.arange(len(companies))

# Braižyti grafiką
plt.figure(figsize=(10, 6))
plt.bar(x - 0.2, avg_prices, width=0.2, label='Vidutinė kaina', color='blue')
plt.bar(x, max_prices, width=0.2, label='Maksimali kaina', color='green')
plt.bar(x + 0.2, min_prices, width=0.2, label='Minimali kaina', color='red')

# Etiketės ir pavadinimai
plt.xticks(x, companies)
plt.xlabel('Kompanija')
plt.ylabel('Kaina')
plt.title('Apple ir Microsoft akcijų kainų palyginimas')
plt.legend()

# Rodyti grafiką
plt.show()
No description has been provided for this image

Išvados:

  • Vidutinė kaina: Skirtumai tarp „Apple“ ir „Microsoft“ vidutinių kainų gali rodyti skirtingą rinkos stabilumą ir investuotojų pasitikėjimą.
  • Maksimali kaina: Aukštos maksimalios kainos gali būti susijusios su geromis finansinėmis naujienomis arba dideliu paklausos padidėjimu.
  • Minimali kaina: Žemos minimalios kainos gali rodyti periodus, kai įmonė patyrė didelį spaudimą dėl neigiamų veiksnių.
  • Skirtumai tarp įmonių: Skirtingi rodikliai tarp „Apple“ ir „Microsoft“ gali būti susiję su skirtingomis rinkos tendencijomis ir įmonių specifika.

2. Akcijų kainų sezoniniai pokyčiai

Akcijų kainos gali turėti sezoninių svyravimų, kurie priklauso nuo metų laiko. Manoma, kad vidutinės akcijų kainos skiriasi priklausomai nuo mėnesio bei savaitės dienos, o tai gali būti susiję su įmonių veiklos ciklais, rinkos tendencijomis arba investuotojų elgesiu.

In [25]:
data['month'] = data['date'].dt.month
In [26]:
monthly_avg = data.groupby('month')['close'].mean()
In [27]:
# Mėnesinių vidurkių grafikas
plt.figure(figsize=(10, 6))
plt.plot(monthly_avg.index, monthly_avg.values, marker='o', linestyle='-', color='b')
plt.title('Akcijų kainų sezoniniai pokyčiai pagal mėnesį')
plt.xlabel('Mėnuo')
plt.ylabel('Vidutinė uždarymo kaina')
plt.xticks(range(1, 13), ['Sausis', 'Vasaris', 'Kovas', 'Balandis', 'Gegužė', 'Birželis', 
                          'Liepa', 'Rugpjūtis', 'Rugsėjis', 'Spalis', 'Lapkritis', 'Gruodis'])
plt.grid(True)
plt.show()
No description has been provided for this image
In [28]:
data['weekday'] = data['date'].dt.day_name() 
In [29]:
weekday_avg = data.groupby('weekday')['close'].mean()

weekday_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
weekday_avg = weekday_avg.reindex(weekday_order)
In [30]:
# Vidutinių kainų grafikas pagal savaitės dieną
plt.figure(figsize=(10, 6))
plt.plot(weekday_avg.index, weekday_avg.values, marker='o', linestyle='-', color='b')
plt.title('Vidutinės akcijų kainos pagal savaitės dieną')
plt.xlabel('Savaitės diena')
plt.ylabel('Vidutinė uždarymo kaina')
plt.grid(True)
plt.show()
No description has been provided for this image

Išvados:

  • Sezoniniai svyravimai: Tam tikrais mėnesiais ir savaitės dienomis vidutinės kainos gali būti žymiai aukštesnės arba žemesnės.
  • Stabilios kainos: Maži svyravimai rodo mažesnį jautrumą sezoniniams arba savaitiniams veiksniams.
  • Skirtumai tarp įmonių: Skirtingos įmonės turi skirtingus sezoninius ir savaitinius modelius.