
Проект фокусируется на анализе и визуализации исторических данных о доходности финансовых инструментов — акций (Stocks) и краткосрочных государственных облигаций (T-Bills). На основе данных из Excel проводится их очистка и обработка, после чего строятся графики годовой доходности, сравнительные круговые диаграммы средних показателей и графики накопленной доходности. Проект наглядно демонстрирует различия между риском и доходностью различных активов, а также позволяет оценить их эффективность для долгосрочного инвестирования.
ГРАФИКИ
СТОЛБЧАТАЯ ДИАГРАММА

График
import pandas as pd import matplotlib.pyplot as plt import numpy as np
FILE = «data.xlsx» SHEET = 0
raw = pd.read_excel (FILE, sheet_name=SHEET, header=None)
df = raw[[0, 1, 2]].copy () df.columns = [«year», «stocks», «tbills»]
df[«year»] = pd.to_numeric (df[«year»], errors="coerce») df[«stocks»] = pd.to_numeric (df[«stocks»], errors="coerce») df[«tbills»] = pd.to_numeric (df[«tbills»], errors="coerce»)
df = df.dropna (subset=[«year»]) df[«year»] = df[«year»].astype (int)
df = df[(df[«year»] >= 1928) & (df[«year»] <= 2100)] df = df.dropna (subset=[«stocks», «tbills»], how="all») df = df.sort_values («year»).reset_index (drop=True)
if df.empty: raise ValueError («Нет данных для построения графиков.»)
print («\n=== ДАННЫЕ ===») print (df.to_string (index=False))
df[«stocks_pct»] = df[«stocks»] * 100 df[«tbills_pct»] = df[«tbills»] * 100
years = df[«year»].values x = np.arange (len (years)) width = 0.45
plt.figure (figsize=(16, 6)) plt.bar (x — width/2, df[«stocks_pct»], width, label="Stocks») plt.bar (x + width/2, df[«tbills_pct»], width, label="T.Bills»)
plt.xlabel («Year») plt.ylabel («Return (%)») plt.title («Stocks vs T.Bills — Annual Returns (from 1928)») plt.xticks (x, years, rotation=90)
plt.axhline (0, linewidth=1) plt.grid (axis="y», linestyle="--», alpha=0.5) plt.legend () plt.tight_layout () plt.show ()
КРУГОВАЯ ДИАГРАММА
import pandas as pd import matplotlib.pyplot as plt import numpy as np
FILE = «data.xlsx» SHEET = 0
raw = pd.read_excel (FILE, sheet_name=SHEET, header=None)
df = raw[[0, 1, 2]].copy () df.columns = [«year», «stocks», «tbills»]
df[«year»] = pd.to_numeric (df[«year»], errors="coerce») df[«stocks»] = pd.to_numeric (df[«stocks»], errors="coerce») df[«tbills»] = pd.to_numeric (df[«tbills»], errors="coerce»)
df = df.dropna (subset=[«year»]) df[«year»] = df[«year»].astype (int)
df = df[(df[«year»] >= 1928) & (df[«year»] <= 2100)] df = df.dropna (subset=[«stocks», «tbills»], how="all») df = df.sort_values («year»).reset_index (drop=True)
if df.empty: raise ValueError («Нет данных для построения графиков.»)
avg_stocks = df[«stocks»].mean () * 100 avg_tbills = df[«tbills»].mean () * 100
plt.figure (figsize=(7, 7)) plt.pie ( [avg_stocks, avg_tbills], labels=[«Stocks», «T.Bills»], autopct="%1.1f%%», startangle=90 ) plt.title («Average Annual Returns (from 1928)») plt.tight_layout () plt.show ()
ТОЧЕЧНАЯ ДИАГРАММА
import pandas as pd import matplotlib.pyplot as plt import numpy as np
FILE = «data.xlsx» SHEET = 0
raw = pd.read_excel (FILE, sheet_name=SHEET, header=None)
df = raw[[0, 1, 2]].copy () df.columns = [«year», «stocks», «tbills»]
df[«year»] = pd.to_numeric (df[«year»], errors="coerce») df[«stocks»] = pd.to_numeric (df[«stocks»], errors="coerce») df[«tbills»] = pd.to_numeric (df[«tbills»], errors="coerce»)
df = df.dropna (subset=[«year»]) df[«year»] = df[«year»].astype (int)
df = df[(df[«year»] >= 1928) & (df[«year»] <= 2100)] df = df.dropna (subset=[«stocks», «tbills»], how="all») df = df.sort_values («year»).reset_index (drop=True)
if df.empty: raise ValueError («Нет данных для построения графиков.»)
df[«stocks_growth»] = (1 + df[«stocks»].fillna (0)).cumprod () df[«tbills_growth»] = (1 + df[«tbills»].fillna (0)).cumprod ()
plt.figure (figsize=(12, 6)) plt.plot (df[«year»], df[«stocks_growth»], marker="o», label="Stocks ($1 growth)») plt.plot (df[«year»], df[«tbills_growth»], marker="o», label="T.Bills ($1 growth)»)
plt.xlabel («Year») plt.ylabel («Value of $1») plt.title («Cumulative Growth of $1 (from 1928)») plt.grid (True, linestyle="--», alpha=0.5) plt.legend () plt.tight_layout () plt.show ()
ВЫВОД
Исторический анализ свидетельствует о том, что акции (Stocks) при долгосрочном инвестировании приносят более высокую доходность, но отличаются высокой волатильностью. В то время как краткосрочные государственные облигации (T-Bills) обеспечивают более стабильный, но значительно меньший доход. Графики накопленной доходности наглядно демонстрируют преимущества инвестирования в акции на длительный срок, несмотря на краткосрочные колебания рынка.