How to create an Interactive Fundamental Valuation
aktieanalys
shinylive
python
interactive
valuation
Interactive valation tool using Shinylive with Python
#| standalone: true
#| viewerHeight: 797
from io import StringIO
from pathlib import Path
from os.path import dirname
import pickle as pkl
from shiny import App, render, ui, Inputs, Outputs, Session
import pandas as pd
appdir = Path(__file__).parent
app_ui = ui.page_fluid(
ui.layout_sidebar(
ui.sidebar(
ui.h2("Söder Sportfiske"),
ui.input_slider("revenue_yearx1", "Omsättningstillväxt år 1", min=-50, max=100, value=27),
ui.input_slider("profit_marginx1", "Vinstmarginal år 1", min=1, max=20, value=4),
ui.input_slider("fair_value", "Fair value P/E år 1", min=5, max=50, value=20),
ui.input_slider("aktiekurs", "Aktiekurs", min=1, max=100, value=30),
ui.input_slider("cagr_years", "Unika antal år i CAGR", min=2, max=6,value=5),
ui.input_switch("recent_year", "Räkna med R12 i CAGR?", False),
ui.input_numeric("antal_aktier", "Antal aktier miljoner", value=8.44)
),
ui.layout_column_wrap(
ui.value_box(
"CAGR Revenue",
ui.output_text("calculate_cagr"),
ui.output_text("kpi_pe"),
theme="bg-gradient-indigo-blue",
full_screen=True,
),
ui.value_box(
"Potentiell uppsida",
ui.output_text("potential"),
"",
theme="bg-gradient-indigo-purple"
),
ui.value_box(
"Estimated Intrinsic Value",
ui.output_text("potentialkurs"),
"",
theme="bg-gradient-indigo-green"
)),
ui.layout_column_wrap(ui.output_table("main_table")
))
)
def server(input: Inputs, output: Outputs, session: Session):
@output
@render.text
def calculate_cagr():
with open(appdir / "yeardata_long.csv", "r") as file:
data = file.read()
df = pd.DataFrame([x.split(',') for x in data.split('\n')])
df.columns = df.iloc[0]
df = df.drop(df.index[0])
df = df.reset_index(drop=True)
df = pd.DataFrame(df)
# Load the data into a DataFrame
# Filter for 'Net Sales' and 'growthCalcType' 0
filtered_df = df[(df['name'] == 'Net Sales_0')]
# Sort by year
sorted_df = filtered_df.sort_values(by='period.year', ascending=False)
# Remove the most recent observation if required
if input.recent_year():
sorted_df = sorted_df.iloc[0:]
temp=0
else:
sorted_df = sorted_df.iloc[1:]
temp=1
# Select the five most recent years
recent_df = sorted_df.head(input.cagr_years()-temp)
# Calculate CAGR
final_value = pd.to_numeric(recent_df.iloc[0]['value']) # Value in the most recent year
initial_value = pd.to_numeric(recent_df.iloc[-1]['value']) # Value in the earliest year of the selected range
years = recent_df['period.year'].nunique()-1 # Number of unique years
#return recent_df
cagr = ((final_value / initial_value) ** (1/years)) - 1
return str(round(cagr*100,1))+"%"
def embedded_csv():
with open(appdir / "yeardata.csv", "r") as file:
data = file.read()
df = pd.DataFrame([x.split(',') for x in data.split('\n')])
if len(df.columns>=6):
df=df.iloc[:, [0,5,6,7,8,9,10]] # REVENUE, 2018-2023
df.columns = df.iloc[0]
df = df.drop(df.index[0])
df = df.reset_index(drop=True)
df = df.drop(df.index[12])
df['2024E'] = ""
#df['2025E'] = None
df.at[0, '2024E'] = pd.to_numeric(str(1+(input.revenue_yearx1()/100)))* pd.to_numeric(df.at[0, 'Q3 2023'])
df.at[1, '2024E'] = (pd.to_numeric(df.at[0, '2024E'])/pd.to_numeric(df.at[0, 'Q3 2023'])-1)*100
df.at[8, '2024E'] = input.profit_marginx1()
df.at[6, '2024E'] = round(input.profit_marginx1()/100*df.at[0, '2024E'],1)
df.at[10, '2024E'] = round(input.aktiekurs()*input.antal_aktier()/df.at[6, '2024E'],1)
#df.at[0, '2025E'] = pd.to_numeric(str(1+(input.revenue_yearx2()/100)))* pd.to_numeric(df.at[0, '2024E'])
return df
@output
@render.table
def main_table():
df=embedded_csv()
return df
@output
@render.text
def kpi_pe():
df=embedded_csv()
cagr_year=input.cagr_years()
out=df.columns[-(cagr_year+1):].tolist()
if input.recent_year():
out=out[:-1] # Tar bort 2024
temp=0
else:
out=out[:-1] # Tar bort 2024
out=out[:-1] # Tar bort 2023
temp=1
#out=out[:-1] # Tar bort 2024E ur kalkylen
#out=out[:-] # Tar bort 2024E ur kalkylen
one=out[0]
two=out[cagr_year-(1+temp)]
output="Mellan "+one+" och "+two
return output
@output
@render.text
def potentialkurs():
df=embedded_csv()
upside = input.fair_value()/df.at[10, '2024E']
formating=upside*input.aktiekurs()
return str(round(formating,1))+" SEK"
@output
@render.text
def potential():
df=embedded_csv()
aktiekurs = input.aktiekurs()
upside = input.fair_value()/df.at[10, '2024E']
fair_value= input.aktiekurs()*upside
formating=round(pd.to_numeric((upside-1)*100),1)
return str(formating)+"%"
app = App(app_ui, server)
## file: yeardata.csv
,2014,2015,2016,2017,2018,2019,2020,2021,2022,Q3 2023
Revenue,22.3,30.2,38.3,56.8,72.1,105.2,165.7,194.0,218.0,222.3
Revenue Y-Y %,36.8,35.4,26.8,48.3,26.9,45.9,57.5,17.1,12.4,6.0
P/S,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.6,1.2,1.1
Operating income,1.9,2.7,4.7,6.9,7.4,11.3,18.4,12.1,3.4,8.3
Operating margin,8.5,8.9,12.3,12.2,10.3,10.7,11.1,6.2,1.6,3.7
EV/EBIT,0.0,0.0,0.0,0.0,0.0,0.0,0.0,39.6,71.0,26.9
Earnings,1.5,2.1,3.6,5.4,5.7,6.6,10.8,9.0,1.7,5.8
Earnings Y-Y %,66.7,40.0,71.4,50.0,5.6,15.8,63.6,-16.7,-81.1,1060.0
Profit margin,6.7,7.0,9.4,9.5,7.9,6.3,6.5,4.6,0.8,2.6
Earnings/share,0.2,0.3,0.5,0.7,0.8,0.9,1.4,1.1,0.2,0.7
P/E,0.0,0.0,0.0,0.0,0.0,0.0,0.0,55.3,150.9,42.8
PEG,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-2.1,-1.9,0.0
## file: yeardata_long.csv
,companyId,kpiId,growthCalcType,period.year,period.label,name,datetime,value
0,2247,2,0,2014,2014,P/E_0,2024-01-07 14:04:08.451127,0.0
1,2247,2,0,2015,2015,P/E_0,2024-01-07 14:04:08.451127,0.0
2,2247,2,0,2016,2016,P/E_0,2024-01-07 14:04:08.451127,0.0
3,2247,2,0,2017,2017,P/E_0,2024-01-07 14:04:08.451127,0.0
4,2247,2,0,2018,2018,P/E_0,2024-01-07 14:04:08.451127,0.0
5,2247,2,0,2019,2019,P/E_0,2024-01-07 14:04:08.451127,0.0
6,2247,2,0,2020,2020,P/E_0,2024-01-07 14:04:08.451127,0.0
7,2247,2,0,2021,2021,P/E_0,2024-01-07 14:04:08.451127,55.31
8,2247,2,0,2022,2022,P/E_0,2024-01-07 14:04:08.451127,150.87
9,2247,2,0,2023,Q3 2023,P/E_0,2024-01-07 14:04:08.451127,42.76
10,2247,2,1,2014,2014,P/E_1,2024-01-07 14:04:08.451127,0.0
11,2247,2,1,2015,2015,P/E_1,2024-01-07 14:04:08.451127,0.0
12,2247,2,1,2016,2016,P/E_1,2024-01-07 14:04:08.451127,0.0
13,2247,2,1,2017,2017,P/E_1,2024-01-07 14:04:08.451127,0.0
14,2247,2,1,2018,2018,P/E_1,2024-01-07 14:04:08.451127,0.0
15,2247,2,1,2019,2019,P/E_1,2024-01-07 14:04:08.451127,0.0
16,2247,2,1,2020,2020,P/E_1,2024-01-07 14:04:08.451127,0.0
17,2247,2,1,2021,2021,P/E_1,2024-01-07 14:04:08.451127,0.0
18,2247,2,1,2022,2022,P/E_1,2024-01-07 14:04:08.451127,172.7878
19,2247,2,1,2023,Q3 2023,P/E_1,2024-01-07 14:04:08.451127,-89.7297
20,2247,3,0,2014,2014,P/S_0,2024-01-07 14:04:08.451127,0.0
21,2247,3,0,2015,2015,P/S_0,2024-01-07 14:04:08.451127,0.0
22,2247,3,0,2016,2016,P/S_0,2024-01-07 14:04:08.451127,0.0
23,2247,3,0,2017,2017,P/S_0,2024-01-07 14:04:08.451127,0.0
24,2247,3,0,2018,2018,P/S_0,2024-01-07 14:04:08.451127,0.0
25,2247,3,0,2019,2019,P/S_0,2024-01-07 14:04:08.451127,0.0
26,2247,3,0,2020,2020,P/S_0,2024-01-07 14:04:08.451127,0.0
27,2247,3,0,2021,2021,P/S_0,2024-01-07 14:04:08.451127,2.57
28,2247,3,0,2022,2022,P/S_0,2024-01-07 14:04:08.451127,1.18
29,2247,3,0,2023,Q3 2023,P/S_0,2024-01-07 14:04:08.451127,1.12
30,2247,3,1,2014,2014,P/S_1,2024-01-07 14:04:08.451127,0.0
31,2247,3,1,2015,2015,P/S_1,2024-01-07 14:04:08.451127,0.0
32,2247,3,1,2016,2016,P/S_1,2024-01-07 14:04:08.451127,0.0
33,2247,3,1,2017,2017,P/S_1,2024-01-07 14:04:08.451127,0.0
34,2247,3,1,2018,2018,P/S_1,2024-01-07 14:04:08.451127,0.0
35,2247,3,1,2019,2019,P/S_1,2024-01-07 14:04:08.451127,0.0
36,2247,3,1,2020,2020,P/S_1,2024-01-07 14:04:08.451127,0.0
37,2247,3,1,2021,2021,P/S_1,2024-01-07 14:04:08.451127,0.0
38,2247,3,1,2022,2022,P/S_1,2024-01-07 14:04:08.451127,-54.1699
39,2247,3,1,2023,Q3 2023,P/S_1,2024-01-07 14:04:08.451127,12.5
40,2247,6,0,2014,2014,Earnings/share_0,2024-01-07 14:04:08.451127,0.2
41,2247,6,0,2015,2015,Earnings/share_0,2024-01-07 14:04:08.451127,0.28
42,2247,6,0,2016,2016,Earnings/share_0,2024-01-07 14:04:08.451127,0.48
43,2247,6,0,2017,2017,Earnings/share_0,2024-01-07 14:04:08.451127,0.72
44,2247,6,0,2018,2018,Earnings/share_0,2024-01-07 14:04:08.451127,0.76
45,2247,6,0,2019,2019,Earnings/share_0,2024-01-07 14:04:08.451127,0.88
46,2247,6,0,2020,2020,Earnings/share_0,2024-01-07 14:04:08.451127,1.44
47,2247,6,0,2021,2021,Earnings/share_0,2024-01-07 14:04:08.451127,1.07
48,2247,6,0,2022,2022,Earnings/share_0,2024-01-07 14:04:08.451127,0.2
49,2247,6,0,2023,Q3 2023,Earnings/share_0,2024-01-07 14:04:08.451127,0.69
50,2247,6,1,2014,2014,Earnings/share_1,2024-01-07 14:04:08.451127,66.6667
51,2247,6,1,2015,2015,Earnings/share_1,2024-01-07 14:04:08.451127,40.5
52,2247,6,1,2016,2016,Earnings/share_1,2024-01-07 14:04:08.451127,71.1744
53,2247,6,1,2017,2017,Earnings/share_1,2024-01-07 14:04:08.451127,50.104
54,2247,6,1,2018,2018,Earnings/share_1,2024-01-07 14:04:08.451127,5.5402
55,2247,6,1,2019,2019,Earnings/share_1,2024-01-07 14:04:08.451127,15.748
56,2247,6,1,2020,2020,Earnings/share_1,2024-01-07 14:04:08.451127,63.7188
57,2247,6,1,2021,2021,Earnings/share_1,2024-01-07 14:04:08.451127,-26.108
58,2247,6,1,2022,2022,Earnings/share_1,2024-01-07 14:04:08.451127,-81.1621
59,2247,6,1,2023,Q3 2023,Earnings/share_1,2024-01-07 14:04:08.451127,1066.1017
60,2247,10,0,2014,2014,EV/EBIT_0,2024-01-07 14:04:08.451127,0.0
61,2247,10,0,2015,2015,EV/EBIT_0,2024-01-07 14:04:08.451127,0.0
62,2247,10,0,2016,2016,EV/EBIT_0,2024-01-07 14:04:08.451127,0.0
63,2247,10,0,2017,2017,EV/EBIT_0,2024-01-07 14:04:08.451127,0.0
64,2247,10,0,2018,2018,EV/EBIT_0,2024-01-07 14:04:08.451127,0.0
65,2247,10,0,2019,2019,EV/EBIT_0,2024-01-07 14:04:08.451127,0.0
66,2247,10,0,2020,2020,EV/EBIT_0,2024-01-07 14:04:08.451127,0.0
67,2247,10,0,2021,2021,EV/EBIT_0,2024-01-07 14:04:08.451127,39.61
68,2247,10,0,2022,2022,EV/EBIT_0,2024-01-07 14:04:08.451127,70.96
69,2247,10,0,2023,Q3 2023,EV/EBIT_0,2024-01-07 14:04:08.451127,26.89
70,2247,10,1,2014,2014,EV/EBIT_1,2024-01-07 14:04:08.451127,0.0
71,2247,10,1,2015,2015,EV/EBIT_1,2024-01-07 14:04:08.451127,0.0
72,2247,10,1,2016,2016,EV/EBIT_1,2024-01-07 14:04:08.451127,0.0
73,2247,10,1,2017,2017,EV/EBIT_1,2024-01-07 14:04:08.451127,0.0
74,2247,10,1,2018,2018,EV/EBIT_1,2024-01-07 14:04:08.451127,0.0
75,2247,10,1,2019,2019,EV/EBIT_1,2024-01-07 14:04:08.451127,0.0
76,2247,10,1,2020,2020,EV/EBIT_1,2024-01-07 14:04:08.451127,0.0
77,2247,10,1,2021,2021,EV/EBIT_1,2024-01-07 14:04:08.451127,0.0
78,2247,10,1,2022,2022,EV/EBIT_1,2024-01-07 14:04:08.451127,79.121
79,2247,10,1,2023,Q3 2023,EV/EBIT_1,2024-01-07 14:04:08.451127,-71.7571
80,2247,19,0,2014,2014,PEG_0,2024-01-07 14:04:08.451127,0.0
81,2247,19,0,2015,2015,PEG_0,2024-01-07 14:04:08.451127,0.0
82,2247,19,0,2016,2016,PEG_0,2024-01-07 14:04:08.451127,0.0
83,2247,19,0,2017,2017,PEG_0,2024-01-07 14:04:08.451127,0.0
84,2247,19,0,2018,2018,PEG_0,2024-01-07 14:04:08.451127,0.0
85,2247,19,0,2019,2019,PEG_0,2024-01-07 14:04:08.451127,0.0
86,2247,19,0,2020,2020,PEG_0,2024-01-07 14:04:08.451127,0.0
87,2247,19,0,2021,2021,PEG_0,2024-01-07 14:04:08.451127,-2.12
88,2247,19,0,2022,2022,PEG_0,2024-01-07 14:04:08.451127,-1.86
89,2247,19,0,2023,Q3 2023,PEG_0,2024-01-07 14:04:08.451127,0.04
90,2247,19,1,2014,2014,PEG_1,2024-01-07 14:04:08.451127,0.0
91,2247,19,1,2015,2015,PEG_1,2024-01-07 14:04:08.451127,0.0
92,2247,19,1,2016,2016,PEG_1,2024-01-07 14:04:08.451127,0.0
93,2247,19,1,2017,2017,PEG_1,2024-01-07 14:04:08.451127,0.0
94,2247,19,1,2018,2018,PEG_1,2024-01-07 14:04:08.451127,0.0
95,2247,19,1,2019,2019,PEG_1,2024-01-07 14:04:08.451127,0.0
96,2247,19,1,2020,2020,PEG_1,2024-01-07 14:04:08.451127,0.0
97,2247,19,1,2021,2021,PEG_1,2024-01-07 14:04:08.451127,0.0
98,2247,19,1,2022,2022,PEG_1,2024-01-07 14:04:08.451127,12.1813
99,2247,19,1,2023,Q3 2023,PEG_1,2024-01-07 14:04:08.451127,100.8897
100,2247,29,0,2014,2014,Operating margin_0,2024-01-07 14:04:08.451127,8.52
101,2247,29,0,2015,2015,Operating margin_0,2024-01-07 14:04:08.451127,8.94
102,2247,29,0,2016,2016,Operating margin_0,2024-01-07 14:04:08.451127,12.27
103,2247,29,0,2017,2017,Operating margin_0,2024-01-07 14:04:08.451127,12.15
104,2247,29,0,2018,2018,Operating margin_0,2024-01-07 14:04:08.451127,10.26
105,2247,29,0,2019,2019,Operating margin_0,2024-01-07 14:04:08.451127,10.74
106,2247,29,0,2020,2020,Operating margin_0,2024-01-07 14:04:08.451127,11.1
107,2247,29,0,2021,2021,Operating margin_0,2024-01-07 14:04:08.451127,6.24
108,2247,29,0,2022,2022,Operating margin_0,2024-01-07 14:04:08.451127,1.56
109,2247,29,0,2023,Q3 2023,Operating margin_0,2024-01-07 14:04:08.451127,3.73
110,2247,29,1,2014,2014,Operating margin_1,2024-01-07 14:04:08.451127,6.8339
111,2247,29,1,2015,2015,Operating margin_1,2024-01-07 14:04:08.451127,4.9296
112,2247,29,1,2016,2016,Operating margin_1,2024-01-07 14:04:08.451127,37.2707
113,2247,29,1,2017,2017,Operating margin_1,2024-01-07 14:04:08.451127,-1.0104
114,2247,29,1,2018,2018,Operating margin_1,2024-01-07 14:04:08.451127,-15.5087
115,2247,29,1,2019,2019,Operating margin_1,2024-01-07 14:04:08.451127,4.6473
116,2247,29,1,2020,2020,Operating margin_1,2024-01-07 14:04:08.451127,3.3796
117,2247,29,1,2021,2021,Operating margin_1,2024-01-07 14:04:08.451127,-43.8311
118,2247,29,1,2022,2022,Operating margin_1,2024-01-07 14:04:08.451127,-74.988
119,2247,29,1,2023,Q3 2023,Operating margin_1,2024-01-07 14:04:08.451127,291.4046
120,2247,30,0,2014,2014,Profit margin_0,2024-01-07 14:04:08.451127,6.73
121,2247,30,0,2015,2015,Profit margin_0,2024-01-07 14:04:08.451127,6.95
122,2247,30,0,2016,2016,Profit margin_0,2024-01-07 14:04:08.451127,9.4
123,2247,30,0,2017,2017,Profit margin_0,2024-01-07 14:04:08.451127,9.51
124,2247,30,0,2018,2018,Profit margin_0,2024-01-07 14:04:08.451127,7.91
125,2247,30,0,2019,2019,Profit margin_0,2024-01-07 14:04:08.451127,6.27
126,2247,30,0,2020,2020,Profit margin_0,2024-01-07 14:04:08.451127,6.52
127,2247,30,0,2021,2021,Profit margin_0,2024-01-07 14:04:08.451127,4.64
128,2247,30,0,2022,2022,Profit margin_0,2024-01-07 14:04:08.451127,0.78
129,2247,30,0,2023,Q3 2023,Profit margin_0,2024-01-07 14:04:08.451127,2.61
130,2247,30,1,2014,2014,Profit margin_1,2024-01-07 14:04:08.451127,21.8258
131,2247,30,1,2015,2015,Profit margin_1,2024-01-07 14:04:08.451127,3.3898
132,2247,30,1,2016,2016,Profit margin_1,2024-01-07 14:04:08.451127,35.1596
133,2247,30,1,2017,2017,Profit margin_1,2024-01-07 14:04:08.451127,1.1491
134,2247,30,1,2018,2018,Profit margin_1,2024-01-07 14:04:08.451127,-16.8402
135,2247,30,1,2019,2019,Profit margin_1,2024-01-07 14:04:08.451127,-20.6425
136,2247,30,1,2020,2020,Profit margin_1,2024-01-07 14:04:08.451127,3.8891
137,2247,30,1,2021,2021,Profit margin_1,2024-01-07 14:04:08.451127,-28.8279
138,2247,30,1,2022,2022,Profit margin_1,2024-01-07 14:04:08.451127,-83.186
139,2247,30,1,2023,Q3 2023,Profit margin_1,2024-01-07 14:04:08.451127,996.2185
140,2247,53,0,2014,2014,Net Sales_0,2024-01-07 14:04:08.451127,22.3
141,2247,53,0,2015,2015,Net Sales_0,2024-01-07 14:04:08.451127,30.2
142,2247,53,0,2016,2016,Net Sales_0,2024-01-07 14:04:08.451127,38.3
143,2247,53,0,2017,2017,Net Sales_0,2024-01-07 14:04:08.451127,56.8
144,2247,53,0,2018,2018,Net Sales_0,2024-01-07 14:04:08.451127,72.1
145,2247,53,0,2019,2019,Net Sales_0,2024-01-07 14:04:08.451127,105.2
146,2247,53,0,2020,2020,Net Sales_0,2024-01-07 14:04:08.451127,165.7
147,2247,53,0,2021,2021,Net Sales_0,2024-01-07 14:04:08.451127,194.0
148,2247,53,0,2022,2022,Net Sales_0,2024-01-07 14:04:08.451127,218.0
149,2247,53,0,2023,Q3 2023,Net Sales_0,2024-01-07 14:04:08.451127,222.3
150,2247,53,1,2014,2014,Net Sales_1,2024-01-07 14:04:08.451127,36.8098
151,2247,53,1,2015,2015,Net Sales_1,2024-01-07 14:04:08.451127,35.426
152,2247,53,1,2016,2016,Net Sales_1,2024-01-07 14:04:08.451127,26.8212
153,2247,53,1,2017,2017,Net Sales_1,2024-01-07 14:04:08.451127,48.3029
154,2247,53,1,2018,2018,Net Sales_1,2024-01-07 14:04:08.451127,26.9366
155,2247,53,1,2019,2019,Net Sales_1,2024-01-07 14:04:08.451127,45.9085
156,2247,53,1,2020,2020,Net Sales_1,2024-01-07 14:04:08.451127,57.5095
157,2247,53,1,2021,2021,Net Sales_1,2024-01-07 14:04:08.451127,17.0791
158,2247,53,1,2022,2022,Net Sales_1,2024-01-07 14:04:08.451127,12.3711
159,2247,53,1,2023,Q3 2023,Net Sales_1,2024-01-07 14:04:08.451127,6.0086
160,2247,55,0,2014,2014,Operating income_0,2024-01-07 14:04:08.451127,1.9
161,2247,55,0,2015,2015,Operating income_0,2024-01-07 14:04:08.451127,2.7
162,2247,55,0,2016,2016,Operating income_0,2024-01-07 14:04:08.451127,4.7
163,2247,55,0,2017,2017,Operating income_0,2024-01-07 14:04:08.451127,6.9
164,2247,55,0,2018,2018,Operating income_0,2024-01-07 14:04:08.451127,7.4
165,2247,55,0,2019,2019,Operating income_0,2024-01-07 14:04:08.451127,11.3
166,2247,55,0,2020,2020,Operating income_0,2024-01-07 14:04:08.451127,18.4
167,2247,55,0,2021,2021,Operating income_0,2024-01-07 14:04:08.451127,12.1
168,2247,55,0,2022,2022,Operating income_0,2024-01-07 14:04:08.451127,3.4
169,2247,55,0,2023,Q3 2023,Operating income_0,2024-01-07 14:04:08.451127,8.3
170,2247,55,1,2014,2014,Operating income_1,2024-01-07 14:04:08.451127,46.1538
171,2247,55,1,2015,2015,Operating income_1,2024-01-07 14:04:08.451127,42.1053
172,2247,55,1,2016,2016,Operating income_1,2024-01-07 14:04:08.451127,74.0741
173,2247,55,1,2017,2017,Operating income_1,2024-01-07 14:04:08.451127,46.8085
174,2247,55,1,2018,2018,Operating income_1,2024-01-07 14:04:08.451127,7.2464
175,2247,55,1,2019,2019,Operating income_1,2024-01-07 14:04:08.451127,52.7027
176,2247,55,1,2020,2020,Operating income_1,2024-01-07 14:04:08.451127,62.8319
177,2247,55,1,2021,2021,Operating income_1,2024-01-07 14:04:08.451127,-34.2391
178,2247,55,1,2022,2022,Operating income_1,2024-01-07 14:04:08.451127,-71.9008
179,2247,55,1,2023,Q3 2023,Operating income_1,2024-01-07 14:04:08.451127,315.0
180,2247,56,0,2014,2014,Earnings_0,2024-01-07 14:04:08.451127,1.5
181,2247,56,0,2015,2015,Earnings_0,2024-01-07 14:04:08.451127,2.1
182,2247,56,0,2016,2016,Earnings_0,2024-01-07 14:04:08.451127,3.6
183,2247,56,0,2017,2017,Earnings_0,2024-01-07 14:04:08.451127,5.4
184,2247,56,0,2018,2018,Earnings_0,2024-01-07 14:04:08.451127,5.7
185,2247,56,0,2019,2019,Earnings_0,2024-01-07 14:04:08.451127,6.6
186,2247,56,0,2020,2020,Earnings_0,2024-01-07 14:04:08.451127,10.8
187,2247,56,0,2021,2021,Earnings_0,2024-01-07 14:04:08.451127,9.0
188,2247,56,0,2022,2022,Earnings_0,2024-01-07 14:04:08.451127,1.7
189,2247,56,0,2023,Q3 2023,Earnings_0,2024-01-07 14:04:08.451127,5.8
190,2247,56,1,2014,2014,Earnings_1,2024-01-07 14:04:08.451127,66.6667
191,2247,56,1,2015,2015,Earnings_1,2024-01-07 14:04:08.451127,40.0
192,2247,56,1,2016,2016,Earnings_1,2024-01-07 14:04:08.451127,71.4286
193,2247,56,1,2017,2017,Earnings_1,2024-01-07 14:04:08.451127,50.0
194,2247,56,1,2018,2018,Earnings_1,2024-01-07 14:04:08.451127,5.5556
195,2247,56,1,2019,2019,Earnings_1,2024-01-07 14:04:08.451127,15.7895
196,2247,56,1,2020,2020,Earnings_1,2024-01-07 14:04:08.451127,63.6364
197,2247,56,1,2021,2021,Earnings_1,2024-01-07 14:04:08.451127,-16.6667
198,2247,56,1,2022,2022,Earnings_1,2024-01-07 14:04:08.451127,-81.1111
199,2247,56,1,2023,Q3 2023,Earnings_1,2024-01-07 14:04:08.451127,1060.0