Big Tech Stock Analysis
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į.
data = pd.read_csv('big_tech_stock_prices.csv')
data
| 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
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
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()
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ų.
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
plt.figure(figsize=(10, 8))
sns.heatmap(correlation, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Koreliacijos matrica')
plt.show()
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.
apple_data = data[data['stock_symbol'] == 'AAPL']
microsoft_data = data[data['stock_symbol'] == 'MSFT']
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()
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.
data['month'] = data['date'].dt.month
monthly_avg = data.groupby('month')['close'].mean()
# 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()
data['weekday'] = data['date'].dt.day_name()
weekday_avg = data.groupby('weekday')['close'].mean()
weekday_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
weekday_avg = weekday_avg.reindex(weekday_order)
# 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()
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.