Major Update
This commit is contained in:
@@ -9,9 +9,11 @@ Current Features:
|
||||
- Calculating Dividends
|
||||
- Calculate the daily IRR (incl. Dividends)
|
||||
- Pushing updates to Notion
|
||||
- Dividends ARE calculated correctly...YEEEA!
|
||||
|
||||
|
||||
Current Limitation:
|
||||
- Dividends may not be calculated correctly...the total seems low...
|
||||
- none
|
||||
|
||||
Feature Pipeline:
|
||||
- Information/KPIs on the whole portfolio
|
||||
|
||||
966486
history_per_trade.json
966486
history_per_trade.json
File diff suppressed because it is too large
Load Diff
144
main.py
144
main.py
@@ -41,6 +41,7 @@ test_data = '''{
|
||||
trmnl_object = '''{"merge_variables": {"key": "payload"}}'''
|
||||
|
||||
|
||||
|
||||
### -------------------- EXAMPLE STRUCTURES --------------------
|
||||
# NOTION FORMATED DATA STRUCTURE
|
||||
''' trades[notion_page_id] = {
|
||||
@@ -76,6 +77,7 @@ Date Close Dividends
|
||||
'''var data = [{"name":"Current","data":[["2024-12-31",3982.23],......,["2024-12-01",946.02]]},{"name":"Comparison","data":[["2024-12-30",590.56],......,["2024-12-01",425.28]]}];'''
|
||||
|
||||
|
||||
|
||||
### -------------------- FUNCTIONS --------------------
|
||||
# ------------------#
|
||||
# LEVEL 1 FUNCTIONS #
|
||||
@@ -84,11 +86,18 @@ Date Close Dividends
|
||||
def calculate_irr(date_now, date_open, value_now, value_open):
|
||||
error = False
|
||||
irr = 0.0
|
||||
|
||||
try:
|
||||
# Prepare IRR calculation
|
||||
# Count the number in days
|
||||
a = date_now - date_open
|
||||
a = a.days
|
||||
a = a / 365 # Umrechnung von Tagesrendite auf Jahresrendite
|
||||
|
||||
# Am Tag des Kaufs selbst, liegt das Delta in Tagen bei 0
|
||||
# Um dennoch einen IRR kalkulieren zu können, wird das Delta auf 1 gsetzt
|
||||
if a == 0:
|
||||
a = 1
|
||||
|
||||
a = a / 365 # Umrechnung auf Jahresanteil, um auch den Jahreszinssatz zu bekommen
|
||||
b = value_now / value_open
|
||||
|
||||
# Catch negative IRRs
|
||||
@@ -218,6 +227,7 @@ def push_trmnl_update_chart(wklydict_numbers, dict_chart, trmnl_page_id):
|
||||
'''
|
||||
|
||||
|
||||
|
||||
# ------------------#
|
||||
# LEVEL 2 FUNCTIONS #
|
||||
# ------------------#
|
||||
@@ -253,13 +263,7 @@ def fetch_format_notion_data(db_id_trades):
|
||||
# Each page is loaded as a dictionary
|
||||
notion_page = dict(i)
|
||||
|
||||
# Handling missing entry
|
||||
try:
|
||||
date_open = notion_page["properties"]["Open"]["date"]
|
||||
date_open = date_open["start"]
|
||||
date_open = datetime.date(*map(int, date_open.split('-')))
|
||||
except:
|
||||
date_open = 0
|
||||
# Handling desired missing entries
|
||||
try:
|
||||
date_close = notion_page["properties"]["Close"]["date"]
|
||||
date_close = date_close["start"]
|
||||
@@ -267,21 +271,35 @@ def fetch_format_notion_data(db_id_trades):
|
||||
except:
|
||||
date_close = 0
|
||||
|
||||
# Save values
|
||||
notion_page_id = notion_page["id"] # Use as key for the dictionary
|
||||
trade = {}
|
||||
trade = {
|
||||
'ticker' : notion_page["properties"]["Ticker"]["select"]["name"],
|
||||
'date_open' : date_open,
|
||||
'date_close' : date_close,
|
||||
'course_open' : notion_page["properties"]["Open (€)"]["number"],
|
||||
'course_close' : notion_page["properties"]["Close (€)"]["number"],
|
||||
'course_current' : notion_page["properties"]["Current (€)"]["number"],
|
||||
'irr' : notion_page["properties"]["IRR (%)"]["number"],
|
||||
'units' : notion_page["properties"]["Units"]["number"],
|
||||
'dividends' : notion_page["properties"]["Dividends (€)"]["number"]
|
||||
}
|
||||
trades[notion_page_id] = trade
|
||||
# Handeling non-desired missing entries (by skipping this trade)
|
||||
try:
|
||||
# Try extracting values
|
||||
trade = {}
|
||||
|
||||
# Format date-open
|
||||
date_open = notion_page["properties"]["Open"]["date"]
|
||||
date_open = date_open["start"]
|
||||
date_open = datetime.date(*map(int, date_open.split('-')))
|
||||
|
||||
# Combine data into json structure
|
||||
trade = {
|
||||
'ticker' : notion_page["properties"]["Ticker"]["select"]["name"],
|
||||
'date_open' : date_open,
|
||||
'date_close' : date_close,
|
||||
'course_open' : notion_page["properties"]["Open (€)"]["number"],
|
||||
'course_close' : notion_page["properties"]["Close (€)"]["number"],
|
||||
'course_current' : notion_page["properties"]["Current (€)"]["number"],
|
||||
'irr' : notion_page["properties"]["IRR (%)"]["number"],
|
||||
'units' : notion_page["properties"]["Units"]["number"],
|
||||
'dividends' : notion_page["properties"]["Dividends (€)"]["number"]
|
||||
}
|
||||
|
||||
# Save values
|
||||
notion_page_id = notion_page["id"] # Use as key for the dictionary
|
||||
trades[notion_page_id] = trade
|
||||
|
||||
except:
|
||||
print("[ERROR] Skipped an entry in the notion trades-db - Missing values?")
|
||||
|
||||
# Return data if successful
|
||||
if error == True:
|
||||
@@ -332,7 +350,7 @@ def fetch_format_yf_data(tickers):
|
||||
data.set_index('Date', inplace=True)
|
||||
|
||||
# Save the data-frame to the yf_data dict
|
||||
yf_data[i] = data
|
||||
yf_data[ticker] = data
|
||||
|
||||
# Wait for the API to cool down
|
||||
time.sleep(t_sleep_api)
|
||||
@@ -341,6 +359,11 @@ def fetch_format_yf_data(tickers):
|
||||
error = True
|
||||
print("[ERROR] Fetching data from yahoo-finance for ticker: {}".format(ticker))
|
||||
|
||||
# Create file for easier development
|
||||
data.to_csv('yf_data_{}.csv'.format(ticker), index=False)
|
||||
with open("yf_data.txt", "w") as f:
|
||||
f.write(str(yf_data))
|
||||
|
||||
# Return data if successful
|
||||
if error == True:
|
||||
return error
|
||||
@@ -352,8 +375,12 @@ def push_notion_trades_update(trades):
|
||||
error = False
|
||||
for notion_page_id in trades:
|
||||
try:
|
||||
# The irr is stored in the format 1.2534
|
||||
# Notion need the format 0,2534
|
||||
irr_notion = trades[notion_page_id]['irr'] - 1
|
||||
irr_notion = round(irr_notion, 4)
|
||||
|
||||
# Construct Notion-Update-Object
|
||||
irr_notion = round(trades[notion_page_id]['irr']/100, 4) # Covert to decimal-number for notion
|
||||
notion_update = {
|
||||
"Current (€)": {
|
||||
"number": trades[notion_page_id]['course_current']
|
||||
@@ -380,24 +407,29 @@ def push_notion_trades_update(trades):
|
||||
|
||||
# CALC CURRENT VALUES PER TRADE
|
||||
def calc_current_value_per_trade(trades, history_per_trade):
|
||||
|
||||
# Loop over all trades
|
||||
for trade_id in trades:
|
||||
|
||||
# Determine, what values to fetch based on whether the trade was closed already
|
||||
date_closed = trades[trade_id]["date_close"]
|
||||
if date_closed == 0:
|
||||
|
||||
# If trade still open, use performance data from today
|
||||
index_date_iso = datetime.date.today().isoformat()
|
||||
|
||||
else:
|
||||
# If trade closed, use performance data from close-date
|
||||
index_date_iso = date_closed.isoformat()
|
||||
|
||||
# Fetch data from history and save for this trade
|
||||
trades[trade_id]["course_current"] = history_per_trade[index_date_iso][trade_id]['current_course']
|
||||
trades[trade_id]["irr"] = history_per_trade[index_date_iso][trade_id]['current_irr']
|
||||
trades[trade_id]["dividends"] = history_per_trade[index_date_iso][trade_id]['total_dividends']
|
||||
|
||||
print ("[SUCCESS] Calculating current value per trade")
|
||||
return trades
|
||||
|
||||
|
||||
# ------------------#
|
||||
# LEVEL 3 FUNCTIONS #
|
||||
# ------------------#
|
||||
@@ -509,8 +541,9 @@ def calc_history_per_trade(trades, yf_data):
|
||||
|
||||
# Fetch course for the day & eventual dividends from yf_data
|
||||
try:
|
||||
current_course = yf_data[trade_id].at[index_date, 'Close']
|
||||
current_dividends_per_ticker = yf_data[trade_id].at[index_date, 'Dividends']
|
||||
current_course = yf_data[ticker].at[index_date, 'Close']
|
||||
current_dividends_per_ticker = yf_data[ticker].at[index_date, 'Dividends']
|
||||
|
||||
# Catch missing yf-data (eg. for weekends) by reusing course from previous day
|
||||
except:
|
||||
current_course = previous_course
|
||||
@@ -522,18 +555,27 @@ def calc_history_per_trade(trades, yf_data):
|
||||
if date_close == index_date:
|
||||
current_course = trades[trade_id]['course_close']
|
||||
|
||||
# Save the result for the next iteration
|
||||
# This setup also makes it possible, that a previous course is passed down across mutiple days
|
||||
# This makes sense is case i.e. for a weekend
|
||||
previous_course = current_course
|
||||
|
||||
# ------------------ CALCULATE PERFORMANCE IF REQUIRED
|
||||
if date_open >= index_date and date_close <= index_date:
|
||||
if index_date >= date_open and index_date <= date_close:
|
||||
# Calculate performance values
|
||||
current_amount = trades[trade_id]['units']
|
||||
current_invested = current_amount * trades[trade_id]['course_open']
|
||||
total_dividends = total_dividends + current_amount * current_dividends_per_ticker
|
||||
current_value = current_amount * current_course
|
||||
current_irr = calculate_irr(index_date, date_open, current_value, current_invested)
|
||||
total_performanance = current_value - current_invested
|
||||
current_value_with_dividends = current_value + total_dividends
|
||||
current_irr = calculate_irr(index_date, date_open, current_value_with_dividends, current_invested)
|
||||
total_performanance = current_value_with_dividends - current_invested
|
||||
|
||||
if current_value_with_dividends == 0:
|
||||
print("0-value Error with ticker: {}").format(ticker)
|
||||
|
||||
else:
|
||||
# Write 0, if trade is not relevant for current timeframe
|
||||
current_course = 0.0
|
||||
current_amount = 0
|
||||
current_invested = 0.00
|
||||
total_dividends = 0.00
|
||||
@@ -569,24 +611,28 @@ def calc_history_per_trade(trades, yf_data):
|
||||
index_date = index_date + datetime.timedelta(days=1)
|
||||
|
||||
# ------------------ LOGGING
|
||||
print("[SUCCESS] Calculating history for trade: {} with ticker: {}".format(trade_id, ticker))
|
||||
if warning_count > 0:
|
||||
print("[WARNING] Calculating history for trade: {} with ticker: {}".format(trade_id, ticker))
|
||||
print(" No yf-data available in {} cases of ticker & date".format(warning_count))
|
||||
print(" Probably reason is non-trading-days eg. weekends")
|
||||
print(" Used values from previous trade-day instead")
|
||||
else:
|
||||
print("[SUCCESS] Calculating history for trade: {} with ticker: {}".format(trade_id, ticker))
|
||||
|
||||
# ------------------ LOGGING
|
||||
if warning_count > 0:
|
||||
print("[WARNING] Calculating history per trade:")
|
||||
print("[WARNING] No yf-data available in {} cases of ticker & date".format(warning_count))
|
||||
print("[WARNING] Probably reason is non-trading-days eg. weekends")
|
||||
print("[WARNING] Used values from previous trade-day instead")
|
||||
# Reset warning count for the next trade
|
||||
warning_count = 0
|
||||
|
||||
data = json.dumps(history_per_trade, indent=2) # Converts a python-dictionary into a json
|
||||
|
||||
# Create file for easier development
|
||||
# Logging
|
||||
print("[SUCCESS] Calculating history for trades")
|
||||
with open("history_per_trade.json", "w") as f:
|
||||
f.write(data)
|
||||
|
||||
return history_per_trade
|
||||
|
||||
|
||||
|
||||
### -------------------- MAIN PROGRAMM --------------------
|
||||
while True:
|
||||
# Clear variables
|
||||
@@ -596,12 +642,14 @@ while True:
|
||||
tickers = []
|
||||
error = False
|
||||
|
||||
# Execute Functions
|
||||
# Fetch Data from the "trades" db in notion
|
||||
# Contains input fields (i.e. date_open) as well as output fields (i.e. irr, close current)
|
||||
trades = fetch_format_notion_data(notion_db_id_trades)
|
||||
if trades == True:
|
||||
error = True
|
||||
|
||||
if error == False:
|
||||
# Generates a list with unique tickers and no duplicates to reduce workload for the yfinance api
|
||||
tickers = filter_list_of_tickers(trades)
|
||||
if tickers == True:
|
||||
error = True
|
||||
@@ -612,17 +660,27 @@ while True:
|
||||
error = True
|
||||
|
||||
if error == False:
|
||||
# Calculates & stores a history per trade indexed by the notion database_id
|
||||
# Errors in calculating the history should not stop the remaining steps
|
||||
history_per_trade = calc_history_per_trade(trades, yf_data)
|
||||
|
||||
if error == False:
|
||||
# Selects the most current values for the irr, current course etc. and saves them to the trades-object
|
||||
# This object stores notion pages with all properties
|
||||
# By "overwriting" the output properties (i.e. irr) and then overwriting the notion-pages, i can store fresh data
|
||||
trades = calc_current_value_per_trade(trades, history_per_trade)
|
||||
|
||||
if error == False:
|
||||
list_wkl_dates = create_list_wkl_dates(trades)
|
||||
# Updates / replaces all pages in the notion "trades"
|
||||
push_notion_trades_update(trades)
|
||||
|
||||
if error == False:
|
||||
history_total = calc_history_total(history_per_trade, trades)
|
||||
|
||||
if error == False:
|
||||
# Creates a list containing one date per week
|
||||
list_wkl_dates = create_list_wkl_dates(trades)
|
||||
|
||||
if error == False:
|
||||
history_total_wkl = filter_history_by_list(history_total, list_wkl_dates)
|
||||
|
||||
|
||||
309
yf_data.txt
Normal file
309
yf_data.txt
Normal file
@@ -0,0 +1,309 @@
|
||||
{'LYYA.DE': Close Dividends
|
||||
Date
|
||||
2009-11-13 63.441936 0.0
|
||||
2009-11-16 64.206802 0.0
|
||||
2009-11-17 64.117287 0.0
|
||||
2009-11-18 63.743000 0.0
|
||||
2009-11-19 62.929321 0.0
|
||||
... ... ...
|
||||
2025-11-10 378.290009 0.0
|
||||
2025-11-11 379.589996 0.0
|
||||
2025-11-12 381.549988 0.0
|
||||
2025-11-13 376.359985 0.0
|
||||
2025-11-14 375.850006 0.0
|
||||
|
||||
[4066 rows x 2 columns], 'NVD.DE': Close Dividends
|
||||
Date
|
||||
2007-12-13 23.393524 0.0
|
||||
2007-12-14 23.393524 0.0
|
||||
2007-12-17 23.393524 0.0
|
||||
2007-12-18 23.393524 0.0
|
||||
2007-12-19 23.393524 0.0
|
||||
... ... ...
|
||||
2025-11-10 168.039993 0.0
|
||||
2025-11-11 165.800003 0.0
|
||||
2025-11-12 166.639999 0.0
|
||||
2025-11-13 166.639999 0.0
|
||||
2025-11-14 163.500000 0.0
|
||||
|
||||
[4552 rows x 2 columns], 'ISPA.DE': Close Dividends
|
||||
Date
|
||||
2009-09-25 8.835647 0.0
|
||||
2009-09-28 8.890593 0.0
|
||||
2009-09-29 8.978509 0.0
|
||||
2009-09-30 9.005982 0.0
|
||||
2009-10-01 8.934552 0.0
|
||||
... ... ...
|
||||
2025-11-10 33.000000 0.0
|
||||
2025-11-11 33.215000 0.0
|
||||
2025-11-12 33.395000 0.0
|
||||
2025-11-13 33.255001 0.0
|
||||
2025-11-14 33.205002 0.0
|
||||
|
||||
[4100 rows x 2 columns], 'EUNY.DE': Close Dividends
|
||||
Date
|
||||
2011-11-25 12.068275 0.0
|
||||
2011-11-28 12.304699 0.0
|
||||
2011-11-29 12.368515 0.0
|
||||
2011-11-30 12.701229 0.0
|
||||
2011-12-01 12.940397 0.0
|
||||
... ... ...
|
||||
2025-11-10 15.128000 0.0
|
||||
2025-11-11 15.258000 0.0
|
||||
2025-11-12 15.298000 0.0
|
||||
2025-11-13 15.194000 0.0
|
||||
2025-11-14 15.208000 0.0
|
||||
|
||||
[3548 rows x 2 columns], 'MSF.DE': Close Dividends
|
||||
Date
|
||||
2007-12-28 16.091715 0.0
|
||||
2008-01-02 15.795918 0.0
|
||||
2008-01-03 15.717033 0.0
|
||||
2008-01-04 15.145140 0.0
|
||||
2008-01-07 15.454091 0.0
|
||||
... ... ...
|
||||
2025-11-10 431.250000 0.0
|
||||
2025-11-11 434.549988 0.0
|
||||
2025-11-12 433.000000 0.0
|
||||
2025-11-13 437.799988 0.0
|
||||
2025-11-14 437.649994 0.0
|
||||
|
||||
[4544 rows x 2 columns], 'IQQL.DE': Close Dividends
|
||||
Date
|
||||
2008-01-07 8.660799 0.000000
|
||||
2008-01-14 8.216021 0.000000
|
||||
2008-01-21 7.511789 0.000000
|
||||
2008-01-31 8.055408 0.000000
|
||||
2008-02-05 8.463118 0.000000
|
||||
... ... ...
|
||||
2025-11-10 30.087978 0.000000
|
||||
2025-11-11 30.289515 0.000000
|
||||
2025-11-12 30.348501 0.000000
|
||||
2025-11-13 29.400000 0.521498
|
||||
2025-11-14 29.325001 0.000000
|
||||
|
||||
[4370 rows x 2 columns], 'IQQP.DE': Close Dividends
|
||||
Date
|
||||
2008-12-23 11.590864 0.0
|
||||
2008-12-29 11.916176 0.0
|
||||
2008-12-30 11.753519 0.0
|
||||
2009-01-02 12.566789 0.0
|
||||
2009-01-05 13.061826 0.0
|
||||
... ... ...
|
||||
2025-11-10 30.260000 0.0
|
||||
2025-11-11 30.530001 0.0
|
||||
2025-11-12 30.785000 0.0
|
||||
2025-11-13 30.895000 0.0
|
||||
2025-11-14 30.500000 0.0
|
||||
|
||||
[4290 rows x 2 columns], 'XUHY.DE': Close Dividends
|
||||
Date
|
||||
2018-02-14 7.248336 0.0
|
||||
2018-02-15 7.256043 0.0
|
||||
2018-02-16 7.256043 0.0
|
||||
2018-02-19 7.256043 0.0
|
||||
2018-02-20 7.256043 0.0
|
||||
... ... ...
|
||||
2025-11-10 11.363500 0.0
|
||||
2025-11-11 11.364000 0.0
|
||||
2025-11-12 11.321500 0.0
|
||||
2025-11-13 11.252500 0.0
|
||||
2025-11-14 11.278000 0.0
|
||||
|
||||
[1970 rows x 2 columns], 'ASML.AS': Close Dividends
|
||||
Date
|
||||
1998-07-20 3.681718 0.0
|
||||
1998-07-21 3.625336 0.0
|
||||
1998-07-22 3.585870 0.0
|
||||
1998-07-23 3.185560 0.0
|
||||
1998-07-24 3.067160 0.0
|
||||
... ... ...
|
||||
2025-11-10 886.700012 0.0
|
||||
2025-11-11 886.900024 0.0
|
||||
2025-11-12 891.799988 0.0
|
||||
2025-11-13 881.500000 0.0
|
||||
2025-11-14 874.099976 0.0
|
||||
|
||||
[7035 rows x 2 columns], 'XDN0.DE': Close Dividends
|
||||
Date
|
||||
2013-09-04 18.432314 0.0
|
||||
2013-09-05 18.409676 0.0
|
||||
2013-09-06 18.467722 0.0
|
||||
2013-09-09 18.567812 0.0
|
||||
2013-09-10 18.888399 0.0
|
||||
... ... ...
|
||||
2025-11-10 47.720001 0.0
|
||||
2025-11-11 48.660000 0.0
|
||||
2025-11-12 49.115002 0.0
|
||||
2025-11-13 48.849998 0.0
|
||||
2025-11-14 48.279999 0.0
|
||||
|
||||
[3097 rows x 2 columns], 'VGWL.DE': Close Dividends
|
||||
Date
|
||||
2017-10-26 60.565231 0.0
|
||||
2017-10-27 61.300976 0.0
|
||||
2017-10-30 61.049957 0.0
|
||||
2017-10-31 61.049957 0.0
|
||||
2017-11-01 61.508717 0.0
|
||||
... ... ...
|
||||
2025-11-10 141.539993 0.0
|
||||
2025-11-11 142.080002 0.0
|
||||
2025-11-12 142.699997 0.0
|
||||
2025-11-13 140.860001 0.0
|
||||
2025-11-14 140.720001 0.0
|
||||
|
||||
[2046 rows x 2 columns], 'UEFE.DE': Close Dividends
|
||||
Date
|
||||
2018-09-05 10.201477 0.0
|
||||
2018-09-06 10.226524 0.0
|
||||
2018-09-07 10.285321 0.0
|
||||
2018-09-10 10.244708 0.0
|
||||
2018-09-11 10.219944 0.0
|
||||
... ... ...
|
||||
2025-11-10 11.380000 0.0
|
||||
2025-11-11 11.374500 0.0
|
||||
2025-11-12 11.393500 0.0
|
||||
2025-11-13 11.371000 0.0
|
||||
2025-11-14 11.395500 0.0
|
||||
|
||||
[1829 rows x 2 columns], 'APC.DE': Close Dividends
|
||||
Date
|
||||
2000-01-03 2.844365 0.000000
|
||||
2000-01-04 0.798163 0.000000
|
||||
2000-01-05 0.702383 0.000000
|
||||
2000-01-06 0.740115 0.000000
|
||||
2000-01-07 0.732859 0.000000
|
||||
... ... ...
|
||||
2025-11-10 232.750000 0.223652
|
||||
2025-11-11 234.899994 0.000000
|
||||
2025-11-12 236.699997 0.000000
|
||||
2025-11-13 236.699997 0.000000
|
||||
2025-11-14 235.649994 0.000000
|
||||
|
||||
[6615 rows x 2 columns], 'QCI.DE': Close Dividends
|
||||
Date
|
||||
2007-12-18 15.819970 0.0
|
||||
2007-12-19 15.819970 0.0
|
||||
2007-12-20 15.819970 0.0
|
||||
2007-12-21 15.819970 0.0
|
||||
2007-12-27 15.819970 0.0
|
||||
... ... ...
|
||||
2025-11-10 147.539993 0.0
|
||||
2025-11-11 149.699997 0.0
|
||||
2025-11-12 152.160004 0.0
|
||||
2025-11-13 150.240005 0.0
|
||||
2025-11-14 150.919998 0.0
|
||||
|
||||
[4549 rows x 2 columns], 'VWCE.DE': Close Dividends
|
||||
Date
|
||||
2019-07-29 71.849998 0.0
|
||||
2019-07-30 71.440002 0.0
|
||||
2019-07-31 71.550003 0.0
|
||||
2019-08-01 71.989998 0.0
|
||||
2019-08-02 69.639999 0.0
|
||||
... ... ...
|
||||
2025-11-10 144.539993 0.0
|
||||
2025-11-11 145.020004 0.0
|
||||
2025-11-12 145.740005 0.0
|
||||
2025-11-13 143.820007 0.0
|
||||
2025-11-14 143.679993 0.0
|
||||
|
||||
[1605 rows x 2 columns], 'EXSG.DE': Close Dividends
|
||||
Date
|
||||
2008-01-02 16.657269 0.0
|
||||
2008-01-03 16.594925 0.0
|
||||
2008-01-04 16.454641 0.0
|
||||
2008-01-07 16.522179 0.0
|
||||
2008-01-08 16.615705 0.0
|
||||
... ... ...
|
||||
2025-11-10 20.334999 0.0
|
||||
2025-11-11 20.465000 0.0
|
||||
2025-11-12 20.705000 0.0
|
||||
2025-11-13 20.715000 0.0
|
||||
2025-11-14 20.555000 0.0
|
||||
|
||||
[4540 rows x 2 columns], 'MIVB.DE': Close Dividends
|
||||
Date
|
||||
2018-11-20 47.334999 0.0
|
||||
2018-11-21 47.334999 0.0
|
||||
2018-11-22 47.334999 0.0
|
||||
2018-11-23 47.334999 0.0
|
||||
2018-11-26 47.334999 0.0
|
||||
... ... ...
|
||||
2025-11-10 83.870003 0.0
|
||||
2025-11-11 85.080002 0.0
|
||||
2025-11-12 85.599998 0.0
|
||||
2025-11-13 84.830002 0.0
|
||||
2025-11-14 83.949997 0.0
|
||||
|
||||
[1775 rows x 2 columns], 'AMD.DE': Close Dividends
|
||||
Date
|
||||
2007-12-28 5.200000 0.0
|
||||
2008-01-02 4.880000 0.0
|
||||
2008-01-03 4.560000 0.0
|
||||
2008-01-04 4.260000 0.0
|
||||
2008-01-07 4.250000 0.0
|
||||
... ... ...
|
||||
2025-11-10 210.750000 0.0
|
||||
2025-11-11 205.949997 0.0
|
||||
2025-11-12 225.600006 0.0
|
||||
2025-11-13 225.600006 0.0
|
||||
2025-11-14 216.100006 0.0
|
||||
|
||||
[4544 rows x 2 columns], 'EXX5.DE': Close Dividends
|
||||
Date
|
||||
2008-01-02 33.756733 0.0
|
||||
2008-01-03 33.661068 0.0
|
||||
2008-01-04 32.674915 0.0
|
||||
2008-01-07 33.006100 0.0
|
||||
2008-01-08 32.652840 0.0
|
||||
... ... ...
|
||||
2025-11-10 85.919998 0.0
|
||||
2025-11-11 86.769997 0.0
|
||||
2025-11-12 87.209999 0.0
|
||||
2025-11-13 86.779999 0.0
|
||||
2025-11-14 86.059998 0.0
|
||||
|
||||
[4541 rows x 2 columns], 'INL.DE': Close Dividends
|
||||
Date
|
||||
2007-12-28 9.958893 0.0
|
||||
2008-01-02 9.323332 0.0
|
||||
2008-01-03 9.021710 0.0
|
||||
2008-01-04 8.375380 0.0
|
||||
2008-01-07 8.316133 0.0
|
||||
... ... ...
|
||||
2025-11-10 33.080002 0.0
|
||||
2025-11-11 32.764999 0.0
|
||||
2025-11-12 32.735001 0.0
|
||||
2025-11-13 31.320000 0.0
|
||||
2025-11-14 30.885000 0.0
|
||||
|
||||
[4544 rows x 2 columns], 'DFEN.DE': Close Dividends
|
||||
Date
|
||||
2023-04-05 18.525999 0.0
|
||||
2023-04-06 18.690001 0.0
|
||||
2023-04-11 18.936001 0.0
|
||||
2023-04-12 18.955999 0.0
|
||||
2023-04-13 18.959999 0.0
|
||||
... ... ...
|
||||
2025-11-10 53.689999 0.0
|
||||
2025-11-11 53.189999 0.0
|
||||
2025-11-12 53.000000 0.0
|
||||
2025-11-13 52.380001 0.0
|
||||
2025-11-14 52.160000 0.0
|
||||
|
||||
[663 rows x 2 columns], 'DBPG.DE': Close Dividends
|
||||
Date
|
||||
2010-03-18 12.664600 0.0
|
||||
2010-03-19 12.535500 0.0
|
||||
2010-03-22 12.662700 0.0
|
||||
2010-03-23 12.845900 0.0
|
||||
2010-03-24 12.704800 0.0
|
||||
... ... ...
|
||||
2025-11-10 252.350006 0.0
|
||||
2025-11-11 254.199997 0.0
|
||||
2025-11-12 256.450012 0.0
|
||||
2025-11-13 250.100006 0.0
|
||||
2025-11-14 249.449997 0.0
|
||||
|
||||
[3979 rows x 2 columns]}
|
||||
3980
yf_data_DBPG.DE.csv
Normal file
3980
yf_data_DBPG.DE.csv
Normal file
File diff suppressed because it is too large
Load Diff
4537
yf_data_INL.DE.csv
Normal file
4537
yf_data_INL.DE.csv
Normal file
File diff suppressed because it is too large
Load Diff
4282
yf_data_IQQP.DE.csv
Normal file
4282
yf_data_IQQP.DE.csv
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user