aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--beleggen_to_csv.py39
-rw-r--r--evi_to_asn.py52
-rwxr-xr-xplotasn.py3
3 files changed, 93 insertions, 1 deletions
diff --git a/beleggen_to_csv.py b/beleggen_to_csv.py
new file mode 100644
index 0000000..e59922c
--- /dev/null
+++ b/beleggen_to_csv.py
@@ -0,0 +1,39 @@
+import csv
+import json
+import sys
+
+# Script om ASN Beleggen vermogensontwikkeling om te zetten naar het CSV
+# formaat van spaar- en betaalrekeningen, zodat het door plotasn.py meegenomen
+# kan worden.
+#
+# Om de data te krijgen:
+#
+# 1. Ga naar https://www.asnbank.nl/online/web/onlinebankieren/beleggen/11812158
+# 2. Er wordt een request gedaan naar .../api/datapunten
+# 3. Dit script converteert zulke data op stdin naar een CSV bestand op stdout
+
+def parse_date(s):
+ y, m, d = s.split('-')
+ return '{}-{}-{}'.format(d, m, y)
+
+def beleggen_to_csv(json):
+ prev = 0
+
+ for e in json['grafiekdata']:
+ value = float(e['waarde'])
+ if value == prev:
+ continue
+
+ diff = round(value - prev, 2)
+ date = parse_date(e['vastgelegd_op'])
+ yield '', '', '', '', '', '', '', 'EUR', prev, 'EUR', diff, date
+
+ prev = value
+
+if __name__ == '__main__':
+ for line in sys.stdin:
+ obj = json.loads(line)
+
+ wr = csv.writer(sys.stdout)
+ for line in beleggen_to_csv(obj):
+ wr.writerow(line)
diff --git a/evi_to_asn.py b/evi_to_asn.py
new file mode 100644
index 0000000..0531f30
--- /dev/null
+++ b/evi_to_asn.py
@@ -0,0 +1,52 @@
+import csv
+import json
+import sys
+
+# Script om Evi vermogensontwikkeling om te zetten in het CSV formaat van de
+# ASN, zodat het door plotasn.py meegenomen kan worden.
+#
+# Om de data te krijgen:
+#
+# 1. Ga naar https://mijn.evivanlanschot.nl/deelnemer/vermogensontwikkeling
+# 2. Er wordt een request gedaan naar /deelnemer/vermogensontwikkeling/postjsondata
+# 3. Dit script converteert zulke data op stdin naar een CSV bestand op stdout
+
+MONTHS = {
+ 'jan': '01', 'feb': '02', 'mrt': '03', 'apr': '04', 'mei': '05', 'jun': '06',
+ 'jul': '07', 'aug': '08', 'sep': '09', 'okt': '10', 'nov': '11', 'dec': '12',
+ }
+
+def parse_date(s):
+ d, m, y = s.split('-')
+ return '{}-{}-20{}'.format(d, MONTHS[m], y)
+
+def evi_to_asn(json):
+ dates = [e['label'] for e in obj['categories'][0]['Category']]
+
+ cum = obj['dataset'][0]
+ assert cum['seriesName'] == 'Cumulatieve ontwikkeling'
+
+ prev = 0
+
+ for date, entry in zip(dates, cum['data']):
+ if len(entry['value']) == 0:
+ continue
+
+ value = float(entry['value'].replace(',', '.'))
+ if value == prev:
+ continue
+
+ diff = round(value - prev, 2)
+ date = parse_date(date)
+ yield '', '', '', '', '', '', '', 'EUR', prev, 'EUR', diff, date
+
+ prev = value
+
+if __name__ == '__main__':
+ for line in sys.stdin:
+ s = json.loads(line)
+ obj = json.loads(s)
+
+ wr = csv.writer(sys.stdout)
+ for line in evi_to_asn(obj):
+ wr.writerow(line)
diff --git a/plotasn.py b/plotasn.py
index 1860de4..a06c8ac 100755
--- a/plotasn.py
+++ b/plotasn.py
@@ -7,6 +7,7 @@ import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.ticker import AutoMinorLocator
import numpy as np
+from os.path import basename
class Record:
def __init__(self, date, balance):
@@ -94,7 +95,7 @@ def plot_files(files):
i = 0
for xs, ys in axes_lists:
- plt.plot(xs, ys, label=files[i])
+ plt.plot(xs, ys, label=basename(files[i]))
i += 1
if len(files) > 1: