0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof or.ResizeObserver!="undefined"?or.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Oe,H(e)).pipe(C(()=>e.disconnect()))),J(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>he(e)))),N(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function sr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Oe,H(e)).pipe(C(()=>e.disconnect()))),J(1));function cr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),G())}var fr={drawer:V("[data-md-toggle=drawer]"),search:V("[data-md-toggle=search]")};function io(e){return fr[e].checked}function qe(e,t){fr[e].checked!==t&&fr[e].click()}function Ue(e){let t=fr[e];return b(t,"change").pipe(l(()=>t.checked),N(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(N(!1))}function ao(){let e=b(window,"keydown").pipe(_(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),_(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!$a(n,r)}return!0}),ue());return Ia().pipe(x(t=>t?R:e))}function Me(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function ur(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Fa(){return b(window,"hashchange").pipe(l(fo),N(fo()),_(e=>e.length>0),J(1))}function po(){return Fa().pipe(l(e=>ce(`[id="${e}"]`)),_(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(N(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function pr(e,t={credentials:"same-origin"}){return pe(fetch(`${e}`,t)).pipe(fe(()=>R),x(r=>r.status!==200?Ot(()=>new Error(r.statusText)):H(r)))}function We(e,t){return pr(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return pr(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function lr(e){let t=M("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Te(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),N(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),N(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function mr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Je(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Features
+Design decisions
+
+Easy : Very easy to set up and get started with.
+Intuitive : Designed to be intuitive and easy to use.
+Pythonic SDK : Pythonic SDK for building your own monitoring infrastructure.
+Robust : Get production-ready MLOps system.
+Kubernetes : Get production-ready code. With automatic interactive documentation.
+
+Descriptive Statistics
+Whitebox provides a nice list of descriptive statistics of input dataset, making the overview of data easy.
+Models Metrics
+Classification Models
+Whitebox includes comprehensive metrics tracking for classification models. This allows users to easily evaluate the performance of their classification models and identify areas for improvement. Additionally, users can set custom thresholds for each metric to receive alerts when performance deviates from expected results.
+Regression Models
+Whitebox includes comprehensive metrics tracking for regression models. This allows users to easily evaluate the performance of their regression models and identify areas for improvement. Additionally, users can set custom thresholds for each metric to receive alerts when performance deviates from expected results.
+Data / Concept Drift Monitoring
+Whitebox includes monitoring for data and concept drift . This feature tracks changes in the distribution of the data used to train models and alerts users when significant changes occur. Additionally, it detects changes in the performance of deployed models and alerts users when significant drift is detected. This allows users to identify and address data and model drift early, reducing the risk of poor model performance.
+Explainable AI
+Whitebox includes model explaination also. The explainability performed through the explainability report which allows user to know anytime which feature had the most impact on model's prediction.
+Alerts
+Whitebox includes an alerting system that allows users to set custom thresholds for metrics and receive notifications when performance deviates from expected results. These alerts can be delivered via email, SMS, or webhook, and can be customized to fit the needs of any organization. This allows users to quickly respond to changes in model performance and take action to improve results.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/helm_charts/whitebox/Chart.yaml b/helm_charts/whitebox/Chart.yaml
deleted file mode 100644
index edc6c3a..0000000
--- a/helm_charts/whitebox/Chart.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v2
-name: whitebox
-description: A Machine learning monitoring platform
-
-type: application
-version: 0.1.0
-appVersion: "0.1.0"
-
-dependencies:
- - name: postgresql
- version: 12.1.5
- repository: https://charts.bitnami.com/bitnami
- condition: postgresql.enabled
diff --git a/helm_charts/whitebox/artifacthub-repo.yml b/helm_charts/whitebox/artifacthub-repo.yml
deleted file mode 100644
index 4f3040f..0000000
--- a/helm_charts/whitebox/artifacthub-repo.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-repositoryID: 5276bf98-7f0a-407d-ba4d-5b3083801cd6
-owners:
- - name: Squaredev
- email: hello@squaredev.io
diff --git a/helm_charts/whitebox/templates/_helpers.tpl b/helm_charts/whitebox/templates/_helpers.tpl
deleted file mode 100644
index cd9b333..0000000
--- a/helm_charts/whitebox/templates/_helpers.tpl
+++ /dev/null
@@ -1,62 +0,0 @@
-{{/*
-Expand the name of the chart.
-*/}}
-{{- define "whitebox.name" -}}
-{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
-{{- end }}
-
-{{/*
-Create a default fully qualified app name.
-We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
-If release name contains chart name it will be used as a full name.
-*/}}
-{{- define "whitebox.fullname" -}}
-{{- if .Values.fullnameOverride }}
-{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
-{{- else }}
-{{- $name := default .Chart.Name .Values.nameOverride }}
-{{- if contains $name .Release.Name }}
-{{- .Release.Name | trunc 63 | trimSuffix "-" }}
-{{- else }}
-{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
-{{- end }}
-{{- end }}
-{{- end }}
-
-{{/*
-Create chart name and version as used by the chart label.
-*/}}
-{{- define "whitebox.chart" -}}
-{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
-{{- end }}
-
-{{/*
-Common labels
-*/}}
-{{- define "whitebox.labels" -}}
-helm.sh/chart: {{ include "whitebox.chart" . }}
-{{ include "whitebox.selectorLabels" . }}
-{{- if .Chart.AppVersion }}
-app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
-{{- end }}
-app.kubernetes.io/managed-by: {{ .Release.Service }}
-{{- end }}
-
-{{/*
-Selector labels
-*/}}
-{{- define "whitebox.selectorLabels" -}}
-app.kubernetes.io/name: {{ include "whitebox.name" . }}
-app.kubernetes.io/instance: {{ .Release.Name }}
-{{- end }}
-
-{{/*
-Create the name of the service account to use
-*/}}
-{{- define "whitebox.serviceAccountName" -}}
-{{- if .Values.serviceAccount.create }}
-{{- default (include "whitebox.fullname" .) .Values.serviceAccount.name }}
-{{- else }}
-{{- default "default" .Values.serviceAccount.name }}
-{{- end }}
-{{- end }}
diff --git a/helm_charts/whitebox/templates/deployment.yaml b/helm_charts/whitebox/templates/deployment.yaml
deleted file mode 100644
index 997d7b7..0000000
--- a/helm_charts/whitebox/templates/deployment.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: {{ include "whitebox.fullname" . }}
- labels:
- {{- include "whitebox.labels" . | nindent 4 }}
-spec:
- replicas: {{ .Values.replicaCount }}
- selector:
- matchLabels:
- {{- include "whitebox.selectorLabels" . | nindent 6 }}
- template:
- metadata:
- {{- with .Values.podAnnotations }}
- annotations:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- labels:
- {{- include "whitebox.selectorLabels" . | nindent 8 }}
- spec:
- securityContext:
- {{- toYaml .Values.podSecurityContext | nindent 8 }}
- containers:
- - name: whitebox
- securityContext:
- {{- toYaml .Values.securityContext | nindent 12 }}
- image: sqdhub/whitebox:{{ .Values.image.tag }}
- ports:
- - name: http
- containerPort: 8000
- protocol: TCP
- env:
- - name: DATABASE_URL
- value: postgresql://{{ .Values.postgresql.auth.username | default "postgres" }}:{{ .Values.postgresql.auth.password | default "postgres" }}@{{ .Release.Name }}-postgresql/postgres
- resources:
- {{- toYaml .Values.resources | nindent 12 }}
- {{- with .Values.nodeSelector }}
- nodeSelector:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.affinity }}
- affinity:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.tolerations }}
- tolerations:
- {{- toYaml . | nindent 8 }}
- {{- end }}
diff --git a/helm_charts/whitebox/templates/ingress.yaml b/helm_charts/whitebox/templates/ingress.yaml
deleted file mode 100644
index fd5d88a..0000000
--- a/helm_charts/whitebox/templates/ingress.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-{{- if .Values.ingress.enabled -}}
-{{- $fullName := include "whitebox.fullname" . -}}
-{{- $svcPort := .Values.service.port -}}
-{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
- {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
- {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
- {{- end }}
-{{- end }}
-{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
-apiVersion: networking.k8s.io/v1
-{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
-apiVersion: networking.k8s.io/v1beta1
-{{- else -}}
-apiVersion: extensions/v1beta1
-{{- end }}
-kind: Ingress
-metadata:
- name: {{ $fullName }}
- labels:
- {{- include "whitebox.labels" . | nindent 4 }}
- {{- with .Values.ingress.annotations }}
- annotations:
- {{- toYaml . | nindent 4 }}
- {{- end }}
-spec:
- {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
- ingressClassName: {{ .Values.ingress.className }}
- {{- end }}
- {{- if .Values.ingress.tls }}
- tls:
- {{- range .Values.ingress.tls }}
- - hosts:
- {{- range .hosts }}
- - {{ . | quote }}
- {{- end }}
- secretName: {{ .secretName }}
- {{- end }}
- {{- end }}
- rules:
- {{- range .Values.ingress.hosts }}
- - host: {{ .host | quote }}
- http:
- paths:
- {{- range .paths }}
- - path: {{ .path }}
- {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
- pathType: {{ .pathType }}
- {{- end }}
- backend:
- {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
- service:
- name: {{ $fullName }}
- port:
- number: {{ $svcPort }}
- {{- else }}
- serviceName: {{ $fullName }}
- servicePort: {{ $svcPort }}
- {{- end }}
- {{- end }}
- {{- end }}
-{{- end }}
diff --git a/helm_charts/whitebox/templates/service.yaml b/helm_charts/whitebox/templates/service.yaml
deleted file mode 100644
index dfb5549..0000000
--- a/helm_charts/whitebox/templates/service.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: {{ include "whitebox.fullname" . }}
- labels:
- {{- include "whitebox.labels" . | nindent 4 }}
-spec:
- type: {{ .Values.service.type }}
- ports:
- - port: {{ .Values.service.port }}
- targetPort: http
- protocol: TCP
- name: http
- selector:
- {{- include "whitebox.selectorLabels" . | nindent 4 }}
diff --git a/helm_charts/whitebox/values.yaml b/helm_charts/whitebox/values.yaml
deleted file mode 100644
index 469b36a..0000000
--- a/helm_charts/whitebox/values.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-replicaCount: 1
-
-image:
- tag: main
-
-nameOverride: ''
-fullnameOverride: ''
-
-podAnnotations: {}
-
-podSecurityContext: {}
-
-securityContext: {}
-
-service:
- type: ClusterIP
- port: 80
-
-
-ingress:
- enabled: false
- # className: ''
- # annotations:
- # kubernetes.io/ingress.class: nginx
- # kubernetes.io/tls-acme: "true"
- # cert-manager.io/cluster-issuer: letsencrypt-prod
- # hosts:
- # - host: whitebox.example.com
- # paths:
- # - path: /
- # pathType: Prefix
- # tls:
- # - secretName: whitebox-tls
- # hosts:
- # - whitebox.example.com
-
-resources: {}
-
-nodeSelector: {}
-
-tolerations: []
-
-affinity: {}
-
-postgresql:
- enabled: true
- storageClass: standard
-
- auth:
- username: whitebox
- password: whitebox
-
- primary:
- persistence:
- size: 100Mi
diff --git a/docs/mkdocs/docs/img/favicon.png b/img/favicon.png
similarity index 100%
rename from docs/mkdocs/docs/img/favicon.png
rename to img/favicon.png
diff --git a/docs/mkdocs/docs/img/logo-white.png b/img/logo-white.png
similarity index 100%
rename from docs/mkdocs/docs/img/logo-white.png
rename to img/logo-white.png
diff --git a/assets/logo.svg b/img/logo.svg
similarity index 100%
rename from assets/logo.svg
rename to img/logo.svg
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..f553a32
--- /dev/null
+++ b/index.html
@@ -0,0 +1,620 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Whitebox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Whitebox
+
+
+
+
+
+
+ Whitebox is an open source E2E ML monitoring platform with edge capabilities that plays nicely with kubernetes
+
+
+
+
+Documentation : https://whitebox-ai.github.io/whitebox/
+Source Code : https://github.com/whitebox-ai/whitebox
+Roadmap : https://github.com/whitebox-ai/whitebox/milestones
+Issue tracking https://github.com/orgs/whitebox-ai/projects/1/views/3
+Discord : https://discord.gg/bkAcsx4V
+
+Whitebox is a dynamic open source E2E ML monitoring platform with edge capabilities that plays nicely with kubernetes.
+The current key features are:
+
+Descriptive statistics
+Classification models evaluation metrics
+Data / Concept drift monitoring
+Explainable AI
+Alerts
+
+Design guidelines:
+
+Easy : Very easy to set up and get started with.
+Intuitive : Designed to be intuitive and easy to use.
+Pythonic SDK : Pythonic SDK for building your own monitoring infrastructure.
+Robust : Get production-ready MLOps system.
+Kubernetes : Get production-ready code. With automatic interactive documentation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/mkdocs/docs/js/custom.js b/js/custom.js
similarity index 100%
rename from docs/mkdocs/docs/js/custom.js
rename to js/custom.js
diff --git a/docs/mkdocs/docs/js/mathjax-config.js b/js/mathjax-config.js
similarity index 100%
rename from docs/mkdocs/docs/js/mathjax-config.js
rename to js/mathjax-config.js
diff --git a/docs/mkdocs/docs/js/termynal.js b/js/termynal.js
similarity index 100%
rename from docs/mkdocs/docs/js/termynal.js
rename to js/termynal.js
diff --git a/metric-definitions/index.html b/metric-definitions/index.html
new file mode 100644
index 0000000..dcca38a
--- /dev/null
+++ b/metric-definitions/index.html
@@ -0,0 +1,1420 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Glossary / Metric definitions - Whitebox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Glossary / Metric definitions
+Descriptive statistics
+Missing values
+Missing values metric calculates the summary of the number of missing values per feature. Missing values include NaN in numeric arrays, NaN or None in object arrays and NaT in datetimelike.
+Non-Missing values
+Non-Missing values metric calculates the summary of the number of non-missing values per feature. Non-Missing values are all values beside NaN for numeric arrays, NaN or None for object arrays and NaT for datetimelike.
+Mean or Average value
+Returns the average value per feature excluding NaN and null values.
+Minimum value
+Returns the minimum value per feature.
+Maximum value
+Returns the maximum value per feature.
+Summary
+Returns the summary of the values per feature. Excludes NaN and null values during calculations.
+Standard Deviation
+Returns the sample standard deviation per feature normalized by N-1 excluding NaN and null values during calculations. Formula:
+
+
+σ = \sqrt{Σ(x_i-μ)^2 \over Ν-1}
+
+
+
+Variance
+Returns the unbiased variance per feature normalized by N-1 excluding NaN and null values during calculations. Formula:
+
+
+σ^2 = {Σ(x_i-μ)^2 \over Ν-1}
+
+
+
+Classification evaluation metrics
+Confusion Matrix
+Returns the number of TP, TN, FP and FN. In case of a multi-class classification returns the number of TP, TN, FP and FN per class.
+A typical example for binary classification could be seen below in which:
+
+20 observations were correctly classified as positive.
+10 observations were incorrectly classified as negative while they were actually positive.
+5 observations were incorrectly classified as positive while they were actually negative.
+75 observations were correctly classified as negative.
+
+
+
+
+
+Predicted Positive
+Predicted Negative
+
+
+
+
+Actual Positive
+20 (TP)
+10 (FN)
+
+
+Actual Negative
+5 (FP)
+75 (TN)
+
+
+
+A typical example for multi-class classification could be seen below in which:
+
+15 observations were correctly classified as Class A.
+5 observations were incorrectly classified as Class B while they were actually Class A.
+2 observations were incorrectly classified as Class C while they were actually Class A.
+4 observations were incorrectly classified as Class A while they were actually Class B.
+20 observations were correctly classified as Class B.
+3 observations were incorrectly classified as Class C while they were actually Class B.
+2 observations were incorrectly classified as Class A while they were actually Class C.
+8 observations were incorrectly classified as Class B while they were actually Class C.
+25 observations were correctly classified as Class C.
+
+
+
+
+
+Predicted Class A
+Predicted Class B
+Predicted Class C
+
+
+
+
+Actual Class A
+15 (TP_A)
+5
+2
+
+
+Actual Class B
+4
+20 (TP_B)
+3
+
+
+Actual Class C
+2
+8
+25 (TP_C)
+
+
+
+Accuracy
+Returns the accuracy classification score. In multi-class classification, this function computes subset accuracy: the set of labels predicted for a sample must exactly match the corresponding set of labels in y_true. Formula:
+
+
+accuracy = {(TP + TN) \over (TP + TN + FP + FN)}
+
+
+
+Precision
+Returns the precision classification score. In multi-class classification, returns the below 3 scores:
+
+micro: Calculate metrics globally by counting the total true positives, false negatives and false positives.
+macro: Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.
+weighted: Calculate metrics for each label, and find their average weighted by support (the number of true instances for each label). This alters ‘macro’ to account for label imbalance; it can result in an F-score that is not between precision and recall.
+
+Formula:
+
+
+precision = {TP \over (TP + FP)}
+
+
+
+Recall
+Returns the recall classification score. In multi-class classification, returns the below 3 scores:
+
+micro: Calculate metrics globally by counting the total true positives, false negatives and false positives.
+macro: Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.
+weighted: Calculate metrics for each label, and find their average weighted by support (the number of true instances for each label). This alters ‘macro’ to account for label imbalance; it can result in an F-score that is not between precision and recall.
+
+Formula:
+
+
+recall = {TP \over (TP + FN)}
+
+
+
+F1 score
+Returns the f1 classification score. In multi-class classification, returns the below 3 scores:
+
+micro: Calculate metrics globally by counting the total true positives, false negatives and false positives.
+macro: Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.
+weighted: Calculate metrics for each label, and find their average weighted by support (the number of true instances for each label). This alters ‘macro’ to account for label imbalance; it can result in an F-score that is not between precision and recall.
+
+Formula:
+
+
+F1 = 2 * {(precision * recall) \over (precision + recall)}
+
+
+
+Regression evaluation metrics
+R-Squared
+In a regression model, R-Squared (also known as R2 or the coefficient of determination) is a statistical metric that quantifies how much of the variance in the dependent variable can be accounted for by the independent variable. R-squared, thus, displays how well the data match the regression model (the goodness of fit).
+Formula:
+
+
+R^2 = {SS_{regression} \over SS_{total}}
+
+
+
+where:
+
+SS_{regression} = sum of squares due to regression (explained sum of squares)
+SS_{total} = total sum of squares
+
+Mean squared error
+The degree of inaccuracy in statistical models is gauged by the mean squared error, or MSE. Between the observed and projected values, it evaluates the average squared difference. The MSE is equal to 0 when a model is error-free. As model error increases, its value increases.
+Formula:
+
+
+MSE = {Σ(y_{i}-y'_{i})^2 \over n}
+
+
+
+where:
+
+y_{i} = i_{th} observation
+y'_{i} = corresponding predicted value
+n = number of observations
+
+Mean absolute error
+The mean absolute error of a model with respect to a test set is the mean of the absolute values of the individual prediction errors on over all instances in the test set. Each prediction error is the difference between the true value and the predicted value for the instance.
+Formula:
+
+
+MAE = {{{Σ^2}_{i=1}}|y_{i}-x_{i}| \over n}
+
+
+
+where:
+
+y_{i} = prediction
+x_{i} = true value
+n = number of observations
+
+Statistical tests and techniques
+Kolmogorov-Smirnov Two Sample test
+When there are two datasets then K-S two sample test can be used to test the agreement between their distributions. The null hypothesis states that there is no difference between the two distributions. Formula:
+
+
+D = Max|{F_a(X)-F_b(X)}|
+
+
+
+where:
+
+a = observations from first dataset.
+b = observations from second dataset.
+F_n(X) = observed cumulative frequency distribution of a random sample of n observations.
+
+Chi-squared test
+A chi-square test is a statistical test used to compare 2 datasets. The purpose of this test is to determine if a difference between data of 2 datasets is due to chance, or if it is due to a relationship between the variables you are studying. Formula:
+
+
+x^2 = Σ{(O_i - E_i)^2 \over E_i}
+
+
+
+where:
+
+x^2 = chi-square
+O_i = 1st dataset values
+E_i = 2nd dataset values
+
+Z-score for independent proportions
+The purpose of the z-test for independent proportions is to compare two independent datasets. Formula:
+
+
+Z = {p_1 - p_2 \over \sqrt{p' q' ({1\over n_1} + {1\over n_2})}}
+
+
+
+where:
+
+Z = Z-statistic which is compared to the standard normal deviate
+p_1 , p_2 = two datasets proportions
+p' = estimated true proportion under the null hypothesis
+q' = (1-p')
+n_1 , n_2 = number of observations in two datasets
+
+Wasserstein distance
+The Wasserstein distance is a metric to describe the distance between the distributions of 2 datasets. Formula:
+
+
+W = ({\int_0^1}{{|{F_A}^{-1}(u) - {F_B}^{-1}(u)|}^2 du} )^{0.5}
+
+
+
+where:
+
+W = Wasserstein distance
+F_A , F_B = corresponding cumulative distribution functions of two datasets
+{F_A}^{-1} , {F_B}^{-1} = respective quantile functions
+
+Jensen–Shannon divergence
+The Jensen–Shannon divergence is a method of measuring the similarity between two probability distributions. Formula:
+
+
+JS = 1/2 * KL(P || M) + 1/2 * KL(Q || M)
+
+
+
+where:
+
+JS = Jensen–Shannon divergence
+KL = Kullback-Leibler divergence: – sum x in X P(x) * log(Q(x) / P(x))
+P,Q = distributions of 2 datasets
+M = {1 \over 2} * (P+Q)
+
+Machine learning models
+Light Gradient Boosting Machine
+LightGBM is an open-source framework for gradient boosted machines. By default LightGBM will train a Gradient Boosted Decision Tree (GBDT), but it also supports random forests, Dropouts meet Multiple Additive Regression Trees (DART), and Gradient Based One-Side Sampling (Goss). The framework is fast and was designed for distributed training. It supports large-scale datasets and training on the GPU. LightGBM also provide highly optimised, scalable and fast implementations of gradient boosted machines (GBMs). The official documentation of LightGBM is accessible here .
+Explainable AI models
+Local Interpretable Model-agnostic Explanations
+LIME (Local Interpretable Model-agnostic Explanations), an explainable AI technique, aids in illuminating a machine learning model and making each prediction's particular implications understandable. The technique is appropriate for local explanations since it describes the classifier for a particular single instance. LIME modifies the input data to produce a succession of false data that only partially retain the original features. The original implementation along with documentation of LIME technique could be found in this repo .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ml-monitoring/index.html b/ml-monitoring/index.html
new file mode 100644
index 0000000..8fdebb7
--- /dev/null
+++ b/ml-monitoring/index.html
@@ -0,0 +1,734 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Understanding machine learning monitoring - Whitebox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Understanding machine learning monitoring
+Machine learning (ML) monitoring is a crucial process for ensuring the performance and reliability of ML models and systems. It involves tracking metrics, identifying issues, and improving overall performance. In this article, we will explore the key aspects of ML monitoring and its importance in today's data-driven world.
+What is machine learning monitoring?
+ML monitoring is the process of tracking the performance and behavior of ML models and systems. This includes monitoring metrics such as accuracy, precision, recall, and model performance over time. By monitoring these metrics, organizations can identify when a model is performing poorly or behaving unexpectedly and take action to correct it. Additionally, ML monitoring can be used to track the performance of different models and compare them to identify which model is performing best.
+
+One of the key aspects of ML monitoring is being able to detect when a model is performing poorly or behaving unexpectedly. This can be done by setting up alerts on certain metrics or by monitoring for unexpected changes in the model's behavior. For example, if a model's accuracy suddenly drops, an alert can be triggered to notify the team responsible for maintaining the model. This allows them to quickly investigate and address the issue, minimizing the impact on the organization's operations.
+Monitoring data and concept drift
+Another important aspect of ML monitoring is the ability to detect and address data and concept drifting. Data drifting refers to the gradual change in the distribution or characteristics of the input data over time. As the data changes, the model's performance may decrease, which is why it is important to detect data drifting and retrain the model with new data. Concept drifting, on the other hand, happens when the statistical properties of the target variable, which the model is trying to predict, change over time. This can happen due to various reasons such as changes in the underlying data distribution, overfitting, or degradation of the model's parameters. To address these issues, beside drift detection, organizations can use techniques such as monitoring of the performance of the model over time, retraining the model regularly etc.
+
+Another important aspect of ML monitoring is being able to track the input data that is being fed into the model. This can be used to identify any issues with the data, such as missing values, and to ensure that the data is being processed correctly. This helps to ensure that the model is making accurate predictions and that the data is being used effectively.
+Monitoring infrastructure and resources
+Finally, it is important to monitor the infrastructure and resources that the ML models are running on. This includes monitoring things like CPU and memory usage, disk space, and network traffic. This helps to ensure that the models have the resources they need to perform well and to identify any potential bottlenecks that may be impacting performance. By monitoring the infrastructure, organizations can ensure that their models are running smoothly and can make adjustments as needed.
+Conclusion
+In conclusion, ML monitoring is an essential process that helps organizations ensure the performance and reliability of their ML models and systems. By tracking metrics, identifying issues, and monitoring input data and infrastructure, organizations can ensure that their models are delivering accurate and reliable results and that their systems are running smoothly. With the increasing reliance on data and ML, the importance of ML monitoring will only continue to grow.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pytest.ini b/pytest.ini
deleted file mode 100644
index d447a8f..0000000
--- a/pytest.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[pytest]
-pythonpath = .
-log_cli=true
-; log_cli_level = "INFO"
-; addopts = --ignore=whitebox/tests/v1/**.py
-markers = order
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index b73353d..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1,116 +0,0 @@
-anyio==3.6.2
-appdirs==1.4.4
-asyncpg==0.27.0
-attrs==22.2.0
-bcrypt==4.0.1
-black==23.1.0
-brotlipy==0.7.0
-certifi==2022.12.7
-cffi==1.15.1
-cfgv==3.3.1
-charset-normalizer==3.0.1
-click==8.1.3
-colorama==0.4.6
-contourpy==1.0.7
-coverage==7.1.0
-crontab==1.0.0
-cryptography==39.0.1
-cycler==0.11.0
-databases==0.7.0
-distlib==0.3.6
-docopt==0.6.2
-evidently==0.2.4
-exceptiongroup==1.1.0
-fastapi==0.90.1
-filelock==3.9.0
-fonttools==4.38.0
-ghp-import==2.1.0
-h11==0.14.0
-httpcore==0.16.3
-httpx==0.23.3
-identify==2.5.17
-idna==3.4
-imageio==2.25.0
-iniconfig==2.0.0
-Jinja2==3.1.2
-joblib==1.2.0
-kiwisolver==1.4.4
-lightgbm==3.3.5
-lime==0.2.0.1
-Markdown==3.3.7
-MarkupSafe==2.1.2
-matplotlib==3.6.3
-mergedeep==1.3.4
-mkdocs==1.4.2
-mkdocs-material==9.0.12
-mkdocs-material-extensions==1.1.1
-mypy-extensions==1.0.0
-networkx==3.0
-nltk==3.8.1
-nodeenv==1.7.0
-numpy==1.24.2
-packaging==23.0
-pandas==1.5.3
-pathspec==0.11.0
-patsy==0.5.3
-Pillow==9.4.0
-pip==23.0
-platformdirs==3.0.0
-plotly==5.13.0
-pluggy==1.0.0
-pooch==1.6.0
-pre-commit==3.0.4
-psycopg2-binary==2.9.5
-pycparser==2.21
-pydantic==1.10.4
-Pygments==2.14.0
-pymdown-extensions==9.9.2
-pyOpenSSL==23.0.0
-pyparsing==3.0.9
-PySocks==1.7.1
-pytest==7.2.1
-pytest-order==1.0.1
-pytest-watch==4.2.0
-python-dateutil==2.8.2
-python-dotenv==0.21.1
-pytz==2022.7.1
-PyWavelets==1.4.1
-PyYAML==5.4.1
-pyyaml_env_tag==0.1
-regex==2022.10.31
-requests==2.28.2
-requests-mock==1.10.0
-rfc3986==1.5.0
-scikit-image==0.19.3
-scikit-learn==1.2.1
-scipy==1.10.0
-setuptools==67.1.0
-six==1.16.0
-sniffio==1.3.0
-SQLAlchemy==1.4.46
-stack-data==0.5.1
-starlette==0.23.1
-statsmodels==0.13.5
-streamlit==1.18.1
-tenacity==8.2.1
-threadpoolctl==3.1.0
-tifffile==2023.2.3
-tomli==2.0.1
-tqdm==4.64.1
-traitlets==5.4.0
-typed-ast==1.5.4
-typer==0.6.1
-types-python-dateutil==2.8.19
-typing_extensions==4.4.0
-unicodedata2==14.0.0
-urllib3==1.26.14
-uvicorn==0.20.0
-virtualenv==20.19.0
-watchdog==2.2.1
-wcwidth==0.2.5
-wheel==0.38.4
-wrapt==1.14.1
-xgboost==1.6.2
-yarl==1.8.1
-zipp==3.10.0
-
diff --git a/scripts/decrypt_api_key.py b/scripts/decrypt_api_key.py
deleted file mode 100644
index 282120f..0000000
--- a/scripts/decrypt_api_key.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import os
-import sys
-
-sys.path.append(os.getcwd())
-
-from whitebox.utils.passwords import decrypt_api_key
-from whitebox.core.settings import get_settings
-
-value = sys.argv[1]
-settings = get_settings()
-
-if __name__ == "__main__":
- api_key = decrypt_api_key(value, settings.SECRET_KEY.encode())
- print(api_key)
diff --git a/sdk-docs/index.html b/sdk-docs/index.html
new file mode 100644
index 0000000..3f59fd1
--- /dev/null
+++ b/sdk-docs/index.html
@@ -0,0 +1,975 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SDK Documentation - Whitebox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SDK Documentation
+This is the documentation for Whitebox's SDK. For an interactive experience, you can expirement with the SDK's Jupyter notebooks .
+Models
+create_model (name, type, prediction, labels=None, description="")
+Creates a model in the database. This model works as placeholder for all the actual model's metadata.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+name
+str
+The name of the model.
+
+
+type
+str
+The model's type. Possible values: binary, multi_class, regression.
+
+
+prediction
+str
+The prediction of the model.
+
+
+labels
+Dict[str, int]
+The model's labels. Defaults to None.
+
+
+description
+str
+The model's description. Defaults to an empty string "".
+
+
+
+
+
Info
+
Labels are not applicable ONLY in regression models.
+
+get_model (model_id)
+Fetches the model with the specified ID from the database.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+model_id
+str
+The ID of the model.
+
+
+
+delete_model (model_id)
+Deletes the model with the specified ID from the database.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+model_id
+str
+The ID of the model.
+
+
+
+Training Datasets
+log_training_dataset (model_id, non_processed, processed)
+Inserts a set of dataset rows into the database. When the dataset rows are successfully saved, the pipeline for training the model is triggered. Then, the trained model is saved in the /models/your_model's_id folder of whitebox's root directory.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+model_id
+str
+The ID of the model.
+
+
+non_processed
+pd.DataFrame
+The non processed training dataset.
+
+
+processed
+pd.DataFrame
+The processed training dataset.
+
+
+
+
+
Info
+
The non processed and processed dataframes must have the same length.
+
+Inferences
+log_inferences (model_id, non_processed, processed, timestamps, actuals=None)
+Inserts a set of inference rows into the database.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+model_id
+str
+The ID of the model.
+
+
+non_processed
+pd.DataFrame
+The non processed inferences.
+
+
+processed
+pd.DataFrame
+The processed inferences.
+
+
+timestamps
+pd.Series
+The timestamps for each inference row in the inference dataframes.
+
+
+actuals
+pd.Series
+The actuals for each inference row in the inference dataframes. Defaults to None.
+
+
+
+
+
Info
+
The non processed and processed dataframes along with the timestamps and actuals series must ALL have the same length.
+
+get_xai_row (inference_row_id)
+Produces an explainability report for a specific inference row.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+inference_row_id
+str
+The ID of the inference row.
+
+
+
+Monitors
+create_model_monitor (model_id, name, status, metric, severity, email, feature=None, lower_threshold=None)
+Creates a monitor for a specific metric.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+model_id
+str
+The ID of the model.
+
+
+name
+str
+The name of the monitor.
+
+
+status
+MonitorStatus
+The status of the monitor. Possible values for MonitorStatus: active, inactive.
+
+
+metric
+MonitorMetrics
+The metric that will be monitored. Possible values for MonitorMetrics: accuracy, precision, recall, f1, r_square, mean_squared_error, mean_absolute_error, data_drift, concept_drift.
+
+
+severity
+AlertSeverity
+The severity of the alert the monitor produces. Possible values for AlertSeverity: low, mid, high.
+
+
+email
+str
+The email to which the alert will be sent.
+
+
+feature
+str
+The feature to be monitored. Defaults to None.
+
+
+lower_threshold
+float
+The threshold below which an alert will be produced. Defaults to None.
+
+
+
+
+
Note
+
Some metrics like the data drift don't use a threshold so the feature that will be monitored should be inserted. In any case, both feature and lower_threshold can't be None at the same time.
+
+Metrics
+get_drifting_metrics (model_id)
+Fetches a model's drifting metric reports.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+model_id
+str
+The ID of the model.
+
+
+
+get_descriptive_statistics (model_id)
+Fetches a model's descriptive statistics reports.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+model_id
+str
+The ID of the model.
+
+
+
+get_performance_metrics (model_id)
+Fetches a model's performance metric reports.
+
+
+
+Parameter
+Type
+Description
+
+
+
+
+model_id
+str
+The ID of the model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/search/search_index.json b/search/search_index.json
new file mode 100644
index 0000000..5c0f7b6
--- /dev/null
+++ b/search/search_index.json
@@ -0,0 +1 @@
+{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Whitebox","text":" Whitebox is an open source E2E ML monitoring platform with edge capabilities that plays nicely with kubernetes
Documentation: https://whitebox-ai.github.io/whitebox/
Source Code: https://github.com/whitebox-ai/whitebox
Roadmap: https://github.com/whitebox-ai/whitebox/milestones
Issue tracking https://github.com/orgs/whitebox-ai/projects/1/views/3
Discord: https://discord.gg/bkAcsx4V
Whitebox is a dynamic open source E2E ML monitoring platform with edge capabilities that plays nicely with kubernetes.
The current key features are:
Descriptive statistics Classification models evaluation metrics Data / Concept drift monitoring Explainable AI Alerts Design guidelines:
Easy: Very easy to set up and get started with. Intuitive: Designed to be intuitive and easy to use. Pythonic SDK: Pythonic SDK for building your own monitoring infrastructure. Robust: Get production-ready MLOps system. Kubernetes: Get production-ready code. With automatic interactive documentation. "},{"location":"features/","title":"Features","text":""},{"location":"features/#design-decisions","title":"Design decisions","text":" Easy: Very easy to set up and get started with. Intuitive: Designed to be intuitive and easy to use. Pythonic SDK: Pythonic SDK for building your own monitoring infrastructure. Robust: Get production-ready MLOps system. Kubernetes: Get production-ready code. With automatic interactive documentation. "},{"location":"features/#descriptive-statistics","title":"Descriptive Statistics","text":"Whitebox provides a nice list of descriptive statistics of input dataset, making the overview of data easy.
"},{"location":"features/#models-metrics","title":"Models Metrics","text":""},{"location":"features/#classification-models","title":"Classification Models","text":"Whitebox includes comprehensive metrics tracking for classification models. This allows users to easily evaluate the performance of their classification models and identify areas for improvement. Additionally, users can set custom thresholds for each metric to receive alerts when performance deviates from expected results.
"},{"location":"features/#regression-models","title":"Regression Models","text":"Whitebox includes comprehensive metrics tracking for regression models. This allows users to easily evaluate the performance of their regression models and identify areas for improvement. Additionally, users can set custom thresholds for each metric to receive alerts when performance deviates from expected results.
"},{"location":"features/#data-concept-drift-monitoring","title":"Data / Concept Drift Monitoring","text":"Whitebox includes monitoring for data and concept drift. This feature tracks changes in the distribution of the data used to train models and alerts users when significant changes occur. Additionally, it detects changes in the performance of deployed models and alerts users when significant drift is detected. This allows users to identify and address data and model drift early, reducing the risk of poor model performance.
"},{"location":"features/#explainable-ai","title":"Explainable AI","text":"Whitebox includes model explaination also. The explainability performed through the explainability report which allows user to know anytime which feature had the most impact on model's prediction.
"},{"location":"features/#alerts","title":"Alerts","text":"Whitebox includes an alerting system that allows users to set custom thresholds for metrics and receive notifications when performance deviates from expected results. These alerts can be delivered via email, SMS, or webhook, and can be customized to fit the needs of any organization. This allows users to quickly respond to changes in model performance and take action to improve results.
"},{"location":"metric-definitions/","title":"Glossary / Metric definitions","text":""},{"location":"metric-definitions/#descriptive-statistics","title":"Descriptive statistics","text":""},{"location":"metric-definitions/#missing-values","title":"Missing values","text":"Missing values metric calculates the summary of the number of missing values per feature. Missing values include NaN in numeric arrays, NaN or None in object arrays and NaT in datetimelike.
"},{"location":"metric-definitions/#non-missing-values","title":"Non-Missing values","text":"Non-Missing values metric calculates the summary of the number of non-missing values per feature. Non-Missing values are all values beside NaN for numeric arrays, NaN or None for object arrays and NaT for datetimelike.
"},{"location":"metric-definitions/#mean-or-average-value","title":"Mean or Average value","text":"Returns the average value per feature excluding NaN and null values.
"},{"location":"metric-definitions/#minimum-value","title":"Minimum value","text":"Returns the minimum value per feature.
"},{"location":"metric-definitions/#maximum-value","title":"Maximum value","text":"Returns the maximum value per feature.
"},{"location":"metric-definitions/#summary","title":"Summary","text":"Returns the summary of the values per feature. Excludes NaN and null values during calculations.
"},{"location":"metric-definitions/#standard-deviation","title":"Standard Deviation","text":"Returns the sample standard deviation per feature normalized by N-1 excluding NaN and null values during calculations. Formula:
\u03c3 = \\sqrt{\u03a3(x_i-\u03bc)^2 \\over \u039d-1}"},{"location":"metric-definitions/#variance","title":"Variance","text":"Returns the unbiased variance per feature normalized by N-1 excluding NaN and null values during calculations. Formula:
\u03c3^2 = {\u03a3(x_i-\u03bc)^2 \\over \u039d-1} \u03c3^2 = {\u03a3(x_i-\u03bc)^2 \\over \u039d-1}"},{"location":"metric-definitions/#classification-evaluation-metrics","title":"Classification evaluation metrics","text":""},{"location":"metric-definitions/#confusion-matrix","title":"Confusion Matrix","text":"Returns the number of TP, TN, FP and FN. In case of a multi-class classification returns the number of TP, TN, FP and FN per class.
A typical example for binary classification could be seen below in which:
20 observations were correctly classified as positive. 10 observations were incorrectly classified as negative while they were actually positive. 5 observations were incorrectly classified as positive while they were actually negative. 75 observations were correctly classified as negative. Predicted Positive Predicted Negative Actual Positive 20 (TP) 10 (FN) Actual Negative 5 (FP) 75 (TN) A typical example for multi-class classification could be seen below in which:
15 observations were correctly classified as Class A. 5 observations were incorrectly classified as Class B while they were actually Class A. 2 observations were incorrectly classified as Class C while they were actually Class A. 4 observations were incorrectly classified as Class A while they were actually Class B. 20 observations were correctly classified as Class B. 3 observations were incorrectly classified as Class C while they were actually Class B. 2 observations were incorrectly classified as Class A while they were actually Class C. 8 observations were incorrectly classified as Class B while they were actually Class C. 25 observations were correctly classified as Class C. Predicted Class A Predicted Class B Predicted Class C Actual Class A 15 (TP_A) 5 2 Actual Class B 4 20 (TP_B) 3 Actual Class C 2 8 25 (TP_C)"},{"location":"metric-definitions/#accuracy","title":"Accuracy","text":"Returns the accuracy classification score. In multi-class classification, this function computes subset accuracy: the set of labels predicted for a sample must exactly match the corresponding set of labels in y_true. Formula:
accuracy = {(TP + TN) \\over (TP + TN + FP + FN)} accuracy = {(TP + TN) \\over (TP + TN + FP + FN)}"},{"location":"metric-definitions/#precision","title":"Precision","text":"Returns the precision classification score. In multi-class classification, returns the below 3 scores:
micro: Calculate metrics globally by counting the total true positives, false negatives and false positives. macro: Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account. weighted: Calculate metrics for each label, and find their average weighted by support (the number of true instances for each label). This alters \u2018macro\u2019 to account for label imbalance; it can result in an F-score that is not between precision and recall. Formula:
precision = {TP \\over (TP + FP)} precision = {TP \\over (TP + FP)}"},{"location":"metric-definitions/#recall","title":"Recall","text":"Returns the recall classification score. In multi-class classification, returns the below 3 scores:
micro: Calculate metrics globally by counting the total true positives, false negatives and false positives. macro: Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account. weighted: Calculate metrics for each label, and find their average weighted by support (the number of true instances for each label). This alters \u2018macro\u2019 to account for label imbalance; it can result in an F-score that is not between precision and recall. Formula:
recall = {TP \\over (TP + FN)} recall = {TP \\over (TP + FN)}"},{"location":"metric-definitions/#f1-score","title":"F1 score","text":"Returns the f1 classification score. In multi-class classification, returns the below 3 scores:
micro: Calculate metrics globally by counting the total true positives, false negatives and false positives. macro: Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account. weighted: Calculate metrics for each label, and find their average weighted by support (the number of true instances for each label). This alters \u2018macro\u2019 to account for label imbalance; it can result in an F-score that is not between precision and recall. Formula:
F1 = 2 * {(precision * recall) \\over (precision + recall)} F1 = 2 * {(precision * recall) \\over (precision + recall)}"},{"location":"metric-definitions/#regression-evaluation-metrics","title":"Regression evaluation metrics","text":""},{"location":"metric-definitions/#r-squared","title":"R-Squared","text":"In a regression model, R-Squared (also known as R2 or the coefficient of determination) is a statistical metric that quantifies how much of the variance in the dependent variable can be accounted for by the independent variable. R-squared, thus, displays how well the data match the regression model (the goodness of fit).
Formula:
R^2 = {SS_{regression} \\over SS_{total}} R^2 = {SS_{regression} \\over SS_{total}} where:
SS_{regression}SS_{regression} = sum of squares due to regression (explained sum of squares) SS_{total}SS_{total} = total sum of squares "},{"location":"metric-definitions/#mean-squared-error","title":"Mean squared error","text":"The degree of inaccuracy in statistical models is gauged by the mean squared error, or MSE. Between the observed and projected values, it evaluates the average squared difference. The MSE is equal to 0 when a model is error-free. As model error increases, its value increases.
Formula:
MSE = {\u03a3(y_{i}-y'_{i})^2 \\over n} MSE = {\u03a3(y_{i}-y'_{i})^2 \\over n} where:
y_{i}y_{i} = i_{th}i_{th} observation y'_{i}y'_{i} = corresponding predicted value nn = number of observations "},{"location":"metric-definitions/#mean-absolute-error","title":"Mean absolute error","text":"The mean absolute error of a model with respect to a test set is the mean of the absolute values of the individual prediction errors on over all instances in the test set. Each prediction error is the difference between the true value and the predicted value for the instance.
Formula:
MAE = {{{\u03a3^2}_{i=1}}|y_{i}-x_{i}| \\over n} MAE = {{{\u03a3^2}_{i=1}}|y_{i}-x_{i}| \\over n} where:
y_{i}y_{i} = prediction x_{i}x_{i} = true value nn = number of observations "},{"location":"metric-definitions/#statistical-tests-and-techniques","title":"Statistical tests and techniques","text":""},{"location":"metric-definitions/#kolmogorov-smirnov-two-sample-test","title":"Kolmogorov-Smirnov Two Sample test","text":"When there are two datasets then K-S two sample test can be used to test the agreement between their distributions. The null hypothesis states that there is no difference between the two distributions. Formula:
D = Max|{F_a(X)-F_b(X)}| D = Max|{F_a(X)-F_b(X)}| where:
aa = observations from first dataset. bb = observations from second dataset. F_n(X)F_n(X) = observed cumulative frequency distribution of a random sample of n observations. "},{"location":"metric-definitions/#chi-squared-test","title":"Chi-squared test","text":"A chi-square test is a statistical test used to compare 2 datasets. The purpose of this test is to determine if a difference between data of 2 datasets is due to chance, or if it is due to a relationship between the variables you are studying. Formula:
x^2 = \u03a3{(O_i - E_i)^2 \\over E_i} x^2 = \u03a3{(O_i - E_i)^2 \\over E_i} where:
x^2x^2 = chi-square O_iO_i = 1st dataset values E_iE_i = 2nd dataset values "},{"location":"metric-definitions/#z-score-for-independent-proportions","title":"Z-score for independent proportions","text":"The purpose of the z-test for independent proportions is to compare two independent datasets. Formula:
Z = {p_1 - p_2 \\over \\sqrt{p' q' ({1\\over n_1} + {1\\over n_2})}} Z = {p_1 - p_2 \\over \\sqrt{p' q' ({1\\over n_1} + {1\\over n_2})}} where:
ZZ = Z-statistic which is compared to the standard normal deviate p_1 , p_2p_1 , p_2 = two datasets proportions p'p' = estimated true proportion under the null hypothesis q'q' = (1-p')(1-p') n_1 , n_2n_1 , n_2 = number of observations in two datasets "},{"location":"metric-definitions/#wasserstein-distance","title":"Wasserstein distance","text":"The Wasserstein distance is a metric to describe the distance between the distributions of 2 datasets. Formula:
W = ({\\int_0^1}{{|{F_A}^{-1}(u) - {F_B}^{-1}(u)|}^2 du} )^{0.5} W = ({\\int_0^1}{{|{F_A}^{-1}(u) - {F_B}^{-1}(u)|}^2 du} )^{0.5} where:
WW = Wasserstein distance F_A , F_BF_A , F_B = corresponding cumulative distribution functions of two datasets {F_A}^{-1} , {F_B}^{-1}{F_A}^{-1} , {F_B}^{-1} = respective quantile functions "},{"location":"metric-definitions/#jensenshannon-divergence","title":"Jensen\u2013Shannon divergence","text":"The Jensen\u2013Shannon divergence is a method of measuring the similarity between two probability distributions. Formula:
JS = 1/2 * KL(P || M) + 1/2 * KL(Q || M) JS = 1/2 * KL(P || M) + 1/2 * KL(Q || M) where:
JSJS = Jensen\u2013Shannon divergence KLKL = Kullback-Leibler divergence: \u2013 sum x\u2013 sum x in XX P(x)P(x) * log(Q(x) / P(x))log(Q(x) / P(x)) P,QP,Q = distributions of 2 datasets MM = {1 \\over 2} * (P+Q){1 \\over 2} * (P+Q) "},{"location":"metric-definitions/#machine-learning-models","title":"Machine learning models","text":""},{"location":"metric-definitions/#light-gradient-boosting-machine","title":"Light Gradient Boosting Machine","text":"LightGBM is an open-source framework for gradient boosted machines. By default LightGBM will train a Gradient Boosted Decision Tree (GBDT), but it also supports random forests, Dropouts meet Multiple Additive Regression Trees (DART), and Gradient Based One-Side Sampling (Goss). The framework is fast and was designed for distributed training. It supports large-scale datasets and training on the GPU. LightGBM also provide highly optimised, scalable and fast implementations of gradient boosted machines (GBMs). The official documentation of LightGBM is accessible here.
"},{"location":"metric-definitions/#explainable-ai-models","title":"Explainable AI models","text":""},{"location":"metric-definitions/#local-interpretable-model-agnostic-explanations","title":"Local Interpretable Model-agnostic Explanations","text":"LIME (Local Interpretable Model-agnostic Explanations), an explainable AI technique, aids in illuminating a machine learning model and making each prediction's particular implications understandable. The technique is appropriate for local explanations since it describes the classifier for a particular single instance. LIME modifies the input data to produce a succession of false data that only partially retain the original features. The original implementation along with documentation of LIME technique could be found in this repo.
"},{"location":"ml-monitoring/","title":"Understanding machine learning monitoring","text":"Machine learning (ML) monitoring is a crucial process for ensuring the performance and reliability of ML models and systems. It involves tracking metrics, identifying issues, and improving overall performance. In this article, we will explore the key aspects of ML monitoring and its importance in today's data-driven world.
"},{"location":"ml-monitoring/#what-is-machine-learning-monitoring","title":"What is machine learning monitoring?","text":"ML monitoring is the process of tracking the performance and behavior of ML models and systems. This includes monitoring metrics such as accuracy, precision, recall, and model performance over time. By monitoring these metrics, organizations can identify when a model is performing poorly or behaving unexpectedly and take action to correct it. Additionally, ML monitoring can be used to track the performance of different models and compare them to identify which model is performing best.
"},{"location":"ml-monitoring/#detecting-poor-performance","title":"Detecting poor performance","text":"One of the key aspects of ML monitoring is being able to detect when a model is performing poorly or behaving unexpectedly. This can be done by setting up alerts on certain metrics or by monitoring for unexpected changes in the model's behavior. For example, if a model's accuracy suddenly drops, an alert can be triggered to notify the team responsible for maintaining the model. This allows them to quickly investigate and address the issue, minimizing the impact on the organization's operations.
"},{"location":"ml-monitoring/#monitoring-data-and-concept-drift","title":"Monitoring data and concept drift","text":"Another important aspect of ML monitoring is the ability to detect and address data and concept drifting. Data drifting refers to the gradual change in the distribution or characteristics of the input data over time. As the data changes, the model's performance may decrease, which is why it is important to detect data drifting and retrain the model with new data. Concept drifting, on the other hand, happens when the statistical properties of the target variable, which the model is trying to predict, change over time. This can happen due to various reasons such as changes in the underlying data distribution, overfitting, or degradation of the model's parameters. To address these issues, beside drift detection, organizations can use techniques such as monitoring of the performance of the model over time, retraining the model regularly etc.
"},{"location":"ml-monitoring/#monitoring-input-data","title":"Monitoring input data","text":"Another important aspect of ML monitoring is being able to track the input data that is being fed into the model. This can be used to identify any issues with the data, such as missing values, and to ensure that the data is being processed correctly. This helps to ensure that the model is making accurate predictions and that the data is being used effectively.
"},{"location":"ml-monitoring/#monitoring-infrastructure-and-resources","title":"Monitoring infrastructure and resources","text":"Finally, it is important to monitor the infrastructure and resources that the ML models are running on. This includes monitoring things like CPU and memory usage, disk space, and network traffic. This helps to ensure that the models have the resources they need to perform well and to identify any potential bottlenecks that may be impacting performance. By monitoring the infrastructure, organizations can ensure that their models are running smoothly and can make adjustments as needed.
"},{"location":"ml-monitoring/#conclusion","title":"Conclusion","text":"In conclusion, ML monitoring is an essential process that helps organizations ensure the performance and reliability of their ML models and systems. By tracking metrics, identifying issues, and monitoring input data and infrastructure, organizations can ensure that their models are delivering accurate and reliable results and that their systems are running smoothly. With the increasing reliance on data and ML, the importance of ML monitoring will only continue to grow.
"},{"location":"sdk-docs/","title":"SDK Documentation","text":"This is the documentation for Whitebox's SDK. For an interactive experience, you can expirement with the SDK's Jupyter notebooks.
"},{"location":"sdk-docs/#models","title":"Models","text":"create_model(name, type, prediction, labels=None, description=\"\")
Creates a model in the database. This model works as placeholder for all the actual model's metadata.
Parameter Type Description name str The name of the model. type str The model's type. Possible values: binary, multi_class, regression. prediction str The prediction of the model. labels Dict[str, int] The model's labels. Defaults to None. description str The model's description. Defaults to an empty string \"\". Info
Labels are not applicable ONLY in regression models.
get_model(model_id)
Fetches the model with the specified ID from the database.
Parameter Type Description model_id str The ID of the model. delete_model(model_id)
Deletes the model with the specified ID from the database.
Parameter Type Description model_id str The ID of the model."},{"location":"sdk-docs/#training-datasets","title":"Training Datasets","text":"log_training_dataset(model_id, non_processed, processed)
Inserts a set of dataset rows into the database. When the dataset rows are successfully saved, the pipeline for training the model is triggered. Then, the trained model is saved in the /models/your_model's_id folder of whitebox's root directory.
Parameter Type Description model_id str The ID of the model. non_processed pd.DataFrame The non processed training dataset. processed pd.DataFrame The processed training dataset. Info
The non processed and processed dataframes must have the same length.
"},{"location":"sdk-docs/#inferences","title":"Inferences","text":"log_inferences(model_id, non_processed, processed, timestamps, actuals=None)
Inserts a set of inference rows into the database.
Parameter Type Description model_id str The ID of the model. non_processed pd.DataFrame The non processed inferences. processed pd.DataFrame The processed inferences. timestamps pd.Series The timestamps for each inference row in the inference dataframes. actuals pd.Series The actuals for each inference row in the inference dataframes. Defaults to None. Info
The non processed and processed dataframes along with the timestamps and actuals series must ALL have the same length.
get_xai_row(inference_row_id)
Produces an explainability report for a specific inference row.
Parameter Type Description inference_row_id str The ID of the inference row."},{"location":"sdk-docs/#monitors","title":"Monitors","text":"create_model_monitor(model_id, name, status, metric, severity, email, feature=None, lower_threshold=None)
Creates a monitor for a specific metric.
Parameter Type Description model_id str The ID of the model. name str The name of the monitor. status MonitorStatus The status of the monitor. Possible values for MonitorStatus: active, inactive. metric MonitorMetrics The metric that will be monitored. Possible values for MonitorMetrics: accuracy, precision, recall, f1, r_square, mean_squared_error, mean_absolute_error, data_drift, concept_drift. severity AlertSeverity The severity of the alert the monitor produces. Possible values for AlertSeverity: low, mid, high. email str The email to which the alert will be sent. feature str The feature to be monitored. Defaults to None. lower_threshold float The threshold below which an alert will be produced. Defaults to None. Note
Some metrics like the data drift don't use a threshold so the feature that will be monitored should be inserted. In any case, both feature and lower_threshold can't be None at the same time.
"},{"location":"sdk-docs/#metrics","title":"Metrics","text":"get_drifting_metrics(model_id)
Fetches a model's drifting metric reports.
Parameter Type Description model_id str The ID of the model. get_descriptive_statistics(model_id)
Fetches a model's descriptive statistics reports.
Parameter Type Description model_id str The ID of the model. get_performance_metrics(model_id)
Fetches a model's performance metric reports.
Parameter Type Description model_id str The ID of the model."},{"location":"tutorial/installation/","title":"Installation","text":""},{"location":"tutorial/installation/#docker","title":"Docker","text":"Install whitebox server and all of its dependencies using docker-compose
Copy the following code in a file named docker-compose.yml:
version: \"3.10\"\nname: Whitebox\nservices:\npostgres:\nimage: postgres:15\nrestart: unless-stopped\nenvironment:\n- POSTGRES_USER=postgres\n- POSTGRES_PASSWORD=postgres\n- POSTGRES_MULTIPLE_DATABASES=test # postgres db is created by default\nlogging:\noptions:\nmax-size: 10m\nmax-file: \"3\"\nports:\n- \"5432:5432\"\nvolumes:\n- wb_data:/var/lib/postgresql/data\nnetworks:\n- whitebox\nwhitebox:\nimage: sqdhub/whitebox:main\nrestart: unless-stopped\nenvironment:\n- APP_NAME=Whitebox | Docker\n- DATABASE_URL=postgresql://postgres:postgres@postgres:5432/postgres\n- SECRET_KEY=<add_your_own> # Optional, if not set the API key won't be encrypted\nports:\n- \"8000:8000\"\ndepends_on:\n- postgres\nnetworks:\n- whitebox\nvolumes:\nwb_data:\nnetworks:\nwhitebox:\nname: whitebox\n With your terminal navigate to docker-compose.yml's location and then run the following command:
$ docker-compose up\n "},{"location":"tutorial/installation/#kubernetes","title":"Kubernetes","text":"You can also install Whitebox server and all of its dependencies in your k8s cluster using helm:
helm repo add squaredev https://chartmuseum.squaredev.io/\nhelm repo update\nhelm install whitebox squaredev/whitebox\n "},{"location":"tutorial/metrics/","title":"Metrics Calculation","text":"Info
The metrics are automatically calculated in a set interval for all models in the database.
Depending on the data you have provided, the metrics calculation process will try to as many metrics possible for the specific model.
"},{"location":"tutorial/metrics/#metric-requirements","title":"Metric Requirements","text":"All metrics require that inferences are provided for the specific model. If not, the whole process is skipped. Each metric though has different requirements that need to be fulfilled in order to be calculated. The requirements are listed in the following sections.
"},{"location":"tutorial/metrics/#descriptive-statistics","title":"Descriptive Statistics","text":"The descriptive statistics are calculated per feature on any given dataset.
Metric Type of data missing_count numerical & categorical non_missing_count numerical & categorical mean numerical minimum numerical maximum numerical sum numerical standard_deviation numerical variance numerical"},{"location":"tutorial/metrics/#drifting-metrics","title":"Drifting Metrics","text":"The target of drift metrics is to calculate the data drift between 2 datasets. Currently supported drift types are:
Requirements:
Inferences Training Dataset Note
If actuals aren't provided for all inferences, then ONLY the inferences that have actuals will be used for the calculation of the drifting metrics.
"},{"location":"tutorial/metrics/#data-drift","title":"Data drift","text":"An analysis happens comparing the current data to the reference data estimating the distributions of each feature in the two datasets. The schema of both datasets should be identical.
Returns a drift summary of the following form:
{\n\"timestamp\": \"the timestamp of the report\",\n\"drift_summary\": {\n\"number_of_columns\": \"total number of dataset columns\",\n\"number_of_drifted_columns\": \"total number of drifted columns\",\n\"share_of_drifted_columns\": \"number_of_drifted_columns/number_of_columns\",\n\"dataset_drift\": \"Boolean based on the criteria below\",\n\"drift_by_columns\": {\n\"column1\": {\n\"column_name\": \"column1\",\n\"column_type\": \"the type of column (e.g. num)\",\n\"stattest_name\": \"the statistical test tha was used\",\n\"drift_score\": \"the drifting score based on the test\",\n\"drift_detected\": \"Boolean based on the criteria below\",\n\"threshold\": \"a float number based on the criteria below\"\n},\n\"column2\": {\"...\"}\n}\n}\n}\n Logic to choose the appropriate statistical test is based on:
feature type: categorical or numerical the number of observations in the reference dataset the number of unique values in the feature (n_unique) For small data with <= 1000 observations in the reference dataset:
For numerical features (n_unique > 5): two-sample Kolmogorov-Smirnov test. For categorical features or numerical features with n_unique <= 5: chi-squared test. For binary categorical features (n_unique <= 2), we use the proportion difference test for independent samples based on Z-score. All tests use a 0.95 confidence level by default.
For larger data with > 1000 observations in the reference dataset:
For numerical features (n_unique > 5): Wasserstein Distance. For categorical features or numerical with n_unique <= 5): Jensen\u2013Shannon divergence. All tests use a threshold = 0.1 by default.
"},{"location":"tutorial/metrics/#concept-drift","title":"Concept drift","text":"An analysis happens comparing the current target feature to the reference target feature.
Returns a concept drift summary of the following form:
{\n\"timestamp\": \"the timestamp of the report\",\n\"concept_drift_summary\": {\n\"column_name\": \"column1\",\n\"column_type\": \"the type of column (e.g. num)\",\n\"stattest_name\": \"the statistical test tha was used\",\n\"threshold\": \"threshold used based on criteria below\",\n\"drift_score\": \"the drifting score based on the test\",\n\"drift_detected\": \"Boolean based on the criteria below,\"\n}\n}\n Logic to choose the appropriate statistical test is based on:
the number of observations in the reference dataset the number of unique values in the target (n_unique) For small data with <= 1000 observations in the reference dataset:
For categorical target with n_unique > 2: chi-squared test. For binary categorical target (n_unique <= 2), we use the proportion difference test for independent samples based on Z-score. All tests use a 0.95 confidence level by default.
For larger data with > 1000 observations in the reference dataset we use Jensen\u2013Shannon divergence with a threshold = 0.1 .
"},{"location":"tutorial/metrics/#performance-evaluation-metrics","title":"Performance Evaluation Metrics","text":"Requirements:
Inferences Actuals for the inferences The target of evaluation metrics is to evaluate the quality of an machine learning model. Currently supported models are:
Binary classification Multi-class classification Regression Metric Supported model confusion matrix binary classification & multi-class classification accuracy binary classification & multi-class classification precision binary classification & multi-class classification recall binary classification & multi-class classification f1 score binary classification & multi-class classification r_square regression mean_squared_error regression mean_absolute_error regression"},{"location":"tutorial/metrics/#explainability","title":"Explainability","text":"Requirements:
The target of the explainability feature is to provide a contribution score of each feature to each individual prediction, in a try to explain how the model concluded in the specific prediction. To achieve this we define 3 Levels of confidence in the explainability feature, based on how accessible or not is the client's input:
Level-0: In this level a replacement model is trained in the same training data as client's model, and used for the explainability feature. Level-1 (pending): In this level a surrogate model is trained in a way of trying to achieve the same predictions as client's model, and used for the explainability feature. Level-2 (pending): Client's model is used for the explainability feature. "},{"location":"tutorial/metrics/#level-0-confidence","title":"Level-0 confidence","text":"At this level a replacement model is trained in the same training data as client's model, and used for the explainability feature. Below there is a table of used models per machine learning task.
Model Task LightGBM binary classification & multi-class classification & regression The fine tuning of models, through a hyper-parameters exploration is a pending task for now.
The trained model along with the inference data are used as input in LIME library, and the below report is provided - presenting the contribution of each feature in a specific prediction (the report includes all the feature contribution score to an descending order based on the absolute score value):
{\n\"feature1\": \"contribution score\",\n\"feature2\": \"contribution score\",\n\"feature3\": \"contribution score\"\n}\n "},{"location":"tutorial/metrics/#level-1-confidence","title":"Level-1 confidence","text":"Coming soon
"},{"location":"tutorial/metrics/#level-2-confidence","title":"Level-2 confidence","text":"Coming soon
"},{"location":"tutorial/monitors_alerts/","title":"Monitors and Alerts","text":""},{"location":"tutorial/monitors_alerts/#monitors","title":"Monitors","text":"You can create a monitor in whitebox so that alert are created automaticaly when some value is out of bounds. Here is an example:
from whitebox import Whitebox, MonitorStatus, MonitorMetrics, AlertSeverity\nwb = Whitebox(host=\"127.0.0.1:8000\", api_key=\"some_api_key\")\nmodel_monitor = wb.create_model_monitor(\nmodel_id=\"mock_model_id\",\nname=\"test\",\nstatus=MonitorStatus.active,\nmetric=MonitorMetrics.accuracy,\nseverity=AlertSeverity.high,\nemail=\"jackie.chan@somemail.io\",\nlower_threshold=0.7\n)\n "},{"location":"tutorial/monitors_alerts/#alerts","title":"Alerts","text":"Once the metrics reports have been produced, the monitoring alert pipeline is triggered. This means that if you have created any model monitors for a specific metric, alerts will be created if certain criteria are met, based on the thresholds and the monitor types you have specified.
"},{"location":"tutorial/sdk/","title":"Using Whitebox SDK","text":""},{"location":"tutorial/sdk/#installation","title":"Installation","text":"Installing Whitebox is a pretty easy job. Just install it like any other python package.
Install the SDK with pip:
$ pip install whitebox-sdk\n All the required packages will be automatically installed!
Now you're good to go!
"},{"location":"tutorial/sdk/#initial-setup","title":"Initial Setup","text":"In order to run Whitebox, you will need the application's API key. This key will be produced for you during the initial run of the Uvicorn live server. Assuming you run the server with docker compose (you can find more in the install page of the tutorial), you will see the following output:
$ docker compose up\n\n...\n<span style=\"color: green;\">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)\n<span style=\"color: green;\">INFO</span>: Started reloader process [4450] using StatReload\n<span style=\"color: green;\">INFO</span>: Started server process [4452]\n<span style=\"color: green;\">INFO</span>: Waiting for application startup.\n<span style=\"color: green;\">INFO</span>: Created username: admin, API key: some_api_key\n<span style=\"color: green;\">INFO</span>: Application startup complete.\n...\n Info
Keep this API key somewhere safe!
If you lose it, you will need to delete the admin user in your database and re-run the live serve to produce a new key!
After you get the API key, all you have to do is create an instance of the Whitebox class adding your host and API key as parameters:
from whitebox import Whitebox\nwb = Whitebox(host=\"http://127.0.0.1:8000\", api_key=\"some_api_key\")\n Now you're ready to start using Whitebox!
"},{"location":"tutorial/sdk/#models","title":"Models","text":""},{"location":"tutorial/sdk/#creating-a-model","title":"Creating a Model","text":"In order to start adding training datasets and inferences, you first need to create a model.
Let's create a sample model:
wb.create_model(\nname=\"Model 1\",\ntype=\"binary\",\nlabels={\n'additionalProp1': 0,\n'additionalProp2': 1\n},\nprediction=\"target\"\n)\n For more details about the schema accepted property types visit the Models section in the SDK documentation.
"},{"location":"tutorial/sdk/#fetching-a-model","title":"Fetching a Model","text":"Getting a model from the database is as easy as it sounds. You'll just need the model_id:
wb.get_model(\"some_model_id\")\n "},{"location":"tutorial/sdk/#deleting-a-model","title":"Deleting a model","text":"Deleting a model is as easy as fetching a model. Just use the model_id:
wb.delete_model(\"some_model_id\")\n Warning
You will have to be extra careful when deleting a model because all datasets, inferences, monitors and literally everything will be deleted from the database along with the model itself!
"},{"location":"tutorial/sdk/#loading-training-datasets","title":"Loading Training Datasets","text":"Once you have created a model you can start loading your data. Let's start with the training dataset!
In our example we will create a pd.DataFrame from a .csv file. Of course you can use any method you like to create your pd.DataFrame as long as your non-processed and processed datasets have the same amount of rows (a.k.a. the same length) and there are more than one rows!
import pandas as pd\nnon_processed_df = pd.read_csv(\"path/to/file/non_processed_data.csv\")\nprocessed_df = pd.read_csv(\"path/to/file/processed_data.csv\")\nwb.log_training_dataset(\nmodel_id=\"some_model_id\",\nnon_processed=non_processed_df,\nprocessed=processed_df\n)\n Note
When your training dataset is saved in the database, the model training process will begin excecuting, based on this dataset and the model it's associated with. That's why you need to load all the rows of your training dataset in the same batch.
"},{"location":"tutorial/sdk/#loading-inferences","title":"Loading Inferences","text":"To load your inferences you have to follow the exact same procedure as with the training datasets. The only difference is that you need to provide a pd.Series with the timestamps and (optionally) a pd.Series with the actuals, whose indices should match the ones in the non-processed and processed pd.DataFrames.
In our example let's assume that both the non-processed and processed pd.DataFrames have 10 rows each:
import pandas as pd\nnon_processed_df = pd.read_csv(\"path/to/file/non_processed_data.csv\")\nprocessed_df = pd.read_csv(\"path/to/file/processed_data.csv\")\n# Timestamps and actuals should have a length of 10\ntimestamps = pd.Series([\"2022-12-22T12:13:27.879738\"] * 10)\nactuals = pd.Series([0, 1, 1, 1, 0, 0, 1, 1, 0, 0])\nwb.log_inferences(\nmodel_id=\"some_model_id\",\nnon_processed=non_processed_df,\nprocessed=processed_df,\ntimestamps=timestamps,\nactuals=actuals\n)\n Warning
Make sure you add the actuals if you already know them, because as of now, there's no ability to add them at a later time by updating the inference rows.
"}]}
\ No newline at end of file
diff --git a/setup.py b/setup.py
deleted file mode 100644
index cf39713..0000000
--- a/setup.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from setuptools import setup, find_packages
-from pathlib import Path
-
-
-VERSION = "0.0.20"
-
-DESCRIPTION = "Whitebox is an open source E2E ML monitoring platform with edge capabilities that plays nicely with kubernetes"
-LONG_DESCRIPTION = (Path(__file__).parent / "README.md").read_text()
-
-# Setting up
-setup(
- # the name must match the folder name 'verysimplemodule'
- name="whitebox-sdk",
- version=VERSION,
- author="Squaredev",
- author_email="hello@squaredev.io",
- description=DESCRIPTION,
- long_description=LONG_DESCRIPTION, # add README.md
- long_description_content_type="text/markdown",
- packages=find_packages(),
- install_requires=[], # add any additional packages that
- # needs to be installed along with your package. Eg: 'caer'
- keywords=["python", "model monitoring", "whitebox", "mlops"],
- classifiers=[
- "Programming Language :: Python :: 3",
- ],
-)
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 0000000..4f747da
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1,48 @@
+
+
+
+ None
+ 2023-02-23
+ daily
+
+
+ None
+ 2023-02-23
+ daily
+
+
+ None
+ 2023-02-23
+ daily
+
+
+ None
+ 2023-02-23
+ daily
+
+
+ None
+ 2023-02-23
+ daily
+
+
+ None
+ 2023-02-23
+ daily
+
+
+ None
+ 2023-02-23
+ daily
+
+
+ None
+ 2023-02-23
+ daily
+
+
+ None
+ 2023-02-23
+ daily
+
+
\ No newline at end of file
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
new file mode 100644
index 0000000..c7ed163
Binary files /dev/null and b/sitemap.xml.gz differ
diff --git a/tutorial/installation/index.html b/tutorial/installation/index.html
new file mode 100644
index 0000000..19169d5
--- /dev/null
+++ b/tutorial/installation/index.html
@@ -0,0 +1,724 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Installation - Whitebox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Installation
+Docker
+Install whitebox server and all of its dependencies using docker-compose
+Copy the following code in a file named docker-compose.yml:
+version : "3.10"
+name : Whitebox
+services :
+ postgres :
+ image : postgres:15
+ restart : unless-stopped
+ environment :
+ - POSTGRES_USER=postgres
+ - POSTGRES_PASSWORD=postgres
+ - POSTGRES_MULTIPLE_DATABASES=test # postgres db is created by default
+ logging :
+ options :
+ max-size : 10m
+ max-file : "3"
+ ports :
+ - "5432:5432"
+ volumes :
+ - wb_data:/var/lib/postgresql/data
+ networks :
+ - whitebox
+
+ whitebox :
+ image : sqdhub/whitebox:main
+ restart : unless-stopped
+ environment :
+ - APP_NAME=Whitebox | Docker
+ - DATABASE_URL=postgresql://postgres:postgres@postgres:5432/postgres
+ - SECRET_KEY=<add_your_own> # Optional, if not set the API key won't be encrypted
+ ports :
+ - "8000:8000"
+ depends_on :
+ - postgres
+ networks :
+ - whitebox
+
+volumes :
+ wb_data :
+
+networks :
+ whitebox :
+ name : whitebox
+
+With your terminal navigate to docker-compose.yml's location and then run the following command:
+
+
+Kubernetes
+You can also install Whitebox server and all of its dependencies in your k8s cluster using helm:
+ helm repo add squaredev https://chartmuseum.squaredev.io/
+ helm repo update
+ helm install whitebox squaredev/whitebox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tutorial/metrics/index.html b/tutorial/metrics/index.html
new file mode 100644
index 0000000..cbeb8ce
--- /dev/null
+++ b/tutorial/metrics/index.html
@@ -0,0 +1,1032 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Metrics Calculation - Whitebox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Metrics Calculation
+
+
Info
+
The metrics are automatically calculated in a set interval for all models in the database.
+
Depending on the data you have provided, the metrics calculation process will try to as many metrics possible for the specific model.
+
+Metric Requirements
+All metrics require that inferences are provided for the specific model. If not, the whole process is skipped.
+Each metric though has different requirements that need to be fulfilled in order to be calculated.
+The requirements are listed in the following sections.
+Descriptive Statistics
+The descriptive statistics are calculated per feature on any given dataset.
+
+
+
+Metric
+Type of data
+
+
+
+
+missing_count
+numerical & categorical
+
+
+non_missing_count
+numerical & categorical
+
+
+mean
+numerical
+
+
+minimum
+numerical
+
+
+maximum
+numerical
+
+
+sum
+numerical
+
+
+standard_deviation
+numerical
+
+
+variance
+numerical
+
+
+
+Drifting Metrics
+The target of drift metrics is to calculate the data drift between 2 datasets. Currently supported drift types are:
+
+Data drift
+Concept drift
+
+Requirements :
+
+Inferences
+Training Dataset
+
+
+
Note
+
If actuals aren't provided for all inferences, then ONLY the inferences that have actuals will be used for the calculation of the drifting metrics.
+
+Data drift
+An analysis happens comparing the current data to the reference data estimating the distributions of each feature in the two datasets. The schema of both datasets should be identical.
+Returns a drift summary of the following form:
+{
+ "timestamp" : "the timestamp of the report" ,
+ "drift_summary" : {
+ "number_of_columns" : "total number of dataset columns" ,
+ "number_of_drifted_columns" : "total number of drifted columns" ,
+ "share_of_drifted_columns" : "number_of_drifted_columns/number_of_columns" ,
+ "dataset_drift" : "Boolean based on the criteria below" ,
+ "drift_by_columns" : {
+ "column1" : {
+ "column_name" : "column1" ,
+ "column_type" : "the type of column (e.g. num)" ,
+ "stattest_name" : "the statistical test tha was used" ,
+ "drift_score" : "the drifting score based on the test" ,
+ "drift_detected" : "Boolean based on the criteria below" ,
+ "threshold" : "a float number based on the criteria below"
+ },
+ "column2" : { "..." }
+ }
+ }
+}
+
+Logic to choose the appropriate statistical test is based on:
+
+feature type: categorical or numerical
+the number of observations in the reference dataset
+the number of unique values in the feature (n_unique)
+
+For small data with <= 1000 observations in the reference dataset:
+
+For numerical features (n_unique > 5): two-sample Kolmogorov-Smirnov test.
+For categorical features or numerical features with n_unique <= 5: chi-squared test.
+For binary categorical features (n_unique <= 2), we use the proportion difference test for independent samples based on Z-score.
+
+All tests use a 0.95 confidence level by default.
+For larger data with > 1000 observations in the reference dataset:
+
+For numerical features (n_unique > 5): Wasserstein Distance.
+For categorical features or numerical with n_unique <= 5): Jensen–Shannon divergence.
+
+All tests use a threshold = 0.1 by default.
+Concept drift
+An analysis happens comparing the current target feature to the reference target feature.
+Returns a concept drift summary of the following form:
+{
+ "timestamp" : "the timestamp of the report" ,
+ "concept_drift_summary" : {
+ "column_name" : "column1" ,
+ "column_type" : "the type of column (e.g. num)" ,
+ "stattest_name" : "the statistical test tha was used" ,
+ "threshold" : "threshold used based on criteria below" ,
+ "drift_score" : "the drifting score based on the test" ,
+ "drift_detected" : "Boolean based on the criteria below,"
+ }
+}
+
+Logic to choose the appropriate statistical test is based on:
+
+the number of observations in the reference dataset
+the number of unique values in the target (n_unique)
+
+For small data with <= 1000 observations in the reference dataset:
+
+For categorical target with n_unique > 2: chi-squared test.
+For binary categorical target (n_unique <= 2), we use the proportion difference test for independent samples based on Z-score.
+
+All tests use a 0.95 confidence level by default.
+For larger data with > 1000 observations in the reference dataset we use Jensen–Shannon divergence with a threshold = 0.1 .
+
+Requirements :
+
+Inferences
+Actuals for the inferences
+
+The target of evaluation metrics is to evaluate the quality of an machine learning model. Currently supported models are:
+
+Binary classification
+Multi-class classification
+Regression
+
+
+
+
+Metric
+Supported model
+
+
+
+
+confusion matrix
+binary classification & multi-class classification
+
+
+accuracy
+binary classification & multi-class classification
+
+
+precision
+binary classification & multi-class classification
+
+
+recall
+binary classification & multi-class classification
+
+
+f1 score
+binary classification & multi-class classification
+
+
+r_square
+regression
+
+
+mean_squared_error
+regression
+
+
+mean_absolute_error
+regression
+
+
+
+Explainability
+Requirements :
+
+The target of the explainability feature is to provide a contribution score of each feature to each individual prediction, in a try to explain how the model concluded in the specific prediction. To achieve this we define 3 Levels of confidence in the explainability feature, based on how accessible or not is the client's input:
+
+Level-0 : In this level a replacement model is trained in the same training data as client's model, and used for the explainability feature.
+Level-1 (pending ): In this level a surrogate model is trained in a way of trying to achieve the same predictions as client's model, and used for the explainability feature.
+Level-2 (pending ): Client's model is used for the explainability feature.
+
+Level-0 confidence
+At this level a replacement model is trained in the same training data as client's model, and used for the explainability feature. Below there is a table of used models per machine learning task.
+
+
+
+Model
+Task
+
+
+
+
+LightGBM
+binary classification & multi-class classification & regression
+
+
+
+The fine tuning of models, through a hyper-parameters exploration is a pending task for now.
+The trained model along with the inference data are used as input in LIME library, and the below report is provided - presenting the contribution of each feature in a specific prediction (the report includes all the feature contribution score to an descending order based on the absolute score value):
+{
+ "feature1" : "contribution score" ,
+ "feature2" : "contribution score" ,
+ "feature3" : "contribution score"
+}
+
+Level-1 confidence
+Coming soon
+Level-2 confidence
+Coming soon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tutorial/monitors_alerts/index.html b/tutorial/monitors_alerts/index.html
new file mode 100644
index 0000000..39cb438
--- /dev/null
+++ b/tutorial/monitors_alerts/index.html
@@ -0,0 +1,683 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Monitors and Alerts - Whitebox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Monitors and Alerts
+Monitors
+You can create a monitor in whitebox so that alert are created automaticaly when some value is out of bounds. Here is an example:
+from whitebox import Whitebox , MonitorStatus , MonitorMetrics , AlertSeverity
+
+wb = Whitebox ( host = "127.0.0.1:8000" , api_key = "some_api_key" )
+
+model_monitor = wb . create_model_monitor (
+ model_id = "mock_model_id" ,
+ name = "test" ,
+ status = MonitorStatus . active ,
+ metric = MonitorMetrics . accuracy ,
+ severity = AlertSeverity . high ,
+ email = "jackie.chan@somemail.io" ,
+ lower_threshold = 0.7
+)
+
+Alerts
+Once the metrics reports have been produced, the monitoring alert pipeline is triggered. This means that if you have created any model monitors for a specific metric, alerts will be created if certain criteria are met, based on the thresholds and the monitor types you have specified.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tutorial/sdk/index.html b/tutorial/sdk/index.html
new file mode 100644
index 0000000..70a64d9
--- /dev/null
+++ b/tutorial/sdk/index.html
@@ -0,0 +1,871 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Using Whitebox SDK - Whitebox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Using Whitebox SDK
+Installation
+Installing Whitebox is a pretty easy job. Just install it like any other python package.
+Install the SDK with pip:
+
+
+
$ pip install whitebox-sdk
+
+
+
+
+All the required packages will be automatically installed!
+Now you're good to go!
+Initial Setup
+In order to run Whitebox, you will need the application's API key.
+This key will be produced for you during the initial run of the Uvicorn live server.
+Assuming you run the server with docker compose (you can find more in the install page of the tutorial), you will see the following output:
+
+
+
$ docker compose up
+
+...
+<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+<span style="color: green;">INFO</span>: Started reloader process [4450] using StatReload
+<span style="color: green;">INFO</span>: Started server process [4452]
+<span style="color: green;">INFO</span>: Waiting for application startup.
+<span style="color: green;">INFO</span>: Created username: admin, API key: some_api_key
+<span style="color: green;">INFO</span>: Application startup complete.
+...
+
+
+
+
+
+
Info
+
Keep this API key somewhere safe!
+
If you lose it, you will need to delete the admin user in your database and re-run the live serve to produce a new key!
+
+After you get the API key, all you have to do is create an instance of the Whitebox class adding your host and API key as parameters:
+from whitebox import Whitebox
+
+wb = Whitebox ( host = "http://127.0.0.1:8000" , api_key = "some_api_key" )
+
+Now you're ready to start using Whitebox!
+Models
+Creating a Model
+In order to start adding training datasets and inferences, you first need to create a model.
+Let's create a sample model:
+wb . create_model (
+ name = "Model 1" ,
+ type = "binary" ,
+ labels = {
+ 'additionalProp1' : 0 ,
+ 'additionalProp2' : 1
+ },
+ prediction = "target"
+)
+
+For more details about the schema accepted property types visit the Models section in the SDK documentation.
+Fetching a Model
+Getting a model from the database is as easy as it sounds. You'll just need the model_id:
+wb . get_model ( "some_model_id" )
+
+Deleting a model
+Deleting a model is as easy as fetching a model. Just use the model_id:
+wb . delete_model ( "some_model_id" )
+
+
+
Warning
+
You will have to be extra careful when deleting a model because all datasets, inferences, monitors and literally everything will be deleted from the database along with the model itself!
+
+Loading Training Datasets
+Once you have created a model you can start loading your data. Let's start with the training dataset!
+In our example we will create a pd.DataFrame from a .csv file. Of course you can use any method you like to create your pd.DataFrame as long as your non-processed and processed datasets have the same amount of rows (a.k.a. the same length) and there are more than one rows !
+import pandas as pd
+non_processed_df = pd . read_csv ( "path/to/file/non_processed_data.csv" )
+processed_df = pd . read_csv ( "path/to/file/processed_data.csv" )
+
+wb . log_training_dataset (
+ model_id = "some_model_id" ,
+ non_processed = non_processed_df ,
+ processed = processed_df
+)
+
+
+
Note
+
When your training dataset is saved in the database, the model training process will begin excecuting, based on this dataset and the model it's associated with. That's why you need to load all the rows of your training dataset in the same batch.
+
+Loading Inferences
+To load your inferences you have to follow the exact same procedure as with the training datasets. The only difference is that you need to provide a pd.Series with the timestamps and (optionally) a pd.Series with the actuals, whose indices should match the ones in the non-processed and processed pd.DataFrames.
+In our example let's assume that both the non-processed and processed pd.DataFrames have 10 rows each:
+import pandas as pd
+non_processed_df = pd . read_csv ( "path/to/file/non_processed_data.csv" )
+processed_df = pd . read_csv ( "path/to/file/processed_data.csv" )
+
+# Timestamps and actuals should have a length of 10
+timestamps = pd . Series ([ "2022-12-22T12:13:27.879738" ] * 10 )
+actuals = pd . Series ([ 0 , 1 , 1 , 1 , 0 , 0 , 1 , 1 , 0 , 0 ])
+
+wb . log_inferences (
+ model_id = "some_model_id" ,
+ non_processed = non_processed_df ,
+ processed = processed_df ,
+ timestamps = timestamps ,
+ actuals = actuals
+)
+
+
+
Warning
+
Make sure you add the actuals if you already know them, because as of now, there's no ability to add them at a later time by updating the inference rows.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/whitebox/.streamlit/config.toml b/whitebox/.streamlit/config.toml
deleted file mode 100644
index 9fbc757..0000000
--- a/whitebox/.streamlit/config.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[theme]
-base="dark"
-primaryColor="#21babe"
-backgroundColor="#1e2025"
-secondaryBackgroundColor="#252a33"
-
diff --git a/whitebox/__init__.py b/whitebox/__init__.py
deleted file mode 100644
index b4a6bd7..0000000
--- a/whitebox/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from whitebox.sdk import *
diff --git a/whitebox/analytics/data/testing/classification_test_data.csv b/whitebox/analytics/data/testing/classification_test_data.csv
deleted file mode 100644
index 84d7b17..0000000
--- a/whitebox/analytics/data/testing/classification_test_data.csv
+++ /dev/null
@@ -1,11 +0,0 @@
-y_testing_binary,y_prediction_binary,y_testing_multi,y_prediction_multi
-0,0,0,1
-0,0,2,2
-0,1,0,0
-1,1,1,1
-0,0,2,0
-1,0,1,1
-1,0,1,0
-1,1,2,2
-0,1,0,1
-1,1,1,1
diff --git a/whitebox/analytics/data/testing/metrics_test_data.csv b/whitebox/analytics/data/testing/metrics_test_data.csv
deleted file mode 100644
index c65b7ea..0000000
--- a/whitebox/analytics/data/testing/metrics_test_data.csv
+++ /dev/null
@@ -1,11 +0,0 @@
-num1,num2,num3,cat1,cat2
-15.0,,0,Cat,True
-40.0,0.25,2,Dog,False
-200.0,1.456,0,Cat,True
-,45.896,1,Dog,False
-60.0,2.67,2,,
-48.0,9.748,1,Dog,False
-1000.0,,1,Cat,True
-43.0,1.67,2,Dog,False
-1.0,0.00054,0,Cat,True
-0.0,12.1,1,Dog,
diff --git a/whitebox/analytics/data/testing/regression_test_data.csv b/whitebox/analytics/data/testing/regression_test_data.csv
deleted file mode 100644
index d49994d..0000000
--- a/whitebox/analytics/data/testing/regression_test_data.csv
+++ /dev/null
@@ -1,11 +0,0 @@
-y_test,y_prediction
-0.11,0.12
-0.56,0.55
-0.43,0.43
-0.77,0.51
-0.23,0.2
-0.54,0.54
-0.48,0.47
-0.13,0.13
-0.01,0.0
-0.86,0.9
diff --git a/whitebox/analytics/data/testing/udemy_fin_adj.csv b/whitebox/analytics/data/testing/udemy_fin_adj.csv
deleted file mode 100644
index b01f2b3..0000000
--- a/whitebox/analytics/data/testing/udemy_fin_adj.csv
+++ /dev/null
@@ -1,12206 +0,0 @@
-is_paid,num_subscribers,avg_rating,avg_rating_recent,rating,num_reviews,num_published_lectures,discount_price__amount,discount_price__currency
-True,295509,4.66019,4.67874,4.67874,78006,84,455.0,Dollar
-True,209070,4.58956,4.60015,4.60015,54581,78,455.0,Dollar
-True,155282,4.59491,4.59326,4.59326,52653,292,455.0,Euro
-True,245860,4.54407,4.53772,4.53772,46447,338,455.0,Dollar
-False,374836,4.4708,4.47173,4.47173,41630,83,455.0,Pound
-False,124180,4.56228,4.57676,4.57676,38093,275,455.0,Pound
-True,96207,4.32383,4.29118,4.29118,30470,23,455.0,Euro
-False,127680,4.54034,4.53346,4.53346,28665,275,455.0,Euro
-False,112572,4.50386,4.5008,4.5008,27408,144,455.0,Euro
-True,115269,4.50067,4.49575,4.49575,23906,413,455.0,Dollar
-False,86715,4.61951,4.63301,4.63301,23580,117,455.0,Pound
-False,82015,4.49968,4.49034,4.49034,23326,67,455.0,Pound
-True,68148,4.5687,4.59302,4.59302,22595,43,455.0,Dollar
-True,76812,4.53878,4.54203,4.54203,21537,41,455.0,Dollar
-False,78968,4.57035,4.57067,4.57067,21436,286,455.0,Pound
-False,182002,4.49571,4.49507,4.49507,21421,225,455.0,Dollar
-True,114945,4.51251,4.52998,4.52998,21394,101,455.0,Euro
-False,88468,4.49804,4.48929,4.48929,19970,160,455.0,Pound
-True,72442,4.59922,4.59604,4.59604,19328,103,455.0,Dollar
-False,239309,4.47381,4.54005,4.54005,18322,47,455.0,Euro
-False,83072,4.51891,4.52806,4.52806,17617,111,455.0,Euro
-True,67329,4.56473,4.5554,4.5554,17016,57,455.0,Pound
-True,140676,4.4758,4.46916,4.46916,17013,61,500.0,Pound
-False,50037,4.42501,4.41557,4.41557,15956,23,455.0,Euro
-True,48055,4.43303,4.42199,4.42199,14255,44,455.0,Dollar
-True,74011,4.62899,4.63196,4.63196,14006,88,455.0,Euro
-False,102727,4.55248,4.56591,4.56591,12478,78,455.0,Dollar
-False,49877,4.40093,4.40429,4.40429,11977,88,455.0,Euro
-True,59141,4.34305,4.33968,4.33968,11660,39,455.0,Dollar
-False,38698,4.57554,4.58325,4.58325,11529,31,455.0,Euro
-True,85042,4.42296,4.42503,4.42503,11007,49,455.0,Pound
-True,63084,4.63452,4.64145,4.64145,10979,74,455.0,Pound
-False,39873,4.46625,4.49998,4.49998,10725,124,455.0,Dollar
-False,33319,4.38382,4.39496,4.39496,10470,29,455.0,Euro
-False,158654,4.46745,4.44446,4.44446,10288,206,540.0,Pound
-True,29061,4.56978,4.56584,4.56584,10102,284,455.0,Euro
-True,28937,4.36402,4.39681,4.39681,10059,23,455.0,Pound
-True,72406,4.4679,4.45238,4.45238,9631,44,455.0,Dollar
-False,39816,4.41,4.41373,4.41373,9195,86,455.0,Pound
-True,62384,4.35213,4.33177,4.33177,9196,600,546.0,Euro
-False,79955,4.50237,4.50644,4.50644,9107,16,533.0,Dollar
-True,47394,4.58716,4.59197,4.59197,9081,97,455.0,Pound
-False,32818,4.41307,4.46243,4.46243,8925,15,455.0,Euro
-False,16511,4.51703,4.55482,4.55482,8915,19,455.0,Dollar
-False,64080,4.45989,4.43577,4.43577,8591,152,481.0,Dollar
-False,21305,4.38921,4.38864,4.38864,8122,38,455.0,Dollar
-False,44484,4.53584,4.53498,4.53498,7815,186,455.0,Pound
-True,39537,4.44398,4.43587,4.43587,7693,305,455.0,Euro
-True,29095,4.42667,4.42281,4.42281,7641,87,488.0,Euro
-False,33408,4.44969,4.48307,4.48307,7448,35,455.0,Euro
-False,36326,4.3702,4.36866,4.36866,7362,88,455.0,Pound
-False,22106,4.42781,4.40904,4.40904,7246,38,455.0,Euro
-False,25057,4.56653,4.55885,4.55885,7186,222,455.0,Pound
-False,22558,4.54002,4.54419,4.54419,6797,68,455.0,Dollar
-False,28717,4.44174,4.4567,4.4567,6623,68,455.0,Euro
-False,26929,4.50915,4.48945,4.48945,6471,81,455.0,Euro
-True,12728,4.34038,4.34485,4.34485,6401,6,455.0,Pound
-True,16778,4.32706,4.25714,4.25714,6325,42,455.0,Pound
-False,37953,4.56706,4.57075,4.57075,6195,54,455.0,Dollar
-False,17598,4.35379,4.35778,4.35778,6134,18,455.0,Euro
-True,25039,4.62258,4.62968,4.62968,6088,48,455.0,Pound
-False,15059,4.36463,4.34164,4.34164,6075,31,455.0,Pound
-False,36650,4.54274,4.55138,4.55138,5893,43,455.0,Euro
-True,26292,4.44952,4.39535,4.39535,5761,30,455.0,Pound
-True,25820,4.50586,4.46247,4.46247,5763,637,455.0,Pound
-False,25649,4.49939,4.50756,4.50756,5642,208,455.0,Dollar
-False,15826,4.42925,4.44982,4.44982,5650,16,455.0,Euro
-False,42583,4.55896,4.52606,4.52606,5506,127,455.0,Pound
-False,11077,4.38087,4.37153,4.37153,5466,32,455.0,Euro
-False,21249,4.45997,4.45327,4.45327,5474,65,455.0,Euro
-False,11820,4.40315,4.47804,4.47804,5435,39,455.0,Pound
-True,19352,4.38696,4.42045,4.42045,5350,43,455.0,Dollar
-True,13396,4.19608,4.14233,4.14233,5177,21,474.0,Euro
-False,23854,3.97959,3.98862,3.98862,5148,88,455.0,Pound
-True,87181,4.54567,4.58665,4.58665,5018,122,455.0,Pound
-False,40950,4.46622,4.4613,4.4613,4960,67,462.0,Euro
-True,16937,4.50258,4.49369,4.49369,4903,53,455.0,Euro
-False,35638,4.4038,4.48216,4.48216,4857,96,481.0,Euro
-False,22310,4.52025,4.58217,4.58217,4849,81,455.0,Dollar
-False,18460,4.29765,4.28578,4.28578,4837,65,481.0,Dollar
-False,25454,4.39505,4.35907,4.35907,4811,90,455.0,Euro
-True,21995,4.31962,4.36721,4.36721,4798,58,455.0,Dollar
-False,14661,4.36619,4.3703,4.3703,4763,47,455.0,Pound
-True,15327,4.37005,4.36076,4.36076,4733,31,455.0,Euro
-True,26377,4.35714,4.3461,4.3461,4619,26,2880.0,Euro
-True,17036,4.56581,4.58252,4.58252,4616,99,494.0,Euro
-True,14692,4.43296,4.42271,4.42271,4554,49,455.0,Dollar
-False,17167,4.37106,4.39583,4.39583,4508,83,455.0,Dollar
-True,15562,4.52524,4.52462,4.52462,4466,125,1600.0,Pound
-True,13693,4.57537,4.56385,4.56385,4412,29,481.0,Pound
-False,16519,4.51699,4.52558,4.52558,4345,91,455.0,Euro
-True,18774,4.43962,4.43032,4.43032,4303,66,455.0,Euro
-False,25911,4.48485,4.48328,4.48328,4297,257,455.0,Euro
-True,13088,4.39762,4.38683,4.38683,4290,57,455.0,Dollar
-False,26338,4.5025,4.48832,4.48832,4240,75,488.0,Euro
-True,17983,4.46687,4.45915,4.45915,4166,45,455.0,Pound
-False,9995,4.38218,4.36972,4.36972,4132,18,455.0,Pound
-False,22578,4.55337,4.56349,4.56349,4073,85,455.0,Dollar
-True,27968,4.33932,4.32888,4.32888,3914,71,494.0,Pound
-True,17839,4.39702,4.42994,4.42994,3869,31,455.0,Dollar
-False,10964,4.52812,4.48615,4.48615,3868,24,455.0,Dollar
-False,6978,4.32603,4.3116,4.3116,3855,11,455.0,Euro
-False,9245,4.32892,4.33758,4.33758,3846,11,455.0,Dollar
-False,12904,4.43758,4.4171,4.4171,3845,76,455.0,Pound
-True,13754,4.48388,4.47766,4.47766,3824,81,455.0,Dollar
-False,15445,4.49911,4.37074,4.37074,3754,398,455.0,Dollar
-False,17226,4.52144,4.48169,4.48169,3742,35,455.0,Dollar
-True,12864,4.54621,4.57774,4.57774,3672,37,455.0,Dollar
-False,16218,4.39599,4.38889,4.38889,3665,87,455.0,Pound
-False,20258,4.39798,4.3452,4.3452,3668,40,462.0,Dollar
-False,12506,4.36449,4.35506,4.35506,3657,57,455.0,Pound
-False,16016,4.53636,4.49352,4.49352,3642,114,455.0,Pound
-False,23044,4.44862,4.44526,4.44526,3626,37,455.0,Dollar
-False,21310,4.506,4.50923,4.50923,3587,56,455.0,Dollar
-False,28811,4.65399,4.66003,4.66003,3586,45,455.0,Euro
-False,6153,4.4007,4.41012,4.41012,3589,23,455.0,Dollar
-False,77373,4.60651,4.61955,4.61955,3576,62,455.0,Dollar
-True,13819,4.41452,4.39808,4.39808,3563,35,455.0,Dollar
-False,16756,4.32136,4.26479,4.26479,3557,30,455.0,Pound
-True,15174,4.41604,4.40143,4.40143,3543,58,800.0,Dollar
-False,11405,4.58471,4.60612,4.60612,3517,55,455.0,Dollar
-False,11653,4.40152,4.39118,4.39118,3430,22,455.0,Pound
-False,7453,4.36531,4.33452,4.33452,3422,24,455.0,Dollar
-False,14644,4.37332,4.31283,4.31283,3401,22,455.0,Euro
-True,28894,4.31591,4.28561,4.28561,3394,18,455.0,Dollar
-True,9475,4.40617,4.4235,4.4235,3372,51,455.0,Euro
-False,14308,4.66115,4.67377,4.67377,3356,122,455.0,Euro
-True,83126,4.12876,4.15775,4.15775,3348,66,481.0,Dollar
-False,18802,4.64847,4.65102,4.65102,3344,369,455.0,Euro
-False,15542,4.45327,4.39867,4.39867,3339,71,455.0,Euro
-True,13530,4.28972,4.28834,4.28834,3328,165,488.0,Dollar
-True,24847,4.52647,4.52638,4.52638,3305,56,455.0,Euro
-False,13712,4.29722,4.26506,4.26506,3290,36,455.0,Euro
-True,9876,4.33333,4.3898,4.3898,3270,26,455.0,Euro
-True,8111,4.29382,4.34367,4.34367,3262,25,455.0,Pound
-False,10924,4.40312,4.45424,4.45424,3242,35,455.0,Dollar
-True,16406,4.46085,4.21029,4.21029,3217,120,455.0,Euro
-False,14958,4.4156,4.35902,4.35902,3200,247,481.0,Pound
-False,19166,4.45363,4.45428,4.45428,3177,135,455.0,Euro
-True,12244,4.40347,4.40381,4.40381,3159,46,455.0,Pound
-True,28744,4.4,4.39662,4.39662,3116,5,455.0,Dollar
-True,23932,4.08065,4.11044,4.11044,3108,11,455.0,Euro
-True,7916,4.31579,4.30947,4.30947,3102,11,455.0,Euro
-False,8188,4.36296,4.3628,4.3628,3092,44,455.0,Pound
-True,7633,4.37472,4.36324,4.36324,3072,48,455.0,Pound
-False,13004,4.42586,4.45435,4.45435,3058,77,455.0,Euro
-False,9522,4.42308,4.43797,4.43797,3048,51,455.0,Pound
-False,8861,4.56059,4.5649,4.5649,3024,34,455.0,Euro
-False,8109,4.42071,4.42156,4.42156,2985,12,455.0,Pound
-False,7182,4.4698,4.435,4.435,2949,19,455.0,Euro
-True,20336,4.40909,4.40392,4.40392,2935,17,494.0,Euro
-True,7346,4.52863,4.51829,4.51829,2940,32,455.0,Euro
-True,8502,4.25524,4.247,4.247,2909,61,455.0,Dollar
-False,20072,4.53756,4.57387,4.57387,2895,43,455.0,Euro
-True,19740,4.48284,4.50605,4.50605,2885,56,455.0,Euro
-True,7297,4.36401,4.3746,4.3746,2884,27,455.0,Dollar
-True,8832,4.24978,4.28929,4.28929,2810,34,455.0,Pound
-True,29714,4.33481,4.35075,4.35075,2819,17,455.0,Pound
-False,16888,4.41029,4.42242,4.42242,2792,76,455.0,Euro
-True,12236,4.59567,4.60274,4.60274,2764,85,455.0,Pound
-True,6948,4.39507,4.40222,4.40222,2745,20,455.0,Pound
-True,21961,4.56076,4.53399,4.53399,2713,76,455.0,Euro
-False,14527,4.10714,4.12178,4.12178,2686,33,455.0,Pound
-True,11251,4.51047,4.48389,4.48389,2666,122,455.0,Pound
-True,12207,4.51731,4.5961,4.5961,2654,69,455.0,Pound
-False,17134,4.50799,4.47349,4.47349,2592,68,455.0,Dollar
-False,14265,4.37042,4.32472,4.32472,2578,32,546.0,Dollar
-False,14164,4.39474,4.45575,4.45575,2560,58,455.0,Pound
-True,10650,4.49112,4.51402,4.51402,2551,46,2080.0,Pound
-True,61795,4.61796,4.62425,4.62425,2547,213,455.0,Euro
-False,13284,4.67992,4.69332,4.69332,2541,64,462.0,Euro
-False,18909,4.42627,4.38812,4.38812,2523,64,520.0,Dollar
-True,17758,4.50639,4.46792,4.46792,2529,244,455.0,Euro
-False,13359,4.45633,4.48772,4.48772,2513,29,455.0,Dollar
-False,26516,4.5875,4.61348,4.61348,2506,17,520.0,Dollar
-False,8934,4.40419,4.40936,4.40936,2481,31,455.0,Dollar
-False,25650,4.65579,4.67184,4.67184,2475,67,455.0,Pound
-False,14976,4.45714,4.48847,4.48847,2465,37,455.0,Euro
-True,16397,4.40761,4.40644,4.40644,2460,28,455.0,Dollar
-True,10481,4.52916,4.51162,4.51162,2458,66,455.0,Dollar
-True,4910,4.24664,4.21767,4.21767,2448,6,455.0,Pound
-False,15664,4.54528,4.5405,4.5405,2438,14,474.0,Pound
-True,20213,4.44318,4.42275,4.42275,2435,54,455.0,Dollar
-True,6806,4.36279,4.39561,4.39561,2432,28,455.0,Euro
-False,31777,4.58911,4.5638,4.5638,2420,38,468.0,Dollar
-False,56552,4.36765,4.36726,4.36726,2421,91,455.0,Dollar
-True,58044,4.43056,4.48663,4.48663,2403,11,455.0,Pound
-False,50047,4.07692,4.17734,4.17734,2381,13,455.0,Dollar
-False,7130,4.46614,4.4505,4.4505,2360,33,455.0,Dollar
-True,4122,4.34501,4.32188,4.32188,2355,41,455.0,Dollar
-True,26148,4.37712,4.32759,4.32759,2340,600,488.0,Pound
-True,12535,4.25392,4.15825,4.15825,2324,252,455.0,Dollar
-False,4488,4.40909,4.36141,4.36141,2322,26,455.0,Euro
-False,68110,4.40132,4.41161,4.41161,2319,78,455.0,Euro
-False,93749,4.17778,3.99013,3.99013,2309,41,455.0,Pound
-False,7355,4.12662,4.15631,4.15631,2299,21,455.0,Euro
-True,7816,4.4663,4.46339,4.46339,2283,17,455.0,Dollar
-False,14725,4.52475,4.53076,4.53076,2277,123,455.0,Dollar
-True,14938,4.22952,4.22789,4.22789,2264,17,455.0,Pound
-False,5245,4.55323,4.534,4.534,2254,15,455.0,Euro
-False,19030,4.22131,4.2177,4.2177,2233,50,455.0,Euro
-False,11736,4.56774,4.55794,4.55794,2243,125,455.0,Dollar
-False,10905,4.46429,4.50543,4.50543,2211,48,455.0,Pound
-True,6173,4.34411,4.34685,4.34685,2216,9,455.0,Dollar
-False,14849,4.52747,4.57436,4.57436,2201,93,455.0,Dollar
-False,12236,4.35673,4.33008,4.33008,2201,32,455.0,Dollar
-False,22613,4.66129,4.64454,4.64454,2187,79,455.0,Dollar
-True,7119,4.56776,4.54714,4.54714,2183,43,520.0,Euro
-False,11048,4.375,4.39441,4.39441,2179,31,481.0,Dollar
-True,6184,4.5246,4.52986,4.52986,2186,19,455.0,Pound
-False,10254,4.62903,4.6158,4.6158,2176,61,455.0,Dollar
-True,15966,4.19737,4.15017,4.15017,2171,17,455.0,Dollar
-True,67181,4.43866,4.47592,4.47592,2149,66,455.0,Dollar
-False,44208,4.54703,4.52294,4.52294,2149,66,500.0,Pound
-False,9774,4.38747,4.3368,4.3368,2148,43,455.0,Dollar
-True,20308,4.59059,4.58394,4.58394,2126,60,507.0,Euro
-True,12917,4.54819,4.58137,4.58137,2118,125,455.0,Dollar
-True,5835,4.33201,4.29234,4.29234,2120,37,700.0,Pound
-True,11762,4.68267,4.60343,4.60343,2113,87,455.0,Euro
-True,7068,4.34083,4.25702,4.25702,2114,49,474.0,Pound
-False,14029,4.5507,4.55431,4.55431,2104,52,455.0,Pound
-False,8284,4.43737,4.43639,4.43639,2105,42,455.0,Euro
-True,3834,4.43497,4.39363,4.39363,2101,9,455.0,Pound
-True,11122,4.34524,4.29816,4.29816,2086,67,455.0,Dollar
-True,6671,4.30429,4.30587,4.30587,2087,51,514.0,Dollar
-False,8568,4.52767,4.53305,4.53305,2081,75,455.0,Dollar
-True,8339,4.40152,4.3541,4.3541,2068,66,455.0,Euro
-True,11307,4.51852,4.52647,4.52647,2062,126,455.0,Euro
-True,5441,4.3527,4.3197,4.3197,2059,36,455.0,Pound
-True,7026,4.18242,4.1871,4.1871,2039,34,481.0,Euro
-False,8060,4.59507,4.60537,4.60537,2030,63,455.0,Euro
-False,40312,4.4878,4.46166,4.46166,2028,142,455.0,Dollar
-False,7807,4.19909,4.15144,4.15144,2045,11,455.0,Dollar
-True,11477,4.41181,4.42593,4.42593,2028,16,455.0,Pound
-True,29496,4.44518,4.48429,4.48429,2020,493,552.0,Pound
-False,6062,4.21774,4.16388,4.16388,2007,19,468.0,Euro
-False,5416,4.26867,4.25879,4.25879,2020,5,455.0,Pound
-True,5706,4.30268,4.28764,4.28764,2000,38,455.0,Pound
-False,27968,4.56731,4.5452,4.5452,1988,65,455.0,Dollar
-True,48057,4.36978,4.31345,4.31345,1988,601,514.0,Dollar
-True,8633,4.304,4.33751,4.33751,1983,31,455.0,Euro
-True,8002,4.47644,4.41913,4.41913,1975,31,455.0,Dollar
-False,20515,4.47848,4.4584,4.4584,1963,91,481.0,Pound
-False,12507,4.37143,4.43308,4.43308,1948,155,455.0,Dollar
-True,5767,4.40571,4.42854,4.42854,1948,32,640.0,Euro
-False,9695,4.47945,4.5157,4.5157,1942,40,2080.0,Dollar
-False,9448,4.36574,4.42242,4.42242,1925,58,462.0,Dollar
-False,12030,4.16207,4.18738,4.18738,1924,60,462.0,Pound
-False,27427,4.13793,4.03375,4.03375,1919,32,468.0,Euro
-True,9750,4.65686,4.66574,4.66574,1908,54,455.0,Euro
-False,7990,4.37,4.31627,4.31627,1908,16,455.0,Pound
-True,27263,4.43296,4.47479,4.47479,1905,83,455.0,Dollar
-False,5204,4.35952,4.37558,4.37558,1909,13,455.0,Euro
-True,15456,4.13137,4.11688,4.11688,1876,65,520.0,Pound
-True,5228,4.62603,4.65299,4.65299,1866,51,455.0,Dollar
-False,9413,4.5026,4.5043,4.5043,1867,49,455.0,Dollar
-True,26593,4.5,4.44865,4.44865,1860,25,455.0,Dollar
-True,4192,4.33175,4.30299,4.30299,1858,12,455.0,Dollar
-True,6789,4.35411,4.35284,4.35284,1850,24,474.0,Euro
-True,8803,4.47926,4.52507,4.52507,1843,65,455.0,Dollar
-False,12212,4.5,4.49244,4.49244,1841,36,455.0,Euro
-False,5976,4.38921,4.37733,4.37733,1837,31,455.0,Dollar
-False,8342,4.52301,4.5402,4.5402,1831,49,455.0,Pound
-False,12840,4.5297,4.54014,4.54014,1808,77,455.0,Dollar
-False,12494,4.60577,4.59075,4.59075,1796,154,468.0,Dollar
-True,6425,4.65596,4.62686,4.62686,1793,75,455.0,Dollar
-True,10232,4.56552,4.55917,4.55917,1790,47,455.0,Euro
-False,5537,4.27941,4.25551,4.25551,1787,86,500.0,Euro
-True,9179,4.42051,4.39435,4.39435,1780,30,455.0,Euro
-False,56790,4.40441,4.43194,4.43194,1778,91,455.0,Euro
-False,19340,4.56488,4.55354,4.55354,1775,68,455.0,Dollar
-False,11396,4.64043,4.69311,4.69311,1769,28,455.0,Euro
-True,10933,4.38215,4.38941,4.38941,1759,46,455.0,Pound
-False,14169,4.28358,4.16461,4.16461,1761,16,455.0,Pound
-False,9777,4.55374,4.64015,4.64015,1750,22,455.0,Dollar
-False,9096,4.60345,4.59743,4.59743,1742,66,455.0,Euro
-False,6227,4.3762,4.32069,4.32069,1746,20,455.0,Euro
-False,7068,4.50654,4.50609,4.50609,1725,217,455.0,Dollar
-False,4876,4.38746,4.39145,4.39145,1712,33,462.0,Dollar
-True,22015,4.52752,4.5148,4.5148,1691,202,455.0,Pound
-True,11209,4.14706,4.23505,4.23505,1681,36,468.0,Euro
-True,5608,4.25477,4.27659,4.27659,1682,39,455.0,Euro
-False,6280,4.40076,4.38991,4.38991,1682,79,481.0,Euro
-False,47129,4.3004,4.27268,4.27268,1673,75,455.0,Dollar
-False,6752,4.63946,4.65823,4.65823,1667,42,455.0,Pound
-True,5890,4.39669,4.39126,4.39126,1673,22,455.0,Pound
-True,8268,3.65,3.7593,3.7593,1665,22,455.0,Dollar
-False,19443,4.29282,4.2064,4.2064,1666,41,455.0,Dollar
-False,5249,4.33283,4.31213,4.31213,1650,14,455.0,Pound
-True,4007,4.46516,4.44485,4.44485,1647,24,455.0,Dollar
-True,4312,4.40867,4.40901,4.40901,1641,30,455.0,Pound
-True,4887,4.48117,4.51484,4.51484,1625,12,455.0,Pound
-False,4879,4.42321,4.41869,4.41869,1614,38,455.0,Dollar
-True,9048,4.17164,4.11564,4.11564,1601,253,455.0,Euro
-False,5611,4.30415,4.28206,4.28206,1598,48,455.0,Euro
-False,4450,4.47154,4.47955,4.47955,1596,18,455.0,Dollar
-True,6600,4.34549,4.32339,4.32339,1584,39,455.0,Euro
-True,6012,4.41513,4.48859,4.48859,1584,29,455.0,Euro
-False,44319,4.36842,4.30758,4.30758,1575,49,455.0,Pound
-True,6874,4.37028,4.27029,4.27029,1572,76,455.0,Pound
-False,31851,4.1129,4.11026,4.11026,1571,57,455.0,Dollar
-True,7003,4.30594,4.25381,4.25381,1574,48,494.0,Dollar
-False,7247,4.59266,4.61637,4.61637,1571,69,455.0,Euro
-False,9068,4.57895,4.61348,4.61348,1565,59,455.0,Euro
-False,15619,3.83333,3.89829,3.89829,1551,55,488.0,Pound
-False,10313,4.32609,4.34367,4.34367,1586,36,455.0,Dollar
-True,6688,4.2312,4.26229,4.26229,1551,61,455.0,Euro
-True,4764,4.37974,4.42545,4.42545,1558,30,455.0,Euro
-True,5322,4.47549,4.50473,4.50473,1542,27,468.0,Pound
-True,6001,4.37267,4.3289,4.3289,1532,28,455.0,Euro
-True,10355,4.39267,4.42937,4.42937,1528,26,455.0,Dollar
-True,3149,4.3864,4.3888,4.3888,1504,31,455.0,Dollar
-True,11241,4.51075,4.51583,4.51583,1499,105,455.0,Euro
-True,5530,4.56867,4.48523,4.48523,1488,61,455.0,Pound
-True,7338,4.41453,4.36395,4.36395,1494,68,455.0,Pound
-False,11418,4.55306,4.55019,4.55019,1470,69,455.0,Euro
-True,5048,4.16535,4.17297,4.17297,1450,26,474.0,Pound
-True,10347,4.275,4.3345,4.3345,1435,53,455.0,Pound
-True,4612,4.46429,4.50821,4.50821,1433,39,2880.0,Euro
-True,26248,4.51429,4.47745,4.47745,1432,45,455.0,Pound
-False,4361,4.32383,4.3295,4.3295,1423,21,455.0,Dollar
-False,4373,4.40741,4.40509,4.40509,1413,26,455.0,Euro
-False,12376,4.60274,4.60076,4.60076,1410,28,455.0,Pound
-True,7883,4.31485,4.33547,4.33547,1415,28,455.0,Pound
-False,5229,4.53982,4.55536,4.55536,1403,54,455.0,Pound
-False,3070,4.34298,4.35091,4.35091,1405,29,455.0,Dollar
-True,6467,4.63298,4.62812,4.62812,1397,73,455.0,Dollar
-False,7537,4.46939,4.50218,4.50218,1397,38,455.0,Euro
-True,13356,4.68919,4.64662,4.64662,1395,28,455.0,Pound
-True,10033,4.46296,4.46598,4.46598,1389,74,468.0,Dollar
-False,2726,4.53774,4.51579,4.51579,1389,32,455.0,Euro
-True,13619,4.44545,4.46396,4.46396,1375,57,468.0,Pound
-False,2876,4.44643,4.49323,4.49323,1363,10,455.0,Pound
-False,5230,4.29858,4.26887,4.26887,1365,21,455.0,Dollar
-True,31855,4.41959,4.37283,4.37283,1372,141,455.0,Dollar
-True,4936,4.27007,4.23504,4.23504,1350,23,455.0,Euro
-True,3660,4.32009,4.31575,4.31575,1347,25,455.0,Dollar
-True,8251,4.30097,4.33891,4.33891,1337,67,455.0,Pound
-False,22026,4.47917,4.39268,4.39268,1335,109,455.0,Pound
-False,18065,4.53947,4.53757,4.53757,1335,55,455.0,Dollar
-False,38082,3.9,3.90205,3.90205,1332,45,455.0,Euro
-True,16789,4.37687,4.31962,4.31962,1330,59,455.0,Euro
-False,15095,4.4951,4.39127,4.39127,1330,70,455.0,Dollar
-True,7138,4.55333,4.58557,4.58557,1321,267,3200.0,Pound
-True,6902,4.51899,4.32987,4.32987,1313,30,455.0,Dollar
-True,15887,4.4543,4.4261,4.4261,1309,47,455.0,Pound
-True,13070,4.55303,4.59784,4.59784,1297,64,455.0,Euro
-True,3910,4.52532,4.50687,4.50687,1293,19,455.0,Dollar
-False,5997,4.02941,4.02658,4.02658,1291,52,960.0,Dollar
-True,4137,4.43587,4.4519,4.4519,1297,38,481.0,Dollar
-True,7139,4.47414,4.50137,4.50137,1284,45,455.0,Euro
-False,4088,4.43407,4.43525,4.43525,1284,28,462.0,Dollar
-True,3995,4.44158,4.35828,4.35828,1281,35,455.0,Pound
-False,6725,4.67391,4.6396,4.6396,1280,34,455.0,Pound
-True,10180,4.47575,4.40275,4.40275,1284,44,455.0,Dollar
-False,6117,4.48923,4.48896,4.48896,1280,102,455.0,Pound
-False,16968,4.35194,4.33755,4.33755,1278,17,455.0,Pound
-True,6457,4.26809,4.22093,4.22093,1276,137,455.0,Euro
-True,3468,4.31769,4.30274,4.30274,1274,27,455.0,Dollar
-False,16753,4.52439,4.44888,4.44888,1267,102,455.0,Euro
-False,3150,4.34494,4.31517,4.31517,1264,12,455.0,Dollar
-False,4365,4.46931,4.49064,4.49064,1257,44,455.0,Dollar
-False,6124,4.37166,4.39165,4.39165,1256,28,455.0,Euro
-False,4542,4.45052,4.42193,4.42193,1257,21,468.0,Dollar
-True,17026,4.28571,4.28067,4.28067,1249,22,455.0,Dollar
-False,5839,4.42042,4.46669,4.46669,1249,68,455.0,Euro
-True,8590,4.39655,4.40892,4.40892,1241,45,455.0,Pound
-False,5866,4.15909,4.22549,4.22549,1240,37,468.0,Euro
-False,5262,4.609,4.59837,4.59837,1237,63,455.0,Pound
-False,6031,4.71053,4.69163,4.69163,1234,17,455.0,Dollar
-False,3889,4.3517,4.30781,4.30781,1234,12,455.0,Pound
-False,20439,4.12963,4.05844,4.05844,1230,38,455.0,Euro
-False,45936,4.15,4.42252,4.42252,1229,13,455.0,Dollar
-True,5783,4.48571,4.46986,4.46986,1231,92,455.0,Dollar
-False,4120,4.42135,4.48969,4.48969,1227,80,488.0,Pound
-False,3649,4.38889,4.42813,4.42813,1226,29,455.0,Dollar
-False,4645,4.53358,4.4608,4.4608,1226,57,455.0,Pound
-False,9979,4.67647,4.65647,4.65647,1204,56,455.0,Euro
-False,2157,4.41164,4.36411,4.36411,1207,30,455.0,Euro
-True,5139,4.30983,4.21449,4.21449,1202,37,455.0,Dollar
-True,4731,4.32979,4.27536,4.27536,1208,11,455.0,Pound
-True,86130,4.27778,4.16463,4.16463,1197,46,455.0,Euro
-True,5187,4.40931,4.35819,4.35819,1203,45,455.0,Pound
-True,28018,4.19792,4.19479,4.19479,1192,28,462.0,Dollar
-True,5662,4.3556,4.36929,4.36929,1192,21,455.0,Dollar
-False,10673,4.34375,4.33252,4.33252,1185,561,481.0,Euro
-False,7992,4.45886,4.38453,4.38453,1184,77,455.0,Pound
-False,5286,4.75,4.78457,4.78457,1171,136,455.0,Pound
-True,6012,4.43902,4.48674,4.48674,1174,30,468.0,Euro
-True,85960,4.16239,4.21257,4.21257,1168,26,455.0,Euro
-False,25930,4.19444,4.21009,4.21009,1168,26,455.0,Dollar
-False,4379,4.41857,4.46345,4.46345,1173,38,507.0,Pound
-True,5691,4.45677,4.45293,4.45293,1166,328,507.0,Euro
-True,19859,4.44361,4.47714,4.47714,1159,68,455.0,Pound
-True,4517,4.38889,4.40681,4.40681,1153,35,455.0,Dollar
-False,16302,4.29494,4.22467,4.22467,1156,20,455.0,Euro
-False,10064,4.7619,4.75447,4.75447,1148,70,455.0,Dollar
-True,59838,4.30769,4.30846,4.30846,1139,14,455.0,Euro
-False,3582,4.26286,4.27352,4.27352,1142,40,455.0,Dollar
-False,4100,4.18807,4.20656,4.20656,1136,32,455.0,Euro
-False,5921,4.60831,4.61972,4.61972,1144,505,455.0,Dollar
-True,5375,4.48058,4.43481,4.43481,1133,98,455.0,Pound
-True,8581,4.63032,4.65956,4.65956,1134,124,455.0,Pound
-False,26990,4.35,4.25083,4.25083,1128,10,455.0,Dollar
-True,5144,4.47,4.55504,4.55504,1130,10,455.0,Dollar
-False,4773,3.94118,3.97821,3.97821,1127,12,455.0,Pound
-False,41120,2.55,2.2146,2.2146,1123,6,455.0,Pound
-False,7623,4.37762,4.2865,4.2865,1119,72,455.0,Pound
-False,24993,4.10714,3.86609,3.86609,1119,25,455.0,Euro
-False,24952,4.6125,4.64247,4.64247,1118,72,455.0,Dollar
-True,3563,4.37329,4.3425,4.3425,1120,21,462.0,Euro
-False,5773,4.07812,4.06542,4.06542,1116,23,455.0,Dollar
-True,3676,4.05787,4.0642,4.0642,1110,59,455.0,Pound
-False,5722,4.35484,4.38917,4.38917,1103,18,455.0,Euro
-True,9044,4.50607,4.51553,4.51553,1104,33,455.0,Pound
-False,2855,4.37129,4.32841,4.32841,1100,33,455.0,Dollar
-True,9842,4.41071,4.3143,4.3143,1088,74,481.0,Euro
-False,7327,4.19397,4.15123,4.15123,1091,21,455.0,Euro
-True,35258,3.93939,3.86514,3.86514,1086,45,462.0,Dollar
-False,2943,4.41379,4.3478,4.3478,1085,14,468.0,Euro
-False,8181,4.4625,4.42693,4.42693,1085,91,455.0,Euro
-True,3990,4.34091,4.3381,4.3381,1067,45,455.0,Euro
-False,1957,4.11719,4.14928,4.14928,1065,9,481.0,Dollar
-False,8242,4.5,4.49257,4.49257,1063,64,455.0,Pound
-True,9236,3.95217,3.96166,3.96166,1065,17,468.0,Dollar
-True,3883,4.44586,4.48285,4.48285,1062,22,455.0,Euro
-False,7797,4.40848,4.36982,4.36982,1062,431,455.0,Pound
-True,3747,4.21898,4.21356,4.21356,1059,22,455.0,Pound
-True,4015,4.53681,4.0684,4.0684,1061,39,455.0,Dollar
-False,3925,4.21354,4.23477,4.23477,1058,19,455.0,Dollar
-True,3522,4.3961,4.4083,4.4083,1058,15,455.0,Dollar
-False,4639,4.38889,4.41265,4.41265,1052,190,455.0,Euro
-True,2772,4.45833,4.46266,4.46266,1049,35,455.0,Dollar
-True,17807,4.68819,4.69866,4.69866,1049,104,455.0,Dollar
-False,26889,4.35326,4.36821,4.36821,1045,149,462.0,Euro
-False,6067,4.59179,4.59935,4.59935,1044,229,455.0,Pound
-False,3159,4.4529,4.41958,4.41958,1033,68,2080.0,Pound
-False,5944,4.68976,4.69036,4.69036,1033,80,455.0,Euro
-False,2918,4.34453,4.33603,4.33603,1025,11,455.0,Pound
-True,6475,4.51795,4.54362,4.54362,1018,56,455.0,Pound
-False,6926,4.48361,4.48133,4.48133,1016,29,455.0,Pound
-False,2585,4.33634,4.35362,4.35362,1015,10,455.0,Euro
-False,5593,4.70732,4.68889,4.68889,1011,12,455.0,Dollar
-True,6351,4.3323,4.2269,4.2269,1008,67,2720.0,Euro
-False,51784,4.46541,4.49248,4.49248,1003,50,455.0,Pound
-False,10092,4.41722,4.37018,4.37018,1004,52,455.0,Pound
-False,4074,4.27326,4.15641,4.15641,1002,29,1920.0,Euro
-False,3476,4.3125,4.30738,4.30738,999,35,455.0,Euro
-True,6628,4.1359,4.04657,4.04657,992,225,455.0,Dollar
-False,5963,4.57391,4.59673,4.59673,991,25,455.0,Euro
-False,2974,4.20336,4.16547,4.16547,991,59,455.0,Dollar
-False,2612,4.40984,4.38555,4.38555,988,34,455.0,Pound
-False,4710,4.23897,4.18335,4.18335,986,32,455.0,Dollar
-True,3256,4.2963,4.30229,4.30229,980,54,455.0,Dollar
-False,8334,4.32197,4.30514,4.30514,980,6,455.0,Euro
-True,3349,4.46429,4.43672,4.43672,983,49,455.0,Euro
-False,3291,4.3863,4.35076,4.35076,976,40,455.0,Pound
-True,34276,4.16667,3.73616,3.73616,970,38,455.0,Euro
-False,6981,4.75581,4.75591,4.75591,968,107,455.0,Euro
-False,4451,4.56286,4.58764,4.58764,970,92,455.0,Dollar
-True,5278,4.4,4.34778,4.34778,967,50,455.0,Pound
-True,7861,4.54934,4.5585,4.5585,967,103,455.0,Euro
-True,6738,4.68831,4.67079,4.67079,965,38,455.0,Euro
-True,61905,4.39799,4.43079,4.43079,962,699,455.0,Pound
-True,3472,4.37162,4.34758,4.34758,962,97,3200.0,Pound
-False,12835,4.19,4.13651,4.13651,954,13,455.0,Dollar
-False,3232,4.16828,4.07803,4.07803,951,11,455.0,Euro
-False,2288,4.51154,4.55046,4.55046,948,10,455.0,Pound
-False,3009,4.25836,4.18269,4.18269,952,29,455.0,Dollar
-True,6011,4.30357,4.33232,4.33232,940,42,455.0,Dollar
-False,3238,4.49841,4.54131,4.54131,947,184,455.0,Euro
-False,5551,4.41629,4.40056,4.40056,940,18,494.0,Dollar
-False,6519,4.57353,4.61758,4.61758,935,51,455.0,Dollar
-True,7218,4.09828,4.05204,4.05204,933,59,455.0,Euro
-False,3395,4.18478,4.18167,4.18167,924,25,455.0,Pound
-False,6922,4.57364,4.527,4.527,924,14,455.0,Pound
-True,5107,4.23438,4.27346,4.27346,924,50,455.0,Euro
-True,16708,3.72321,3.73248,3.73248,918,5,455.0,Euro
-True,6931,4.35833,4.40204,4.40204,917,80,494.0,Dollar
-True,3450,4.35581,4.31435,4.31435,917,49,468.0,Euro
-True,2346,4.30992,4.2006,4.2006,917,12,455.0,Dollar
-False,5351,4.72989,4.73138,4.73138,914,72,455.0,Dollar
-False,5287,4.51887,4.50498,4.50498,914,27,455.0,Pound
-False,5424,4.53049,4.57446,4.57446,914,20,468.0,Pound
-True,1928,4.265,4.26332,4.26332,910,26,455.0,Pound
-True,6661,4.5828,4.62598,4.62598,913,98,455.0,Dollar
-False,7766,4.32787,4.29638,4.29638,911,77,455.0,Dollar
-True,4507,4.14085,3.97723,3.97723,906,30,455.0,Dollar
-True,10623,4.43333,4.38137,4.38137,903,93,455.0,Pound
-False,20798,4.61538,4.60675,4.60675,900,22,455.0,Pound
-False,4157,4.53846,4.56794,4.56794,899,41,455.0,Pound
-True,2635,4.35,4.42798,4.42798,899,10,455.0,Dollar
-False,3109,4.37073,4.3754,4.3754,892,38,455.0,Pound
-True,5122,4.5,4.50291,4.50291,886,58,468.0,Dollar
-False,5261,4.49123,4.433,4.433,884,109,455.0,Dollar
-True,5785,4.48134,4.46038,4.46038,883,17,455.0,Dollar
-True,3232,4.24862,4.25636,4.25636,881,76,455.0,Pound
-False,16065,4.39552,4.44338,4.44338,880,56,455.0,Euro
-True,3648,4.445,4.43051,4.43051,881,89,455.0,Dollar
-False,4503,4.4281,4.48833,4.48833,876,74,462.0,Dollar
-False,5379,4.16667,4.17267,4.17267,875,41,455.0,Euro
-True,3623,4.22043,4.23913,4.23913,876,119,455.0,Pound
-True,4600,4.4881,4.49556,4.49556,874,76,455.0,Pound
-True,3052,4.38235,4.17992,4.17992,868,47,455.0,Pound
-True,26916,4.53448,4.51737,4.51737,872,111,455.0,Pound
-False,5036,4.21583,4.10338,4.10338,867,99,455.0,Euro
-False,5057,4.59072,4.60165,4.60165,869,71,455.0,Euro
-False,4046,4.2757,4.20566,4.20566,867,66,520.0,Euro
-False,3048,4.29435,4.30831,4.30831,879,92,455.0,Pound
-True,3347,4.19159,4.22868,4.22868,864,56,455.0,Euro
-True,23483,4.27041,4.18543,4.18543,863,668,455.0,Euro
-False,4850,4.23077,4.19255,4.19255,863,81,455.0,Pound
-True,2478,4.37129,4.35852,4.35852,866,30,455.0,Pound
-False,19348,4.11765,4.23437,4.23437,859,32,455.0,Dollar
-False,4753,4.09195,4.13621,4.13621,858,58,481.0,Pound
-False,39262,4.41667,4.4521,4.4521,857,601,514.0,Pound
-True,33544,4.36932,4.36007,4.36007,855,42,455.0,Dollar
-True,3806,4.69697,4.70108,4.70108,853,91,455.0,Dollar
-False,3003,4.52542,4.54075,4.54075,850,49,455.0,Pound
-True,10484,4.40816,4.37978,4.37978,851,49,455.0,Dollar
-False,2910,4.41991,4.39563,4.39563,848,280,481.0,Dollar
-True,2372,4.47895,4.40617,4.40617,842,5,455.0,Euro
-True,2486,4.34186,4.31989,4.31989,841,38,455.0,Pound
-True,2085,4.29282,4.26045,4.26045,840,12,455.0,Pound
-True,13548,4.06522,4.17483,4.17483,840,22,455.0,Pound
-False,3194,4.24894,4.33118,4.33118,838,25,455.0,Pound
-False,16706,4.42797,4.54596,4.54596,837,53,468.0,Dollar
-True,5684,4.52163,4.54807,4.54807,837,22,474.0,Dollar
-False,3020,4.49461,4.47254,4.47254,838,45,455.0,Pound
-True,5622,4.55163,4.54625,4.54625,839,125,455.0,Dollar
-False,12786,4.25,4.28674,4.28674,836,26,455.0,Pound
-False,2119,4.45556,4.43111,4.43111,836,33,455.0,Euro
-False,4559,4.4845,4.5134,4.5134,835,19,455.0,Pound
-False,4562,4.50725,4.52297,4.52297,833,10,455.0,Euro
-True,8098,4.4486,4.39146,4.39146,831,40,455.0,Dollar
-False,19310,4.61429,4.64852,4.64852,829,22,455.0,Euro
-False,1160,4.54605,4.54068,4.54068,828,8,1680.0,Pound
-True,3443,4.51869,4.54344,4.54344,826,38,474.0,Pound
-True,2893,4.32432,4.27457,4.27457,825,40,468.0,Pound
-False,3546,4.43773,4.41881,4.41881,832,27,455.0,Pound
-True,6417,4.41727,4.42063,4.42063,824,31,455.0,Euro
-False,5016,3.95,4.03862,4.03862,823,26,455.0,Euro
-False,44043,4.7,4.67229,4.67229,823,72,611.0,Pound
-False,3192,4.47403,4.4511,4.4511,820,29,455.0,Pound
-False,3372,4.43116,4.36355,4.36355,823,17,468.0,Pound
-True,2843,4.54915,4.56061,4.56061,818,55,455.0,Dollar
-False,4096,4.41954,4.41884,4.41884,818,95,455.0,Dollar
-False,46876,3.88406,3.82216,3.82216,818,11,455.0,Pound
-False,5922,4.5641,4.51879,4.51879,816,64,462.0,Dollar
-False,4967,4.41883,4.41558,4.41558,817,45,455.0,Dollar
-True,2318,4.50671,4.52518,4.52518,819,12,2400.0,Pound
-False,12483,3.6,3.59583,3.59583,815,27,455.0,Dollar
-False,6109,3.8,3.82805,3.82805,812,32,455.0,Pound
-True,4144,4.52941,4.54086,4.54086,811,45,455.0,Euro
-False,5021,4.44415,4.43862,4.43862,807,47,2720.0,Pound
-True,4594,4.37895,4.41132,4.41132,809,29,455.0,Dollar
-False,3535,4.46181,4.55157,4.55157,802,20,455.0,Pound
-False,33256,4.375,4.36652,4.36652,800,29,455.0,Dollar
-False,8094,4.23276,4.2052,4.2052,800,28,494.0,Dollar
-False,5129,4.50502,4.53022,4.53022,803,97,455.0,Euro
-True,3605,4.39862,4.41665,4.41665,798,29,455.0,Dollar
-True,4971,4.13816,4.17723,4.17723,797,34,455.0,Euro
-True,4700,4.30244,4.28474,4.28474,799,41,455.0,Euro
-False,12914,4.5,4.41067,4.41067,796,89,455.0,Pound
-False,7272,4.53846,4.52135,4.52135,796,28,455.0,Euro
-False,4770,4.24062,4.28336,4.28336,794,11,455.0,Pound
-False,2717,4.48023,4.30428,4.30428,791,112,455.0,Dollar
-False,4866,4.08824,4.08691,4.08691,791,24,455.0,Euro
-False,6759,4.46703,4.49597,4.49597,789,52,455.0,Pound
-False,54597,3.85417,3.81926,3.81926,792,81,455.0,Pound
-True,3479,4.295,4.24426,4.24426,793,126,455.0,Pound
-False,2614,4.0,4.08174,4.08174,789,18,800.0,Dollar
-True,9376,4.74882,4.76682,4.76682,789,62,455.0,Euro
-True,4385,4.45714,4.47008,4.47008,786,129,455.0,Euro
-False,5673,4.79762,4.78611,4.78611,788,43,455.0,Dollar
-False,4854,4.42562,4.41296,4.41296,786,22,455.0,Euro
-False,89171,4.50943,4.42418,4.42418,785,51,455.0,Pound
-True,32942,4.57803,4.58957,4.58957,788,133,455.0,Euro
-False,6208,4.33465,4.28676,4.28676,782,0,488.0,Pound
-False,5952,4.5,4.47606,4.47606,781,14,455.0,Dollar
-True,2669,4.30488,4.28611,4.28611,782,25,455.0,Dollar
-False,2117,4.13684,4.14724,4.14724,773,14,455.0,Euro
-False,3804,4.16279,4.13751,4.13751,771,32,455.0,Euro
-True,5302,4.58491,4.5943,4.5943,771,18,481.0,Dollar
-False,4562,4.75,4.76573,4.76573,770,49,455.0,Dollar
-True,44751,4.44326,4.42522,4.42522,770,41,455.0,Dollar
-False,5998,4.57831,4.57363,4.57363,770,373,455.0,Euro
-True,6210,4.25833,4.21159,4.21159,766,74,462.0,Pound
-False,2115,4.35417,4.35953,4.35953,769,57,455.0,Pound
-False,10761,4.32609,4.32313,4.32313,764,50,455.0,Euro
-False,3821,4.16935,4.17436,4.17436,761,47,455.0,Euro
-True,3353,4.32069,4.37,4.37,763,25,455.0,Euro
-True,19385,4.46522,4.53642,4.53642,760,75,455.0,Euro
-False,7887,4.7193,4.71539,4.71539,760,27,455.0,Pound
-False,3464,4.15217,4.09608,4.09608,757,23,720.0,Dollar
-True,9671,4.0,3.92659,3.92659,756,11,455.0,Euro
-False,2299,4.38889,4.39341,4.39341,758,28,455.0,Euro
-True,2119,4.41809,4.44064,4.44064,754,30,455.0,Euro
-True,4928,4.35461,4.209,4.209,752,129,455.0,Pound
-False,6875,4.2907,4.33272,4.33272,750,29,468.0,Dollar
-True,2934,4.58791,4.66277,4.66277,751,48,455.0,Pound
-False,3155,4.22464,4.18138,4.18138,752,17,455.0,Euro
-False,3254,4.8125,4.81559,4.81559,749,27,455.0,Dollar
-False,1945,4.32468,4.27958,4.27958,750,14,455.0,Dollar
-False,3934,4.36986,4.35056,4.35056,751,42,455.0,Euro
-True,4605,4.43925,4.42382,4.42382,748,143,455.0,Dollar
-True,3541,4.48276,4.46919,4.46919,747,26,468.0,Dollar
-True,2496,4.37329,4.39887,4.39887,746,30,455.0,Dollar
-True,3175,4.45745,4.45349,4.45349,747,26,455.0,Dollar
-True,2452,4.125,4.03968,4.03968,744,12,455.0,Dollar
-False,7114,4.27434,4.27076,4.27076,744,17,455.0,Euro
-True,19302,4.71429,4.75876,4.75876,740,21,455.0,Pound
-False,4304,4.52979,4.52084,4.52084,739,27,455.0,Pound
-False,3211,4.19444,4.14391,4.14391,735,36,455.0,Dollar
-True,1961,4.46346,4.46799,4.46799,738,232,455.0,Dollar
-True,4681,4.29365,4.30212,4.30212,737,46,468.0,Dollar
-False,3060,4.30208,4.34536,4.34536,734,8,455.0,Pound
-False,9289,4.4,4.39081,4.39081,733,26,494.0,Pound
-True,4438,4.43269,4.43413,4.43413,728,38,455.0,Pound
-False,6791,4.63953,4.72294,4.72294,724,62,2400.0,Pound
-True,5201,4.52174,4.50793,4.50793,724,51,455.0,Dollar
-True,16868,4.0,3.98262,3.98262,722,59,455.0,Pound
-False,2870,4.24272,4.22833,4.22833,722,19,455.0,Euro
-True,2064,4.37785,4.35354,4.35354,726,61,455.0,Dollar
-False,4683,4.58333,4.58556,4.58556,722,84,455.0,Dollar
-False,5045,4.38158,4.38788,4.38788,720,124,462.0,Pound
-False,34971,3.41176,3.42313,3.42313,720,23,455.0,Euro
-False,5166,4.325,4.36966,4.36966,721,160,455.0,Pound
-False,3635,4.37692,4.36329,4.36329,716,54,455.0,Dollar
-False,2592,4.43134,4.49099,4.49099,713,73,455.0,Euro
-True,4255,4.03125,4.01147,4.01147,712,93,455.0,Dollar
-True,5405,4.41544,4.22471,4.22471,712,109,455.0,Dollar
-False,4896,4.33168,4.20715,4.20715,709,83,455.0,Euro
-False,13165,4.31579,4.39228,4.39228,708,157,455.0,Dollar
-True,2297,4.58075,4.5977,4.5977,707,24,455.0,Euro
-False,2032,4.45,4.4991,4.4991,705,8,455.0,Pound
-False,6476,4.6069,4.6443,4.6443,707,45,455.0,Euro
-True,2152,4.14706,4.22167,4.22167,705,10,455.0,Euro
-False,19413,4.2807,4.15555,4.15555,706,600,455.0,Pound
-True,2925,4.10714,4.06886,4.06886,703,11,455.0,Euro
-True,2588,4.22414,4.29566,4.29566,705,17,455.0,Pound
-False,2810,4.31379,4.30476,4.30476,700,28,481.0,Pound
-True,7783,4.27273,4.32089,4.32089,696,135,488.0,Dollar
-True,4408,4.18548,4.12975,4.12975,696,74,455.0,Euro
-True,3704,4.1338,4.09176,4.09176,695,65,488.0,Euro
-False,2680,4.48333,4.45706,4.45706,694,358,3200.0,Euro
-True,2423,4.46774,4.46326,4.46326,689,19,455.0,Dollar
-True,5058,4.13462,4.08026,4.08026,684,25,455.0,Dollar
-True,3968,4.25926,4.2838,4.2838,682,17,455.0,Pound
-True,5260,4.24667,4.20066,4.20066,682,0,455.0,Pound
-False,11665,4.45833,4.46643,4.46643,680,119,488.0,Dollar
-True,3644,4.43571,4.35726,4.35726,679,52,455.0,Dollar
-False,2744,4.3,4.12553,4.12553,677,27,455.0,Pound
-True,6700,4.54878,4.56617,4.56617,677,49,455.0,Pound
-False,2268,4.21642,4.22936,4.22936,674,8,468.0,Dollar
-True,6594,4.3871,4.46775,4.46775,673,53,455.0,Pound
-True,2647,4.4965,4.45241,4.45241,670,23,455.0,Dollar
-True,15113,4.47183,4.48666,4.48666,668,83,455.0,Euro
-False,5404,4.26587,4.14793,4.14793,668,72,474.0,Dollar
-True,3568,4.56452,4.5598,4.5598,668,136,455.0,Dollar
-True,4811,4.39716,4.38709,4.38709,666,291,455.0,Dollar
-True,8730,4.8,4.81067,4.81067,663,47,455.0,Pound
-True,3294,4.30769,4.25609,4.25609,662,42,455.0,Pound
-False,2438,4.24118,4.22612,4.22612,659,28,455.0,Euro
-False,2879,4.41228,4.43649,4.43649,658,35,455.0,Euro
-False,2949,4.03704,4.07889,4.07889,657,55,455.0,Dollar
-True,1381,4.43945,4.44868,4.44868,656,35,455.0,Pound
-True,2531,4.38953,4.37202,4.37202,661,39,455.0,Dollar
-True,5732,4.70312,4.73958,4.73958,655,46,455.0,Dollar
-True,3075,4.1,3.82051,3.82051,655,64,455.0,Pound
-False,9964,4.5566,4.54563,4.54563,655,63,455.0,Dollar
-False,5375,4.35345,4.37623,4.37623,654,131,462.0,Dollar
-True,5149,4.42,4.35676,4.35676,653,36,455.0,Dollar
-False,7492,3.42857,3.45216,3.45216,651,10,455.0,Pound
-True,3534,4.5,4.53924,4.53924,655,58,455.0,Pound
-False,3544,3.75,3.79304,3.79304,650,52,468.0,Euro
-False,4224,4.28804,4.30258,4.30258,650,0,455.0,Dollar
-True,5486,4.18852,4.19623,4.19623,653,26,455.0,Pound
-True,2528,4.54615,4.58919,4.58919,647,44,468.0,Pound
-False,2638,4.43464,4.4071,4.4071,646,88,455.0,Euro
-False,7332,4.50637,4.43351,4.43351,643,132,455.0,Euro
-True,30876,4.47564,4.51053,4.51053,642,142,455.0,Dollar
-False,4355,4.1,4.09427,4.09427,641,42,1280.0,Euro
-True,6450,4.45181,4.38882,4.38882,640,0,462.0,Euro
-False,27891,4.5,4.48239,4.48239,638,32,455.0,Pound
-True,8094,4.30488,4.30697,4.30697,634,52,494.0,Euro
-True,5681,4.60714,4.62262,4.62262,633,34,455.0,Pound
-True,3018,4.575,4.54163,4.54163,632,19,455.0,Pound
-False,24185,4.42466,4.49823,4.49823,634,25,455.0,Dollar
-True,8208,4.07812,4.02383,4.02383,632,38,481.0,Pound
-True,5668,4.55797,4.58431,4.58431,631,80,468.0,Dollar
-False,6164,4.72917,4.68331,4.68331,631,39,455.0,Euro
-True,2030,4.02137,4.04615,4.04615,629,43,455.0,Euro
-False,8353,4.38636,4.32028,4.32028,630,14,455.0,Euro
-True,3440,4.47895,4.14253,4.14253,628,35,455.0,Euro
-False,4384,4.63861,4.63972,4.63972,627,174,455.0,Dollar
-False,2549,4.55882,4.57647,4.57647,629,93,455.0,Dollar
-False,2430,4.09091,4.06788,4.06788,628,54,455.0,Pound
-True,5760,4.36667,4.50626,4.50626,624,24,455.0,Dollar
-False,55212,4.30822,4.41707,4.41707,624,21,455.0,Pound
-True,1603,4.15667,4.15874,4.15874,623,12,455.0,Euro
-False,3647,4.31818,4.3354,4.3354,622,36,455.0,Pound
-False,9691,4.53571,4.43196,4.43196,622,57,468.0,Pound
-True,4624,4.34211,4.35906,4.35906,624,41,2720.0,Dollar
-True,3619,4.43289,4.43663,4.43663,624,55,455.0,Euro
-True,7764,4.25,4.14673,4.14673,620,7,455.0,Pound
-False,6140,4.53636,4.55505,4.55505,624,36,455.0,Pound
-False,7557,4.22973,4.29601,4.29601,618,24,455.0,Euro
-True,11874,4.59091,4.62871,4.62871,612,68,455.0,Dollar
-True,1885,4.20635,4.20746,4.20746,612,43,455.0,Euro
-True,25556,4.27,4.26281,4.26281,611,17,500.0,Pound
-True,4111,4.45,4.20557,4.20557,612,61,455.0,Dollar
-True,7394,4.26786,4.27794,4.27794,610,22,455.0,Dollar
-False,9622,4.4,4.21857,4.21857,609,17,455.0,Euro
-True,7913,3.6,3.59647,3.59647,609,46,488.0,Euro
-False,9628,4.05,4.19955,4.19955,608,16,455.0,Dollar
-False,4844,4.53409,4.50877,4.50877,608,40,455.0,Euro
-True,2450,4.34667,4.34041,4.34041,608,9,455.0,Pound
-True,2901,4.19231,4.17272,4.17272,606,32,533.0,Dollar
-True,3702,4.53125,4.59941,4.59941,606,24,455.0,Euro
-True,5234,3.9,3.91251,3.91251,605,6,455.0,Dollar
-True,23020,4.25,4.01805,4.01805,604,54,455.0,Euro
-False,1802,4.55,4.50521,4.50521,602,18,455.0,Pound
-False,6491,4.37273,4.492,4.492,602,40,455.0,Pound
-False,58258,4.19672,3.9853,3.9853,600,103,455.0,Dollar
-True,1858,4.17949,4.22954,4.22954,600,24,488.0,Euro
-True,3480,4.41667,4.4371,4.4371,598,62,455.0,Pound
-True,2404,4.25806,4.28193,4.28193,599,23,455.0,Dollar
-True,2861,4.39326,4.3561,4.3561,598,38,455.0,Dollar
-True,5168,4.07843,4.00247,4.00247,595,24,455.0,Dollar
-True,13406,4.38502,4.40603,4.40603,599,45,455.0,Pound
-True,5424,4.55556,4.54396,4.54396,592,57,455.0,Pound
-True,43876,4.45724,4.51779,4.51779,594,30,520.0,Dollar
-True,2650,4.35577,4.38837,4.38837,595,22,455.0,Euro
-False,4386,4.15,4.13272,4.13272,589,27,455.0,Euro
-True,6197,4.37383,4.30544,4.30544,589,187,455.0,Euro
-False,4843,4.61392,4.69149,4.69149,586,15,455.0,Dollar
-True,3259,4.33889,4.40924,4.40924,584,32,455.0,Euro
-False,13127,4.45,4.47888,4.47888,582,21,455.0,Pound
-False,3187,4.35204,4.33551,4.33551,585,36,455.0,Dollar
-True,3396,4.34672,4.33969,4.33969,583,13,455.0,Pound
-False,2563,4.42857,4.16878,4.16878,576,100,468.0,Euro
-False,30571,3.71309,3.72323,3.72323,575,6,455.0,Pound
-False,2742,4.33537,4.37636,4.37636,575,46,455.0,Dollar
-False,1540,4.33693,4.28052,4.28052,579,7,455.0,Euro
-True,25937,4.14754,4.12243,4.12243,574,59,455.0,Euro
-True,2334,4.57692,4.62322,4.62322,569,17,455.0,Pound
-True,32551,4.51887,4.49889,4.49889,569,600,455.0,Pound
-True,2588,4.63043,4.61404,4.61404,568,42,455.0,Dollar
-False,2593,4.325,4.38097,4.38097,566,26,455.0,Euro
-False,4898,4.45055,4.46994,4.46994,564,69,455.0,Pound
-False,2600,4.62879,4.60111,4.60111,562,228,3200.0,Dollar
-False,2054,4.32394,4.22503,4.22503,562,55,455.0,Dollar
-False,2673,4.29114,4.31611,4.31611,562,25,455.0,Euro
-True,5840,4.35,4.2626,4.2626,563,38,455.0,Pound
-True,4147,4.39516,4.31514,4.31514,561,13,455.0,Dollar
-True,2351,4.34409,4.3089,4.3089,558,81,468.0,Pound
-True,15279,4.39474,4.41667,4.41667,557,19,455.0,Pound
-True,1793,4.25481,4.21712,4.21712,559,26,455.0,Euro
-False,2723,4.52367,4.55099,4.55099,560,65,455.0,Euro
-True,2247,4.25633,4.24669,4.24669,556,6,514.0,Dollar
-True,8854,4.09091,4.078,4.078,554,34,455.0,Pound
-False,3724,4.34078,4.39728,4.39728,556,47,455.0,Dollar
-True,2152,4.47059,4.46238,4.46238,558,43,455.0,Dollar
-False,2205,4.39474,4.40272,4.40272,553,25,455.0,Euro
-False,2869,4.50893,4.55198,4.55198,555,31,455.0,Euro
-True,3507,4.39677,4.35225,4.35225,555,30,455.0,Dollar
-True,6290,3.95,4.0885,4.0885,551,12,455.0,Euro
-True,3522,4.42361,4.4475,4.4475,550,469,481.0,Pound
-False,5617,4.18056,4.16457,4.16457,549,51,455.0,Dollar
-True,2062,4.6,4.57876,4.57876,549,32,455.0,Pound
-False,4016,4.38542,4.2519,4.2519,550,27,455.0,Pound
-True,4975,4.55629,4.53074,4.53074,549,37,455.0,Euro
-True,2345,4.08696,4.09503,4.09503,547,88,455.0,Dollar
-True,3732,4.63223,4.47484,4.47484,547,43,455.0,Pound
-True,35440,3.1,3.35419,3.35419,545,8,455.0,Dollar
-False,1923,4.48837,4.47196,4.47196,547,42,455.0,Pound
-True,1774,4.25269,4.26677,4.26677,543,13,455.0,Euro
-False,4925,4.40909,4.39204,4.39204,541,67,455.0,Euro
-False,4406,4.5,4.5416,4.5416,540,74,455.0,Dollar
-False,35553,4.44643,4.43379,4.43379,539,38,468.0,Euro
-True,5375,4.39394,4.2729,4.2729,539,48,455.0,Euro
-True,2155,4.4879,4.46806,4.46806,541,27,455.0,Pound
-False,4225,4.175,4.07729,4.07729,538,98,455.0,Pound
-True,4058,4.64286,4.65202,4.65202,537,50,455.0,Euro
-False,3207,4.45,4.45022,4.45022,537,29,2880.0,Pound
-False,4128,4.38043,4.40562,4.40562,536,27,455.0,Dollar
-True,1717,4.40654,4.41823,4.41823,536,28,455.0,Pound
-False,1460,4.1875,4.05199,4.05199,536,25,488.0,Dollar
-False,1443,4.33146,4.275,4.275,534,17,455.0,Dollar
-True,2539,4.58088,4.58598,4.58598,533,21,455.0,Dollar
-True,23644,4.55163,4.64651,4.64651,534,41,468.0,Euro
-False,4982,4.23077,4.26065,4.26065,532,64,455.0,Euro
-True,2935,4.51587,4.50448,4.50448,532,83,455.0,Dollar
-False,2532,4.44444,4.40532,4.40532,532,19,455.0,Pound
-True,10527,4.44444,4.44455,4.44455,531,15,455.0,Pound
-True,1853,4.26761,4.27569,4.27569,530,27,1920.0,Pound
-False,5731,4.18,4.17322,4.17322,528,0,455.0,Euro
-True,8435,4.65,4.61704,4.61704,526,8,455.0,Euro
-True,26323,4.16667,4.02339,4.02339,526,31,455.0,Euro
-True,7949,4.47059,4.50802,4.50802,525,51,520.0,Pound
-True,2925,4.17708,4.16058,4.16058,526,60,455.0,Pound
-True,3456,4.79032,4.82538,4.82538,526,37,455.0,Dollar
-False,1593,4.26074,4.17434,4.17434,521,25,455.0,Dollar
-False,2876,4.37952,4.34069,4.34069,520,266,481.0,Pound
-True,5306,4.44706,4.51216,4.51216,520,45,455.0,Euro
-False,4493,4.24615,4.06975,4.06975,517,33,455.0,Euro
-True,2578,4.3114,4.31016,4.31016,518,28,455.0,Pound
-True,2159,4.58696,4.55469,4.55469,519,82,455.0,Pound
-False,1595,4.46348,4.48575,4.48575,519,37,455.0,Dollar
-True,3931,3.8,3.79718,3.79718,514,42,455.0,Pound
-True,1687,4.44643,4.50745,4.50745,517,26,468.0,Pound
-False,3254,4.03846,4.05669,4.05669,513,13,455.0,Euro
-True,4591,3.85294,3.78761,3.78761,512,6,455.0,Pound
-False,3027,4.48837,4.54888,4.54888,511,21,455.0,Euro
-False,1452,4.38235,4.2951,4.2951,512,12,455.0,Dollar
-False,4110,4.33771,4.30219,4.30219,511,123,455.0,Pound
-True,2205,4.12069,4.10338,4.10338,508,65,455.0,Dollar
-True,8004,4.24554,4.28314,4.28314,508,199,455.0,Euro
-False,3128,3.35,3.25941,3.25941,509,241,455.0,Dollar
-False,7804,4.71078,4.67313,4.67313,509,32,455.0,Pound
-True,3755,4.23077,4.23526,4.23526,504,25,455.0,Pound
-True,2370,4.44,4.41135,4.41135,504,82,481.0,Euro
-True,2010,4.05882,4.07062,4.07062,502,11,455.0,Euro
-False,1903,4.24609,4.1978,4.1978,502,113,455.0,Euro
-True,2076,4.15152,4.16651,4.16651,501,28,455.0,Euro
-True,2898,3.85833,3.90374,3.90374,499,204,468.0,Euro
-True,3260,4.5,4.45216,4.45216,499,14,468.0,Euro
-False,1864,3.5,3.53852,3.53852,498,63,455.0,Pound
-False,13023,4.33333,4.29464,4.29464,497,84,455.0,Pound
-True,2019,4.04348,3.98176,3.98176,497,51,455.0,Dollar
-False,3561,4.44304,4.46453,4.46453,496,81,455.0,Dollar
-True,2636,4.69737,4.72393,4.72393,495,16,455.0,Pound
-False,3375,4.67333,4.27674,4.27674,495,75,455.0,Pound
-False,2719,3.95,3.89776,3.89776,495,12,455.0,Dollar
-False,15362,4.55556,4.53003,4.53003,495,20,468.0,Euro
-False,2281,4.23889,4.24188,4.24188,494,16,455.0,Dollar
-True,1399,4.11864,4.13369,4.13369,496,23,455.0,Pound
-True,3718,4.7907,4.78346,4.78346,492,164,455.0,Dollar
-True,27585,3.65,3.5005,3.5005,492,30,455.0,Pound
-False,7451,4.42857,4.44269,4.44269,492,26,455.0,Pound
-True,1780,4.32051,4.34948,4.34948,491,41,455.0,Dollar
-False,1636,4.39744,4.41331,4.41331,491,11,455.0,Pound
-True,2076,4.42405,4.42992,4.42992,491,27,455.0,Pound
-True,2626,4.40854,4.30026,4.30026,490,12,455.0,Euro
-False,14985,4.28125,4.22798,4.22798,488,28,455.0,Pound
-True,39915,3.62338,3.61641,3.61641,488,11,455.0,Euro
-True,5288,4.23913,4.35565,4.35565,487,33,455.0,Pound
-True,3946,4.59211,4.6251,4.6251,487,27,455.0,Pound
-True,895,4.34615,4.45877,4.45877,488,16,455.0,Pound
-True,7065,4.48529,4.48143,4.48143,485,60,455.0,Euro
-False,10063,3.95,4.05329,4.05329,483,54,455.0,Dollar
-False,5414,4.63,4.6131,4.6131,483,53,455.0,Dollar
-False,2515,4.28378,4.25644,4.25644,480,30,455.0,Pound
-False,2262,4.22148,4.08387,4.08387,480,372,455.0,Pound
-True,4187,4.48101,4.47837,4.47837,481,142,455.0,Euro
-False,8490,4.61034,4.66495,4.66495,479,77,455.0,Dollar
-True,18519,4.0,4.00629,4.00629,477,71,455.0,Euro
-True,2196,4.09524,4.10985,4.10985,477,13,455.0,Dollar
-False,4165,4.29091,4.29079,4.29079,477,115,455.0,Euro
-True,53614,4.20283,4.28764,4.28764,479,105,455.0,Pound
-False,3135,4.67308,4.69812,4.69812,475,37,455.0,Pound
-True,2896,4.05,4.02812,4.02812,475,48,455.0,Dollar
-True,1433,4.33333,4.34037,4.34037,475,174,474.0,Dollar
-False,3550,4.08824,4.09903,4.09903,473,86,455.0,Dollar
-True,1907,4.49242,4.48898,4.48898,474,57,455.0,Pound
-True,58014,4.11058,4.07941,4.07941,476,215,455.0,Pound
-True,2468,4.55245,4.54049,4.54049,477,194,455.0,Dollar
-True,1492,4.35448,4.30787,4.30787,473,21,455.0,Pound
-False,9288,4.38462,4.2006,4.2006,473,46,455.0,Euro
-False,2525,4.47297,4.27961,4.27961,472,17,468.0,Dollar
-True,5634,3.84375,3.79878,3.79878,470,17,455.0,Dollar
-False,3802,4.77273,4.76648,4.76648,471,41,455.0,Pound
-True,8380,3.95,3.95327,3.95327,470,23,455.0,Pound
-True,3569,4.27586,4.2829,4.2829,470,38,455.0,Dollar
-True,2017,4.43548,4.48753,4.48753,468,23,455.0,Dollar
-False,12738,4.375,4.40466,4.40466,466,45,455.0,Dollar
-True,8654,4.43478,4.38905,4.38905,465,124,455.0,Dollar
-True,1697,4.32292,4.31517,4.31517,465,48,455.0,Dollar
-True,5558,4.65,4.5503,4.5503,465,30,455.0,Dollar
-True,1536,4.28214,4.31712,4.31712,469,41,455.0,Dollar
-False,28203,3.76923,3.89389,3.89389,461,9,455.0,Euro
-True,24082,4.1,3.98136,3.98136,459,115,455.0,Euro
-False,9833,4.2165,4.17518,4.17518,459,17,455.0,Euro
-False,2703,4.60938,4.63202,4.63202,460,33,455.0,Pound
-True,1934,4.34706,4.33452,4.33452,458,45,455.0,Pound
-True,3814,3.86364,3.6712,3.6712,458,55,455.0,Dollar
-True,17433,4.28646,4.38079,4.38079,458,122,2080.0,Dollar
-False,3540,4.3,4.38606,4.38606,459,19,468.0,Pound
-False,19558,4.20513,4.20228,4.20228,457,8,455.0,Euro
-False,4104,4.25,4.15518,4.15518,455,48,455.0,Euro
-False,2392,4.39286,4.43096,4.43096,453,32,455.0,Dollar
-False,17331,4.37395,4.38743,4.38743,457,17,455.0,Dollar
-True,2544,4.24306,4.16229,4.16229,456,12,455.0,Euro
-False,3574,4.47826,4.48984,4.48984,452,45,455.0,Dollar
-False,3803,4.72581,4.65601,4.65601,452,22,455.0,Euro
-True,12708,4.34426,4.35346,4.35346,451,27,455.0,Dollar
-False,1907,4.62963,4.6729,4.6729,450,31,455.0,Dollar
-True,3138,3.66667,3.61329,3.61329,451,62,455.0,Pound
-False,3816,4.69811,4.69182,4.69182,449,55,455.0,Dollar
-False,6430,4.45,4.43595,4.43595,449,22,455.0,Dollar
-True,2892,4.7875,4.77915,4.77915,449,13,455.0,Euro
-False,13279,4.32609,4.22206,4.22206,449,22,500.0,Dollar
-False,11054,4.25,4.25951,4.25951,448,13,455.0,Dollar
-False,3283,4.61364,4.60347,4.60347,449,18,455.0,Dollar
-False,3761,4.23913,4.18354,4.18354,448,0,520.0,Pound
-False,2575,4.27273,4.29918,4.29918,447,50,488.0,Euro
-False,32740,4.18627,4.21766,4.21766,447,42,455.0,Pound
-False,2082,4.25,4.60477,4.60477,447,29,2880.0,Euro
-True,3032,4.53521,4.53315,4.53315,446,16,455.0,Dollar
-False,11110,4.73234,4.76521,4.76521,444,11,1280.0,Dollar
-True,20395,4.53652,4.55633,4.55633,444,29,455.0,Euro
-True,2345,4.43056,4.37896,4.37896,445,329,455.0,Pound
-True,1617,4.43719,4.45437,4.45437,445,29,455.0,Dollar
-True,59621,4.34615,4.43867,4.43867,443,55,455.0,Pound
-True,2647,4.60294,4.6988,4.6988,443,19,455.0,Dollar
-False,3405,4.4375,4.39151,4.39151,442,50,455.0,Dollar
-True,1754,4.78692,4.5461,4.5461,441,20,481.0,Pound
-True,4187,4.44915,4.59287,4.59287,440,47,455.0,Pound
-False,1787,4.25,4.44903,4.44903,440,12,455.0,Dollar
-True,1667,3.85,3.74943,3.74943,438,21,455.0,Dollar
-True,41759,4.07353,4.0994,4.0994,438,26,455.0,Euro
-True,2227,4.58382,4.61876,4.61876,437,46,455.0,Euro
-False,2967,4.9,4.91336,4.91336,437,37,455.0,Dollar
-True,2278,4.55263,4.54733,4.54733,436,66,800.0,Dollar
-False,2231,4.63462,4.64552,4.64552,435,9,455.0,Pound
-False,5731,4.26562,4.08957,4.08957,435,11,455.0,Pound
-False,2577,3.97917,3.95508,3.95508,435,28,455.0,Pound
-True,3935,4.54615,4.60067,4.60067,434,43,455.0,Dollar
-True,2596,4.51471,4.42909,4.42909,433,42,468.0,Dollar
-False,1272,4.60656,4.614,4.614,433,40,455.0,Dollar
-True,2106,4.40141,4.36719,4.36719,432,20,455.0,Euro
-False,2098,4.4322,4.42318,4.42318,431,42,455.0,Euro
-False,2592,4.65819,4.64621,4.64621,432,103,455.0,Pound
-False,1223,4.20732,4.20014,4.20014,430,31,455.0,Pound
-True,44864,4.1974,4.22526,4.22526,429,64,455.0,Dollar
-True,6313,3.3,3.34817,3.34817,428,50,455.0,Euro
-False,4478,4.15741,4.12445,4.12445,428,91,455.0,Pound
-True,1456,4.35938,4.37066,4.37066,426,21,455.0,Euro
-False,3234,4.6,4.70924,4.70924,426,29,455.0,Euro
-False,4759,4.69643,4.67374,4.67374,425,59,455.0,Pound
-True,3463,4.27344,4.17355,4.17355,425,172,481.0,Euro
-False,1361,4.30909,4.30633,4.30633,425,11,455.0,Euro
-True,1627,4.19333,4.05202,4.05202,423,22,455.0,Euro
-True,997,4.54167,4.55401,4.55401,422,17,455.0,Euro
-False,9614,4.36111,4.3651,4.3651,421,54,455.0,Euro
-True,1974,4.31333,4.3205,4.3205,420,23,455.0,Dollar
-True,3775,4.25,4.32406,4.32406,419,30,455.0,Euro
-True,1008,3.76623,3.79444,3.79444,419,10,455.0,Dollar
-True,5016,4.53175,4.60876,4.60876,418,23,455.0,Euro
-True,3007,4.3,4.1831,4.1831,416,36,455.0,Pound
-False,11593,4.19444,4.06109,4.06109,416,43,494.0,Pound
-False,998,4.24576,4.22472,4.22472,416,41,455.0,Dollar
-True,8490,4.08952,4.0952,4.0952,422,11,455.0,Pound
-False,3429,3.88,3.90075,3.90075,415,19,455.0,Dollar
-True,12261,4.35849,4.2514,4.2514,417,41,455.0,Pound
-False,3944,4.2,4.32014,4.32014,414,31,455.0,Pound
-True,3839,4.3913,4.37118,4.37118,414,19,455.0,Pound
-True,1133,4.52459,4.52529,4.52529,412,26,455.0,Euro
-False,2663,4.34343,4.24747,4.24747,414,15,455.0,Pound
-True,30434,3.25,3.35482,3.35482,411,31,455.0,Euro
-True,33618,4.39474,4.41654,4.41654,411,32,455.0,Dollar
-False,1958,4.22131,4.2032,4.2032,410,78,481.0,Pound
-False,1801,4.35057,4.26495,4.26495,410,17,455.0,Dollar
-False,42661,4.2,4.22375,4.22375,410,103,455.0,Dollar
-True,6668,4.54,4.52777,4.52777,409,40,468.0,Dollar
-True,1914,4.1,4.0793,4.0793,408,27,494.0,Dollar
-False,2530,4.34091,4.36944,4.36944,408,20,455.0,Dollar
-False,1320,4.14458,4.06565,4.06565,407,37,488.0,Pound
-False,1426,4.46667,4.48005,4.48005,406,11,455.0,Pound
-False,4075,4.25397,4.32229,4.32229,410,32,455.0,Pound
-True,2843,4.5,4.44749,4.44749,405,28,455.0,Pound
-False,1304,4.42941,4.45591,4.45591,405,29,455.0,Euro
-False,1795,3.91667,3.87275,3.87275,404,12,520.0,Dollar
-True,2223,4.59091,4.55683,4.55683,403,118,455.0,Euro
-True,1457,4.41209,4.40621,4.40621,404,62,455.0,Pound
-False,2546,4.5,4.51027,4.51027,402,61,468.0,Dollar
-False,14801,3.89583,4.03796,4.03796,401,54,455.0,Dollar
-False,20836,3.35,3.15472,3.15472,401,525,455.0,Pound
-False,2230,4.30645,4.25481,4.25481,401,29,455.0,Pound
-True,1519,4.45294,4.49008,4.49008,402,20,455.0,Dollar
-True,4732,4.32812,4.34332,4.34332,399,38,2000.0,Euro
-False,1950,4.23214,4.25426,4.25426,400,18,455.0,Euro
-False,1250,3.95946,3.97658,3.97658,400,52,455.0,Pound
-True,1909,4.36842,4.43601,4.43601,398,98,455.0,Euro
-False,5040,4.55682,4.56198,4.56198,397,25,462.0,Euro
-False,1863,4.31707,4.38007,4.38007,398,39,468.0,Euro
-True,4105,4.45,4.40853,4.40853,396,48,455.0,Dollar
-True,4127,4.08333,4.03713,4.03713,396,37,468.0,Pound
-True,1655,4.33333,4.43502,4.43502,397,25,455.0,Pound
-True,1391,4.32203,4.32624,4.32624,396,64,455.0,Dollar
-False,1365,4.38462,4.34185,4.34185,396,16,455.0,Euro
-False,2092,4.24265,4.22318,4.22318,396,21,455.0,Pound
-False,2409,4.33333,4.38013,4.38013,395,103,455.0,Euro
-True,6614,4.57143,4.53173,4.53173,395,37,455.0,Dollar
-False,1127,4.25556,4.20065,4.20065,395,144,2240.0,Euro
-True,955,4.42308,4.41547,4.41547,394,46,455.0,Pound
-True,1815,4.43367,4.51653,4.51653,394,8,455.0,Dollar
-False,58882,4.11538,4.08009,4.08009,394,73,455.0,Pound
-False,1459,4.2619,4.13101,4.13101,392,68,3040.0,Dollar
-False,6992,4.39286,4.42279,4.42279,392,43,455.0,Dollar
-False,19048,4.05,4.51807,4.51807,391,11,455.0,Euro
-True,14968,4.43214,4.41378,4.41378,392,24,455.0,Pound
-False,1489,4.66438,4.66529,4.66529,390,19,455.0,Dollar
-True,4295,3.70833,3.62967,3.62967,390,17,455.0,Pound
-True,3643,4.23256,4.29116,4.29116,389,63,455.0,Euro
-True,6899,4.38889,4.42705,4.42705,389,40,462.0,Pound
-True,1774,4.51316,4.50866,4.50866,389,10,1600.0,Dollar
-False,1205,4.18797,4.16348,4.16348,392,185,455.0,Euro
-True,1407,4.44091,4.47606,4.47606,389,284,455.0,Pound
-False,10636,4.33871,4.35886,4.35886,387,19,455.0,Pound
-False,6885,4.15,4.17407,4.17407,386,9,455.0,Euro
-False,12400,4.40625,4.25002,4.25002,386,51,455.0,Euro
-True,1732,4.59146,4.58878,4.58878,388,90,455.0,Euro
-True,51005,4.19863,4.1594,4.1594,386,26,520.0,Dollar
-False,2763,4.9375,4.81904,4.81904,385,42,455.0,Euro
-False,3192,4.63889,4.53065,4.53065,383,43,455.0,Pound
-False,5232,4.4,4.44809,4.44809,383,16,455.0,Pound
-False,4985,4.29268,4.3219,4.3219,383,46,455.0,Euro
-False,3412,4.33636,4.32986,4.32986,383,59,455.0,Pound
-True,2997,4.27679,4.26981,4.26981,383,46,455.0,Euro
-True,29166,3.8,3.89184,3.89184,382,47,455.0,Dollar
-False,3083,4.46429,4.42404,4.42404,382,14,455.0,Dollar
-True,3115,4.28125,4.25139,4.25139,382,38,455.0,Pound
-True,1332,4.32895,4.42597,4.42597,381,9,455.0,Pound
-True,6635,4.75,4.47942,4.47942,381,9,455.0,Dollar
-True,30274,4.29936,4.27845,4.27845,381,42,455.0,Dollar
-False,11918,4.35,4.46211,4.46211,379,18,455.0,Euro
-False,3239,4.29545,4.29959,4.29959,379,29,455.0,Pound
-True,2388,4.48476,4.44827,4.44827,377,31,455.0,Dollar
-True,1678,4.51562,4.5273,4.5273,376,44,455.0,Euro
-False,2464,4.27778,4.36374,4.36374,376,26,455.0,Euro
-False,18113,3.79412,3.63783,3.63783,375,225,455.0,Pound
-False,25828,4.20345,4.22025,4.22025,375,19,455.0,Euro
-True,4112,4.11765,4.11548,4.11548,375,123,455.0,Pound
-True,2656,4.44231,4.45745,4.45745,376,21,468.0,Dollar
-True,22391,3.875,3.60572,3.60572,373,29,455.0,Dollar
-True,1579,4.22222,4.13555,4.13555,372,6,455.0,Euro
-True,3547,4.4127,4.4339,4.4339,371,65,455.0,Pound
-True,4466,4.46465,4.39488,4.39488,373,63,455.0,Pound
-False,4323,4.0,3.84844,3.84844,370,46,455.0,Pound
-True,2282,4.7,4.64234,4.64234,370,33,455.0,Euro
-True,7906,4.24706,4.26403,4.26403,369,17,455.0,Pound
-True,4588,4.39286,4.47504,4.47504,368,17,455.0,Pound
-True,11597,4.6,4.5784,4.5784,368,19,455.0,Euro
-True,10921,4.58025,4.55643,4.55643,368,35,455.0,Pound
-False,13982,4.29012,4.23615,4.23615,368,20,455.0,Pound
-False,1575,4.45,4.43016,4.43016,367,46,455.0,Euro
-True,3103,4.51538,4.55001,4.55001,369,35,455.0,Dollar
-False,1892,4.38816,4.46699,4.46699,369,21,455.0,Dollar
-False,2210,4.25,4.29973,4.29973,366,21,455.0,Pound
-False,6216,3.29167,3.33074,3.33074,366,7,455.0,Pound
-False,2393,4.52128,4.5179,4.5179,365,15,455.0,Euro
-False,1535,4.41975,4.1631,4.1631,365,33,455.0,Euro
-True,3172,4.37288,4.33715,4.33715,365,142,800.0,Pound
-False,1702,3.65,3.58937,3.58937,364,30,455.0,Euro
-True,3000,4.1,4.05561,4.05561,364,18,455.0,Euro
-True,1358,4.44706,4.43197,4.43197,363,42,455.0,Euro
-False,1809,3.96667,3.90748,3.90748,362,31,455.0,Dollar
-False,1484,4.45,4.52674,4.52674,361,8,455.0,Euro
-False,8725,4.50847,4.48173,4.48173,362,20,455.0,Dollar
-False,1745,4.28409,4.23109,4.23109,361,33,455.0,Dollar
-True,1054,4.38462,4.38047,4.38047,365,42,2160.0,Pound
-False,31442,2.78947,2.68061,2.68061,360,30,455.0,Euro
-True,2600,4.76271,4.79969,4.79969,361,25,455.0,Dollar
-True,1256,4.54365,4.59442,4.59442,367,41,455.0,Euro
-False,29760,4.06818,4.01182,4.01182,359,8,455.0,Pound
-True,1987,4.35417,4.33343,4.33343,359,13,455.0,Dollar
-True,1385,4.3,4.31094,4.31094,359,84,455.0,Pound
-False,31637,3.2,3.27268,3.27268,358,45,455.0,Pound
-True,1158,4.2,4.19335,4.19335,358,14,455.0,Dollar
-True,6128,4.33333,4.34487,4.34487,357,27,455.0,Pound
-True,1522,4.46233,4.35891,4.35891,356,60,2400.0,Euro
-True,3376,4.22826,4.07415,4.07415,356,128,455.0,Pound
-False,1940,4.54082,4.51155,4.51155,356,51,455.0,Pound
-False,4029,4.58125,4.64903,4.64903,356,16,455.0,Euro
-False,2092,4.56311,4.55726,4.55726,357,28,455.0,Dollar
-True,1319,4.24725,4.25696,4.25696,356,25,455.0,Euro
-False,2358,4.35714,4.40503,4.40503,355,37,455.0,Dollar
-False,12161,4.03704,3.54739,3.54739,356,0,474.0,Pound
-False,1276,4.5,4.54482,4.54482,355,47,455.0,Dollar
-False,1825,4.8,4.76672,4.76672,354,28,455.0,Dollar
-True,3101,4.26389,4.14264,4.14264,354,77,455.0,Euro
-False,1247,4.39151,4.42429,4.42429,353,26,455.0,Dollar
-False,7006,4.51389,4.48722,4.48722,354,17,455.0,Dollar
-False,3062,3.625,3.71708,3.71708,353,127,474.0,Pound
-False,2931,4.60526,4.59393,4.59393,352,15,455.0,Dollar
-False,1484,4.61236,4.6353,4.6353,353,48,455.0,Pound
-True,2881,4.3855,4.30499,4.30499,352,39,455.0,Dollar
-True,4773,4.48077,4.37326,4.37326,351,62,455.0,Pound
-True,2356,4.6,4.58209,4.58209,350,21,455.0,Euro
-False,960,4.21429,4.25376,4.25376,351,23,455.0,Dollar
-False,2476,4.6,4.60578,4.60578,348,14,455.0,Dollar
-False,1619,4.4023,4.45306,4.45306,348,22,455.0,Dollar
-False,2007,4.31818,4.30701,4.30701,348,46,455.0,Euro
-False,1516,4.33173,4.38034,4.38034,350,21,455.0,Euro
-True,2716,3.88333,3.71566,3.71566,349,36,474.0,Pound
-False,1134,4.19928,4.12469,4.12469,348,11,455.0,Euro
-True,1785,4.40244,4.37779,4.37779,347,18,455.0,Pound
-True,7439,4.64754,4.68574,4.68574,346,102,455.0,Dollar
-False,3839,4.27679,4.18078,4.18078,349,27,455.0,Pound
-True,3121,4.21795,4.21324,4.21324,346,463,455.0,Euro
-True,3146,4.01064,3.87699,3.87699,345,86,455.0,Dollar
-True,4180,4.35,4.3812,4.3812,346,66,455.0,Pound
-False,1412,4.38889,4.37753,4.37753,347,57,474.0,Dollar
-True,1323,4.15517,4.08729,4.08729,345,40,455.0,Euro
-True,1163,4.3,4.28495,4.28495,345,47,455.0,Dollar
-True,2579,4.70833,4.75609,4.75609,345,24,455.0,Pound
-True,15762,4.7,4.76825,4.76825,344,20,455.0,Pound
-True,1013,4.17273,4.15916,4.15916,344,25,455.0,Euro
-False,1433,4.34211,4.30569,4.30569,345,32,455.0,Dollar
-True,2414,4.51,4.63572,4.63572,343,32,455.0,Pound
-False,3575,4.02128,4.04295,4.04295,341,129,474.0,Dollar
-True,3581,4.5625,4.55386,4.55386,341,34,455.0,Euro
-False,3465,4.6,4.60515,4.60515,341,54,455.0,Dollar
-False,2528,4.30488,4.14351,4.14351,341,548,455.0,Euro
-False,3096,4.2027,4.17793,4.17793,342,0,455.0,Dollar
-True,2380,4.21154,4.18067,4.18067,340,38,455.0,Euro
-True,2619,4.48148,4.49195,4.49195,341,16,3200.0,Pound
-False,1993,4.16964,4.07305,4.07305,341,34,468.0,Dollar
-False,1666,4.48507,4.26381,4.26381,341,60,455.0,Dollar
-False,2801,4.43103,4.41924,4.41924,339,41,455.0,Dollar
-True,2261,4.42857,4.43223,4.43223,338,68,455.0,Euro
-True,23349,2.26087,1.98877,1.98877,338,5,455.0,Dollar
-True,1980,4.75,4.74716,4.74716,336,15,455.0,Pound
-False,6011,4.35,4.30855,4.30855,336,95,455.0,Euro
-True,835,3.775,3.8701,3.8701,334,7,455.0,Dollar
-False,1658,3.85714,3.97234,3.97234,333,44,455.0,Dollar
-False,1101,4.55263,4.54867,4.54867,333,67,455.0,Euro
-False,3181,4.18657,4.12741,4.12741,331,54,455.0,Euro
-True,3661,4.2,4.19189,4.19189,331,23,455.0,Pound
-True,1856,4.25,4.24318,4.24318,328,8,455.0,Dollar
-True,4328,4.71698,4.70438,4.70438,328,23,455.0,Dollar
-True,15942,4.19483,4.2002,4.2002,328,96,455.0,Euro
-True,1254,4.15,4.29909,4.29909,328,8,455.0,Dollar
-False,2410,4.60811,4.61965,4.61965,328,29,455.0,Euro
-True,1218,4.01613,3.98738,3.98738,327,49,455.0,Pound
-False,10616,3.9,3.88013,3.88013,326,91,500.0,Dollar
-False,1465,4.07143,4.08644,4.08644,326,27,455.0,Pound
-True,36186,4.35,4.12612,4.12612,327,80,455.0,Euro
-True,7104,4.18182,4.18911,4.18911,324,77,455.0,Pound
-True,6615,4.39474,4.3533,4.3533,324,12,455.0,Euro
-True,11531,4.5,4.46424,4.46424,323,34,455.0,Euro
-False,8010,3.9,4.04754,4.04754,322,17,455.0,Pound
-True,6412,4.3,3.84392,3.84392,322,13,468.0,Pound
-False,2109,4.575,4.62115,4.62115,322,64,455.0,Euro
-False,4067,4.46429,4.49993,4.49993,323,71,468.0,Dollar
-False,2255,4.78571,4.78458,4.78458,321,57,455.0,Euro
-True,965,4.59868,4.61116,4.61116,323,97,3200.0,Pound
-True,28064,4.1,4.16697,4.16697,320,39,455.0,Dollar
-True,1423,4.42105,4.44249,4.44249,320,15,455.0,Pound
-True,3322,4.15,4.11412,4.11412,320,37,455.0,Pound
-True,3305,4.47826,4.32193,4.32193,320,61,474.0,Pound
-True,20013,4.62635,4.64081,4.64081,319,40,507.0,Dollar
-True,1476,4.09028,4.06397,4.06397,318,13,455.0,Pound
-True,2507,4.39,4.27295,4.27295,319,20,455.0,Dollar
-True,8305,4.2,4.10683,4.10683,317,30,455.0,Pound
-True,3464,4.4,4.30985,4.30985,317,35,455.0,Pound
-False,5799,4.47917,4.4574,4.4574,316,26,455.0,Euro
-False,3500,3.95,3.87504,3.87504,316,23,455.0,Pound
-True,1478,4.22414,4.18581,4.18581,315,39,462.0,Dollar
-False,2071,3.45,3.42587,3.42587,315,38,455.0,Euro
-True,3147,4.76667,4.76513,4.76513,315,33,455.0,Pound
-False,12515,4.2,4.27681,4.27681,315,76,455.0,Pound
-False,11515,4.55769,4.63012,4.63012,314,48,455.0,Euro
-True,1521,4.08333,4.09845,4.09845,315,40,455.0,Pound
-False,940,4.36364,4.40107,4.40107,314,21,455.0,Pound
-False,4608,4.14286,4.14321,4.14321,314,432,455.0,Dollar
-True,4596,3.9,3.85231,3.85231,313,11,455.0,Dollar
-False,2521,4.35,4.12744,4.12744,313,9,455.0,Pound
-True,1987,4.14286,3.96028,3.96028,315,27,1360.0,Dollar
-False,2678,4.1,4.09688,4.09688,313,28,455.0,Dollar
-False,2215,4.2,4.14682,4.14682,312,24,455.0,Euro
-True,5697,3.95,3.94726,3.94726,312,29,455.0,Pound
-True,29551,3.96955,3.92927,3.92927,314,26,455.0,Dollar
-True,20189,4.40625,4.23133,4.23133,312,39,455.0,Pound
-True,40099,4.42949,4.37455,4.37455,312,235,455.0,Euro
-True,1082,4.59524,4.54901,4.54901,314,22,455.0,Pound
-True,2062,4.5,4.48036,4.48036,311,43,468.0,Dollar
-False,1445,4.3125,4.30069,4.30069,311,11,455.0,Dollar
-True,1975,4.36471,4.31116,4.31116,313,31,455.0,Pound
-False,4383,4.34615,4.35647,4.35647,309,12,455.0,Pound
-True,6989,4.69231,4.78157,4.78157,310,40,455.0,Pound
-False,22443,4.08824,4.02735,4.02735,311,69,455.0,Euro
-False,1319,4.22368,4.05746,4.05746,307,27,455.0,Euro
-False,920,4.77027,4.63718,4.63718,307,77,455.0,Dollar
-True,6376,4.05,4.08714,4.08714,307,13,455.0,Euro
-False,11792,4.20217,4.15464,4.15464,307,70,455.0,Dollar
-False,1469,4.36957,4.44699,4.44699,307,37,455.0,Pound
-True,1728,4.75962,4.75647,4.75647,306,117,455.0,Euro
-False,3708,4.33607,4.04493,4.04493,307,30,455.0,Euro
-True,2493,3.45,3.57196,3.57196,306,107,455.0,Pound
-True,14356,4.43939,4.37142,4.37142,306,23,455.0,Pound
-False,8288,4.2,4.08742,4.08742,304,110,455.0,Euro
-False,1160,3.89474,3.90352,3.90352,304,10,455.0,Dollar
-False,3093,4.56122,4.59678,4.59678,304,8,468.0,Dollar
-False,9164,4.45238,4.42493,4.42493,303,46,455.0,Euro
-True,5700,4.43478,4.45513,4.45513,302,12,455.0,Euro
-False,1490,4.46154,4.48568,4.48568,304,40,3200.0,Pound
-False,2483,4.425,4.40898,4.40898,302,7,455.0,Euro
-True,2887,4.26136,4.20374,4.20374,303,28,455.0,Pound
-False,2483,4.45,4.39581,4.39581,303,27,455.0,Euro
-True,1631,4.38991,4.45097,4.45097,304,12,455.0,Dollar
-False,29588,4.46429,4.46073,4.46073,300,47,455.0,Dollar
-True,2735,4.17327,4.12307,4.12307,301,35,455.0,Euro
-False,932,3.72414,3.66697,3.66697,300,32,455.0,Euro
-True,1330,4.66667,4.61622,4.61622,299,26,455.0,Pound
-False,7341,4.5,4.6351,4.6351,298,12,455.0,Euro
-True,1643,4.18072,4.12384,4.12384,298,116,455.0,Euro
-True,2041,4.1,4.22508,4.22508,298,48,455.0,Euro
-True,2712,4.15476,4.16015,4.16015,298,15,455.0,Pound
-True,13423,3.7,3.75663,3.75663,297,30,455.0,Dollar
-False,1980,3.8,3.67743,3.67743,297,19,455.0,Dollar
-False,29136,3.62363,3.65747,3.65747,297,19,455.0,Pound
-True,646,4.25,4.28617,4.28617,295,10,455.0,Pound
-True,3780,4.15,4.21833,4.21833,295,68,455.0,Dollar
-True,15246,4.4697,4.48525,4.48525,294,139,520.0,Dollar
-False,3022,4.15385,4.08259,4.08259,294,51,455.0,Euro
-True,1317,4.57143,4.54613,4.54613,294,14,455.0,Euro
-False,1564,4.42754,4.4347,4.4347,293,70,455.0,Dollar
-False,22224,3.17568,3.23898,3.23898,292,35,455.0,Dollar
-True,1054,4.40698,4.16391,4.16391,292,13,455.0,Pound
-False,1187,4.49242,4.02813,4.02813,292,20,455.0,Dollar
-True,9481,4.25,4.36111,4.36111,293,18,455.0,Euro
-False,2298,4.54167,4.55266,4.55266,291,25,455.0,Dollar
-False,1350,3.8,3.95231,3.95231,291,33,455.0,Dollar
-False,9450,4.34615,4.47652,4.47652,291,119,455.0,Dollar
-False,45166,4.27215,4.12326,4.12326,292,20,455.0,Dollar
-True,5447,4.52273,4.42961,4.42961,289,81,455.0,Pound
-True,1672,4.4,4.39139,4.39139,289,36,455.0,Euro
-False,25536,4.3587,4.4901,4.4901,290,14,455.0,Euro
-False,1387,4.38158,4.43038,4.43038,288,34,455.0,Pound
-True,2937,4.57447,4.58163,4.58163,289,40,455.0,Pound
-False,1435,4.25,4.2249,4.2249,288,53,455.0,Dollar
-True,5020,3.9,3.84404,3.84404,288,104,455.0,Dollar
-False,25748,3.68182,3.88456,3.88456,288,11,455.0,Dollar
-True,5219,4.5,4.45878,4.45878,288,9,455.0,Euro
-False,3160,4.0,3.78534,3.78534,288,8,455.0,Pound
-True,1335,4.22973,4.2811,4.2811,288,26,455.0,Dollar
-False,994,4.36,4.21112,4.21112,288,46,455.0,Euro
-True,2370,4.39655,4.38505,4.38505,287,65,455.0,Euro
-False,1168,4.22,4.06895,4.06895,288,31,455.0,Dollar
-True,2350,4.70833,4.72008,4.72008,290,10,455.0,Dollar
-False,2218,3.9,3.79903,3.79903,286,59,455.0,Dollar
-False,3465,4.63095,4.67793,4.67793,286,56,455.0,Euro
-True,1842,4.58065,4.55126,4.55126,285,59,455.0,Euro
-True,1074,4.44531,4.29177,4.29177,285,86,455.0,Dollar
-True,8894,4.05556,4.10999,4.10999,285,21,455.0,Pound
-False,2703,3.94737,3.96409,3.96409,285,49,455.0,Pound
-True,1970,4.875,4.90862,4.90862,285,56,455.0,Dollar
-True,2557,3.95,3.95658,3.95658,284,41,455.0,Pound
-False,7070,3.8,3.7313,3.7313,284,81,455.0,Dollar
-True,2239,4.25,4.10795,4.10795,284,101,455.0,Pound
-False,3409,3.9,3.63235,3.63235,283,26,455.0,Euro
-True,2221,4.29545,4.26349,4.26349,283,50,455.0,Dollar
-False,1856,4.27778,4.52376,4.52376,283,137,1280.0,Euro
-True,1009,4.47619,4.48405,4.48405,283,19,455.0,Pound
-True,1030,4.45455,4.42309,4.42309,283,22,455.0,Euro
-False,3419,4.38235,4.23603,4.23603,282,161,455.0,Dollar
-True,1952,4.51754,4.54988,4.54988,282,205,481.0,Euro
-False,3223,4.67089,4.69142,4.69142,282,257,455.0,Euro
-False,1778,4.05,3.97376,3.97376,281,34,455.0,Pound
-True,1063,4.44156,4.33851,4.33851,281,37,455.0,Dollar
-True,3036,4.55665,4.54841,4.54841,284,74,455.0,Dollar
-False,1262,4.53846,4.55348,4.55348,281,12,455.0,Pound
-True,1115,4.28689,4.23422,4.23422,279,16,455.0,Dollar
-True,4899,4.36,3.95119,3.95119,279,31,455.0,Euro
-False,5335,3.8,3.48679,3.48679,279,16,455.0,Euro
-True,1466,4.44186,4.40367,4.40367,279,40,455.0,Euro
-False,1680,4.28358,4.20563,4.20563,281,51,455.0,Pound
-False,10418,4.13514,4.11856,4.11856,279,9,455.0,Pound
-False,37024,4.11679,4.21365,4.21365,281,23,455.0,Euro
-False,2855,4.42991,4.19669,4.19669,280,23,455.0,Euro
-False,1970,4.25962,4.21828,4.21828,281,16,455.0,Pound
-True,2577,3.7,3.69166,3.69166,278,33,455.0,Euro
-True,1169,4.22222,4.27073,4.27073,276,30,455.0,Dollar
-False,5084,4.05,4.01769,4.01769,276,36,455.0,Euro
-False,2777,4.44253,4.38473,4.38473,277,129,455.0,Pound
-True,1795,4.41176,4.40332,4.40332,276,46,455.0,Euro
-True,1761,4.1,3.88983,3.88983,275,25,2880.0,Dollar
-True,1145,4.38462,4.46482,4.46482,274,22,455.0,Dollar
-True,2672,4.65,4.63664,4.63664,274,33,455.0,Pound
-True,2622,4.38141,4.39367,4.39367,283,150,455.0,Dollar
-True,1488,4.32558,4.29076,4.29076,276,28,455.0,Euro
-True,2147,3.8,3.72658,3.72658,273,24,455.0,Euro
-False,1937,4.0,4.23591,4.23591,272,24,455.0,Euro
-True,14762,4.35,4.44048,4.44048,273,132,455.0,Pound
-True,3452,4.52941,4.36781,4.36781,271,73,455.0,Pound
-True,10486,3.55,3.62877,3.62877,271,89,455.0,Euro
-True,16728,4.125,4.09736,4.09736,271,81,455.0,Pound
-False,1132,4.15909,4.17067,4.17067,271,255,481.0,Euro
-False,2005,4.09091,4.19048,4.19048,270,46,455.0,Dollar
-True,1668,4.45455,4.40713,4.40713,269,229,462.0,Dollar
-True,2322,3.8,3.89128,3.89128,269,35,455.0,Euro
-False,9745,4.17611,4.05294,4.05294,269,556,455.0,Euro
-True,1670,4.7,4.6687,4.6687,267,32,455.0,Pound
-False,3486,4.6,4.64507,4.64507,267,58,455.0,Dollar
-True,1367,4.23913,4.21714,4.21714,267,50,455.0,Dollar
-False,27389,4.27344,4.19275,4.19275,266,50,455.0,Dollar
-True,19693,4.4,4.35357,4.35357,266,27,455.0,Pound
-True,2109,4.0,4.0363,4.0363,268,15,455.0,Pound
-True,1666,4.46341,4.45759,4.45759,268,20,455.0,Pound
-False,732,4.25641,4.23932,4.23932,265,18,455.0,Pound
-True,895,4.45455,4.52367,4.52367,264,42,455.0,Euro
-False,2322,4.05,4.10904,4.10904,264,25,455.0,Dollar
-False,2748,3.65,3.57408,3.57408,263,171,455.0,Euro
-False,1192,4.32979,4.14399,4.14399,263,20,455.0,Euro
-True,1521,4.33333,4.32158,4.32158,263,46,455.0,Dollar
-True,16776,4.20312,4.24844,4.24844,266,145,455.0,Euro
-False,2102,3.93478,3.8685,3.8685,261,0,455.0,Dollar
-False,2402,4.5625,4.50462,4.50462,261,75,455.0,Euro
-False,1295,4.25,4.29788,4.29788,261,26,455.0,Dollar
-True,3489,4.0,3.97261,3.97261,261,75,455.0,Dollar
-True,10494,4.09091,4.13959,4.13959,261,14,455.0,Euro
-True,40788,4.15,4.21952,4.21952,260,59,455.0,Dollar
-True,2967,4.5,4.5158,4.5158,261,104,455.0,Pound
-True,9065,4.4,4.32119,4.32119,260,43,455.0,Pound
-True,1816,4.47872,4.51935,4.51935,259,395,494.0,Pound
-True,1345,4.05,4.08093,4.08093,260,14,455.0,Euro
-False,893,3.96,3.98638,3.98638,258,12,455.0,Dollar
-False,7072,3.8,3.54053,3.54053,258,33,455.0,Dollar
-True,2337,4.54167,4.52341,4.52341,257,26,455.0,Euro
-False,5184,4.72917,4.71027,4.71027,258,134,455.0,Pound
-False,2116,4.51562,4.53416,4.53416,257,17,455.0,Dollar
-False,1320,4.26316,4.21003,4.21003,257,50,455.0,Pound
-True,1075,4.41346,4.40233,4.40233,258,14,2400.0,Euro
-True,9300,4.65,4.64769,4.64769,257,17,455.0,Euro
-False,2882,4.60606,4.39517,4.39517,259,34,455.0,Pound
-True,1041,4.6345,4.64549,4.64549,256,129,455.0,Pound
-True,16689,4.22,4.17161,4.17161,256,21,455.0,Euro
-False,2831,4.26667,4.28789,4.28789,256,10,455.0,Euro
-True,1497,4.66667,4.66047,4.66047,255,23,455.0,Dollar
-True,1901,4.20833,4.20032,4.20032,256,97,455.0,Pound
-True,1136,4.79167,4.79264,4.79264,254,8,455.0,Dollar
-False,1299,3.5,3.52021,3.52021,254,27,455.0,Dollar
-False,3212,4.4,4.34873,4.34873,253,36,455.0,Pound
-True,2432,4.46552,4.48217,4.48217,253,27,455.0,Pound
-False,875,3.8,3.79781,3.79781,253,33,455.0,Euro
-True,10145,3.55,3.61505,3.61505,252,45,455.0,Pound
-True,1740,4.5,4.48539,4.48539,253,145,455.0,Dollar
-True,1470,4.23333,4.25498,4.25498,252,28,455.0,Pound
-True,897,4.16667,4.2274,4.2274,254,28,494.0,Euro
-True,4820,4.0,3.90714,3.90714,251,70,455.0,Dollar
-True,2244,4.21667,4.32837,4.32837,252,32,455.0,Dollar
-True,981,4.63514,4.61485,4.61485,251,59,455.0,Pound
-False,2230,4.54412,4.54196,4.54196,251,38,455.0,Dollar
-False,1105,4.36207,4.27075,4.27075,251,0,1280.0,Euro
-False,2984,4.5,4.45237,4.45237,251,32,455.0,Euro
-True,4586,4.23529,4.24117,4.24117,251,24,455.0,Pound
-False,11217,4.07143,4.03696,4.03696,251,16,455.0,Dollar
-True,2270,4.5,4.47975,4.47975,251,40,455.0,Euro
-False,4132,3.9,3.89066,3.89066,250,14,455.0,Euro
-False,1412,4.3,4.23892,4.23892,250,48,455.0,Pound
-False,26263,3.644,3.74543,3.74543,250,15,455.0,Pound
-True,2923,4.52778,4.53067,4.53067,249,41,455.0,Euro
-False,1126,4.76087,4.77118,4.77118,249,38,455.0,Euro
-True,3177,4.78571,4.787,4.787,249,63,455.0,Dollar
-False,4374,4.45,4.48032,4.48032,250,34,455.0,Dollar
-True,3781,4.25,4.14337,4.14337,248,25,455.0,Euro
-False,1942,4.35938,4.25127,4.25127,250,15,455.0,Pound
-True,18606,4.35465,4.30428,4.30428,247,26,455.0,Dollar
-False,10293,4.34615,4.30551,4.30551,246,133,481.0,Dollar
-False,1311,4.15,4.16464,4.16464,247,9,468.0,Euro
-True,7056,3.9375,4.12796,4.12796,246,446,455.0,Pound
-False,947,4.55172,4.52117,4.52117,246,34,455.0,Euro
-False,1573,4.7377,4.71615,4.71615,246,94,455.0,Dollar
-False,6866,4.75,4.73292,4.73292,245,13,455.0,Dollar
-True,1871,4.25,4.30283,4.30283,246,14,455.0,Euro
-True,658,4.2375,4.1976,4.1976,245,17,455.0,Euro
-False,4128,4.38462,4.25198,4.25198,244,31,455.0,Pound
-True,2428,4.19512,4.19748,4.19748,244,46,474.0,Pound
-True,1242,4.35294,4.27609,4.27609,243,70,455.0,Euro
-True,2222,3.9375,4.16414,4.16414,243,27,455.0,Pound
-False,1593,3.76667,3.77874,3.77874,243,33,455.0,Euro
-True,1060,3.98148,3.97761,3.97761,242,8,455.0,Pound
-True,8305,3.875,4.20048,4.20048,242,16,455.0,Dollar
-False,1646,4.31915,3.98703,3.98703,242,0,455.0,Dollar
-True,1063,3.8,3.80727,3.80727,241,20,474.0,Pound
-False,985,4.42063,4.07122,4.07122,241,64,455.0,Dollar
-True,1468,4.11667,4.07144,4.07144,241,97,455.0,Euro
-False,5466,4.4,4.42571,4.42571,241,24,455.0,Pound
-False,16217,4.4125,4.11856,4.11856,241,41,455.0,Pound
-True,1737,4.2,4.19343,4.19343,240,81,455.0,Pound
-True,2419,4.5339,4.461,4.461,240,134,455.0,Pound
-False,812,4.1,4.16576,4.16576,240,8,455.0,Pound
-False,2544,4.25,4.27267,4.27267,242,33,455.0,Dollar
-True,4252,4.27358,4.1232,4.1232,241,22,455.0,Euro
-True,1214,4.58824,4.60066,4.60066,240,22,455.0,Pound
-False,4769,4.76316,4.77895,4.77895,239,28,455.0,Euro
-True,5588,4.0,3.89181,3.89181,239,11,455.0,Dollar
-True,1073,4.34783,4.34868,4.34868,242,106,3200.0,Dollar
-False,8492,4.65,4.65272,4.65272,239,14,455.0,Dollar
-False,1243,4.75,4.74887,4.74887,239,18,455.0,Dollar
-False,1318,4.72626,4.74305,4.74305,241,171,455.0,Euro
-True,1595,4.45,4.59382,4.59382,238,14,455.0,Euro
-False,2000,3.6,3.54372,3.54372,238,11,455.0,Euro
-False,1795,4.47727,4.45798,4.45798,238,355,481.0,Pound
-True,7655,4.55,4.58394,4.58394,238,27,455.0,Pound
-False,1267,4.2605,4.32341,4.32341,240,60,474.0,Pound
-False,1849,4.39286,4.31957,4.31957,240,51,455.0,Pound
-True,1102,4.11111,4.13016,4.13016,238,102,455.0,Euro
-True,6506,4.5,4.40536,4.40536,238,25,455.0,Dollar
-True,2956,4.41176,4.52427,4.52427,237,0,514.0,Euro
-False,1911,3.91667,3.96417,3.96417,237,43,455.0,Euro
-True,21684,4.21053,4.24689,4.24689,237,17,455.0,Pound
-False,6250,2.95,3.21691,3.21691,237,25,455.0,Euro
-True,715,4.6791,4.42499,4.42499,236,61,455.0,Euro
-True,9837,4.1,4.1684,4.1684,236,23,455.0,Dollar
-True,941,4.59091,4.57916,4.57916,236,9,468.0,Pound
-True,13390,3.05,3.09498,3.09498,236,15,455.0,Pound
-False,588,4.30952,4.38882,4.38882,235,18,2400.0,Euro
-True,7134,4.47872,4.50699,4.50699,235,97,455.0,Dollar
-False,907,4.65753,4.67683,4.67683,235,45,1600.0,Euro
-False,769,4.0,4.04644,4.04644,234,27,455.0,Euro
-False,894,4.2844,4.21229,4.21229,234,29,455.0,Euro
-True,1147,4.36486,4.2976,4.2976,234,33,488.0,Pound
-True,12045,4.2,4.2531,4.2531,234,11,455.0,Dollar
-True,1852,4.16667,3.96854,3.96854,233,75,455.0,Dollar
-True,31509,4.10086,4.11295,4.11295,242,42,455.0,Dollar
-False,1845,4.04255,3.95194,3.95194,235,13,455.0,Dollar
-True,936,4.125,4.11517,4.11517,234,16,455.0,Euro
-False,35498,3.92308,4.05018,4.05018,232,7,455.0,Pound
-True,911,4.02273,4.02554,4.02554,232,29,468.0,Pound
-False,8911,4.3,4.26787,4.26787,232,9,455.0,Pound
-True,572,4.29545,4.30897,4.30897,232,34,468.0,Dollar
-False,972,4.5625,4.54344,4.54344,231,22,455.0,Euro
-True,28653,4.05,4.31108,4.31108,230,14,455.0,Dollar
-True,11433,4.17742,4.13599,4.13599,230,27,455.0,Dollar
-True,1954,3.85,3.77645,3.77645,229,18,455.0,Dollar
-True,880,4.39286,4.40228,4.40228,230,14,468.0,Euro
-True,784,4.1383,4.25179,4.25179,229,18,488.0,Pound
-True,1727,3.78947,3.73038,3.73038,229,32,455.0,Euro
-False,22417,3.98571,4.12598,4.12598,228,42,455.0,Dollar
-False,482,4.38608,4.36127,4.36127,229,9,2240.0,Pound
-True,1511,4.05,4.04493,4.04493,228,16,455.0,Pound
-False,2292,4.32653,4.37808,4.37808,229,33,468.0,Dollar
-False,4440,4.17647,4.10515,4.10515,228,49,455.0,Dollar
-True,1331,4.36,4.37383,4.37383,229,25,455.0,Euro
-True,24857,1.9,1.68701,1.68701,227,5,455.0,Pound
-True,3135,4.44186,4.47741,4.47741,227,27,455.0,Dollar
-True,9383,3.55,3.64809,3.64809,227,20,455.0,Euro
-False,3241,3.96154,4.01859,4.01859,227,88,455.0,Dollar
-False,3874,4.65,4.6078,4.6078,226,21,455.0,Dollar
-True,1434,4.25,4.27162,4.27162,226,22,468.0,Dollar
-True,1832,3.85,4.07063,4.07063,226,13,455.0,Dollar
-True,1353,4.3629,4.3329,4.3329,227,25,455.0,Dollar
-False,1263,3.65385,3.48245,3.48245,226,12,455.0,Dollar
-True,21191,4.0,3.8179,3.8179,226,52,455.0,Pound
-False,24242,4.6,4.61704,4.61704,226,132,455.0,Pound
-False,21809,4.0,4.17013,4.17013,225,19,455.0,Euro
-False,1748,4.51471,4.52771,4.52771,226,18,455.0,Dollar
-True,4753,4.0,3.90933,3.90933,225,109,455.0,Pound
-False,484,3.84444,3.86011,3.86011,226,26,1760.0,Euro
-True,11599,4.39583,4.37078,4.37078,224,24,455.0,Pound
-True,4744,2.98276,2.96989,2.96989,224,21,455.0,Euro
-True,1672,4.4,4.3805,4.3805,224,9,455.0,Pound
-True,1082,4.2,4.20116,4.20116,224,56,455.0,Euro
-True,15702,4.43671,4.42193,4.42193,223,59,455.0,Euro
-True,1239,3.6,3.92254,3.92254,223,17,455.0,Dollar
-False,1144,3.94,3.87286,3.87286,224,7,455.0,Euro
-False,1919,4.25,4.2165,4.2165,223,19,455.0,Dollar
-False,33402,3.9,3.55579,3.55579,222,17,455.0,Euro
-True,1110,4.5,4.35678,4.35678,222,12,455.0,Pound
-True,2166,4.40625,4.53455,4.53455,224,45,455.0,Euro
-True,1038,4.16,4.14728,4.14728,221,27,455.0,Dollar
-True,1309,3.85,3.60188,3.60188,221,8,455.0,Pound
-False,903,4.27551,4.20646,4.20646,222,10,455.0,Pound
-True,1565,4.33784,4.30821,4.30821,221,18,455.0,Dollar
-False,10166,3.5,3.93843,3.93843,221,41,455.0,Dollar
-True,1165,3.97059,3.79164,3.79164,222,16,455.0,Euro
-False,15429,4.33333,4.39695,4.39695,221,79,455.0,Dollar
-False,1589,4.5,4.33555,4.33555,221,31,455.0,Dollar
-True,3005,3.65,3.57462,3.57462,220,46,455.0,Pound
-False,2289,4.72581,4.70522,4.70522,221,143,455.0,Pound
-False,1503,3.55,3.55098,3.55098,221,18,455.0,Pound
-True,1907,4.32143,4.25766,4.25766,220,34,455.0,Pound
-False,963,4.15625,4.23626,4.23626,220,379,455.0,Euro
-True,2337,4.5,4.51066,4.51066,220,121,455.0,Pound
-True,9484,4.55882,4.46828,4.46828,220,31,455.0,Euro
-True,1864,4.25,4.13152,4.13152,220,46,455.0,Pound
-False,12980,3.9,3.77606,3.77606,220,19,455.0,Euro
-False,1167,4.13953,4.00401,4.00401,219,28,455.0,Pound
-True,582,4.66667,4.68173,4.68173,219,69,455.0,Euro
-True,779,4.02778,4.0759,4.0759,219,10,455.0,Pound
-True,1052,4.39474,4.20054,4.20054,218,19,455.0,Euro
-False,1237,4.1,3.98736,3.98736,218,22,455.0,Dollar
-True,920,4.4,4.38426,4.38426,217,24,455.0,Pound
-True,1719,4.225,4.22671,4.22671,217,44,455.0,Euro
-False,933,4.35,4.43775,4.43775,217,182,455.0,Euro
-False,4260,4.1,4.32241,4.32241,216,38,455.0,Pound
-True,2762,4.05,4.17698,4.17698,216,17,455.0,Euro
-False,1621,4.25,4.12152,4.12152,216,8,455.0,Euro
-False,1171,4.25,4.32006,4.32006,215,40,455.0,Euro
-True,27104,4.27717,4.25389,4.25389,216,576,455.0,Pound
-False,998,4.10938,4.0875,4.0875,215,51,455.0,Euro
-False,1759,3.6,3.56526,3.56526,215,12,455.0,Euro
-True,429,4.0885,4.11495,4.11495,215,26,455.0,Euro
-False,867,4.37037,4.38562,4.38562,215,17,455.0,Pound
-False,2874,4.2,4.06697,4.06697,215,9,455.0,Euro
-True,1432,4.41667,4.42848,4.42848,216,36,455.0,Pound
-False,2245,3.7,3.62002,3.62002,215,23,700.0,Dollar
-False,1160,4.28947,4.33927,4.33927,214,45,455.0,Euro
-True,1003,4.6,4.61517,4.61517,214,7,455.0,Euro
-False,24842,4.0,4.15979,4.15979,214,10,455.0,Pound
-False,38246,4.08252,4.08397,4.08397,214,17,455.0,Pound
-True,3406,3.8,3.74373,3.74373,214,9,455.0,Pound
-True,3368,4.19048,4.12602,4.12602,215,53,462.0,Pound
-True,1682,4.66667,4.67764,4.67764,213,27,455.0,Dollar
-False,8464,3.6,3.77676,3.77676,213,56,455.0,Euro
-False,472,3.98077,3.9891,3.9891,213,15,455.0,Euro
-True,717,4.45,4.51628,4.51628,213,11,455.0,Dollar
-False,7165,4.25,4.51744,4.51744,212,46,455.0,Dollar
-False,1035,4.54688,4.35062,4.35062,212,284,481.0,Dollar
-True,4086,4.05,3.9551,3.9551,212,29,455.0,Dollar
-False,34864,3.9,4.1351,4.1351,212,25,455.0,Euro
-True,3486,4.45455,4.41005,4.41005,212,28,455.0,Pound
-True,6002,3.6,3.57099,3.57099,211,8,455.0,Pound
-True,1812,4.19565,4.17014,4.17014,211,17,455.0,Pound
-True,1589,4.37037,4.3729,4.3729,212,18,455.0,Euro
-False,23391,4.39,4.64271,4.64271,211,111,455.0,Pound
-True,956,4.25,4.13334,4.13334,209,39,455.0,Euro
-False,8237,3.0,3.13804,3.13804,208,23,455.0,Euro
-False,754,4.3,3.99984,3.99984,208,15,2480.0,Euro
-True,7479,4.0,3.93713,3.93713,208,68,455.0,Euro
-False,1799,3.54412,3.54025,3.54025,208,37,455.0,Dollar
-False,12031,4.1,4.12713,4.12713,208,14,455.0,Euro
-True,25741,4.35,4.24708,4.24708,208,232,455.0,Pound
-True,15740,4.23333,4.26763,4.26763,208,17,455.0,Euro
-True,512,4.62179,4.22976,4.22976,208,25,455.0,Euro
-True,977,3.89474,3.92852,3.92852,207,20,455.0,Dollar
-True,920,4.55714,4.5004,4.5004,208,10,455.0,Pound
-False,12611,3.94783,3.86532,3.86532,207,30,455.0,Pound
-False,2275,4.21875,4.23428,4.23428,207,27,455.0,Euro
-True,1079,2.96875,2.9715,2.9715,207,26,455.0,Dollar
-True,31507,4.28947,4.41422,4.41422,207,20,455.0,Dollar
-False,14258,4.60714,4.66057,4.66057,206,79,474.0,Dollar
-True,817,4.45652,4.40679,4.40679,206,22,455.0,Dollar
-True,932,3.6,3.06865,3.06865,205,9,455.0,Euro
-True,7851,3.58333,3.59552,3.59552,205,26,455.0,Pound
-False,18426,4.15,4.29578,4.29578,205,162,455.0,Dollar
-False,30075,4.0,3.84164,3.84164,205,51,455.0,Dollar
-True,1909,4.45,4.39823,4.39823,205,26,455.0,Pound
-False,1038,4.31667,4.32985,4.32985,205,29,455.0,Dollar
-True,28806,3.75,4.05594,4.05594,205,189,455.0,Euro
-False,1822,3.9,4.10293,4.10293,204,16,455.0,Euro
-True,7542,3.79412,3.61878,3.61878,204,32,455.0,Dollar
-False,1631,4.55,4.56011,4.56011,204,58,455.0,Euro
-True,1616,4.28261,4.28892,4.28892,204,27,455.0,Euro
-True,731,4.06522,4.09293,4.09293,205,53,468.0,Dollar
-False,6171,4.25,4.27055,4.27055,204,33,455.0,Pound
-True,4484,2.60526,2.61183,2.61183,204,157,488.0,Euro
-True,2995,4.45833,4.41838,4.41838,203,35,455.0,Pound
-False,747,3.95,3.84948,3.84948,203,12,455.0,Pound
-False,2802,4.26667,4.32826,4.32826,203,40,455.0,Dollar
-False,1555,4.6,4.6502,4.6502,203,44,455.0,Pound
-True,871,4.33871,4.31874,4.31874,205,36,455.0,Pound
-True,46584,4.21429,4.20281,4.20281,203,115,455.0,Pound
-True,2028,4.77451,4.70282,4.70282,203,46,455.0,Euro
-False,1477,4.04082,4.03608,4.03608,203,15,455.0,Dollar
-True,1192,4.05263,4.07857,4.07857,201,43,455.0,Euro
-False,1592,4.52174,4.50832,4.50832,201,30,455.0,Euro
-False,1127,4.26804,4.26879,4.26879,200,192,455.0,Dollar
-True,2188,3.9,3.78159,3.78159,200,22,455.0,Euro
-True,2052,4.7,4.68347,4.68347,200,16,455.0,Dollar
-False,1000,3.75,3.76996,3.76996,200,11,455.0,Dollar
-False,8663,4.20139,4.18009,4.18009,201,29,455.0,Dollar
-False,646,4.425,4.42924,4.42924,202,26,455.0,Pound
-True,1057,4.15,4.13924,4.13924,200,34,455.0,Dollar
-True,695,3.725,3.74306,3.74306,199,17,468.0,Euro
-False,1076,4.53659,4.40413,4.40413,200,374,455.0,Dollar
-True,1317,4.275,4.21826,4.21826,199,44,455.0,Pound
-False,861,4.15942,4.26716,4.26716,202,38,455.0,Euro
-False,9253,3.55,3.90481,3.90481,199,11,455.0,Pound
-True,1635,4.46429,4.43099,4.43099,200,19,455.0,Euro
-True,23659,2.36364,2.29501,2.29501,198,35,455.0,Pound
-True,22107,4.5,4.5222,4.5222,198,24,455.0,Dollar
-True,1213,3.83333,3.92237,3.92237,198,23,455.0,Pound
-True,1042,4.48,4.51604,4.51604,198,49,455.0,Euro
-False,2336,4.22368,4.26675,4.26675,198,28,455.0,Pound
-False,3044,4.13333,4.29113,4.29113,198,62,455.0,Pound
-False,837,4.27419,4.28423,4.28423,197,12,455.0,Pound
-True,1344,4.63889,4.6626,4.6626,197,33,455.0,Euro
-True,1620,4.36364,4.39044,4.39044,197,107,455.0,Euro
-True,987,3.98837,4.02097,4.02097,197,9,455.0,Euro
-True,1248,4.45,4.41922,4.41922,196,43,455.0,Pound
-False,2526,4.60714,4.61616,4.61616,196,26,455.0,Pound
-False,8372,4.25,4.25261,4.25261,195,26,455.0,Euro
-False,12803,4.2,4.23432,4.23432,195,13,455.0,Dollar
-False,2531,4.41667,4.50301,4.50301,195,29,520.0,Dollar
-False,4917,4.3169,4.14596,4.14596,196,47,455.0,Euro
-False,7626,4.35,4.1756,4.1756,196,27,455.0,Pound
-True,779,4.2,4.28312,4.28312,195,43,455.0,Pound
-False,9219,3.6,3.71922,3.71922,194,31,455.0,Dollar
-False,727,4.20909,4.16591,4.16591,194,38,800.0,Euro
-True,4123,4.23684,4.3517,4.3517,194,95,468.0,Dollar
-True,10932,4.45,4.5865,4.5865,194,39,455.0,Dollar
-True,874,4.13889,4.16624,4.16624,193,71,455.0,Euro
-False,714,4.56349,4.55728,4.55728,195,14,455.0,Euro
-False,4268,3.85,3.63895,3.63895,193,37,455.0,Dollar
-False,2762,4.1,4.09404,4.09404,193,92,455.0,Euro
-False,1020,3.84211,3.79832,3.79832,192,39,455.0,Euro
-False,2083,4.47619,4.47133,4.47133,195,37,455.0,Dollar
-False,678,4.12162,4.13285,4.13285,192,4,455.0,Pound
-True,2558,4.2,4.28122,4.28122,193,17,455.0,Dollar
-True,1685,4.4375,4.39327,4.39327,192,29,455.0,Euro
-False,821,4.51562,4.516,4.516,191,63,455.0,Dollar
-True,5288,4.21951,4.21436,4.21436,193,60,455.0,Euro
-True,5856,4.5,4.53579,4.53579,191,40,455.0,Pound
-True,20938,4.1625,4.33495,4.33495,191,108,455.0,Dollar
-False,1106,4.1,4.13861,4.13861,191,104,455.0,Dollar
-True,9096,4.5,4.64913,4.64913,191,31,455.0,Dollar
-False,3776,4.33333,4.32303,4.32303,192,94,455.0,Euro
-False,19852,4.14583,4.05342,4.05342,190,24,455.0,Euro
-True,2238,4.73214,4.56595,4.56595,190,42,455.0,Euro
-True,15000,4.35,4.08378,4.08378,189,10,455.0,Dollar
-True,887,4.20946,4.21912,4.21912,189,61,455.0,Dollar
-False,1655,4.2,4.19749,4.19749,189,70,455.0,Pound
-True,1970,4.45,4.47474,4.47474,189,109,455.0,Dollar
-False,36233,3.35,3.3166,3.3166,189,20,455.0,Pound
-True,14343,4.33333,4.39232,4.39232,188,25,455.0,Pound
-False,1400,4.22807,4.0855,4.0855,189,47,468.0,Euro
-False,890,4.45652,4.43399,4.43399,188,20,455.0,Euro
-False,2402,4.10714,4.11366,4.11366,188,8,700.0,Euro
-True,31583,3.97268,4.00066,4.00066,188,65,455.0,Euro
-True,28353,4.55,4.46393,4.46393,187,86,455.0,Euro
-True,5282,3.8,3.83226,3.83226,187,35,455.0,Pound
-True,2857,4.1,4.03456,4.03456,186,30,455.0,Pound
-False,787,4.41667,4.40678,4.40678,186,52,455.0,Dollar
-False,1242,4.75,4.67762,4.67762,186,34,455.0,Dollar
-False,4951,4.19444,4.11079,4.11079,186,28,455.0,Pound
-False,3033,4.27273,4.23354,4.23354,186,45,455.0,Dollar
-False,2097,4.25,4.21488,4.21488,186,16,494.0,Euro
-False,2169,4.4,4.46704,4.46704,185,38,455.0,Dollar
-False,3963,3.85,4.0109,4.0109,185,12,455.0,Pound
-False,796,4.07692,3.95508,3.95508,185,47,455.0,Dollar
-False,1059,4.0,3.99133,3.99133,185,32,455.0,Euro
-False,1011,4.13043,4.13366,4.13366,185,118,455.0,Pound
-True,1847,4.3,4.31717,4.31717,185,18,455.0,Dollar
-True,732,4.19565,4.21234,4.21234,185,19,455.0,Dollar
-False,1767,4.36792,4.37589,4.37589,186,54,455.0,Pound
-False,2458,4.35632,4.26954,4.26954,185,72,455.0,Dollar
-False,10165,4.7,4.6942,4.6942,184,36,455.0,Dollar
-False,961,4.25,4.15617,4.15617,184,8,455.0,Pound
-False,13267,4.24728,4.32195,4.32195,185,12,455.0,Euro
-False,503,4.23684,4.20923,4.20923,186,17,455.0,Pound
-False,5811,3.4,3.30223,3.30223,184,42,455.0,Dollar
-False,1322,4.25926,4.22834,4.22834,184,89,462.0,Euro
-True,1173,3.55,3.08506,3.08506,183,5,455.0,Dollar
-False,485,4.31061,4.41784,4.41784,183,5,455.0,Dollar
-True,2368,4.37805,4.44002,4.44002,186,34,468.0,Euro
-False,1723,4.41532,4.44376,4.44376,185,52,455.0,Dollar
-False,841,4.66667,4.68872,4.68872,184,34,455.0,Euro
-False,632,4.51667,4.50691,4.50691,182,51,455.0,Euro
-True,699,4.05,4.04997,4.04997,182,71,455.0,Pound
-False,6953,4.15,4.19005,4.19005,183,11,455.0,Pound
-True,847,4.71739,4.72807,4.72807,182,71,455.0,Euro
-False,1068,4.5,4.49289,4.49289,182,12,455.0,Pound
-False,496,4.32692,4.28803,4.28803,181,10,455.0,Pound
-False,6216,3.45,3.61199,3.61199,181,34,455.0,Euro
-False,3047,4.5,4.50217,4.50217,181,35,455.0,Pound
-False,5618,3.90625,3.79352,3.79352,181,28,455.0,Euro
-True,8183,3.52941,3.23232,3.23232,181,25,455.0,Dollar
-True,9485,4.34375,4.30279,4.30279,183,42,455.0,Euro
-True,712,3.75,3.71879,3.71879,181,17,455.0,Pound
-True,817,4.60714,4.59195,4.59195,181,43,455.0,Pound
-False,1847,4.63158,4.66265,4.66265,181,22,455.0,Pound
-False,6726,4.25,4.32241,4.32241,180,61,455.0,Dollar
-True,818,3.85,3.74896,3.74896,180,18,455.0,Dollar
-True,24360,4.4,4.44357,4.44357,181,28,455.0,Pound
-False,13729,4.3125,4.27051,4.27051,179,16,455.0,Euro
-True,1333,4.28261,4.28021,4.28021,179,19,455.0,Pound
-True,1465,4.38095,4.43811,4.43811,179,24,455.0,Pound
-True,917,4.55,4.55241,4.55241,179,19,455.0,Euro
-False,2505,3.95,4.1415,4.1415,179,134,455.0,Euro
-False,1726,4.35,4.3839,4.3839,179,91,455.0,Pound
-True,1252,4.625,4.69175,4.69175,179,42,468.0,Pound
-False,1182,4.075,4.05781,4.05781,178,38,455.0,Euro
-True,4596,4.35,4.34427,4.34427,178,68,455.0,Pound
-False,1171,4.37895,4.47023,4.47023,178,17,455.0,Euro
-True,15560,4.41854,4.5002,4.5002,179,50,455.0,Euro
-False,1162,4.2,4.14868,4.14868,178,45,455.0,Pound
-False,1578,4.5339,4.54191,4.54191,178,91,455.0,Euro
-True,1921,3.55,3.56858,3.56858,177,6,455.0,Euro
-True,2240,4.42105,4.41635,4.41635,177,40,455.0,Dollar
-True,4985,3.05,2.94689,2.94689,177,32,455.0,Dollar
-True,1646,4.3,4.19697,4.19697,177,17,455.0,Pound
-False,1950,4.1,4.21873,4.21873,177,26,455.0,Pound
-True,748,4.09091,3.9803,3.9803,177,58,455.0,Euro
-True,2447,3.25,3.74569,3.74569,177,108,455.0,Euro
-True,1239,4.55,4.58046,4.58046,176,43,455.0,Pound
-True,781,4.06618,4.08256,4.08256,177,205,481.0,Pound
-False,5432,4.73077,4.71108,4.71108,177,75,455.0,Dollar
-False,1971,4.05,3.95989,3.95989,176,45,455.0,Pound
-False,958,4.64286,4.69399,4.69399,176,24,455.0,Dollar
-False,6205,4.1,4.15951,4.15951,175,65,455.0,Dollar
-False,628,4.3,4.50418,4.50418,175,10,455.0,Pound
-True,860,4.72222,4.73611,4.73611,175,20,455.0,Dollar
-True,5129,3.95,3.90807,3.90807,175,13,455.0,Pound
-False,5885,3.9,3.97543,3.97543,176,35,468.0,Pound
-False,574,4.83117,4.56374,4.56374,174,88,455.0,Pound
-True,1136,4.21053,4.21007,4.21007,175,179,455.0,Euro
-True,2607,4.8,4.8116,4.8116,174,47,455.0,Pound
-True,2148,4.22321,4.23554,4.23554,174,85,455.0,Euro
-True,1486,4.59722,4.71033,4.71033,175,187,455.0,Euro
-False,2788,4.65,4.56075,4.56075,174,12,455.0,Pound
-False,971,3.95,3.97017,3.97017,173,40,455.0,Pound
-False,1519,4.08333,3.94945,3.94945,173,12,455.0,Euro
-False,2941,3.6,3.43508,3.43508,173,80,455.0,Pound
-False,4862,4.10938,3.96535,3.96535,173,9,455.0,Pound
-False,3655,4.475,4.47034,4.47034,173,41,514.0,Dollar
-True,796,4.71875,4.71577,4.71577,173,23,455.0,Pound
-True,1466,4.0,4.00437,4.00437,173,0,468.0,Dollar
-False,15715,4.1,3.91183,3.91183,173,28,455.0,Pound
-True,1378,4.1,4.02889,4.02889,173,151,455.0,Euro
-False,4319,4.05,3.96907,3.96907,172,18,455.0,Dollar
-True,425,4.21622,4.22576,4.22576,172,30,455.0,Euro
-True,2040,4.17391,4.18319,4.18319,172,42,455.0,Pound
-True,1336,4.44444,4.37727,4.37727,172,31,455.0,Dollar
-True,1178,4.67241,4.64422,4.64422,172,50,455.0,Dollar
-True,3837,4.02941,4.13957,4.13957,172,12,468.0,Pound
-False,14215,4.16667,4.08037,4.08037,172,69,455.0,Pound
-True,1712,4.54545,4.63047,4.63047,171,89,455.0,Euro
-False,1419,4.45238,4.53972,4.53972,171,13,468.0,Dollar
-True,505,3.8913,3.91371,3.91371,172,22,455.0,Dollar
-False,5111,3.8,3.91803,3.91803,171,38,455.0,Dollar
-True,3193,4.32143,4.33893,4.33893,171,55,455.0,Pound
-True,636,4.25,4.19757,4.19757,171,8,455.0,Euro
-False,5033,3.45,3.36146,3.36146,171,47,455.0,Pound
-True,697,4.15254,4.11487,4.11487,171,41,462.0,Dollar
-True,767,3.8125,3.80998,3.80998,170,33,455.0,Pound
-False,7455,2.85,2.32658,2.32658,170,26,455.0,Euro
-True,629,4.21023,4.203,4.203,170,43,455.0,Dollar
-False,1445,4.1,4.09312,4.09312,170,40,455.0,Euro
-False,13789,3.95,3.91082,3.91082,170,27,455.0,Pound
-True,1923,4.5625,4.53983,4.53983,170,46,455.0,Dollar
-True,3827,4.0,4.04349,4.04349,169,39,455.0,Pound
-True,1040,4.25,4.28101,4.28101,169,28,455.0,Dollar
-False,864,3.2,3.24733,3.24733,169,58,455.0,Pound
-True,7823,3.88,3.89669,3.89669,169,0,455.0,Dollar
-False,778,4.3,4.29334,4.29334,168,15,455.0,Dollar
-False,1687,4.6,4.66221,4.66221,168,15,455.0,Euro
-False,628,4.08333,4.1052,4.1052,169,78,455.0,Dollar
-False,2957,3.6,3.51557,3.51557,168,22,455.0,Euro
-True,1054,4.35,4.30408,4.30408,168,19,455.0,Dollar
-True,8679,3.65,3.59199,3.59199,168,68,455.0,Euro
-False,802,4.05556,4.04124,4.04124,168,30,455.0,Euro
-True,25207,4.15,4.41069,4.41069,167,24,455.0,Euro
-False,890,4.10526,4.11437,4.11437,167,44,455.0,Euro
-False,6013,3.35,3.64529,3.64529,167,16,455.0,Dollar
-True,663,4.1,4.07773,4.07773,166,8,455.0,Euro
-False,7369,3.3,3.21661,3.21661,166,34,455.0,Pound
-True,5020,4.0,3.99545,3.99545,166,58,455.0,Dollar
-True,25252,4.0339,4.03279,4.03279,166,20,455.0,Euro
-False,18615,3.8,3.80077,3.80077,166,9,455.0,Dollar
-False,1790,4.02,4.06683,4.06683,166,45,455.0,Euro
-True,854,4.22222,3.81779,3.81779,166,37,455.0,Dollar
-True,2328,4.25,4.21209,4.21209,166,19,455.0,Dollar
-False,1373,4.25,4.30941,4.30941,165,21,800.0,Euro
-True,19268,3.4,2.96337,2.96337,165,8,455.0,Dollar
-True,8356,4.05,4.00802,4.00802,165,22,455.0,Euro
-True,2492,4.52083,4.45547,4.45547,165,27,455.0,Dollar
-True,3481,4.25,4.07289,4.07289,165,531,455.0,Pound
-True,7452,3.5,3.60671,3.60671,165,14,455.0,Pound
-False,833,4.16667,4.28608,4.28608,165,11,455.0,Pound
-True,4782,4.15672,4.15008,4.15008,165,29,455.0,Dollar
-True,804,4.5,4.54661,4.54661,165,15,455.0,Dollar
-False,21214,3.8,4.29904,4.29904,165,21,455.0,Pound
-True,503,4.16667,4.21441,4.21441,165,35,468.0,Dollar
-False,2696,3.90909,4.05526,4.05526,165,5,455.0,Dollar
-False,642,4.07143,4.19861,4.19861,165,25,455.0,Euro
-True,797,4.47619,4.43776,4.43776,164,25,455.0,Pound
-False,586,4.07812,4.05736,4.05736,164,20,455.0,Dollar
-True,15752,4.1,4.21419,4.21419,164,23,455.0,Dollar
-False,635,4.0,3.98731,3.98731,164,18,455.0,Pound
-False,3811,3.65,3.76345,3.76345,163,10,455.0,Euro
-True,1040,4.35,4.32942,4.32942,163,37,455.0,Dollar
-True,1633,4.0,3.88902,3.88902,163,11,455.0,Pound
-False,907,3.45,3.48584,3.48584,163,65,455.0,Pound
-True,13161,4.05,3.59015,3.59015,163,12,455.0,Dollar
-True,870,4.45833,4.44963,4.44963,163,43,455.0,Dollar
-False,6103,4.15,4.19233,4.19233,163,60,455.0,Dollar
-True,504,4.36667,4.40105,4.40105,163,24,455.0,Pound
-True,3866,4.13492,4.16819,4.16819,163,34,455.0,Euro
-True,8339,4.1,4.16034,4.16034,162,31,455.0,Euro
-True,23405,3.9,3.9738,3.9738,162,31,455.0,Dollar
-False,622,3.35135,3.42363,3.42363,162,27,455.0,Euro
-False,322,4.59091,4.68286,4.68286,162,10,455.0,Pound
-True,2303,4.59091,4.62553,4.62553,164,33,455.0,Dollar
-True,428,4.26316,4.0832,4.0832,162,37,455.0,Pound
-True,18953,3.72222,3.63515,3.63515,162,92,455.0,Pound
-True,1175,4.0625,4.1474,4.1474,162,20,455.0,Euro
-False,2273,4.55,4.58366,4.58366,162,87,462.0,Pound
-True,793,4.10714,4.12478,4.12478,162,21,455.0,Dollar
-True,4903,3.55,3.62704,3.62704,161,107,455.0,Dollar
-False,16576,4.45833,4.75711,4.75711,161,23,455.0,Euro
-False,601,4.43103,4.41029,4.41029,161,11,468.0,Dollar
-False,10443,3.2,2.72633,2.72633,161,36,455.0,Pound
-True,2897,4.2,4.18834,4.18834,161,18,455.0,Euro
-True,33507,4.27586,4.29102,4.29102,161,102,455.0,Dollar
-True,19930,4.25556,4.28483,4.28483,161,109,455.0,Euro
-True,4811,4.21429,4.1836,4.1836,162,19,468.0,Euro
-True,4027,4.09459,4.13097,4.13097,161,10,455.0,Pound
-True,579,4.15,4.18294,4.18294,161,9,455.0,Pound
-False,1816,4.7,4.75218,4.75218,160,42,455.0,Dollar
-True,1041,3.8,3.71806,3.71806,160,90,455.0,Euro
-False,1241,4.54545,4.64019,4.64019,160,21,455.0,Pound
-True,14893,4.3871,4.42378,4.42378,160,36,455.0,Dollar
-False,631,4.14,4.14583,4.14583,160,13,455.0,Euro
-False,1523,4.17857,4.24336,4.24336,161,24,455.0,Pound
-True,20280,4.21429,4.29494,4.29494,160,28,455.0,Pound
-True,2303,3.8,3.61288,3.61288,160,73,455.0,Pound
-True,35255,4.20455,3.80167,3.80167,173,8,455.0,Dollar
-False,1131,4.64286,4.62593,4.62593,159,13,455.0,Dollar
-True,2199,4.43103,4.49289,4.49289,159,50,455.0,Euro
-True,20450,3.2,3.18677,3.18677,159,21,455.0,Dollar
-True,1457,4.48,4.43495,4.43495,160,58,455.0,Dollar
-True,2124,4.52381,4.43889,4.43889,159,37,455.0,Euro
-False,17964,4.14894,4.28602,4.28602,160,13,455.0,Pound
-True,20341,3.92,3.87658,3.87658,159,11,455.0,Euro
-True,14670,4.28125,4.25758,4.25758,159,56,455.0,Euro
-True,2448,4.1,3.96769,3.96769,159,60,455.0,Euro
-False,13061,3.86667,3.68397,3.68397,159,53,455.0,Dollar
-True,12824,4.6,4.75033,4.75033,158,26,455.0,Pound
-True,1615,3.95,3.9193,3.9193,158,36,455.0,Pound
-False,945,3.55,3.48569,3.48569,158,30,455.0,Dollar
-False,846,4.16667,4.08611,4.08611,160,30,455.0,Dollar
-True,3675,4.15,4.23844,4.23844,158,29,455.0,Pound
-False,2468,4.225,4.07765,4.07765,159,157,455.0,Pound
-True,985,4.675,4.68033,4.68033,158,18,455.0,Euro
-True,821,4.28378,4.23693,4.23693,158,39,455.0,Pound
-True,4620,4.1,4.01497,4.01497,157,36,455.0,Dollar
-False,1013,4.26,4.04684,4.04684,158,61,455.0,Euro
-True,9541,4.38679,4.40256,4.40256,157,22,455.0,Euro
-False,16628,4.35294,4.32263,4.32263,157,41,455.0,Euro
-False,7480,4.2,4.0611,4.0611,157,98,455.0,Euro
-False,2544,3.75806,3.76635,3.76635,157,32,455.0,Pound
-False,5539,3.15,3.18684,3.18684,157,83,455.0,Pound
-False,791,4.65217,4.49153,4.49153,157,22,455.0,Pound
-False,33109,4.02439,3.74229,3.74229,158,88,455.0,Pound
-True,1354,4.6,4.52548,4.52548,156,65,455.0,Euro
-True,4399,4.15,4.15069,4.15069,156,27,455.0,Pound
-True,1112,4.5,4.49059,4.49059,156,91,455.0,Pound
-False,1492,4.63636,4.60055,4.60055,155,26,455.0,Euro
-False,2767,3.95,3.92445,3.92445,155,15,455.0,Pound
-False,7146,4.75,4.67206,4.67206,155,23,455.0,Euro
-True,1062,4.27273,4.2536,4.2536,155,39,455.0,Dollar
-True,527,4.25,4.23727,4.23727,155,39,455.0,Dollar
-False,7179,3.4,3.35458,3.35458,155,11,455.0,Euro
-True,4107,4.0,4.01971,4.01971,155,10,455.0,Pound
-True,682,4.46429,4.46253,4.46253,156,36,500.0,Pound
-True,600,4.52941,4.56983,4.56983,155,48,455.0,Pound
-True,11100,4.13889,4.21129,4.21129,155,26,455.0,Euro
-False,3025,3.65,3.40969,3.40969,154,12,455.0,Pound
-False,1496,3.5,3.54589,3.54589,154,21,455.0,Pound
-False,2876,4.6,4.79203,4.79203,154,25,455.0,Dollar
-False,1118,4.02778,4.04138,4.04138,154,49,455.0,Euro
-False,641,4.34286,4.33461,4.33461,154,45,520.0,Pound
-True,1788,4.0,4.04079,4.04079,153,28,455.0,Euro
-False,707,4.48,4.53164,4.53164,153,63,455.0,Dollar
-True,22713,4.09375,4.09023,4.09023,153,37,455.0,Pound
-True,1062,4.18421,4.28074,4.28074,153,11,455.0,Euro
-False,352,4.3662,4.39378,4.39378,153,31,455.0,Euro
-True,15207,3.0,3.41384,3.41384,153,26,455.0,Euro
-False,1992,3.7,3.85445,3.85445,153,22,455.0,Dollar
-True,2253,4.3,4.30067,4.30067,153,21,455.0,Pound
-True,16271,4.5,4.64872,4.64872,152,22,455.0,Pound
-True,6328,3.55,3.10175,3.10175,152,15,455.0,Dollar
-False,673,4.02632,4.053,4.053,152,42,455.0,Euro
-False,1814,4.51471,4.47913,4.47913,152,194,462.0,Dollar
-False,1550,4.4,4.41985,4.41985,151,23,455.0,Dollar
-True,1328,4.39416,4.24544,4.24544,151,13,455.0,Dollar
-True,7466,4.0,4.13687,4.13687,151,18,455.0,Euro
-False,2263,2.95,2.4786,2.4786,151,19,455.0,Pound
-True,918,4.78333,4.78123,4.78123,151,76,455.0,Euro
-False,489,4.59722,4.6014,4.6014,151,15,455.0,Dollar
-True,736,4.23913,4.21679,4.21679,151,49,468.0,Euro
-True,3004,3.96667,3.99658,3.99658,151,66,455.0,Dollar
-True,1305,4.05,4.06498,4.06498,151,31,455.0,Euro
-True,315,4.05051,4.09259,4.09259,151,20,455.0,Pound
-True,1488,4.4,4.35935,4.35935,150,61,455.0,Euro
-True,1419,4.3913,4.37387,4.37387,150,38,455.0,Dollar
-True,4869,4.42647,4.47739,4.47739,150,9,455.0,Euro
-False,24349,4.0,4.16729,4.16729,150,66,455.0,Dollar
-True,785,4.35,4.43096,4.43096,149,24,455.0,Dollar
-True,726,4.15,4.16926,4.16926,149,23,455.0,Euro
-False,2719,4.4,4.44483,4.44483,149,84,455.0,Dollar
-True,13998,3.85714,3.6256,3.6256,149,9,455.0,Euro
-True,12126,3.3,3.30909,3.30909,149,9,455.0,Pound
-False,10019,3.75,3.80665,3.80665,149,51,455.0,Pound
-True,2162,3.9,3.8924,3.8924,149,13,455.0,Euro
-False,1985,3.4,3.34867,3.34867,148,45,455.0,Pound
-True,2931,4.70769,4.71812,4.71812,148,64,455.0,Dollar
-True,507,3.63043,3.60621,3.60621,149,10,455.0,Pound
-True,18465,3.3,3.34686,3.34686,148,34,455.0,Euro
-False,1579,4.75,4.77106,4.77106,148,38,455.0,Pound
-False,1328,4.0,3.89976,3.89976,148,58,455.0,Euro
-False,749,4.125,4.14009,4.14009,148,24,455.0,Dollar
-True,1638,3.65,3.7121,3.7121,148,37,468.0,Euro
-False,14252,4.15385,4.1185,4.1185,148,29,455.0,Dollar
-False,11549,3.95,3.87756,3.87756,148,34,455.0,Euro
-True,8540,4.71875,4.77271,4.77271,147,57,455.0,Dollar
-True,7739,4.25,4.04509,4.04509,147,12,455.0,Pound
-False,1546,3.9,3.93516,3.93516,147,22,455.0,Dollar
-False,2117,3.45,3.31514,3.31514,147,43,455.0,Dollar
-False,569,3.7,3.77174,3.77174,147,18,455.0,Pound
-True,33488,4.1087,4.12771,4.12771,147,77,455.0,Euro
-True,694,4.04545,4.06221,4.06221,147,6,455.0,Pound
-False,4548,4.15385,4.1988,4.1988,147,44,455.0,Pound
-True,5349,4.4,4.41595,4.41595,147,25,455.0,Dollar
-True,19265,4.48889,4.52737,4.52737,147,24,455.0,Euro
-False,529,4.45455,4.46181,4.46181,146,8,455.0,Euro
-True,850,4.85,4.85368,4.85368,146,25,455.0,Dollar
-False,657,4.5,4.49151,4.49151,146,11,455.0,Euro
-True,911,4.23077,4.23222,4.23222,146,30,455.0,Dollar
-True,2138,4.6,4.54232,4.54232,146,37,455.0,Pound
-False,10540,3.9,3.79932,3.79932,146,40,455.0,Dollar
-False,3349,4.25,4.30477,4.30477,145,14,455.0,Pound
-False,852,4.55,4.55466,4.55466,146,27,455.0,Pound
-True,391,4.23684,4.41258,4.41258,145,17,455.0,Euro
-True,10941,4.7,4.57241,4.57241,155,46,455.0,Euro
-True,718,3.0,2.9224,2.9224,145,45,455.0,Euro
-False,12327,4.18478,4.26176,4.26176,145,8,455.0,Dollar
-False,1935,4.33333,4.29789,4.29789,145,12,455.0,Dollar
-True,1310,4.25,4.15517,4.15517,145,19,455.0,Euro
-True,844,4.17647,4.18692,4.18692,145,185,455.0,Pound
-True,3167,3.9,4.03347,4.03347,144,54,520.0,Euro
-True,1364,4.5,4.51318,4.51318,144,28,455.0,Dollar
-True,2424,3.3,3.24632,3.24632,144,34,455.0,Euro
-True,30021,4.05263,4.16004,4.16004,144,59,455.0,Euro
-False,23238,4.41176,4.32552,4.32552,144,36,455.0,Pound
-True,32606,4.31667,4.34216,4.34216,145,91,455.0,Dollar
-False,9340,4.5,4.2271,4.2271,145,20,455.0,Pound
-False,1320,4.5,4.49584,4.49584,144,30,455.0,Euro
-True,2663,3.2,3.43399,3.43399,144,22,455.0,Pound
-True,9546,4.45,4.62825,4.62825,144,58,455.0,Dollar
-True,11012,3.0,3.10689,3.10689,143,25,455.0,Dollar
-False,6405,2.8,2.98926,2.98926,143,26,455.0,Dollar
-True,17380,3.95,3.41214,3.41214,143,38,455.0,Pound
-False,1348,4.1,4.1999,4.1999,143,13,455.0,Pound
-True,26799,4.31034,4.3055,4.3055,144,10,455.0,Dollar
-False,644,3.48148,3.373,3.373,143,16,455.0,Pound
-False,1105,4.2,4.1637,4.1637,142,29,468.0,Euro
-False,480,4.3,4.29774,4.29774,142,20,455.0,Dollar
-True,583,3.93182,3.93855,3.93855,142,29,455.0,Euro
-False,6330,4.25,4.224,4.224,142,48,455.0,Euro
-False,6274,4.55882,4.53816,4.53816,142,49,455.0,Euro
-False,2006,3.9,3.77589,3.77589,142,30,455.0,Pound
-True,12948,4.41111,4.44579,4.44579,142,26,455.0,Dollar
-False,483,3.875,3.81983,3.81983,142,37,455.0,Dollar
-False,789,3.7,3.67687,3.67687,142,12,455.0,Euro
-False,1061,3.9,3.88202,3.88202,142,65,455.0,Pound
-True,8367,3.45,3.42623,3.42623,141,51,455.0,Dollar
-True,2516,4.25,4.2321,4.2321,141,40,455.0,Euro
-True,483,4.075,4.11852,4.11852,141,15,455.0,Pound
-True,10213,4.275,4.34833,4.34833,141,18,455.0,Dollar
-True,333,3.2,3.19357,3.19357,141,11,455.0,Dollar
-False,12135,3.95,4.37151,4.37151,141,19,455.0,Pound
-False,336,4.86154,4.79492,4.79492,141,0,455.0,Pound
-True,1002,3.9,3.82048,3.82048,140,27,455.0,Dollar
-True,2940,4.35,4.38983,4.38983,140,67,455.0,Pound
-False,809,3.85,4.13676,4.13676,140,91,455.0,Dollar
-True,24236,4.23077,4.25194,4.25194,141,11,455.0,Euro
-True,9601,4.51923,4.56817,4.56817,140,52,455.0,Euro
-True,744,4.19048,4.20678,4.20678,140,19,455.0,Pound
-True,569,4.39474,4.37579,4.37579,140,22,455.0,Pound
-False,908,4.45833,4.53621,4.53621,139,24,455.0,Pound
-False,654,4.42,4.31873,4.31873,139,81,455.0,Pound
-False,654,4.3,4.29706,4.29706,139,26,455.0,Euro
-True,862,3.71875,3.6591,3.6591,139,0,455.0,Pound
-True,962,4.5,4.42482,4.42482,139,11,455.0,Euro
-False,469,4.0,3.9874,3.9874,139,26,455.0,Euro
-False,494,4.15,3.74357,3.74357,139,13,455.0,Euro
-False,7191,4.09091,4.01349,4.01349,139,119,455.0,Dollar
-True,10012,4.5,4.7227,4.7227,139,24,455.0,Pound
-True,12404,3.375,3.00437,3.00437,138,17,455.0,Euro
-False,582,4.10526,4.0742,4.0742,138,47,455.0,Pound
-False,768,4.39583,4.40651,4.40651,138,57,455.0,Dollar
-True,783,4.05,4.16094,4.16094,138,13,455.0,Dollar
-True,13388,4.45,4.61424,4.61424,138,7,455.0,Euro
-False,472,4.12,4.11061,4.11061,138,28,455.0,Pound
-True,1094,4.17241,4.19167,4.19167,138,21,455.0,Dollar
-False,736,4.65,4.67886,4.67886,137,6,455.0,Euro
-True,400,4.09677,4.11323,4.11323,137,19,455.0,Pound
-False,830,4.35,4.32216,4.32216,137,17,455.0,Dollar
-False,2177,4.7,4.73618,4.73618,137,19,455.0,Euro
-True,759,4.5625,4.61793,4.61793,137,9,455.0,Dollar
-False,9332,3.15,2.91914,2.91914,137,74,455.0,Dollar
-True,438,4.35,4.15365,4.15365,136,9,455.0,Euro
-False,694,4.54878,4.53536,4.53536,136,5,455.0,Euro
-False,2136,4.9,4.95001,4.95001,136,26,455.0,Dollar
-True,4316,4.47727,4.30652,4.30652,136,129,455.0,Dollar
-True,383,4.10714,4.11461,4.11461,136,15,455.0,Dollar
-True,3975,4.35417,4.3031,4.3031,136,80,468.0,Dollar
-False,1422,4.10417,4.06644,4.06644,137,444,468.0,Dollar
-True,1430,4.05,4.04776,4.04776,135,26,455.0,Pound
-False,738,4.6087,4.5869,4.5869,135,16,455.0,Dollar
-True,2101,3.45,3.40866,3.40866,135,29,455.0,Euro
-True,920,4.4,4.39799,4.39799,135,56,455.0,Pound
-True,417,4.0,3.93812,3.93812,135,10,455.0,Dollar
-True,583,4.11111,4.09607,4.09607,134,31,2160.0,Euro
-True,10008,3.8,3.68264,3.68264,134,6,455.0,Pound
-False,2540,4.63333,4.56146,4.56146,135,14,800.0,Euro
-True,591,4.6,4.76779,4.76779,134,12,455.0,Euro
-False,10804,4.34328,4.35693,4.35693,138,16,455.0,Euro
-True,311,4.3,4.28616,4.28616,134,17,455.0,Pound
-True,1573,3.31818,3.31458,3.31458,134,36,455.0,Dollar
-False,1875,4.15,3.69026,3.69026,134,25,455.0,Pound
-False,776,4.2,4.1504,4.1504,134,30,455.0,Euro
-True,586,4.35,4.39146,4.39146,133,17,455.0,Dollar
-True,1814,4.8,4.81808,4.81808,133,20,455.0,Dollar
-False,400,4.10714,4.09258,4.09258,133,38,455.0,Pound
-True,1447,4.18518,4.21035,4.21035,133,27,455.0,Pound
-False,969,4.03333,4.0302,4.0302,133,23,455.0,Pound
-False,384,4.7,4.72612,4.72612,133,45,455.0,Pound
-False,1140,4.1,4.07739,4.07739,133,18,455.0,Dollar
-True,408,4.47368,4.46561,4.46561,133,11,455.0,Dollar
-False,676,3.8,3.77361,3.77361,133,24,455.0,Dollar
-True,13153,4.11278,3.97986,3.97986,137,10,455.0,Dollar
-False,663,4.25,4.36681,4.36681,134,27,455.0,Euro
-True,5505,3.875,3.64421,3.64421,133,182,455.0,Dollar
-True,12055,4.0,4.20983,4.20983,132,19,455.0,Dollar
-False,6222,4.25,4.03887,4.03887,132,15,455.0,Dollar
-True,760,4.67593,4.66114,4.66114,132,64,455.0,Euro
-True,2500,3.91667,3.86661,3.86661,132,131,455.0,Dollar
-False,698,3.3,3.28551,3.28551,132,13,455.0,Pound
-True,3889,3.85,3.92014,3.92014,132,32,455.0,Euro
-True,5425,3.6,3.56567,3.56567,132,20,455.0,Euro
-True,565,4.74074,4.74252,4.74252,132,34,455.0,Dollar
-True,703,4.7,4.67365,4.67365,132,56,455.0,Pound
-False,1639,4.61667,4.683,4.683,132,27,455.0,Pound
-True,18396,4.1828,4.10612,4.10612,132,93,455.0,Dollar
-True,2065,4.38942,4.57105,4.57105,132,16,455.0,Dollar
-True,859,4.25,4.23639,4.23639,132,44,455.0,Pound
-False,408,3.95833,3.979,3.979,131,25,455.0,Pound
-False,20546,4.40426,4.38986,4.38986,131,31,455.0,Dollar
-True,576,4.33333,4.21695,4.21695,131,23,1600.0,Pound
-False,501,3.58824,3.51642,3.51642,131,16,455.0,Euro
-False,3321,3.7,3.70517,3.70517,131,33,455.0,Pound
-False,4588,4.19444,4.26451,4.26451,131,20,455.0,Euro
-True,1316,3.95,3.96269,3.96269,131,48,455.0,Pound
-False,8232,4.03333,3.88033,3.88033,132,21,455.0,Euro
-True,549,3.3,3.20788,3.20788,131,10,455.0,Pound
-True,9096,4.05,3.81551,3.81551,131,47,455.0,Euro
-False,883,4.58974,4.21728,4.21728,130,70,455.0,Dollar
-True,2240,3.9,3.73131,3.73131,130,9,455.0,Dollar
-False,20026,4.22917,4.14292,4.14292,130,67,455.0,Pound
-False,1253,4.125,3.60999,3.60999,130,35,455.0,Dollar
-False,478,4.16667,4.22331,4.22331,129,257,474.0,Euro
-True,448,4.26923,4.24014,4.24014,129,14,455.0,Dollar
-True,14839,4.65385,4.87945,4.87945,129,27,455.0,Pound
-False,1695,4.4,4.3699,4.3699,129,29,455.0,Dollar
-False,2826,3.85,3.6652,3.6652,129,11,455.0,Pound
-True,9531,3.55,3.65749,3.65749,129,46,455.0,Euro
-False,13626,4.17568,4.21509,4.21509,129,16,455.0,Pound
-True,719,4.85,4.93694,4.93694,129,40,720.0,Pound
-False,1567,4.35,4.45984,4.45984,129,15,455.0,Dollar
-False,1054,4.72917,4.69602,4.69602,129,64,455.0,Euro
-False,801,4.1,4.38436,4.38436,128,18,455.0,Euro
-True,1460,4.1,4.19707,4.19707,128,20,455.0,Dollar
-False,3836,4.35,4.431,4.431,128,19,455.0,Euro
-False,1775,4.65,4.62593,4.62593,128,33,455.0,Euro
-True,1740,4.16667,4.23989,4.23989,128,13,455.0,Euro
-False,812,4.35,4.29163,4.29163,128,23,455.0,Dollar
-False,2870,4.1,4.13127,4.13127,128,41,468.0,Pound
-True,4065,4.19118,4.28186,4.28186,128,40,455.0,Euro
-False,8400,4.11538,4.1534,4.1534,128,17,488.0,Pound
-True,1608,4.27586,4.1761,4.1761,127,61,455.0,Dollar
-False,752,3.45,3.54119,3.54119,127,32,1600.0,Euro
-True,1118,3.8,3.70138,3.70138,127,46,455.0,Dollar
-True,2056,4.26471,4.26832,4.26832,127,24,455.0,Euro
-False,16600,3.4,3.10187,3.10187,127,47,455.0,Dollar
-True,6490,3.75,3.5796,3.5796,127,102,455.0,Pound
-True,2304,4.28125,4.37392,4.37392,127,40,455.0,Euro
-False,2876,4.19444,3.8732,3.8732,127,38,455.0,Dollar
-False,2981,4.59211,4.30817,4.30817,127,38,455.0,Pound
-True,525,4.1875,4.1777,4.1777,127,30,455.0,Euro
-False,9934,3.26378,3.35142,3.35142,127,10,455.0,Dollar
-True,3567,4.38462,4.37239,4.37239,127,23,462.0,Euro
-True,717,4.1,4.10356,4.10356,126,17,455.0,Pound
-True,958,3.65,3.83072,3.83072,126,43,455.0,Euro
-False,10707,4.13333,4.16068,4.16068,126,10,455.0,Dollar
-False,1222,4.13636,4.06947,4.06947,126,6,455.0,Pound
-True,623,4.63014,4.64446,4.64446,127,55,455.0,Dollar
-False,659,4.0,3.88112,3.88112,126,8,455.0,Pound
-False,12768,4.43651,4.44404,4.44404,126,129,455.0,Euro
-False,1892,3.84615,3.83944,3.83944,125,23,455.0,Pound
-True,686,4.35714,4.05067,4.05067,125,19,455.0,Pound
-False,1196,4.56122,4.5585,4.5585,125,66,455.0,Dollar
-False,8509,4.3,4.09458,4.09458,126,35,455.0,Euro
-True,275,4.48485,4.46267,4.46267,126,33,455.0,Pound
-True,8006,4.25,4.24846,4.24846,124,17,455.0,Dollar
-True,379,4.47059,4.46079,4.46079,124,20,455.0,Euro
-False,575,4.46341,4.48222,4.48222,124,51,455.0,Pound
-True,7479,4.125,4.1903,4.1903,124,26,455.0,Dollar
-True,475,4.17949,4.15372,4.15372,124,31,455.0,Dollar
-False,3801,4.05,4.04668,4.04668,124,26,455.0,Euro
-False,739,4.27083,4.13338,4.13338,124,15,540.0,Dollar
-True,8286,3.65,3.43898,3.43898,124,19,455.0,Pound
-False,1656,3.9,3.99582,3.99582,124,66,455.0,Euro
-False,14327,4.36111,4.12075,4.12075,123,77,455.0,Pound
-True,1245,3.05,2.76416,2.76416,123,14,455.0,Pound
-False,12064,4.39844,4.41497,4.41497,123,29,455.0,Pound
-False,2913,4.4,4.35229,4.35229,123,30,455.0,Pound
-False,545,3.85,3.83065,3.83065,123,21,455.0,Dollar
-False,1038,4.75,4.70597,4.70597,123,25,455.0,Euro
-False,628,3.75,3.55334,3.55334,123,14,455.0,Dollar
-True,2991,3.6,3.611,3.611,122,19,455.0,Euro
-True,27891,4.34016,4.43896,4.43896,124,64,455.0,Euro
-True,2272,4.65,4.59861,4.59861,122,7,455.0,Euro
-False,1119,4.7,4.73942,4.73942,122,211,455.0,Euro
-True,5720,4.32432,4.39746,4.39746,122,20,455.0,Euro
-False,1405,4.52941,4.58891,4.58891,122,95,455.0,Pound
-True,11430,3.90625,3.88286,3.88286,122,17,455.0,Euro
-True,1099,4.6,4.53166,4.53166,122,57,455.0,Dollar
-True,7566,4.35,4.32155,4.32155,122,41,455.0,Pound
-False,802,3.83871,3.7957,3.7957,122,20,455.0,Dollar
-True,1953,3.85,4.02538,4.02538,122,20,455.0,Euro
-False,4697,3.05,2.59287,2.59287,122,12,455.0,Dollar
-True,3995,4.35,4.30453,4.30453,121,21,468.0,Pound
-True,4551,4.05,4.13274,4.13274,121,35,455.0,Euro
-False,452,3.85,4.0555,4.0555,121,13,455.0,Pound
-False,548,3.97222,3.93706,3.93706,121,16,455.0,Pound
-True,1072,4.3,4.3939,4.3939,121,0,455.0,Dollar
-False,1580,4.15,4.2111,4.2111,121,24,455.0,Euro
-False,415,4.28947,4.26786,4.26786,121,13,455.0,Dollar
-False,6861,3.6,3.05298,3.05298,121,7,455.0,Pound
-False,332,4.15625,4.15372,4.15372,123,9,455.0,Pound
-False,791,4.45,4.46632,4.46632,121,42,2880.0,Dollar
-True,19993,3.3,3.49751,3.49751,121,19,455.0,Euro
-True,729,4.5,4.29996,4.29996,121,36,455.0,Euro
-True,2602,3.8,3.76096,3.76096,121,21,455.0,Pound
-False,7536,4.4,4.43075,4.43075,120,49,455.0,Euro
-True,2028,3.7,3.21172,3.21172,120,5,455.0,Pound
-True,3566,3.56349,3.54308,3.54308,120,5,455.0,Dollar
-False,1590,3.95,3.76335,3.76335,120,18,455.0,Pound
-True,1376,4.3,4.15563,4.15563,120,46,455.0,Euro
-False,847,4.5,4.52516,4.52516,120,24,455.0,Euro
-True,694,4.33333,4.34329,4.34329,120,42,455.0,Dollar
-False,4114,3.8,3.85804,3.85804,120,35,455.0,Pound
-True,17979,3.7,4.22167,4.22167,120,70,455.0,Pound
-True,348,4.21212,4.16928,4.16928,121,52,455.0,Dollar
-True,16518,4.25,4.36984,4.36984,120,27,455.0,Dollar
-False,5624,4.52083,4.56817,4.56817,120,21,520.0,Dollar
-False,575,4.31111,4.27462,4.27462,120,28,455.0,Pound
-True,3380,4.2,4.21635,4.21635,120,13,455.0,Pound
-False,3129,4.05,4.16716,4.16716,120,11,455.0,Euro
-True,1426,4.3,4.25396,4.25396,119,19,800.0,Dollar
-True,1108,4.55,4.48599,4.48599,119,35,455.0,Dollar
-False,5043,3.9,3.95558,3.95558,119,103,455.0,Euro
-True,16282,4.04167,3.9945,3.9945,120,20,455.0,Pound
-True,534,4.53125,4.50755,4.50755,119,33,455.0,Dollar
-False,740,4.45,4.4114,4.4114,119,21,455.0,Pound
-False,1006,4.225,3.74587,3.74587,119,22,455.0,Dollar
-True,1307,4.5,4.5311,4.5311,119,19,455.0,Dollar
-False,7491,4.35,3.96319,3.96319,118,36,455.0,Dollar
-True,498,4.575,4.59754,4.59754,118,10,494.0,Euro
-False,1525,4.40323,4.43718,4.43718,118,96,455.0,Dollar
-False,2001,4.15217,4.12223,4.12223,119,263,455.0,Dollar
-False,957,4.0,3.97243,3.97243,118,27,455.0,Dollar
-True,4886,4.0678,4.01264,4.01264,119,33,455.0,Euro
-True,1252,4.05,4.0514,4.0514,117,10,455.0,Euro
-False,740,4.3,4.24289,4.24289,117,17,455.0,Dollar
-True,725,4.7,4.68654,4.68654,117,10,455.0,Pound
-True,1410,4.25,4.21766,4.21766,117,23,494.0,Euro
-True,7295,4.45,4.38106,4.38106,117,28,455.0,Pound
-False,6044,3.95,3.67631,3.67631,117,11,455.0,Dollar
-False,423,4.43182,4.2378,4.2378,118,48,455.0,Pound
-False,3390,3.4,3.11505,3.11505,117,7,455.0,Euro
-True,5889,4.0,4.0925,4.0925,117,45,455.0,Pound
-True,14555,3.15,3.21294,3.21294,117,17,455.0,Euro
-False,2031,4.67568,4.71918,4.71918,117,55,455.0,Dollar
-True,1166,3.98684,3.99206,3.99206,116,19,455.0,Dollar
-True,806,4.1,4.22772,4.22772,116,24,455.0,Euro
-True,543,4.8,4.77648,4.77648,116,56,455.0,Pound
-True,425,3.95,4.18664,4.18664,116,29,455.0,Euro
-True,15808,2.55,2.72169,2.72169,116,5,455.0,Pound
-False,23035,4.29592,4.42001,4.42001,116,50,455.0,Euro
-False,733,4.65,4.63597,4.63597,115,35,1120.0,Dollar
-False,2966,4.5,4.49705,4.49705,115,13,455.0,Euro
-False,310,4.64286,4.67433,4.67433,116,33,455.0,Euro
-True,544,4.49375,4.52031,4.52031,116,124,455.0,Euro
-False,2056,4.1,4.2083,4.2083,115,25,455.0,Dollar
-False,8769,4.05,4.12421,4.12421,115,46,455.0,Pound
-True,5073,4.35,4.33791,4.33791,115,28,455.0,Dollar
-False,512,4.1,4.1814,4.1814,115,77,455.0,Euro
-True,1492,4.45,4.42978,4.42978,115,55,455.0,Euro
-True,441,4.01471,3.73897,3.73897,115,19,455.0,Pound
-True,1126,4.44828,4.34642,4.34642,116,57,455.0,Pound
-True,470,4.15,4.17708,4.17708,115,25,455.0,Euro
-True,4081,4.5,4.51396,4.51396,115,21,455.0,Pound
-False,5710,4.05,3.77403,3.77403,114,30,455.0,Pound
-False,487,4.26471,4.26287,4.26287,114,84,474.0,Euro
-True,798,3.5,3.64994,3.64994,114,24,455.0,Pound
-False,477,3.84848,3.8773,3.8773,115,42,800.0,Pound
-True,2781,3.95,3.83457,3.83457,114,7,455.0,Euro
-True,1740,3.85,3.91172,3.91172,114,15,455.0,Pound
-True,16608,4.30508,4.3496,4.3496,115,44,3200.0,Euro
-False,871,3.1,3.03415,3.03415,114,16,455.0,Euro
-True,1565,4.2,4.16622,4.16622,114,61,455.0,Dollar
-True,336,4.82301,4.71432,4.71432,116,36,455.0,Dollar
-True,1076,4.15,4.11586,4.11586,114,85,455.0,Euro
-True,12340,3.29167,3.07001,3.07001,114,5,455.0,Euro
-True,4147,4.36364,4.40369,4.40369,114,96,474.0,Pound
-True,1799,4.40385,4.42023,4.42023,114,20,455.0,Euro
-True,834,4.45,4.42968,4.42968,114,49,455.0,Dollar
-True,330,4.26667,4.21886,4.21886,113,27,455.0,Dollar
-True,602,4.42035,4.44036,4.44036,115,14,455.0,Pound
-True,1638,4.0,3.99036,3.99036,113,22,455.0,Euro
-False,3147,4.0,3.98623,3.98623,113,43,520.0,Dollar
-True,479,4.33628,4.38407,4.38407,113,25,455.0,Pound
-False,2345,4.61111,4.54725,4.54725,113,24,455.0,Pound
-True,706,3.75,3.73068,3.73068,113,28,455.0,Dollar
-False,345,3.75,3.72283,3.72283,113,11,455.0,Dollar
-True,10374,4.18182,3.7492,3.7492,113,88,455.0,Euro
-False,11177,4.31818,4.41065,4.41065,113,18,455.0,Dollar
-False,13378,4.6,4.17509,4.17509,112,24,455.0,Euro
-False,806,4.34211,4.35515,4.35515,112,45,455.0,Pound
-True,1655,3.82143,4.14829,4.14829,112,20,468.0,Dollar
-True,2219,4.55,4.68477,4.68477,112,49,455.0,Euro
-True,1574,4.1,4.08713,4.08713,112,22,455.0,Dollar
-False,32964,4.08824,4.05915,4.05915,112,14,455.0,Dollar
-False,1195,4.2,4.24409,4.24409,112,10,474.0,Pound
-False,485,4.475,4.43815,4.43815,112,8,455.0,Pound
-False,392,4.43333,4.34002,4.34002,111,11,468.0,Pound
-True,407,3.87097,3.90669,3.90669,111,25,455.0,Pound
-False,392,4.07143,3.83816,3.83816,111,29,455.0,Euro
-True,31882,4.0,4.11204,4.11204,111,29,455.0,Euro
-False,441,3.9,3.85619,3.85619,111,15,455.0,Dollar
-True,2103,4.15,4.28099,4.28099,111,28,455.0,Dollar
-True,2707,4.4,4.35754,4.35754,111,31,455.0,Dollar
-True,1749,4.25,4.34787,4.34787,112,27,455.0,Pound
-True,17123,3.5,3.38993,3.38993,112,30,455.0,Pound
-False,20912,3.86667,3.94579,3.94579,111,17,455.0,Euro
-False,313,4.5,4.51904,4.51904,111,25,455.0,Pound
-True,887,4.05,4.13261,4.13261,111,46,455.0,Pound
-True,357,4.6,4.64267,4.64267,111,14,455.0,Pound
-True,567,4.11,4.21755,4.21755,111,314,455.0,Dollar
-True,947,4.77941,4.77217,4.77217,111,156,455.0,Euro
-False,619,4.39474,4.32129,4.32129,111,278,760.0,Euro
-False,262,4.41304,4.51094,4.51094,110,5,455.0,Dollar
-False,961,4.76923,4.74862,4.74862,110,106,455.0,Dollar
-True,713,4.7,4.70874,4.70874,110,27,455.0,Euro
-True,451,4.36364,4.31695,4.31695,110,9,455.0,Pound
-False,265,4.28846,4.35243,4.35243,111,12,455.0,Dollar
-True,407,3.99545,3.89338,3.89338,110,14,455.0,Euro
-False,343,4.0339,3.92399,3.92399,112,16,455.0,Euro
-False,1944,4.37209,4.20545,4.20545,111,24,455.0,Euro
-False,1721,3.3,2.81412,2.81412,110,10,455.0,Pound
-True,4538,4.05,3.88856,3.88856,110,69,455.0,Pound
-False,773,4.0,3.98464,3.98464,110,30,455.0,Dollar
-True,2233,4.25,4.37856,4.37856,110,19,455.0,Dollar
-True,5129,3.95,3.79986,3.79986,110,11,455.0,Euro
-False,1008,4.5,4.57044,4.57044,109,25,455.0,Pound
-False,14097,3.65,3.58216,3.58216,109,36,455.0,Dollar
-True,10570,4.25,4.25106,4.25106,109,64,455.0,Dollar
-False,1632,4.55,4.55244,4.55244,110,35,455.0,Dollar
-True,1031,4.75,4.71974,4.71974,109,76,455.0,Euro
-False,611,4.32143,4.33183,4.33183,109,60,520.0,Euro
-False,12212,4.5,4.45228,4.45228,109,21,455.0,Dollar
-True,1452,4.08333,4.3017,4.3017,109,47,455.0,Dollar
-True,14046,4.1,4.18812,4.18812,109,10,455.0,Euro
-False,516,4.38462,4.36262,4.36262,109,31,455.0,Pound
-True,501,3.97368,4.08301,4.08301,109,15,455.0,Euro
-False,893,4.3,4.37036,4.37036,109,102,455.0,Dollar
-False,21411,3.4,4.01316,4.01316,109,96,455.0,Dollar
-False,984,4.1,4.05819,4.05819,109,17,455.0,Pound
-False,420,4.15385,4.18855,4.18855,109,10,455.0,Euro
-False,812,4.25,4.28089,4.28089,108,52,455.0,Euro
-True,10673,3.6,3.86602,3.86602,108,78,455.0,Pound
-True,690,4.25,4.22414,4.22414,108,20,455.0,Pound
-False,3343,3.7,3.96834,3.96834,108,5,455.0,Dollar
-False,525,4.3,4.39341,4.39341,108,73,455.0,Pound
-False,367,3.29412,3.3526,3.3526,108,27,455.0,Euro
-True,3773,3.9,4.04581,4.04581,108,14,455.0,Euro
-True,2467,3.95,4.07083,4.07083,108,97,455.0,Euro
-True,1218,4.61765,4.68275,4.68275,109,20,455.0,Pound
-True,500,4.45455,4.44614,4.44614,108,20,455.0,Pound
-True,19201,3.72685,3.72567,3.72567,108,37,455.0,Pound
-True,544,4.4,4.37998,4.37998,108,37,455.0,Dollar
-True,862,4.2,4.07609,4.07609,108,26,455.0,Dollar
-False,571,3.9,3.91908,3.91908,110,25,455.0,Dollar
-False,22090,3.9,3.84121,3.84121,108,11,455.0,Euro
-True,1163,3.65,3.55854,3.55854,108,5,455.0,Dollar
-True,15187,4.35227,4.43359,4.43359,109,9,455.0,Dollar
-False,4502,4.02381,3.95498,3.95498,107,12,455.0,Dollar
-False,3192,3.8,3.77812,3.77812,107,26,455.0,Euro
-True,260,4.04167,4.0366,4.0366,107,11,455.0,Dollar
-False,2573,4.15,4.0814,4.0814,107,79,455.0,Dollar
-True,2528,4.15,4.11108,4.11108,107,61,455.0,Pound
-False,9869,4.3,3.89988,3.89988,107,18,455.0,Pound
-True,11916,4.2619,4.34079,4.34079,107,9,455.0,Euro
-True,725,4.90187,4.86241,4.86241,107,32,455.0,Euro
-True,3538,4.35,4.44774,4.44774,107,88,455.0,Euro
-True,2338,4.53846,4.53014,4.53014,107,46,455.0,Dollar
-True,9724,4.26744,4.1642,4.1642,106,6,455.0,Pound
-True,856,4.5,4.49489,4.49489,106,29,455.0,Euro
-True,1685,4.4902,4.53837,4.53837,106,6,455.0,Euro
-True,934,4.17241,4.1386,4.1386,107,0,455.0,Euro
-False,770,4.3,4.26275,4.26275,106,44,455.0,Pound
-True,790,3.5,3.48356,3.48356,106,18,468.0,Pound
-True,693,3.5,3.44986,3.44986,106,51,700.0,Dollar
-False,623,4.1,3.96322,3.96322,106,32,455.0,Euro
-False,977,4.38889,4.44579,4.44579,106,29,455.0,Pound
-False,474,2.55,2.58963,2.58963,106,33,455.0,Pound
-True,3055,4.25,4.18905,4.18905,105,35,455.0,Dollar
-True,4506,3.4,3.46139,3.46139,105,20,455.0,Pound
-False,286,3.68182,3.63394,3.63394,105,12,455.0,Pound
-True,12176,4.32692,4.49062,4.49062,105,32,455.0,Dollar
-True,1097,4.9697,4.97113,4.97113,105,85,455.0,Dollar
-True,1166,3.9,3.94417,3.94417,105,49,455.0,Euro
-True,4147,4.65,4.56942,4.56942,105,22,455.0,Euro
-False,568,4.875,4.88825,4.88825,105,15,455.0,Dollar
-False,17040,4.22727,4.2959,4.2959,105,17,455.0,Dollar
-False,815,3.9,3.98464,3.98464,105,78,455.0,Pound
-True,10940,2.95,2.92734,2.92734,105,14,455.0,Pound
-False,1828,4.4,4.35462,4.35462,104,162,455.0,Dollar
-False,436,4.25,4.18132,4.18132,104,68,455.0,Euro
-True,2349,4.15,4.0072,4.0072,104,45,455.0,Dollar
-False,470,4.55,4.39637,4.39637,104,36,455.0,Dollar
-True,551,3.85,3.90193,3.90193,104,26,455.0,Euro
-False,525,4.54762,4.52168,4.52168,104,16,455.0,Pound
-False,443,3.6,3.55374,3.55374,104,16,455.0,Dollar
-False,9238,3.9,4.14681,4.14681,104,32,455.0,Dollar
-True,823,4.35,4.28918,4.28918,104,38,462.0,Pound
-False,564,4.15,4.25886,4.25886,104,15,455.0,Pound
-False,777,3.5,3.56487,3.56487,104,28,2880.0,Dollar
-False,511,4.5875,4.60406,4.60406,104,181,455.0,Pound
-False,567,4.39474,4.37307,4.37307,104,29,455.0,Euro
-True,388,3.75,3.8292,3.8292,103,9,455.0,Euro
-True,1767,4.52,4.49754,4.49754,104,53,455.0,Pound
-False,1563,4.23529,4.24404,4.24404,103,62,455.0,Dollar
-True,326,4.6,4.65814,4.65814,103,16,455.0,Pound
-False,6787,3.86842,3.88171,3.88171,103,30,455.0,Euro
-True,15175,3.96667,4.0588,4.0588,103,40,455.0,Dollar
-False,13456,3.95,4.30095,4.30095,103,12,455.0,Pound
-True,501,4.41176,4.45555,4.45555,103,84,455.0,Euro
-True,2085,4.3,4.51104,4.51104,103,27,455.0,Euro
-False,302,4.19231,4.17903,4.17903,103,12,455.0,Dollar
-True,521,4.57447,4.5651,4.5651,103,65,455.0,Pound
-False,586,4.2,4.16083,4.16083,102,25,455.0,Pound
-False,4678,4.3,4.33933,4.33933,103,48,455.0,Pound
-False,516,4.20588,4.13049,4.13049,102,102,455.0,Pound
-True,12204,4.5,4.45244,4.45244,102,44,455.0,Dollar
-True,1047,4.1,4.01243,4.01243,102,26,455.0,Pound
-True,408,4.32143,4.34549,4.34549,102,14,455.0,Euro
-False,741,4.51087,4.59122,4.59122,102,53,455.0,Dollar
-True,313,4.2931,4.28208,4.28208,102,14,1600.0,Dollar
-False,319,4.04,4.07319,4.07319,102,27,455.0,Dollar
-False,6476,4.05,3.84567,3.84567,102,8,455.0,Euro
-False,11145,4.1,4.10575,4.10575,102,30,455.0,Dollar
-False,14389,3.34804,3.48062,3.48062,102,13,455.0,Pound
-True,1099,4.5,4.4619,4.4619,102,34,455.0,Euro
-True,688,4.0,4.0466,4.0466,102,11,455.0,Dollar
-False,2101,4.1,4.16464,4.16464,101,16,455.0,Pound
-False,9242,4.12727,4.16228,4.16228,101,21,455.0,Dollar
-False,3136,4.0,3.79291,3.79291,101,10,455.0,Euro
-False,1809,4.09375,4.09563,4.09563,101,28,455.0,Euro
-True,3826,4.3,4.30727,4.30727,101,30,455.0,Dollar
-False,24943,3.9,3.50415,3.50415,101,69,455.0,Euro
-True,234,4.465,4.40828,4.40828,101,52,455.0,Dollar
-True,418,4.02273,4.06523,4.06523,101,0,800.0,Dollar
-False,8595,4.0,4.00054,4.00054,101,33,455.0,Pound
-True,4339,4.0,4.04879,4.04879,101,25,455.0,Dollar
-False,481,4.36207,4.41853,4.41853,101,29,455.0,Dollar
-True,225,4.66216,4.68818,4.68818,102,17,2400.0,Pound
-True,2346,4.6,4.64194,4.64194,101,39,455.0,Pound
-False,1818,4.2,4.17778,4.17778,100,31,455.0,Pound
-True,1371,4.04839,4.02521,4.02521,100,16,488.0,Dollar
-False,3751,4.45,4.39842,4.39842,100,26,455.0,Pound
-True,2753,4.25,4.33219,4.33219,100,24,1520.0,Pound
-False,944,4.4,4.37184,4.37184,100,48,455.0,Pound
-True,350,4.35938,4.37977,4.37977,100,19,455.0,Euro
-False,421,4.26316,4.32427,4.32427,100,28,455.0,Dollar
-True,1691,4.15,4.2416,4.2416,100,79,455.0,Euro
-False,9218,4.25,4.199,4.199,100,39,455.0,Dollar
-True,590,3.975,3.93949,3.93949,100,30,455.0,Pound
-True,558,3.875,3.83874,3.83874,100,29,455.0,Dollar
-True,688,4.3,4.15572,4.15572,100,35,455.0,Pound
-True,525,4.4,4.36812,4.36812,99,31,455.0,Pound
-False,4689,4.1,4.09988,4.09988,99,177,455.0,Pound
-False,3279,4.1,4.11573,4.11573,99,31,455.0,Euro
-True,744,4.30769,4.24798,4.24798,99,16,455.0,Pound
-False,12330,4.2,4.01173,4.01173,99,34,455.0,Euro
-True,1382,4.6,4.59548,4.59548,99,38,455.0,Dollar
-True,6303,3.96774,4.03299,4.03299,99,27,455.0,Pound
-True,419,4.36842,4.37324,4.37324,99,28,455.0,Pound
-True,11542,3.4,2.44426,2.44426,99,21,455.0,Euro
-True,7867,4.1,4.61318,4.61318,99,45,455.0,Euro
-True,1512,4.5,4.52659,4.52659,99,34,455.0,Euro
-False,18538,4.57576,4.63126,4.63126,106,101,455.0,Euro
-True,452,4.6,4.61084,4.61084,98,14,455.0,Dollar
-True,431,3.05,3.08345,3.08345,98,67,474.0,Pound
-False,2011,4.1,4.07943,4.07943,98,44,455.0,Dollar
-True,393,3.05,3.13228,3.13228,98,17,455.0,Dollar
-True,4226,3.9,4.18947,4.18947,98,8,455.0,Dollar
-True,5996,4.04286,4.07258,4.07258,98,21,455.0,Pound
-True,519,4.65,4.6161,4.6161,98,26,455.0,Dollar
-True,798,3.20455,3.39951,3.39951,100,16,455.0,Pound
-False,253,4.63636,4.66248,4.66248,98,20,1440.0,Dollar
-True,3345,3.75,3.11934,3.11934,98,25,455.0,Euro
-True,295,3.58571,3.58864,3.58864,98,63,455.0,Euro
-True,4989,3.95,3.94931,3.94931,98,16,455.0,Dollar
-True,359,4.22973,4.24834,4.24834,99,108,455.0,Pound
-True,662,4.05,3.94023,3.94023,97,17,455.0,Dollar
-False,2137,3.75,3.60063,3.60063,97,33,455.0,Dollar
-False,329,3.5,3.46153,3.46153,97,18,455.0,Euro
-True,12127,4.4,4.36495,4.36495,97,47,455.0,Pound
-True,5904,4.3,4.30524,4.30524,97,7,455.0,Pound
-True,2985,3.95,4.13284,4.13284,97,11,455.0,Euro
-False,6436,4.25,4.51298,4.51298,97,51,455.0,Pound
-True,565,4.58333,4.64101,4.64101,97,145,455.0,Pound
-True,595,3.8,3.85498,3.85498,97,34,455.0,Dollar
-False,1466,4.35417,4.36629,4.36629,98,25,455.0,Euro
-True,783,4.22222,4.25379,4.25379,97,18,455.0,Pound
-False,431,4.27907,4.27194,4.27194,97,27,455.0,Euro
-False,1773,4.3,4.30134,4.30134,97,11,455.0,Euro
-False,3625,4.35,4.37025,4.37025,97,35,455.0,Pound
-True,4894,4.05,3.72716,3.72716,97,6,455.0,Pound
-True,345,3.95833,4.00534,4.00534,97,53,455.0,Dollar
-False,832,4.5,4.53764,4.53764,97,26,468.0,Pound
-True,5390,3.05,2.94365,2.94365,97,8,455.0,Pound
-True,508,4.6,4.63978,4.63978,97,6,455.0,Dollar
-True,5606,4.2,4.49478,4.49478,97,28,455.0,Pound
-False,10632,4.1,3.97162,3.97162,97,0,700.0,Dollar
-False,338,4.26667,4.26772,4.26772,97,13,455.0,Dollar
-False,415,4.0,3.82684,3.82684,97,8,455.0,Euro
-False,20686,4.8,4.744,4.744,104,12,455.0,Dollar
-True,487,4.75,4.7285,4.7285,96,37,455.0,Pound
-True,341,4.33333,4.35742,4.35742,96,10,455.0,Dollar
-True,1521,4.1,4.19165,4.19165,96,45,455.0,Dollar
-False,1585,3.0,3.03942,3.03942,96,29,455.0,Dollar
-False,4322,4.05,4.03095,4.03095,96,46,455.0,Pound
-False,453,4.65,4.60711,4.60711,97,11,455.0,Pound
-True,4488,4.21429,4.22178,4.22178,96,69,455.0,Pound
-True,443,3.35,3.45416,3.45416,96,20,455.0,Euro
-False,342,4.0,4.04901,4.04901,96,18,455.0,Euro
-True,11547,4.25,4.41355,4.41355,96,32,455.0,Pound
-True,537,3.85,3.81052,3.81052,96,59,455.0,Dollar
-True,256,3.90625,3.88376,3.88376,96,5,455.0,Pound
-False,2103,4.15,4.10625,4.10625,96,22,455.0,Euro
-False,2008,4.14912,4.24982,4.24982,97,10,455.0,Dollar
-True,1792,4.45455,4.38503,4.38503,96,551,462.0,Pound
-False,708,4.3,4.34392,4.34392,96,22,455.0,Euro
-True,520,4.1,3.83008,3.83008,95,14,455.0,Euro
-True,7011,3.8,3.97088,3.97088,95,122,455.0,Dollar
-True,285,4.02778,4.05223,4.05223,95,5,455.0,Pound
-False,4527,4.5,4.47059,4.47059,95,30,455.0,Euro
-True,263,4.35,4.3177,4.3177,95,7,455.0,Dollar
-False,772,4.3,4.19182,4.19182,95,27,455.0,Dollar
-True,439,4.44286,4.56476,4.56476,96,39,1920.0,Euro
-True,2560,3.6,3.68256,3.68256,95,26,455.0,Pound
-False,16640,3.65,3.41953,3.41953,95,74,455.0,Dollar
-False,368,4.09091,4.07659,4.07659,95,140,455.0,Pound
-True,4069,4.34375,4.34438,4.34438,95,41,455.0,Dollar
-False,3732,4.55,4.56176,4.56176,95,44,455.0,Euro
-True,2440,4.28846,4.28301,4.28301,95,8,455.0,Pound
-False,690,4.7,4.70469,4.70469,95,23,455.0,Euro
-True,399,4.07143,3.99083,3.99083,95,45,455.0,Euro
-True,545,4.35,4.34584,4.34584,95,45,455.0,Pound
-True,566,4.16667,4.1161,4.1161,95,25,455.0,Dollar
-True,6621,4.15,4.06703,4.06703,94,9,455.0,Euro
-True,11803,3.4,3.1519,3.1519,94,7,455.0,Euro
-True,1243,4.3,4.32326,4.32326,94,44,455.0,Dollar
-True,3019,4.25,4.4638,4.4638,94,39,455.0,Euro
-False,467,3.25,3.34626,3.34626,94,17,455.0,Euro
-True,2630,4.2,4.15798,4.15798,94,18,455.0,Dollar
-False,21390,4.75,4.71103,4.71103,94,24,520.0,Pound
-True,3190,4.05,4.18867,4.18867,94,130,455.0,Dollar
-True,12546,4.7,4.77751,4.77751,94,33,455.0,Dollar
-False,1522,4.1,4.11092,4.11092,94,50,455.0,Dollar
-False,1297,3.55,3.51888,3.51888,94,11,455.0,Euro
-False,1553,3.88889,3.85267,3.85267,94,11,455.0,Dollar
-False,5374,4.36364,4.35186,4.35186,93,14,455.0,Pound
-True,1676,4.65,4.63447,4.63447,93,21,455.0,Dollar
-False,10532,3.95,3.29695,3.29695,93,26,455.0,Euro
-True,2034,4.4,4.33062,4.33062,93,17,455.0,Pound
-False,962,4.05,3.9997,3.9997,93,18,455.0,Dollar
-False,2661,4.52083,4.5637,4.5637,93,143,455.0,Pound
-True,822,3.95,3.95514,3.95514,93,34,455.0,Pound
-False,522,4.05,3.86986,3.86986,93,29,455.0,Pound
-False,855,4.3,4.26093,4.26093,93,37,468.0,Euro
-True,993,4.75,4.67838,4.67838,93,88,455.0,Dollar
-False,1030,3.75,3.73064,3.73064,93,58,455.0,Pound
-False,13062,3.825,4.15433,4.15433,93,44,455.0,Pound
-True,4543,3.55,3.50858,3.50858,93,10,455.0,Pound
-False,281,3.6,3.4488,3.4488,93,60,520.0,Pound
-False,1447,4.25,4.21572,4.21572,93,16,474.0,Euro
-False,4533,4.1,3.89022,3.89022,92,28,455.0,Pound
-False,715,3.96875,4.06611,4.06611,92,12,455.0,Euro
-True,2234,4.0,3.99698,3.99698,92,31,455.0,Dollar
-True,365,4.54348,4.57629,4.57629,92,34,455.0,Dollar
-True,1618,4.8,4.66202,4.66202,92,43,455.0,Pound
-False,410,4.46154,4.45147,4.45147,92,7,455.0,Euro
-True,4808,4.15,4.21768,4.21768,92,24,455.0,Euro
-True,1504,4.2,4.30955,4.30955,92,132,455.0,Dollar
-False,5977,4.15,3.77429,3.77429,92,20,455.0,Pound
-True,6816,4.5,4.44141,4.44141,92,26,455.0,Dollar
-True,5180,4.33333,4.32222,4.32222,92,95,455.0,Dollar
-True,6687,3.5,3.49719,3.49719,92,16,455.0,Pound
-False,8388,4.00581,4.02743,4.02743,94,32,455.0,Dollar
-False,757,4.6,4.57799,4.57799,91,47,455.0,Euro
-False,280,4.4,4.41995,4.41995,91,32,455.0,Pound
-False,5071,4.5,4.64059,4.64059,91,23,455.0,Pound
-False,657,4.49242,4.46367,4.46367,91,128,455.0,Euro
-True,2707,4.25,4.30225,4.30225,91,19,455.0,Euro
-True,1758,4.25,4.26089,4.26089,91,22,455.0,Pound
-False,1743,4.3,4.34173,4.34173,92,57,455.0,Dollar
-True,4418,4.4,4.39966,4.39966,91,14,455.0,Euro
-False,2151,3.75,3.76465,3.76465,91,27,455.0,Euro
-True,7497,4.15,4.11038,4.11038,91,18,455.0,Pound
-False,10580,4.1,4.08863,4.08863,91,22,455.0,Euro
-False,418,3.81818,4.21374,4.21374,91,43,455.0,Euro
-False,2380,4.03846,4.07623,4.07623,91,24,455.0,Euro
-True,2492,3.9,4.10672,4.10672,92,51,455.0,Dollar
-True,23049,4.2,4.35768,4.35768,91,55,455.0,Pound
-False,3675,4.15,4.2688,4.2688,91,24,455.0,Euro
-False,2597,4.61364,4.63777,4.63777,91,17,455.0,Dollar
-False,23792,3.4,3.56305,3.56305,91,29,455.0,Dollar
-True,781,4.4,4.35287,4.35287,91,26,455.0,Dollar
-False,1404,4.15,3.90464,3.90464,91,35,455.0,Euro
-True,1202,4.51099,4.49074,4.49074,98,67,455.0,Euro
-True,1578,4.55,4.48363,4.48363,90,64,455.0,Pound
-False,7023,3.6,3.74147,3.74147,90,34,455.0,Dollar
-True,305,2.6,2.63768,2.63768,90,29,455.0,Dollar
-True,842,4.15,4.22015,4.22015,90,22,455.0,Pound
-False,482,4.7,4.68817,4.68817,90,37,455.0,Euro
-False,7963,4.26712,4.30346,4.30346,90,17,455.0,Dollar
-False,900,4.45238,4.39862,4.39862,90,14,455.0,Pound
-True,446,3.45,4.15364,4.15364,90,39,700.0,Euro
-True,978,4.95,4.9809,4.9809,90,50,455.0,Pound
-True,325,3.7,3.7323,3.7323,90,26,455.0,Dollar
-False,2864,4.0,3.95886,3.95886,90,11,455.0,Dollar
-True,1913,4.85,4.91189,4.91189,90,92,455.0,Dollar
-False,3241,4.75,4.66004,4.66004,90,48,455.0,Dollar
-False,951,4.45,4.51822,4.51822,90,13,455.0,Pound
-True,2679,3.55,2.52641,2.52641,90,27,455.0,Euro
-False,310,3.5,3.58332,3.58332,90,55,455.0,Euro
-False,2462,3.9,3.62164,3.62164,90,27,468.0,Euro
-False,1960,4.9,4.8774,4.8774,89,52,455.0,Euro
-True,4298,4.25,4.08549,4.08549,89,46,455.0,Dollar
-True,815,3.95,3.97856,3.97856,89,24,455.0,Euro
-False,1527,4.44737,4.50863,4.50863,89,47,455.0,Euro
-True,744,3.8,3.36394,3.36394,89,13,455.0,Pound
-False,9447,4.04545,4.26582,4.26582,89,31,455.0,Euro
-False,506,4.3,4.31315,4.31315,89,42,474.0,Pound
-True,34187,3.5,3.74369,3.74369,89,11,455.0,Euro
-False,1622,3.7,3.79312,3.79312,89,45,455.0,Euro
-True,7966,3.9,3.37345,3.37345,89,14,455.0,Dollar
-True,626,4.0,4.31948,4.31948,89,18,455.0,Euro
-False,1957,4.6,4.82215,4.82215,89,26,455.0,Dollar
-True,4332,4.4,4.40774,4.40774,89,51,455.0,Dollar
-False,9093,3.89286,4.1321,4.1321,89,10,455.0,Euro
-False,3479,2.75,2.98235,2.98235,89,13,455.0,Dollar
-False,1102,3.7,3.58932,3.58932,89,49,455.0,Pound
-True,1536,4.95,4.95256,4.95256,89,17,455.0,Dollar
-False,356,4.3,4.34373,4.34373,89,44,455.0,Dollar
-True,367,3.85,3.83618,3.83618,89,7,455.0,Dollar
-True,1917,3.6,3.83989,3.83989,89,27,481.0,Dollar
-False,9270,3.15,3.12974,3.12974,89,17,455.0,Dollar
-False,15031,4.16667,4.18092,4.18092,88,186,455.0,Pound
-True,4692,4.44737,4.36213,4.36213,88,30,455.0,Euro
-True,4201,4.45,4.35692,4.35692,88,19,455.0,Pound
-False,3484,4.3,4.30908,4.30908,88,32,455.0,Euro
-False,4326,4.7,4.81967,4.81967,88,14,455.0,Dollar
-True,1265,4.2,4.17671,4.17671,88,21,455.0,Pound
-True,1112,3.55,3.41168,3.41168,88,14,455.0,Euro
-False,19381,4.5,4.61526,4.61526,88,28,455.0,Euro
-False,743,4.6,4.56965,4.56965,88,50,455.0,Dollar
-False,2140,4.35,4.50233,4.50233,88,29,455.0,Pound
-False,21917,4.02273,4.09689,4.09689,89,52,455.0,Dollar
-False,6976,3.25,2.7709,2.7709,88,31,455.0,Dollar
-True,271,4.36842,4.35498,4.35498,88,13,455.0,Dollar
-True,282,4.2,4.25866,4.25866,88,8,455.0,Dollar
-True,2786,3.55,3.58432,3.58432,88,14,455.0,Euro
-False,2367,3.95,3.85946,3.85946,88,25,455.0,Dollar
-False,807,4.63889,4.64007,4.64007,87,41,455.0,Dollar
-True,290,4.375,4.374,4.374,87,35,455.0,Dollar
-True,411,4.43284,4.4392,4.4392,87,22,455.0,Euro
-True,1783,4.05,4.03486,4.03486,87,17,455.0,Pound
-True,1361,4.05,4.07662,4.07662,87,35,455.0,Dollar
-True,2696,3.42857,3.41788,3.41788,87,14,455.0,Pound
-False,716,4.7,4.74284,4.74284,87,66,455.0,Pound
-True,748,4.05,4.16681,4.16681,87,20,455.0,Euro
-False,4034,4.0,4.09139,4.09139,87,49,455.0,Pound
-False,3899,3.95,3.85883,3.85883,87,17,455.0,Dollar
-False,3267,4.65,4.29509,4.29509,87,11,455.0,Dollar
-True,2423,3.95,3.62453,3.62453,87,9,455.0,Pound
-True,825,4.65,4.75174,4.75174,87,6,455.0,Euro
-True,478,4.0,3.85969,3.85969,87,44,455.0,Euro
-False,1827,4.43548,4.45434,4.45434,88,45,455.0,Pound
-False,364,4.02778,3.95115,3.95115,88,14,494.0,Euro
-False,749,4.2,4.1452,4.1452,87,25,455.0,Dollar
-False,545,4.25,4.23938,4.23938,87,22,455.0,Dollar
-False,275,4.4,4.38239,4.38239,87,83,455.0,Pound
-True,401,3.2,3.43324,3.43324,87,14,455.0,Euro
-False,4774,4.35,4.35766,4.35766,87,16,455.0,Pound
-True,16790,4.0,3.84766,3.84766,86,22,455.0,Dollar
-True,707,4.8,4.80823,4.80823,86,10,455.0,Dollar
-True,2819,4.1,3.95676,3.95676,86,59,455.0,Dollar
-True,11083,3.85526,3.77968,3.77968,86,19,455.0,Euro
-False,7587,3.55,3.65396,3.65396,86,46,455.0,Euro
-False,28750,3.05,3.3069,3.3069,86,31,455.0,Dollar
-False,2672,4.05,4.15871,4.15871,86,30,455.0,Dollar
-True,322,3.95,3.90424,3.90424,86,23,455.0,Pound
-True,860,4.13636,4.17232,4.17232,86,29,455.0,Euro
-True,4257,3.84906,3.93201,3.93201,86,17,455.0,Dollar
-False,1296,4.025,4.01711,4.01711,86,34,455.0,Euro
-True,1027,4.11111,4.07603,4.07603,86,21,455.0,Pound
-True,411,4.7,4.75028,4.75028,86,29,455.0,Pound
-False,565,3.8,3.8164,3.8164,86,19,455.0,Pound
-True,6108,4.25,4.16524,4.16524,86,45,455.0,Dollar
-False,335,3.65,3.38544,3.38544,86,11,455.0,Euro
-True,511,4.2,4.14785,4.14785,86,14,455.0,Euro
-False,975,4.5,4.49707,4.49707,86,15,455.0,Pound
-False,1435,3.95,4.0675,4.0675,86,59,455.0,Euro
-False,419,4.575,4.56545,4.56545,87,43,455.0,Euro
-False,890,4.25,4.20688,4.20688,85,54,455.0,Pound
-True,2401,4.25,4.23755,4.23755,85,16,455.0,Euro
-True,8922,2.75,2.74957,2.74957,85,12,455.0,Dollar
-True,779,3.9,3.93949,3.93949,85,13,455.0,Dollar
-True,20896,3.89474,4.11666,4.11666,85,22,455.0,Euro
-False,232,4.59412,4.62106,4.62106,88,15,455.0,Dollar
-False,873,4.0,3.89532,3.89532,85,31,455.0,Euro
-True,1312,4.35,4.333,4.333,85,16,455.0,Euro
-True,1179,4.25,4.27884,4.27884,85,51,455.0,Dollar
-False,3535,3.5,3.77282,3.77282,85,19,455.0,Dollar
-True,6352,4.15,4.28249,4.28249,85,21,455.0,Euro
-True,416,4.79167,4.77679,4.77679,85,16,455.0,Dollar
-False,1436,4.75,4.80692,4.80692,85,13,455.0,Pound
-False,18199,3.05,3.32392,3.32392,85,9,455.0,Euro
-True,308,4.5,4.48037,4.48037,85,32,455.0,Pound
-True,6941,2.65,2.85687,2.85687,85,53,455.0,Pound
-False,1185,4.7,4.70169,4.70169,85,17,455.0,Pound
-False,226,4.47222,4.43672,4.43672,85,11,455.0,Pound
-True,1299,3.95,3.9567,3.9567,85,35,455.0,Dollar
-False,493,4.65,4.6542,4.6542,86,13,455.0,Dollar
-False,5021,4.55,4.27814,4.27814,85,6,455.0,Dollar
-True,6406,4.68235,4.69634,4.69634,87,51,455.0,Euro
-True,322,4.4375,4.49498,4.49498,86,27,455.0,Dollar
-False,680,4.66667,4.63632,4.63632,85,44,455.0,Pound
-True,408,4.15,4.16486,4.16486,85,23,455.0,Pound
-False,716,4.47143,4.44134,4.44134,85,37,455.0,Pound
-False,6147,3.4,3.45174,3.45174,84,28,455.0,Dollar
-True,300,4.7,4.66565,4.66565,84,12,455.0,Euro
-False,1286,2.65,2.55554,2.55554,84,8,455.0,Dollar
-False,474,4.46053,4.42412,4.42412,84,17,455.0,Euro
-False,199,3.8209,3.85092,3.85092,84,29,455.0,Dollar
-True,1075,4.47727,4.37376,4.37376,84,50,455.0,Dollar
-False,12215,3.03125,3.01447,3.01447,84,5,455.0,Dollar
-False,4633,4.33333,4.3993,4.3993,84,12,455.0,Dollar
-False,3047,4.32353,4.32646,4.32646,84,112,455.0,Euro
-True,1726,4.45,4.35781,4.35781,84,34,455.0,Euro
-False,340,4.75,4.7137,4.7137,84,23,455.0,Dollar
-False,4155,4.35,4.49134,4.49134,84,29,455.0,Euro
-False,6312,3.55,3.51761,3.51761,84,33,455.0,Pound
-False,6708,3.85556,3.85275,3.85275,86,61,455.0,Pound
-True,11741,4.32692,4.42829,4.42829,84,57,455.0,Euro
-False,698,3.6,3.58949,3.58949,84,45,455.0,Pound
-False,272,4.35,4.36192,4.36192,84,20,455.0,Dollar
-True,1201,4.0,4.01228,4.01228,84,17,455.0,Dollar
-True,363,4.1875,4.14823,4.14823,84,15,455.0,Dollar
-False,6906,4.16667,4.16843,4.16843,84,458,455.0,Pound
-False,484,3.33333,3.2593,3.2593,84,34,455.0,Euro
-True,3088,4.15,4.23555,4.23555,84,22,468.0,Euro
-True,2727,3.7381,3.73927,3.73927,84,47,455.0,Pound
-False,343,4.31482,4.33653,4.33653,83,26,455.0,Euro
-False,235,3.61111,3.65181,3.65181,83,17,455.0,Euro
-False,716,4.55,4.55493,4.55493,83,12,455.0,Dollar
-True,558,3.75,3.66886,3.66886,83,27,468.0,Euro
-True,882,4.2,4.15429,4.15429,83,44,455.0,Dollar
-True,2539,3.75,3.7575,3.7575,83,51,455.0,Dollar
-True,336,4.25,4.49873,4.49873,84,28,455.0,Dollar
-True,619,4.25,4.22313,4.22313,83,16,455.0,Euro
-False,804,3.95,4.0003,4.0003,84,28,455.0,Euro
-True,20217,4.28571,4.25612,4.25612,83,14,520.0,Dollar
-False,402,4.14286,4.05392,4.05392,83,24,455.0,Pound
-False,1264,4.65,4.65834,4.65834,83,18,455.0,Pound
-False,230,4.33333,4.33473,4.33473,83,8,455.0,Dollar
-False,915,4.15278,3.9309,3.9309,83,29,455.0,Pound
-True,379,4.15,4.13428,4.13428,83,49,455.0,Euro
-True,257,4.43902,4.49462,4.49462,83,15,455.0,Euro
-True,489,4.02273,4.0694,4.0694,84,17,455.0,Euro
-False,9714,4.32353,4.44148,4.44148,83,212,455.0,Dollar
-True,1496,3.55,3.5554,3.5554,83,26,455.0,Dollar
-False,20975,4.31452,4.32282,4.32282,83,12,455.0,Euro
-True,1890,4.35,4.37973,4.37973,82,22,455.0,Dollar
-False,442,4.5,4.56141,4.56141,82,40,455.0,Euro
-False,373,3.9,3.86993,3.86993,82,25,455.0,Pound
-True,373,4.57812,4.5679,4.5679,82,24,455.0,Dollar
-True,666,4.91525,4.90006,4.90006,82,62,455.0,Euro
-True,15284,3.88415,3.85431,3.85431,82,13,455.0,Euro
-False,870,3.6,3.42124,3.42124,82,16,455.0,Euro
-False,2734,3.9,3.88523,3.88523,82,27,455.0,Euro
-False,3698,4.2,3.94032,3.94032,82,34,455.0,Pound
-True,593,4.45,4.46682,4.46682,82,6,455.0,Dollar
-True,526,3.9375,4.04758,4.04758,82,0,455.0,Dollar
-False,8694,4.04878,4.08129,4.08129,82,15,455.0,Pound
-True,415,3.55,3.42755,3.42755,82,15,455.0,Dollar
-True,4140,4.15,4.15827,4.15827,82,24,455.0,Euro
-True,15488,4.05,3.88058,3.88058,88,16,455.0,Pound
-True,843,4.19444,4.17347,4.17347,82,32,455.0,Euro
-False,14592,4.08333,4.11475,4.11475,82,30,455.0,Dollar
-False,675,4.4,4.42767,4.42767,82,58,455.0,Dollar
-False,875,3.55,3.5216,3.5216,82,8,700.0,Euro
-True,1750,4.55,4.52778,4.52778,82,92,455.0,Dollar
-True,2674,4.05,4.25583,4.25583,82,24,455.0,Dollar
-True,3036,4.4,4.34649,4.34649,82,42,455.0,Euro
-False,488,3.69231,3.71599,3.71599,82,69,455.0,Pound
-True,1748,4.4,4.44612,4.44612,82,13,455.0,Pound
-True,13470,4.30488,4.39685,4.39685,82,32,455.0,Dollar
-True,363,4.1,4.11809,4.11809,82,47,455.0,Dollar
-False,1467,4.52778,4.50588,4.50588,81,95,455.0,Pound
-True,975,3.6,3.52429,3.52429,81,13,455.0,Pound
-True,3083,3.9,3.86076,3.86076,81,48,455.0,Dollar
-False,619,4.0,3.90928,3.90928,81,12,455.0,Dollar
-True,5881,4.05,3.9872,3.9872,81,15,455.0,Euro
-True,9649,3.9,3.85532,3.85532,81,25,455.0,Euro
-True,1832,4.55,4.55,4.55,81,92,455.0,Euro
-True,314,3.83333,3.78322,3.78322,81,13,455.0,Dollar
-False,968,3.95,3.98295,3.98295,81,21,455.0,Euro
-False,177,4.35,4.31268,4.31268,81,38,455.0,Euro
-True,11357,3.95,4.1861,4.1861,81,36,455.0,Euro
-True,329,4.2,4.19676,4.19676,80,52,455.0,Pound
-True,792,4.95,4.94707,4.94707,80,20,455.0,Dollar
-False,1457,4.0,4.09006,4.09006,80,61,455.0,Euro
-True,436,3.5,3.38212,3.38212,80,6,455.0,Dollar
-False,27260,3.75,3.53242,3.53242,80,16,455.0,Euro
-False,398,4.34375,4.29791,4.29791,80,88,455.0,Euro
-True,168,4.05263,4.10215,4.10215,80,5,455.0,Euro
-True,2092,4.51562,4.58912,4.58912,80,25,455.0,Pound
-True,425,3.75,3.83541,3.83541,83,0,455.0,Dollar
-False,19076,4.30625,4.3788,4.3788,81,40,455.0,Euro
-False,560,3.45,3.26682,3.26682,80,11,800.0,Dollar
-False,482,4.5,4.48565,4.48565,80,23,455.0,Euro
-True,6476,3.8,3.63394,3.63394,80,45,488.0,Pound
-True,6132,4.05,4.46142,4.46142,80,45,455.0,Dollar
-True,2650,4.5,4.53905,4.53905,80,25,455.0,Pound
-True,583,3.55,3.55997,3.55997,80,30,455.0,Pound
-True,458,4.625,4.65247,4.65247,80,34,455.0,Euro
-False,5494,4.15,4.36289,4.36289,80,19,700.0,Dollar
-True,184,4.54167,4.54334,4.54334,80,34,455.0,Euro
-True,345,4.29412,4.28911,4.28911,80,18,700.0,Dollar
-True,1019,4.3,4.31809,4.31809,80,29,455.0,Euro
-True,3672,4.15,4.18831,4.18831,80,11,455.0,Euro
-True,11090,4.48148,4.54226,4.54226,79,22,455.0,Pound
-False,1387,3.7,3.60008,3.60008,79,15,455.0,Euro
-True,694,4.25,4.19881,4.19881,79,26,455.0,Dollar
-True,1148,3.85,3.89928,3.89928,79,10,455.0,Euro
-False,292,4.45652,4.44845,4.44845,79,44,455.0,Euro
-False,211,4.21875,4.2435,4.2435,80,12,455.0,Pound
-False,1828,4.2,4.2015,4.2015,79,9,455.0,Dollar
-False,9498,4.05,4.14224,4.14224,79,63,455.0,Dollar
-True,191,4.32353,4.33431,4.33431,79,8,455.0,Pound
-True,3488,4.05,3.73638,3.73638,79,21,455.0,Euro
-True,19263,3.84615,3.66961,3.66961,79,6,455.0,Dollar
-False,584,3.65,3.71297,3.71297,79,22,455.0,Euro
-True,833,4.6,4.26534,4.26534,80,9,455.0,Euro
-False,3248,4.15,4.18004,4.18004,79,9,455.0,Dollar
-False,2918,3.8,3.84712,3.84712,79,10,455.0,Pound
-False,926,4.05,4.02003,4.02003,79,17,455.0,Dollar
-True,5055,4.65,4.53944,4.53944,79,49,455.0,Dollar
-True,736,3.7,3.67413,3.67413,79,37,455.0,Euro
-False,566,4.05,4.06401,4.06401,79,48,455.0,Euro
-False,236,4.5,4.45709,4.45709,80,36,455.0,Euro
-False,18061,4.0,4.20649,4.20649,79,6,455.0,Pound
-False,1795,3.9,3.70254,3.70254,79,22,455.0,Dollar
-False,405,3.45,3.49326,3.49326,79,30,455.0,Dollar
-False,2736,4.25,4.28674,4.28674,78,36,455.0,Dollar
-True,1171,3.75,3.69554,3.69554,79,16,455.0,Euro
-False,778,3.85,4.02068,4.02068,78,8,455.0,Dollar
-True,278,4.15,4.18222,4.18222,78,37,455.0,Euro
-True,2722,3.7,3.60704,3.60704,78,55,455.0,Dollar
-True,206,3.91667,3.92848,3.92848,78,27,455.0,Pound
-False,2261,4.11818,4.14664,4.14664,78,9,455.0,Euro
-True,324,4.47959,4.49511,4.49511,78,21,455.0,Euro
-False,435,4.0,3.95549,3.95549,78,20,455.0,Euro
-True,404,3.95,3.8378,3.8378,78,17,455.0,Pound
-True,1441,4.1,4.16453,4.16453,78,35,455.0,Euro
-False,511,4.05,4.17979,4.17979,78,28,455.0,Euro
-True,1026,4.4,4.42971,4.42971,79,9,455.0,Dollar
-True,17052,4.15,4.07501,4.07501,78,54,455.0,Euro
-False,1310,4.55,4.55457,4.55457,78,25,455.0,Pound
-True,11298,3.3,3.03258,3.03258,78,33,455.0,Euro
-False,360,4.33333,4.23595,4.23595,78,33,3200.0,Pound
-True,4295,4.1,4.05723,4.05723,78,103,455.0,Pound
-True,3828,4.25,4.39,4.39,78,39,455.0,Euro
-True,261,4.0625,4.03418,4.03418,79,9,455.0,Pound
-False,211,3.2,3.14682,3.14682,78,5,455.0,Dollar
-False,21152,3.35,3.42193,3.42193,78,7,455.0,Euro
-True,6259,3.65,3.74246,3.74246,78,44,455.0,Dollar
-False,334,3.65,3.76793,3.76793,78,34,455.0,Dollar
-True,691,4.2,4.11684,4.11684,78,55,520.0,Euro
-False,8357,4.55,4.56077,4.56077,78,97,455.0,Pound
-True,5529,4.34091,4.29998,4.29998,78,79,455.0,Dollar
-True,10099,4.07051,4.13718,4.13718,78,20,455.0,Dollar
-True,307,4.02941,3.9376,3.9376,77,0,455.0,Pound
-True,495,3.76923,3.80813,3.80813,77,116,455.0,Pound
-False,3777,4.1,4.20088,4.20088,77,18,455.0,Euro
-False,237,3.55,3.68655,3.68655,78,7,455.0,Pound
-False,1747,4.7,4.6648,4.6648,77,5,455.0,Dollar
-False,1104,4.05844,4.08298,4.08298,77,13,455.0,Pound
-False,622,4.55,4.48789,4.48789,77,8,455.0,Euro
-True,7641,3.35,3.24082,3.24082,77,19,455.0,Dollar
-False,353,4.05882,4.06389,4.06389,77,270,481.0,Dollar
-True,5409,4.45,4.52068,4.52068,77,10,455.0,Pound
-False,1189,4.4,4.40374,4.40374,77,20,455.0,Dollar
-True,1272,4.35,4.41547,4.41547,77,21,455.0,Dollar
-True,412,3.76923,3.67463,3.67463,77,17,455.0,Pound
-False,361,4.25,4.32147,4.32147,77,31,455.0,Euro
-True,4271,4.10417,4.04312,4.04312,77,36,455.0,Euro
-True,341,4.72917,4.64714,4.64714,77,0,3200.0,Euro
-True,7836,3.95,3.87426,3.87426,77,77,455.0,Pound
-True,796,4.2,4.16648,4.16648,77,12,455.0,Dollar
-False,1364,4.0,3.97204,3.97204,77,18,455.0,Euro
-True,1692,4.0,4.00095,4.00095,77,48,455.0,Dollar
-True,2360,3.7,3.6354,3.6354,77,15,455.0,Dollar
-True,226,4.35714,4.34502,4.34502,78,17,455.0,Dollar
-False,5295,4.55882,4.56117,4.56117,78,17,455.0,Dollar
-True,1559,4.3,4.2702,4.2702,77,25,455.0,Euro
-False,1204,4.4,4.35003,4.35003,77,27,455.0,Dollar
-True,494,4.5,4.5212,4.5212,77,5,455.0,Euro
-True,286,4.18421,4.19382,4.19382,77,13,455.0,Euro
-True,679,4.40909,4.40026,4.40026,76,249,455.0,Dollar
-False,1820,4.8,4.74149,4.74149,75,53,455.0,Pound
-True,6492,4.25,4.03881,4.03881,76,45,455.0,Euro
-False,300,4.3,4.28482,4.28482,76,12,455.0,Euro
-True,478,3.95,3.92189,3.92189,76,19,468.0,Dollar
-False,273,4.15,4.03539,4.03539,76,46,455.0,Dollar
-False,256,4.11111,4.15982,4.15982,76,10,455.0,Euro
-True,245,4.63043,4.60185,4.60185,77,21,455.0,Euro
-True,11131,4.55,4.50304,4.50304,76,26,455.0,Dollar
-False,398,4.05,4.21869,4.21869,76,49,455.0,Pound
-False,590,3.75,3.60416,3.60416,76,43,468.0,Euro
-False,2709,4.0,3.994,3.994,76,25,455.0,Pound
-True,299,4.33333,4.38087,4.38087,76,20,455.0,Dollar
-False,7026,4.33036,4.33819,4.33819,76,26,455.0,Dollar
-False,2832,4.25,4.32885,4.32885,76,52,455.0,Pound
-False,3285,3.85,3.74719,3.74719,76,16,455.0,Dollar
-False,887,3.95,3.94302,3.94302,75,47,455.0,Dollar
-True,9448,4.35417,4.36784,4.36784,75,31,455.0,Euro
-False,422,4.2,4.26282,4.26282,75,27,455.0,Dollar
-False,827,4.2,4.15315,4.15315,76,44,455.0,Euro
-True,1838,4.45,4.4086,4.4086,75,92,455.0,Euro
-False,141,4.0,4.03561,4.03561,75,52,455.0,Dollar
-True,364,3.95,4.06771,4.06771,75,9,455.0,Dollar
-True,13917,4.36275,4.36576,4.36576,75,9,455.0,Euro
-True,1586,3.9,3.99918,3.99918,75,19,455.0,Pound
-False,3198,4.0,4.15939,4.15939,75,30,455.0,Pound
-True,12718,4.58065,4.51405,4.51405,75,63,455.0,Pound
-True,4203,4.37879,4.06645,4.06645,75,27,455.0,Pound
-False,220,3.75,3.75237,3.75237,75,13,455.0,Euro
-False,354,2.75,2.71519,2.71519,75,43,455.0,Dollar
-True,359,4.3,4.26238,4.26238,75,41,455.0,Dollar
-False,5174,3.65,3.5339,3.5339,75,18,455.0,Dollar
-False,314,3.35,3.18663,3.18663,75,31,455.0,Pound
-True,291,4.84615,4.86332,4.86332,76,22,462.0,Euro
-False,440,3.95,3.98103,3.98103,75,19,455.0,Dollar
-True,23060,4.3,4.54611,4.54611,75,64,455.0,Euro
-True,1734,3.9,3.95395,3.95395,75,10,455.0,Pound
-False,965,4.35,4.38618,4.38618,75,32,455.0,Euro
-False,3212,4.5,4.46668,4.46668,75,24,455.0,Dollar
-False,9064,4.05,4.09384,4.09384,75,65,455.0,Pound
-True,5728,3.6,3.62947,3.62947,75,16,455.0,Dollar
-True,566,4.79167,4.79325,4.79325,75,68,455.0,Euro
-False,363,3.5,3.46374,3.46374,74,7,455.0,Euro
-True,2530,4.75,4.6633,4.6633,74,47,455.0,Dollar
-True,412,4.4537,4.46512,4.46512,75,164,455.0,Dollar
-False,253,4.1,4.04269,4.04269,74,17,455.0,Euro
-False,346,4.58784,4.5063,4.5063,75,11,455.0,Pound
-True,4115,3.85,3.8198,3.8198,74,39,455.0,Dollar
-True,3231,3.8,3.62052,3.62052,74,11,455.0,Euro
-True,4333,3.55,3.53518,3.53518,74,12,455.0,Pound
-True,274,3.91667,4.0071,4.0071,74,43,455.0,Dollar
-True,2995,4.9,4.88591,4.88591,74,30,455.0,Dollar
-True,1699,4.46667,4.55751,4.55751,75,49,455.0,Pound
-False,4156,4.2,3.94456,3.94456,74,7,455.0,Pound
-False,218,4.54167,4.52583,4.52583,75,26,455.0,Pound
-True,1026,4.175,4.20691,4.20691,76,15,455.0,Dollar
-False,5723,3.6,3.68102,3.68102,74,14,455.0,Dollar
-True,673,4.4,4.33125,4.33125,74,43,455.0,Euro
-False,6330,4.15,4.13431,4.13431,74,24,455.0,Euro
-True,241,4.3,4.33381,4.33381,74,13,455.0,Euro
-True,10991,3.84091,3.80016,3.80016,74,11,455.0,Pound
-True,217,4.35,4.34493,4.34493,74,26,455.0,Euro
-True,13244,4.07692,4.32866,4.32866,74,36,455.0,Pound
-True,2410,3.55,3.47115,3.47115,73,6,468.0,Euro
-False,3719,4.1,3.92037,3.92037,73,23,455.0,Dollar
-False,547,4.65068,4.55979,4.55979,74,77,455.0,Pound
-False,7992,4.15116,4.26763,4.26763,73,23,455.0,Dollar
-False,5560,3.2,3.09543,3.09543,73,7,455.0,Pound
-False,1265,3.9,3.80626,3.80626,73,18,455.0,Euro
-False,275,4.1,3.99914,3.99914,73,20,455.0,Dollar
-False,2094,4.35,4.39671,4.39671,73,66,455.0,Pound
-False,6200,3.9,4.1454,4.1454,73,16,455.0,Dollar
-False,5432,4.65,4.7941,4.7941,74,52,455.0,Euro
-True,649,4.8,4.8056,4.8056,73,47,455.0,Euro
-True,1359,4.5,4.47732,4.47732,73,8,455.0,Dollar
-False,383,4.27083,4.20659,4.20659,75,19,455.0,Pound
-True,1509,3.7,3.67647,3.67647,73,41,455.0,Dollar
-False,22173,4.04795,4.15268,4.15268,73,46,455.0,Euro
-False,445,3.75,3.7977,3.7977,73,49,520.0,Pound
-True,621,3.5,3.7459,3.7459,73,0,455.0,Pound
-True,7663,3.35,3.19614,3.19614,73,59,455.0,Euro
-True,3927,2.92308,2.93964,2.93964,73,46,455.0,Dollar
-True,1618,4.78125,4.76165,4.76165,74,40,455.0,Dollar
-True,217,3.95,3.9616,3.9616,73,8,468.0,Euro
-False,2665,3.45,3.36086,3.36086,73,12,455.0,Euro
-False,645,3.8,3.73286,3.73286,72,31,455.0,Pound
-True,489,4.16667,4.10347,4.10347,72,20,455.0,Dollar
-True,1996,4.15,4.07474,4.07474,72,129,455.0,Euro
-False,382,4.2,4.18647,4.18647,72,28,455.0,Dollar
-False,3749,3.8,3.26728,3.26728,72,25,455.0,Dollar
-False,505,4.3,4.35157,4.35157,72,45,455.0,Euro
-False,2753,4.6,4.61709,4.61709,72,17,455.0,Pound
-False,484,4.25,4.21402,4.21402,72,75,455.0,Pound
-False,809,4.35,4.37385,4.37385,72,10,455.0,Pound
-True,1418,4.45,4.47633,4.47633,72,59,455.0,Euro
-False,342,3.88462,3.86749,3.86749,72,20,455.0,Euro
-True,5103,3.96875,4.02106,4.02106,72,20,455.0,Dollar
-False,291,4.4,4.39052,4.39052,72,46,455.0,Pound
-True,15030,3.91667,3.95674,3.95674,72,60,455.0,Dollar
-False,977,4.25,4.18521,4.18521,72,44,455.0,Pound
-False,266,2.65,2.56658,2.56658,72,7,455.0,Pound
-True,631,4.6,4.56576,4.56576,72,42,455.0,Pound
-False,1966,4.25,4.20267,4.20267,72,69,455.0,Euro
-True,4462,4.5,4.5493,4.5493,72,177,455.0,Pound
-False,21595,4.04861,4.05731,4.05731,74,11,455.0,Dollar
-False,624,4.55,4.5653,4.5653,72,42,455.0,Euro
-False,791,4.4,4.37448,4.37448,72,24,455.0,Pound
-False,3628,3.75,3.8214,3.8214,72,40,455.0,Euro
-False,1246,4.3,4.55799,4.55799,72,13,455.0,Dollar
-True,2973,3.7,3.66887,3.66887,72,33,455.0,Dollar
-False,540,4.5,4.49234,4.49234,72,27,468.0,Euro
-False,1870,4.7,4.69206,4.69206,71,42,455.0,Pound
-True,2148,4.75,4.73907,4.73907,71,31,455.0,Dollar
-True,150,4.05,4.13902,4.13902,71,37,455.0,Pound
-True,2406,4.0,4.15762,4.15762,71,39,455.0,Pound
-False,28530,4.08333,4.019,4.019,71,37,455.0,Euro
-False,1252,4.05,3.92022,3.92022,71,12,455.0,Euro
-True,11339,4.25,4.31068,4.31068,71,29,455.0,Euro
-True,508,5.0,5.0,5.0,71,26,455.0,Euro
-True,646,4.4,4.38271,4.38271,71,22,455.0,Pound
-False,853,4.56667,4.55983,4.55983,71,22,455.0,Euro
-False,401,4.2,4.22954,4.22954,71,37,455.0,Euro
-True,8658,3.6,2.59673,2.59673,71,53,455.0,Pound
-True,775,4.2,4.19585,4.19585,71,12,520.0,Dollar
-True,14880,3.9898,4.0864,4.0864,74,31,455.0,Pound
-True,4456,4.15,4.39348,4.39348,71,24,455.0,Pound
-True,169,4.04,4.00723,4.00723,71,11,455.0,Euro
-False,739,4.65,4.65278,4.65278,71,92,455.0,Pound
-True,1262,4.15,4.31077,4.31077,71,55,455.0,Euro
-False,361,3.65,3.63526,3.63526,71,11,455.0,Pound
-True,418,4.175,4.14566,4.14566,71,35,455.0,Pound
-True,378,3.95,3.89287,3.89287,71,57,455.0,Pound
-False,5332,3.75,3.67238,3.67238,71,22,455.0,Pound
-True,1792,3.4,3.25434,3.25434,71,92,455.0,Dollar
-True,450,4.85,4.86006,4.86006,71,12,455.0,Pound
-False,771,3.9,3.90571,3.90571,70,25,455.0,Pound
-True,516,4.65,4.63702,4.63702,70,32,455.0,Euro
-False,246,4.0,3.94708,3.94708,70,9,455.0,Pound
-False,202,3.40909,3.48867,3.48867,71,26,455.0,Pound
-True,243,4.12069,4.02843,4.02843,70,13,455.0,Dollar
-False,5152,4.3,4.30757,4.30757,70,8,455.0,Dollar
-True,9237,4.42,4.34906,4.34906,70,27,455.0,Dollar
-False,649,3.6,3.584,3.584,70,34,455.0,Pound
-False,389,4.35,4.33573,4.33573,70,26,455.0,Euro
-True,1180,4.09091,3.76738,3.76738,70,0,520.0,Euro
-True,1429,3.55,3.51249,3.51249,70,67,455.0,Dollar
-True,2685,4.5,4.48456,4.48456,70,47,455.0,Euro
-True,1881,4.4,4.33552,4.33552,70,28,455.0,Euro
-False,165,4.47368,4.48045,4.48045,70,16,455.0,Pound
-False,766,3.45,3.4581,3.4581,70,15,455.0,Euro
-True,1737,4.1,4.36671,4.36671,70,92,455.0,Euro
-True,395,4.25,4.26756,4.26756,70,17,455.0,Dollar
-False,370,3.95,3.9247,3.9247,70,0,455.0,Pound
-True,457,4.05,4.04697,4.04697,70,29,455.0,Euro
-False,451,4.35,4.29975,4.29975,71,6,455.0,Pound
-False,469,4.15,4.04647,4.04647,70,33,455.0,Euro
-False,1555,4.4,4.44788,4.44788,70,56,455.0,Pound
-False,5025,3.75,3.71628,3.71628,70,19,455.0,Dollar
-True,6023,4.15,4.22797,4.22797,70,9,455.0,Dollar
-False,4045,4.27273,4.39913,4.39913,70,28,455.0,Euro
-False,3662,4.3,4.27386,4.27386,69,37,455.0,Pound
-False,124,3.95,3.88146,3.88146,69,27,455.0,Dollar
-True,4710,4.40476,4.43461,4.43461,69,28,455.0,Dollar
-False,386,3.79167,3.70504,3.70504,69,26,455.0,Pound
-True,598,4.41026,4.37119,4.37119,69,61,455.0,Dollar
-True,507,4.9,4.8899,4.8899,69,48,455.0,Dollar
-False,442,4.4,4.39906,4.39906,69,14,455.0,Pound
-False,22758,4.09524,4.16343,4.16343,69,9,455.0,Pound
-False,8726,3.9,3.65006,3.65006,69,22,455.0,Pound
-False,9414,3.55,3.856,3.856,69,10,455.0,Dollar
-False,1561,4.13636,3.73263,3.73263,69,106,455.0,Pound
-False,391,4.75,4.70549,4.70549,69,46,455.0,Pound
-False,466,4.6,4.53976,4.53976,69,34,455.0,Dollar
-False,851,4.75,4.63967,4.63967,69,40,455.0,Dollar
-True,201,4.1,3.86335,3.86335,68,14,455.0,Dollar
-False,201,4.11765,4.10834,4.10834,68,30,455.0,Euro
-True,213,4.3,4.3431,4.3431,68,5,468.0,Euro
-True,772,4.75,4.79864,4.79864,68,35,455.0,Euro
-True,1266,4.4,4.5021,4.5021,68,24,455.0,Euro
-True,960,3.65,3.74481,3.74481,68,34,455.0,Dollar
-True,2164,3.9,4.16316,4.16316,68,55,455.0,Euro
-False,6031,4.75,4.7367,4.7367,68,24,455.0,Pound
-True,476,4.2,4.19848,4.19848,68,16,455.0,Dollar
-False,309,4.05,3.98958,3.98958,68,5,455.0,Pound
-False,1476,4.0,3.91207,3.91207,68,14,455.0,Dollar
-True,300,4.15,4.17653,4.17653,68,26,455.0,Euro
-True,1286,4.3,4.30621,4.30621,68,83,455.0,Euro
-False,1680,4.65,4.66266,4.66266,68,92,455.0,Euro
-True,440,4.15,4.17876,4.17876,68,39,455.0,Pound
-True,2902,4.25,4.2588,4.2588,68,18,455.0,Euro
-False,2896,4.95,4.94385,4.94385,68,13,455.0,Dollar
-False,2765,3.75,3.66918,3.66918,68,37,455.0,Pound
-False,3590,4.1,3.98705,3.98705,68,63,455.0,Dollar
-False,487,3.9,3.98609,3.98609,69,82,455.0,Pound
-False,8076,2.95,2.59809,2.59809,68,9,455.0,Dollar
-False,231,4.60345,4.56834,4.56834,68,32,455.0,Pound
-True,4324,3.7,3.72104,3.72104,68,12,455.0,Euro
-False,268,4.25,4.31141,4.31141,68,12,455.0,Dollar
-False,320,4.54545,4.53293,4.53293,68,26,455.0,Dollar
-False,964,4.45,4.37317,4.37317,68,13,455.0,Dollar
-False,231,4.53676,4.53052,4.53052,69,77,455.0,Dollar
-False,397,3.2,3.25462,3.25462,69,41,455.0,Pound
-False,1756,4.5,4.47709,4.47709,68,316,455.0,Dollar
-False,388,3.6,3.85137,3.85137,68,46,455.0,Pound
-False,564,3.15,2.98522,2.98522,67,14,455.0,Pound
-False,304,3.8,3.88258,3.88258,67,19,455.0,Dollar
-True,225,3.34615,3.42565,3.42565,67,19,720.0,Euro
-False,314,3.3,3.28707,3.28707,67,38,455.0,Euro
-True,230,4.44118,4.42763,4.42763,67,17,455.0,Pound
-True,1437,4.85,4.71516,4.71516,67,15,455.0,Pound
-False,8487,3.7,3.78925,3.78925,67,8,455.0,Euro
-False,524,4.4,4.30691,4.30691,67,48,455.0,Dollar
-False,11517,4.46591,4.28121,4.28121,68,21,455.0,Pound
-False,136,4.88235,4.87363,4.87363,67,16,3200.0,Pound
-False,527,4.65217,4.63052,4.63052,67,31,455.0,Pound
-True,842,3.9,3.95446,3.95446,67,15,455.0,Euro
-False,323,4.7,4.66414,4.66414,67,11,455.0,Dollar
-True,2632,4.25,4.38083,4.38083,67,10,455.0,Pound
-False,379,3.95,3.96059,3.96059,67,13,455.0,Euro
-True,229,4.73077,4.79327,4.79327,68,62,455.0,Pound
-False,185,3.57143,3.70582,3.70582,67,16,455.0,Pound
-False,384,4.8,4.83832,4.83832,67,26,455.0,Pound
-True,5933,4.45,4.47096,4.47096,67,9,455.0,Pound
-True,535,3.7,3.66975,3.66975,67,148,455.0,Pound
-False,176,3.76923,3.74474,3.74474,67,18,455.0,Euro
-True,3692,4.4,4.35223,4.35223,67,59,455.0,Euro
-False,2983,4.4,4.38972,4.38972,67,25,455.0,Pound
-False,3515,4.45,4.3505,4.3505,67,20,455.0,Euro
-True,660,4.25,4.23637,4.23637,67,33,455.0,Euro
-True,9765,3.65,3.94886,3.94886,67,17,455.0,Euro
-False,371,4.75,4.71941,4.71941,67,47,455.0,Euro
-False,1111,4.3,4.34361,4.34361,66,16,455.0,Dollar
-False,1210,4.52,4.606,4.606,66,52,455.0,Pound
-False,4755,4.05,3.97858,3.97858,66,14,455.0,Dollar
-True,2014,3.6,3.27946,3.27946,66,19,455.0,Pound
-False,7643,4.4,4.33914,4.33914,66,47,455.0,Dollar
-False,307,4.25,4.36521,4.36521,66,26,455.0,Dollar
-False,6309,2.05,2.07751,2.07751,66,7,455.0,Euro
-False,759,4.35,4.3355,4.3355,67,34,455.0,Euro
-True,1293,4.3,4.36741,4.36741,66,12,455.0,Pound
-False,1603,4.05,3.97519,3.97519,66,15,455.0,Pound
-False,2779,3.9,3.69716,3.69716,66,57,455.0,Pound
-True,1107,3.9,4.14199,4.14199,66,19,455.0,Euro
-True,9888,3.15,3.47573,3.47573,66,32,455.0,Euro
-True,1819,4.35,4.11281,4.11281,66,32,455.0,Euro
-True,1638,3.85,3.76019,3.76019,66,75,455.0,Dollar
-True,753,4.0,3.96801,3.96801,66,158,462.0,Dollar
-True,2173,4.25,4.01714,4.01714,66,38,455.0,Dollar
-True,285,4.3,4.37658,4.37658,66,8,455.0,Euro
-True,2127,3.9,3.93373,3.93373,66,42,455.0,Euro
-False,178,4.08333,4.10801,4.10801,66,36,455.0,Pound
-False,4161,3.65,3.55426,3.55426,66,5,455.0,Pound
-True,424,4.3,4.37493,4.37493,66,36,455.0,Dollar
-False,186,3.5,3.38361,3.38361,66,33,455.0,Dollar
-True,225,4.33333,4.29483,4.29483,66,13,455.0,Pound
-True,317,4.45,4.42744,4.42744,65,90,455.0,Pound
-True,208,4.22115,4.18274,4.18274,65,16,455.0,Dollar
-False,1996,4.4,4.54481,4.54481,65,14,455.0,Dollar
-True,314,4.33019,4.34325,4.34325,65,60,455.0,Euro
-True,4549,3.85,3.68515,3.68515,65,39,455.0,Dollar
-False,340,3.85,3.93855,3.93855,65,29,455.0,Dollar
-True,383,4.43333,4.36921,4.36921,66,5,455.0,Pound
-False,376,3.8,3.71413,3.71413,65,11,455.0,Pound
-True,1528,4.5,4.49468,4.49468,65,21,455.0,Pound
-False,5232,3.75,3.58861,3.58861,65,23,455.0,Euro
-False,1002,3.35,3.29116,3.29116,65,29,455.0,Pound
-False,286,4.46154,4.38251,4.38251,65,40,1920.0,Pound
-False,2269,4.4,4.32707,4.32707,65,16,455.0,Dollar
-False,2316,4.3,4.23373,4.23373,65,52,455.0,Euro
-False,7273,4.15,4.44866,4.44866,65,32,455.0,Dollar
-False,220,4.41429,4.42572,4.42572,66,16,455.0,Pound
-False,405,4.36364,4.33559,4.33559,65,11,455.0,Dollar
-True,4333,4.0,3.92897,3.92897,66,11,455.0,Pound
-False,258,4.2,4.26406,4.26406,65,45,494.0,Pound
-True,917,4.45,4.44978,4.44978,65,28,455.0,Dollar
-True,305,4.04545,4.14605,4.14605,65,14,455.0,Euro
-True,251,4.47059,4.25936,4.25936,65,24,455.0,Dollar
-False,491,4.27778,4.41185,4.41185,65,56,2720.0,Pound
-False,1667,4.55,4.51133,4.51133,65,10,455.0,Dollar
-False,1049,4.0,4.01695,4.01695,65,39,455.0,Dollar
-True,227,4.3,4.55098,4.55098,66,19,455.0,Pound
-True,120,4.0,4.07524,4.07524,65,7,455.0,Euro
-True,9541,4.25641,4.31309,4.31309,65,38,455.0,Euro
-True,229,4.13636,4.28819,4.28819,65,16,455.0,Euro
-True,382,3.7,3.83012,3.83012,64,29,455.0,Dollar
-False,296,3.4,3.51521,3.51521,64,41,455.0,Pound
-False,11627,3.91463,3.95001,3.95001,64,21,455.0,Dollar
-False,1144,3.96078,3.99805,3.99805,64,22,455.0,Pound
-False,1293,4.33333,4.33012,4.33012,64,110,455.0,Pound
-True,5738,4.7,4.74214,4.74214,64,25,455.0,Dollar
-True,202,4.3587,4.40238,4.40238,64,30,455.0,Pound
-False,2167,4.45,4.34867,4.34867,64,18,455.0,Euro
-False,269,3.6,3.35283,3.35283,64,17,455.0,Dollar
-False,1237,3.55,3.67073,3.67073,64,11,455.0,Pound
-True,578,4.35,4.33069,4.33069,64,13,455.0,Pound
-False,451,4.5,4.44023,4.44023,64,53,455.0,Dollar
-False,201,4.05,4.09566,4.09566,64,9,455.0,Dollar
-True,566,4.0,4.22308,4.22308,64,28,455.0,Dollar
-True,8041,3.7,3.66214,3.66214,64,15,455.0,Dollar
-False,800,4.71429,4.72019,4.72019,64,42,455.0,Pound
-False,453,4.5,4.45769,4.45769,64,13,455.0,Pound
-False,10737,4.1,4.26181,4.26181,64,63,455.0,Euro
-False,688,4.55,4.30312,4.30312,64,12,455.0,Pound
-False,324,4.4375,4.33205,4.33205,64,112,455.0,Dollar
-False,1407,4.375,4.30133,4.30133,64,34,455.0,Dollar
-True,555,3.1,3.14757,3.14757,64,19,455.0,Euro
-False,1953,4.05,3.93774,3.93774,64,211,455.0,Euro
-True,1787,3.56667,2.96286,2.96286,64,31,455.0,Pound
-True,1959,4.05,3.98926,3.98926,63,16,455.0,Euro
-True,5971,4.3,4.59795,4.59795,63,15,455.0,Euro
-True,5926,4.15,4.20175,4.20175,63,33,455.0,Dollar
-False,7190,4.2,4.13207,4.13207,63,30,455.0,Pound
-True,704,4.2,4.21073,4.21073,63,27,455.0,Euro
-False,259,3.72727,3.70949,3.70949,63,33,455.0,Pound
-True,1718,4.15,4.32738,4.32738,63,92,455.0,Pound
-False,243,4.05,4.0321,4.0321,63,16,455.0,Dollar
-False,8873,4.0,3.69829,3.69829,63,9,455.0,Euro
-True,412,4.2,4.2406,4.2406,63,22,455.0,Pound
-True,596,4.2,4.07357,4.07357,63,11,455.0,Euro
-False,4114,4.2,4.13255,4.13255,63,13,455.0,Euro
-True,325,3.85,4.22343,4.22343,63,6,455.0,Pound
-True,2628,4.25,4.21945,4.21945,63,8,455.0,Pound
-False,1130,4.55,4.33029,4.33029,63,26,455.0,Dollar
-True,131,4.6,4.6213,4.6213,63,8,455.0,Pound
-False,267,4.45238,4.41191,4.41191,63,38,455.0,Euro
-True,175,4.35,4.35483,4.35483,63,35,455.0,Pound
-True,1681,4.7,4.67069,4.67069,63,12,455.0,Dollar
-True,1493,4.35,4.31442,4.31442,64,30,455.0,Euro
-True,493,4.41667,4.37437,4.37437,63,41,800.0,Euro
-False,262,3.75,3.7406,3.7406,63,28,455.0,Dollar
-False,4133,3.65,3.71131,3.71131,63,12,455.0,Euro
-False,1725,4.3,4.23968,4.23968,63,18,455.0,Euro
-False,556,3.85,3.88057,3.88057,63,54,455.0,Euro
-False,1344,4.55,4.43086,4.43086,63,39,455.0,Euro
-False,270,4.04545,3.98845,3.98845,63,8,455.0,Dollar
-True,183,4.72222,4.56008,4.56008,63,11,455.0,Euro
-True,394,4.62698,4.61718,4.61718,65,57,455.0,Pound
-True,2621,4.7,4.64691,4.64691,62,73,455.0,Pound
-False,3105,4.3,4.24762,4.24762,62,121,455.0,Pound
-False,5971,3.8,3.87434,3.87434,62,9,455.0,Euro
-False,206,3.8,3.83422,3.83422,62,5,455.0,Pound
-True,252,4.2381,4.34942,4.34942,62,21,455.0,Dollar
-True,2061,4.0,3.94119,3.94119,62,15,455.0,Dollar
-False,296,4.05,3.90745,3.90745,62,28,455.0,Pound
-True,231,4.08065,4.12576,4.12576,62,0,455.0,Pound
-True,9986,4.2,4.09631,4.09631,62,52,455.0,Dollar
-False,259,4.55,4.4468,4.4468,62,44,455.0,Dollar
-True,1241,4.5,4.40385,4.40385,62,115,480.0,Euro
-False,1125,4.25,4.29604,4.29604,62,23,455.0,Dollar
-False,12316,4.43396,4.42445,4.42445,62,0,1600.0,Pound
-True,931,4.28125,4.20788,4.20788,62,39,455.0,Euro
-False,3645,4.2,4.38985,4.38985,62,23,455.0,Euro
-False,2554,3.9,3.8113,3.8113,62,46,455.0,Pound
-True,312,4.5,4.48812,4.48812,62,25,455.0,Pound
-True,851,4.3,4.31611,4.31611,62,25,455.0,Pound
-False,1451,4.4,4.40055,4.40055,62,14,455.0,Dollar
-False,3063,4.15,4.07267,4.07267,62,56,455.0,Euro
-True,495,4.2,4.19634,4.19634,62,13,455.0,Euro
-False,5401,3.85,3.95256,3.95256,62,31,455.0,Euro
-False,288,3.9,3.65925,3.65925,62,10,455.0,Pound
-False,250,3.5,3.47526,3.47526,62,23,455.0,Pound
-True,686,3.65,3.70025,3.70025,62,23,455.0,Pound
-True,263,3.8,3.59978,3.59978,62,16,455.0,Pound
-True,349,4.05,4.18856,4.18856,62,43,455.0,Pound
-False,302,3.65,3.61411,3.61411,62,6,455.0,Pound
-True,335,4.4,4.22005,4.22005,62,38,455.0,Dollar
-False,6030,4.4,4.34259,4.34259,61,20,455.0,Dollar
-True,143,4.0,3.87724,3.87724,62,14,455.0,Euro
-True,505,3.9,3.93538,3.93538,61,19,455.0,Dollar
-True,18552,4.07895,3.93772,3.93772,62,139,455.0,Pound
-True,2470,4.1,3.98952,3.98952,61,15,455.0,Euro
-True,1444,4.15,4.08032,4.08032,61,37,455.0,Dollar
-True,2848,3.95,3.92503,3.92503,61,39,455.0,Dollar
-True,1867,4.05,3.91132,3.91132,61,15,455.0,Pound
-False,396,4.6,4.61037,4.61037,61,8,455.0,Pound
-True,665,4.4,4.4807,4.4807,61,45,455.0,Euro
-True,490,4.59677,4.60752,4.60752,61,47,455.0,Pound
-False,1206,4.4,4.1818,4.1818,61,44,455.0,Dollar
-False,1477,4.45,4.47446,4.47446,61,31,455.0,Dollar
-False,1175,4.25,4.30278,4.30278,61,26,455.0,Pound
-False,1500,4.4,4.41456,4.41456,61,14,455.0,Euro
-True,13342,3.64754,3.55996,3.55996,62,10,455.0,Euro
-True,268,4.25,4.19833,4.19833,61,0,455.0,Pound
-True,17295,4.15909,3.86417,3.86417,61,152,455.0,Euro
-False,454,4.9,4.92562,4.92562,61,15,455.0,Dollar
-False,178,4.05,4.13371,4.13371,61,11,455.0,Dollar
-True,374,4.61538,4.60355,4.60355,61,19,455.0,Pound
-True,19859,3.5,3.29352,3.29352,61,17,455.0,Pound
-False,2183,4.0,4.0294,4.0294,61,15,455.0,Dollar
-False,812,3.95,3.60393,3.60393,61,13,455.0,Pound
-True,327,4.05,4.19692,4.19692,61,24,455.0,Pound
-False,291,3.9,3.78424,3.78424,61,27,455.0,Euro
-False,11848,3.9,4.07127,4.07127,60,23,455.0,Dollar
-True,3008,4.05,4.09666,4.09666,60,11,455.0,Pound
-False,5818,3.9,3.74163,3.74163,60,30,455.0,Dollar
-True,2880,3.55,3.49641,3.49641,60,18,455.0,Dollar
-False,12211,4.06667,4.1757,4.1757,60,184,455.0,Dollar
-False,111,3.9375,3.86045,3.86045,60,7,2240.0,Euro
-False,414,4.52381,4.56219,4.56219,61,0,455.0,Euro
-True,372,3.15,3.1369,3.1369,60,18,455.0,Pound
-False,15268,4.02,4.11124,4.11124,60,21,455.0,Euro
-False,3198,3.4,3.64323,3.64323,60,10,455.0,Euro
-False,279,4.05,4.36455,4.36455,60,51,455.0,Pound
-False,176,3.85,3.8264,3.8264,60,12,455.0,Pound
-False,1798,4.6,4.54498,4.54498,60,53,455.0,Pound
-True,2898,3.95,4.03603,4.03603,61,28,455.0,Euro
-True,171,4.1,4.1206,4.1206,60,31,455.0,Pound
-False,218,3.95,3.96138,3.96138,60,19,455.0,Pound
-True,1874,4.07447,4.22342,4.22342,60,20,455.0,Pound
-True,423,4.28261,4.34842,4.34842,60,36,455.0,Euro
-False,1471,4.55,4.51692,4.51692,59,37,455.0,Dollar
-False,639,3.9,3.85863,3.85863,59,22,455.0,Pound
-False,784,4.66102,4.66882,4.66882,60,49,455.0,Euro
-False,589,4.15,4.31405,4.31405,59,95,455.0,Pound
-True,425,3.8,3.69323,3.69323,59,9,455.0,Euro
-True,2380,4.4,4.42012,4.42012,59,38,455.0,Dollar
-True,3575,3.75,3.46776,3.46776,59,0,455.0,Dollar
-False,1341,4.55263,4.5624,4.5624,59,40,455.0,Dollar
-False,292,4.29412,4.30545,4.30545,59,8,455.0,Euro
-True,3048,3.9,4.19061,4.19061,59,74,455.0,Dollar
-True,6138,4.35,4.26278,4.26278,59,63,455.0,Pound
-True,459,4.05,4.1269,4.1269,59,10,455.0,Dollar
-False,409,4.0,3.96623,3.96623,59,13,455.0,Dollar
-True,413,4.25,4.29164,4.29164,59,15,455.0,Pound
-True,2898,4.25,4.29623,4.29623,59,14,455.0,Pound
-False,1484,4.15,4.09271,4.09271,59,29,455.0,Dollar
-True,1437,4.2,4.19903,4.19903,59,61,455.0,Dollar
-True,136,3.05,3.04233,3.04233,59,39,455.0,Dollar
-False,11758,3.3,3.64119,3.64119,59,92,455.0,Pound
-False,2696,4.1,4.14518,4.14518,59,35,455.0,Pound
-False,4316,4.77119,4.68243,4.68243,59,136,455.0,Euro
-True,507,4.5,4.53224,4.53224,59,14,455.0,Pound
-False,1648,3.65,3.70299,3.70299,59,23,455.0,Euro
-False,2310,4.76471,4.55371,4.55371,59,33,455.0,Pound
-True,526,4.76923,4.76454,4.76454,59,36,455.0,Euro
-True,692,4.0,4.05759,4.05759,59,24,455.0,Euro
-False,432,4.7,4.63597,4.63597,59,13,455.0,Pound
-True,478,4.85,4.83527,4.83527,59,12,455.0,Pound
-False,391,4.65,4.72639,4.72639,59,25,455.0,Euro
-False,440,3.4,3.29528,3.29528,59,53,455.0,Euro
-True,236,4.15,4.1323,4.1323,59,52,455.0,Pound
-True,386,3.95,3.87944,3.87944,59,56,455.0,Euro
-True,1913,4.6,4.64248,4.64248,59,23,455.0,Dollar
-False,3706,3.2,2.99993,2.99993,59,7,455.0,Euro
-True,5061,3.45,3.01132,3.01132,59,7,455.0,Pound
-True,340,4.2,4.19741,4.19741,58,9,455.0,Euro
-True,1471,4.4,3.79367,3.79367,58,9,455.0,Pound
-True,231,3.9,3.70667,3.70667,58,45,455.0,Euro
-True,510,4.5,4.57306,4.57306,58,43,455.0,Dollar
-True,3819,4.15,4.04441,4.04441,58,117,462.0,Dollar
-True,3194,4.4,4.4004,4.4004,58,40,455.0,Dollar
-False,1809,4.55,4.54915,4.54915,58,32,455.0,Dollar
-False,8898,4.14655,4.27361,4.27361,58,23,455.0,Euro
-False,385,4.68182,4.78128,4.78128,58,27,455.0,Dollar
-False,1891,3.95,3.69291,3.69291,58,25,455.0,Euro
-False,229,4.31818,4.28358,4.28358,59,31,455.0,Pound
-True,1034,2.68182,2.83506,2.83506,58,11,455.0,Dollar
-False,6885,3.9,3.95714,3.95714,58,17,455.0,Pound
-True,373,3.95,3.73113,3.73113,58,8,455.0,Pound
-False,1682,4.25,4.32408,4.32408,58,61,455.0,Dollar
-True,250,4.9,4.89178,4.89178,58,15,960.0,Dollar
-False,1037,4.4,4.40426,4.40426,58,50,455.0,Pound
-False,5512,2.8,2.91713,2.91713,58,30,455.0,Euro
-False,283,3.5,3.51194,3.51194,58,15,455.0,Pound
-False,138,4.36364,4.36703,4.36703,58,24,455.0,Dollar
-False,5555,3.35,3.4103,3.4103,58,32,455.0,Dollar
-False,205,4.15385,4.20583,4.20583,58,14,455.0,Dollar
-True,1630,4.95,4.92808,4.92808,58,7,455.0,Dollar
-False,1260,3.05,2.78554,2.78554,58,18,455.0,Euro
-False,1176,4.4,4.33518,4.33518,58,25,455.0,Pound
-False,2996,2.2,2.29582,2.29582,58,27,455.0,Dollar
-True,3089,3.9,3.87325,3.87325,58,27,455.0,Pound
-False,545,4.66667,4.63545,4.63545,58,142,455.0,Euro
-True,9008,4.48529,4.4563,4.4563,58,12,455.0,Euro
-False,2436,4.1,3.99488,3.99488,58,16,455.0,Dollar
-True,7468,4.45455,4.47415,4.47415,58,21,455.0,Euro
-True,10233,4.21875,4.34796,4.34796,58,43,455.0,Dollar
-False,20469,4.0,3.93518,3.93518,58,40,455.0,Euro
-True,758,4.55,4.49512,4.49512,58,14,455.0,Euro
-True,1119,4.0,3.89732,3.89732,59,11,455.0,Dollar
-False,1340,3.7,3.77771,3.77771,59,50,455.0,Euro
-True,4661,4.4,4.57504,4.57504,58,10,455.0,Dollar
-True,4510,4.45,4.39331,4.39331,58,93,455.0,Euro
-True,439,4.55,4.49899,4.49899,58,21,455.0,Pound
-True,1932,4.1,3.86439,3.86439,58,36,455.0,Pound
-True,288,4.1,4.15971,4.15971,58,52,455.0,Pound
-False,167,3.9,3.82451,3.82451,58,15,455.0,Pound
-False,509,4.2,4.10832,4.10832,57,20,455.0,Pound
-False,410,4.05,4.12783,4.12783,57,17,455.0,Pound
-False,334,4.3,4.3126,4.3126,57,55,455.0,Pound
-True,219,4.23333,4.30848,4.30848,57,40,455.0,Dollar
-True,14109,4.25,4.28733,4.28733,57,91,455.0,Euro
-False,3882,4.05,4.19566,4.19566,57,11,455.0,Dollar
-False,280,4.6,4.57536,4.57536,57,7,455.0,Euro
-True,254,4.55,4.53034,4.53034,57,17,455.0,Dollar
-True,359,4.21875,4.18076,4.18076,57,195,455.0,Pound
-True,6444,4.3,4.16814,4.16814,57,18,455.0,Pound
-True,4309,4.2,4.07351,4.07351,57,44,468.0,Pound
-False,10080,4.71875,4.73261,4.73261,58,153,455.0,Dollar
-True,220,4.85,4.84383,4.84383,57,7,455.0,Dollar
-False,7060,3.85,3.82996,3.82996,57,37,455.0,Pound
-True,287,4.35,4.30733,4.30733,57,7,455.0,Euro
-False,245,4.62281,4.58191,4.58191,58,31,455.0,Euro
-True,841,3.4,3.46133,3.46133,57,38,455.0,Dollar
-False,10821,4.0,4.02509,4.02509,57,17,455.0,Dollar
-True,231,4.2,4.16913,4.16913,57,81,455.0,Pound
-False,4477,3.4,3.21822,3.21822,57,42,455.0,Pound
-True,258,4.05,4.29626,4.29626,57,7,455.0,Pound
-False,4065,4.2,4.49258,4.49258,57,32,455.0,Dollar
-True,644,4.30882,4.40527,4.40527,57,62,455.0,Dollar
-False,21004,3.25,3.12732,3.12732,57,22,455.0,Euro
-True,2500,3.75,4.12821,4.12821,57,10,455.0,Dollar
-False,1580,4.05,3.99108,3.99108,57,61,455.0,Pound
-False,463,4.3,4.22167,4.22167,57,25,455.0,Pound
-False,11390,4.35294,4.34961,4.34961,57,96,455.0,Dollar
-False,884,4.65,4.64086,4.64086,57,11,455.0,Pound
-False,5106,3.75,3.942,3.942,57,18,455.0,Pound
-True,2863,4.5,4.50025,4.50025,56,128,455.0,Euro
-True,126,4.1875,4.19073,4.19073,56,8,455.0,Pound
-False,383,3.86667,4.01366,4.01366,56,191,481.0,Dollar
-False,1400,4.3,4.56074,4.56074,56,18,455.0,Pound
-False,14907,3.3,3.26591,3.26591,56,100,455.0,Euro
-False,189,4.55,4.53083,4.53083,56,21,455.0,Pound
-True,3427,3.55,3.64547,3.64547,56,13,455.0,Pound
-True,413,4.4,4.31892,4.31892,56,16,455.0,Pound
-True,4306,4.35,4.28025,4.28025,56,17,520.0,Dollar
-True,4742,4.7,4.67261,4.67261,56,47,455.0,Pound
-True,7710,4.26786,4.2442,4.2442,56,24,455.0,Euro
-True,364,4.75,4.67849,4.67849,56,9,455.0,Pound
-False,230,4.2,4.20953,4.20953,56,10,455.0,Dollar
-True,3045,4.05,4.04542,4.04542,56,23,455.0,Dollar
-False,308,3.9,3.87536,3.87536,56,10,455.0,Dollar
-False,1969,4.05,4.33735,4.33735,56,11,455.0,Pound
-True,5387,4.35,4.33368,4.33368,56,16,455.0,Euro
-True,207,4.25,4.24314,4.24314,56,54,474.0,Dollar
-False,219,4.3,4.35825,4.35825,56,101,455.0,Euro
-True,7233,4.85,4.80401,4.80401,56,26,455.0,Dollar
-True,6603,3.5,2.82617,2.82617,56,52,455.0,Dollar
-True,7751,4.25,4.24026,4.24026,56,26,455.0,Euro
-True,3245,3.8,3.90957,3.90957,56,10,455.0,Dollar
-False,3373,3.25,3.26527,3.26527,56,14,455.0,Pound
-True,399,4.65,4.60028,4.60028,56,28,455.0,Euro
-False,289,4.05,4.00509,4.00509,56,40,455.0,Pound
-False,1592,4.55,4.43367,4.43367,56,8,455.0,Euro
-True,3981,3.0,2.9646,2.9646,56,37,455.0,Pound
-False,3653,4.45,4.43382,4.43382,56,57,455.0,Pound
-True,161,4.26786,4.24345,4.24345,56,10,455.0,Euro
-False,3413,4.25,4.13967,4.13967,55,15,455.0,Dollar
-False,237,4.6,4.54769,4.54769,55,9,455.0,Dollar
-False,1905,3.7,3.66702,3.66702,55,9,455.0,Pound
-False,1188,4.6,4.56194,4.56194,55,23,455.0,Pound
-False,757,3.95,3.69729,3.69729,55,24,455.0,Euro
-True,142,4.0,4.04371,4.04371,55,22,455.0,Dollar
-False,1108,4.85,4.88821,4.88821,55,92,455.0,Dollar
-False,1366,4.55,4.58407,4.58407,55,55,455.0,Pound
-False,258,3.5,3.63787,3.63787,55,9,455.0,Dollar
-False,981,4.3,4.17334,4.17334,55,22,455.0,Dollar
-True,158,4.3,4.27764,4.27764,55,11,455.0,Euro
-False,1251,3.8,3.87047,3.87047,55,44,455.0,Euro
-True,149,4.45,4.63021,4.63021,55,14,2000.0,Pound
-False,425,4.6,4.62924,4.62924,55,22,455.0,Pound
-True,188,3.3,3.27626,3.27626,55,12,455.0,Pound
-False,1742,4.1,4.08213,4.08213,55,6,455.0,Pound
-False,3027,4.35,4.57453,4.57453,55,39,455.0,Pound
-True,976,4.55,4.57155,4.57155,56,57,455.0,Pound
-True,7657,3.85,3.83529,3.83529,55,37,455.0,Euro
-False,187,4.4,4.4074,4.4074,55,16,455.0,Euro
-True,1933,3.65,3.62133,3.62133,55,33,455.0,Dollar
-True,8677,4.4,4.65699,4.65699,55,48,455.0,Dollar
-False,135,4.11765,4.10962,4.10962,55,20,455.0,Pound
-False,1247,4.8,4.78548,4.78548,55,11,455.0,Euro
-False,676,4.35,4.20328,4.20328,55,26,455.0,Pound
-False,805,4.6,4.60019,4.60019,55,10,455.0,Pound
-True,2279,4.45,4.39353,4.39353,55,11,455.0,Dollar
-True,818,3.95,3.98874,3.98874,55,26,455.0,Pound
-False,6397,3.3,2.82118,2.82118,55,23,455.0,Dollar
-False,2253,4.45,4.46304,4.46304,55,37,455.0,Pound
-True,1032,4.5,4.4615,4.4615,55,23,455.0,Euro
-False,157,4.35,4.33943,4.33943,54,23,455.0,Dollar
-False,1029,3.75,3.65215,3.65215,54,19,455.0,Dollar
-True,4602,4.8,4.76415,4.76415,54,23,455.0,Euro
-False,6098,2.6,2.58015,2.58015,54,10,455.0,Euro
-False,254,4.0,3.94612,3.94612,54,7,455.0,Euro
-False,383,4.73148,4.71005,4.71005,55,377,455.0,Dollar
-True,7103,3.7,3.21851,3.21851,54,36,455.0,Dollar
-True,393,4.2,4.19375,4.19375,54,13,455.0,Pound
-True,1740,4.45,4.38765,4.38765,54,13,455.0,Pound
-True,265,4.07143,4.01139,4.01139,55,25,455.0,Pound
-False,358,3.25,3.37928,3.37928,54,8,455.0,Euro
-True,1161,4.05,4.08613,4.08613,54,17,455.0,Pound
-False,2577,3.75,3.81872,3.81872,54,14,455.0,Pound
-False,204,3.75,3.70102,3.70102,54,20,455.0,Pound
-True,338,4.8,4.7399,4.7399,54,5,455.0,Pound
-True,12260,4.25,4.52432,4.52432,54,62,455.0,Pound
-False,2028,3.9,4.02204,4.02204,54,20,455.0,Euro
-True,2400,3.95,3.84729,3.84729,54,23,455.0,Dollar
-False,3309,4.15,4.11025,4.11025,54,48,455.0,Pound
-False,415,3.95,4.07774,4.07774,54,15,455.0,Euro
-False,402,4.28571,4.23407,4.23407,54,166,455.0,Euro
-False,1127,4.59677,4.71314,4.71314,55,52,455.0,Euro
-True,292,4.6,4.52552,4.52552,54,64,455.0,Dollar
-False,639,3.4,3.53368,3.53368,54,44,455.0,Pound
-True,1013,3.75,3.67033,3.67033,54,6,455.0,Dollar
-False,388,4.55,4.62944,4.62944,54,12,455.0,Pound
-False,5727,3.95,3.83473,3.83473,54,211,455.0,Dollar
-False,139,3.3,3.3451,3.3451,54,34,455.0,Euro
-False,867,4.1,3.95883,3.95883,54,10,455.0,Dollar
-True,316,3.8,4.01729,4.01729,54,27,2880.0,Pound
-False,471,3.4,3.40916,3.40916,54,48,455.0,Euro
-True,12346,4.6,4.60998,4.60998,54,23,455.0,Dollar
-True,254,4.15,4.14111,4.14111,54,11,455.0,Dollar
-True,570,4.0,3.93836,3.93836,54,43,455.0,Euro
-False,304,3.95,3.95504,3.95504,54,17,455.0,Euro
-False,124,4.21212,4.19031,4.19031,54,10,455.0,Dollar
-True,264,3.38462,3.37725,3.37725,54,40,455.0,Pound
-True,7779,3.7,3.77691,3.77691,54,12,455.0,Dollar
-True,2245,4.35,4.31918,4.31918,54,18,520.0,Pound
-True,204,3.77273,3.78087,3.78087,54,316,455.0,Pound
-True,264,3.9,4.00841,4.00841,54,15,455.0,Euro
-False,735,3.8,3.85279,3.85279,53,26,455.0,Pound
-True,1322,4.8,4.76018,4.76018,53,39,468.0,Euro
-True,1929,4.35294,4.38899,4.38899,53,23,455.0,Euro
-True,173,3.94792,3.98388,3.98388,53,65,455.0,Pound
-True,150,4.3,4.24476,4.24476,53,13,455.0,Pound
-True,1328,4.45,4.46418,4.46418,54,23,455.0,Dollar
-False,4380,4.65,4.54167,4.54167,53,20,455.0,Pound
-False,5707,2.55,2.67416,2.67416,53,18,455.0,Euro
-False,8096,4.17857,4.24913,4.24913,53,59,455.0,Dollar
-False,367,4.9,4.9817,4.9817,53,62,1600.0,Dollar
-False,625,3.8,3.81492,3.81492,53,32,455.0,Pound
-False,1239,3.25,3.12031,3.12031,53,20,455.0,Dollar
-True,635,3.95,3.91905,3.91905,53,6,455.0,Dollar
-False,3462,4.15,4.23195,4.23195,53,67,455.0,Euro
-True,3340,4.25,4.30874,4.30874,53,21,455.0,Dollar
-True,272,3.7,3.6777,3.6777,53,9,455.0,Pound
-False,178,3.6,3.75841,3.75841,53,13,455.0,Dollar
-False,3395,3.35,3.30818,3.30818,53,101,455.0,Pound
-False,2055,4.1,4.00861,4.00861,53,6,455.0,Euro
-True,2714,3.65,3.57725,3.57725,53,82,455.0,Pound
-True,142,4.20833,4.17333,4.17333,53,11,455.0,Pound
-True,338,4.45,4.5241,4.5241,53,12,455.0,Dollar
-False,246,4.35,4.31701,4.31701,53,12,455.0,Pound
-False,3899,4.4125,4.45672,4.45672,53,25,455.0,Dollar
-True,206,3.6,3.75505,3.75505,53,13,455.0,Dollar
-True,236,4.15,4.23034,4.23034,53,14,455.0,Pound
-False,513,3.8,3.85174,3.85174,53,31,455.0,Euro
-True,11970,3.9,3.61229,3.61229,53,36,455.0,Dollar
-True,177,4.53846,4.59674,4.59674,53,62,455.0,Euro
-True,3793,4.0,4.02656,4.02656,53,6,455.0,Dollar
-False,12630,3.35,3.15486,3.15486,53,0,455.0,Dollar
-True,257,4.25,4.31627,4.31627,52,22,455.0,Pound
-False,1720,4.15,4.15175,4.15175,52,15,455.0,Euro
-True,5826,4.1,4.15207,4.15207,52,33,455.0,Euro
-True,13959,3.35,2.88069,2.88069,52,33,455.0,Pound
-True,314,4.2,4.18526,4.18526,52,38,700.0,Euro
-False,2506,4.1,4.35612,4.35612,54,33,455.0,Dollar
-True,1498,4.09091,4.30013,4.30013,52,29,455.0,Euro
-True,2192,4.35,4.28797,4.28797,52,36,455.0,Dollar
-True,12856,3.7973,3.78798,3.78798,52,12,455.0,Dollar
-False,273,4.46154,4.47845,4.47845,52,47,455.0,Dollar
-False,352,4.15,4.06579,4.06579,52,20,455.0,Pound
-True,301,4.05,3.97047,3.97047,52,9,455.0,Pound
-False,701,4.16667,4.28602,4.28602,52,70,455.0,Pound
-True,3339,4.3,4.43575,4.43575,52,37,455.0,Pound
-False,1145,3.95,3.94365,3.94365,52,58,455.0,Euro
-True,382,4.2,4.26162,4.26162,52,11,455.0,Euro
-False,807,3.3,3.31394,3.31394,52,27,455.0,Pound
-True,148,4.35,4.35974,4.35974,52,77,800.0,Dollar
-True,2819,4.7,4.73625,4.73625,52,11,455.0,Euro
-True,894,4.55,4.6366,4.6366,52,37,455.0,Euro
-True,163,3.85714,3.85733,3.85733,52,16,455.0,Euro
-False,139,4.8,4.80458,4.80458,52,7,455.0,Pound
-False,10189,4.1,4.16738,4.16738,52,21,455.0,Pound
-True,1071,4.16667,4.43364,4.43364,52,19,455.0,Euro
-True,499,4.95,4.94125,4.94125,52,17,455.0,Dollar
-True,1959,4.2,4.14682,4.14682,52,8,455.0,Dollar
-True,9006,4.43902,4.34907,4.34907,52,23,455.0,Pound
-True,4172,4.55,4.62384,4.62384,52,23,455.0,Dollar
-True,956,4.1,4.10738,4.10738,52,104,455.0,Euro
-False,712,3.7,3.76048,3.76048,52,22,455.0,Dollar
-True,1395,4.4,4.39734,4.39734,52,9,455.0,Euro
-False,728,3.9,3.97967,3.97967,52,50,455.0,Pound
-True,2372,4.6,4.59787,4.59787,52,20,455.0,Pound
-True,267,3.45,3.46099,3.46099,52,62,455.0,Pound
-True,846,4.0,4.0974,4.0974,52,30,455.0,Pound
-True,279,4.35,4.25851,4.25851,51,15,455.0,Dollar
-True,2756,4.6,4.60469,4.60469,51,50,455.0,Pound
-False,7153,3.4,3.18744,3.18744,51,27,455.0,Euro
-False,2229,4.3,4.12324,4.12324,51,7,455.0,Euro
-False,4453,4.25,4.26577,4.26577,51,18,455.0,Pound
-True,134,4.15,4.21405,4.21405,51,38,1600.0,Euro
-True,1050,4.15,4.24711,4.24711,51,25,455.0,Pound
-False,1481,3.9,3.19813,3.19813,51,12,455.0,Pound
-True,301,4.55882,4.54553,4.54553,54,72,455.0,Dollar
-True,2379,2.55,2.65063,2.65063,51,49,455.0,Dollar
-False,4561,4.25,4.26528,4.26528,51,34,455.0,Dollar
-True,2066,4.5,4.35765,4.35765,51,41,455.0,Pound
-True,3911,3.75,3.75776,3.75776,51,6,455.0,Pound
-True,2943,3.9,3.35636,3.35636,51,9,455.0,Euro
-True,8994,4.3,4.3145,4.3145,51,23,455.0,Euro
-False,399,3.75,3.82698,3.82698,51,37,455.0,Euro
-False,2660,4.45,4.38968,4.38968,51,24,455.0,Euro
-False,1515,4.4,4.33375,4.33375,51,12,455.0,Euro
-True,154,3.65,3.58127,3.58127,51,14,455.0,Dollar
-False,8856,4.2875,4.26253,4.26253,52,34,455.0,Pound
-False,179,4.5,4.54432,4.54432,51,25,1280.0,Euro
-True,13659,4.0,3.92583,3.92583,51,24,455.0,Dollar
-True,11104,3.75,4.19321,4.19321,51,30,455.0,Euro
-True,5630,3.6,3.56832,3.56832,51,31,455.0,Pound
-False,2515,4.2,3.88628,3.88628,51,6,455.0,Dollar
-False,241,3.65,3.68891,3.68891,51,44,455.0,Pound
-False,5653,3.75,3.69747,3.69747,51,5,455.0,Dollar
-True,5314,4.12745,4.17253,4.17253,51,10,455.0,Dollar
-False,1009,4.0,4.08929,4.08929,51,17,455.0,Dollar
-True,3124,4.15,4.40987,4.40987,51,5,455.0,Dollar
-True,253,4.5,4.5206,4.5206,51,29,455.0,Dollar
-False,256,4.6,4.62257,4.62257,51,17,455.0,Euro
-False,5973,4.3,4.32609,4.32609,51,58,455.0,Dollar
-True,3154,4.1,4.08735,4.08735,51,10,455.0,Pound
-False,207,4.55,4.64334,4.64334,51,6,455.0,Dollar
-True,3172,3.2,3.04503,3.04503,51,53,455.0,Dollar
-False,131,4.21875,4.17614,4.17614,51,39,455.0,Dollar
-True,345,3.95,4.00365,4.00365,51,27,455.0,Pound
-True,452,4.15,4.1746,4.1746,51,33,455.0,Euro
-True,375,4.5,4.4685,4.4685,51,52,455.0,Dollar
-True,1391,4.35,4.29687,4.29687,50,27,455.0,Euro
-True,256,4.45,4.54555,4.54555,50,44,3200.0,Pound
-True,436,3.65,3.41833,3.41833,50,6,455.0,Dollar
-False,3602,3.5,3.13043,3.13043,50,19,455.0,Pound
-False,1269,4.35,4.3218,4.3218,50,16,455.0,Pound
-True,5537,4.6,4.67344,4.67344,50,10,455.0,Pound
-True,3675,4.05,4.00975,4.00975,50,49,455.0,Pound
-True,6886,4.34884,4.47965,4.47965,50,25,455.0,Dollar
-True,1575,4.45,4.12383,4.12383,50,21,455.0,Euro
-True,315,4.25,4.24982,4.24982,50,40,462.0,Dollar
-False,1012,4.65,4.59632,4.59632,50,12,455.0,Euro
-True,8727,4.05,4.32978,4.32978,50,22,455.0,Pound
-False,1298,4.4,4.34465,4.34465,50,33,455.0,Pound
-False,203,4.1,4.26405,4.26405,50,11,455.0,Euro
-True,279,3.95,3.96166,3.96166,50,14,455.0,Dollar
-False,1019,4.35,4.31869,4.31869,50,21,455.0,Pound
-True,653,4.26923,4.34448,4.34448,50,157,455.0,Dollar
-False,337,4.75,4.74318,4.74318,51,6,455.0,Pound
-False,314,4.7,4.67915,4.67915,50,20,455.0,Euro
-True,1520,4.5,4.3373,4.3373,52,194,455.0,Euro
-True,712,3.9,3.76453,3.76453,50,52,455.0,Pound
-False,5524,4.25,4.06984,4.06984,50,17,455.0,Pound
-False,1919,4.35,4.311,4.311,50,35,455.0,Dollar
-True,7955,4.17857,3.85052,3.85052,50,36,455.0,Euro
-False,907,4.2,4.40906,4.40906,50,37,455.0,Euro
-True,2553,3.6,3.50768,3.50768,50,18,455.0,Pound
-False,3153,3.7,3.85131,3.85131,50,28,455.0,Dollar
-True,6406,3.73077,3.97837,3.97837,50,27,455.0,Pound
-False,1198,4.55,4.58408,4.58408,50,73,455.0,Pound
-False,2011,4.15,4.18971,4.18971,50,46,455.0,Euro
-False,2481,3.9,4.01325,4.01325,50,55,455.0,Pound
-True,271,3.7,3.73831,3.73831,50,13,455.0,Dollar
-False,8255,4.45,4.46266,4.46266,50,40,455.0,Pound
-False,3764,4.3,4.27386,4.27386,50,26,455.0,Euro
-False,307,4.2,4.14531,4.14531,50,17,455.0,Euro
-False,125,3.7,3.62945,3.62945,50,10,455.0,Dollar
-True,3362,4.4,4.25327,4.25327,50,27,455.0,Dollar
-True,4334,4.2,4.02004,4.02004,50,18,455.0,Dollar
-True,2005,4.15,4.03311,4.03311,50,83,455.0,Dollar
-True,378,4.85,4.83617,4.83617,50,17,455.0,Dollar
-False,2300,4.75,4.76447,4.76447,50,20,455.0,Pound
-False,176,4.0,3.95192,3.95192,50,14,455.0,Dollar
-True,3031,4.6,4.65591,4.65591,50,22,455.0,Dollar
-True,5799,3.75,3.47668,3.47668,50,24,455.0,Euro
-False,236,4.45,4.47415,4.47415,50,22,455.0,Dollar
-False,321,3.68182,3.70453,3.70453,50,77,474.0,Pound
-False,6819,2.0,2.20009,2.20009,50,7,455.0,Pound
-False,1321,4.4,4.36046,4.36046,50,36,468.0,Pound
-True,188,3.9,4.0582,4.0582,50,42,455.0,Euro
-True,1304,4.45,4.45968,4.45968,50,28,455.0,Pound
-True,281,3.8,3.80486,3.80486,50,42,455.0,Euro
-False,4398,4.05,3.84504,3.84504,50,26,455.0,Pound
-False,204,4.1,3.95413,3.95413,50,25,455.0,Dollar
-False,211,4.67308,4.70658,4.70658,50,151,3200.0,Pound
-True,3989,3.83333,4.0446,4.0446,50,90,455.0,Dollar
-False,298,4.15,4.16191,4.16191,49,108,455.0,Dollar
-True,252,3.85,3.77549,3.77549,49,38,455.0,Dollar
-True,3722,3.85,4.05185,4.05185,49,19,455.0,Euro
-True,394,4.3,4.23961,4.23961,49,28,455.0,Dollar
-True,157,4.85,4.86379,4.86379,49,26,455.0,Pound
-False,5803,3.9,3.88266,3.88266,49,77,455.0,Pound
-True,1335,4.57143,4.51074,4.51074,49,145,455.0,Dollar
-False,6049,4.3,4.2555,4.2555,49,22,455.0,Euro
-True,4556,4.2,4.25634,4.25634,49,27,455.0,Dollar
-True,180,4.35,4.35626,4.35626,49,46,468.0,Dollar
-True,5858,4.27551,4.28635,4.28635,49,14,455.0,Euro
-False,551,3.7,3.67325,3.67325,49,66,455.0,Pound
-False,200,4.46154,4.43525,4.43525,49,30,455.0,Dollar
-True,4678,4.05,4.20274,4.20274,49,22,455.0,Dollar
-False,1299,4.2,4.29246,4.29246,49,16,455.0,Dollar
-False,157,4.5,4.47925,4.47925,49,44,455.0,Pound
-True,4264,2.7,2.72754,2.72754,49,34,455.0,Pound
-True,219,4.15,3.62753,3.62753,49,10,455.0,Pound
-False,850,4.35,4.34263,4.34263,49,9,455.0,Euro
-True,235,3.45,3.41518,3.41518,49,7,455.0,Euro
-False,1768,2.9,2.99099,2.99099,49,17,455.0,Euro
-True,681,3.7,3.8387,3.8387,49,24,455.0,Euro
-False,662,4.09375,4.14882,4.14882,49,24,455.0,Euro
-False,235,4.5,4.34199,4.34199,49,19,455.0,Dollar
-False,5264,3.5,3.885,3.885,49,13,455.0,Euro
-False,1132,4.35,4.33932,4.33932,49,17,455.0,Dollar
-True,1665,4.35,4.27569,4.27569,49,33,455.0,Dollar
-True,1128,4.05,4.18855,4.18855,49,22,455.0,Pound
-True,508,4.9,4.92356,4.92356,49,33,455.0,Euro
-True,15191,3.65,4.10852,4.10852,49,43,455.0,Pound
-True,910,2.6,2.76033,2.76033,49,5,455.0,Dollar
-True,704,4.65,4.66712,4.66712,49,65,455.0,Euro
-True,925,4.85,4.88831,4.88831,49,11,455.0,Euro
-False,9460,4.3,4.50917,4.50917,49,46,455.0,Dollar
-False,899,4.25,3.77768,3.77768,49,24,455.0,Pound
-True,3549,3.3,3.52393,3.52393,50,125,462.0,Pound
-True,321,3.95,3.92289,3.92289,49,11,455.0,Euro
-False,1607,3.35,3.52195,3.52195,49,23,455.0,Pound
-False,476,3.9,3.95781,3.95781,49,30,455.0,Euro
-True,756,4.2,4.17857,4.17857,49,22,455.0,Dollar
-False,336,4.05,3.99588,3.99588,49,24,455.0,Pound
-False,5100,3.9,3.70335,3.70335,49,9,455.0,Dollar
-True,666,4.05,4.01176,4.01176,48,24,455.0,Pound
-True,1855,4.2,4.26753,4.26753,48,17,455.0,Dollar
-False,303,3.65,3.61997,3.61997,48,8,455.0,Pound
-True,808,4.35,3.82293,3.82293,48,8,455.0,Euro
-True,4179,4.02083,4.18152,4.18152,48,10,455.0,Dollar
-True,1645,4.55,4.33844,4.33844,48,86,455.0,Euro
-False,197,3.92857,4.00355,4.00355,48,15,455.0,Euro
-True,2014,4.0,4.06831,4.06831,48,51,455.0,Dollar
-True,1897,4.25,4.27709,4.27709,48,53,455.0,Pound
-False,1036,4.3,4.09952,4.09952,48,106,520.0,Euro
-True,295,4.54167,4.54302,4.54302,48,55,455.0,Pound
-True,516,4.15,4.20626,4.20626,48,10,455.0,Pound
-True,154,4.3,4.32411,4.32411,49,45,455.0,Dollar
-True,166,3.05,3.03083,3.03083,48,5,455.0,Dollar
-True,220,4.15,4.17599,4.17599,48,29,455.0,Euro
-True,3495,3.9,4.21311,4.21311,48,19,455.0,Euro
-False,4475,3.05,3.07121,3.07121,48,65,455.0,Pound
-False,188,4.65625,4.65879,4.65879,48,50,455.0,Euro
-True,7079,3.5,3.23602,3.23602,48,19,455.0,Dollar
-True,182,3.55,3.69647,3.69647,48,8,455.0,Euro
-False,390,3.9,3.73216,3.73216,48,39,455.0,Pound
-False,187,3.65,3.559,3.559,48,6,455.0,Pound
-True,2477,3.85,3.59375,3.59375,48,11,455.0,Dollar
-True,6085,3.55,4.07512,4.07512,48,16,455.0,Pound
-False,1162,4.55,4.36531,4.36531,48,65,455.0,Euro
-False,206,4.15,4.28843,4.28843,48,22,455.0,Dollar
-False,393,3.55,3.68998,3.68998,48,36,455.0,Pound
-True,2067,4.25,4.17464,4.17464,48,5,455.0,Dollar
-True,134,4.56522,4.57331,4.57331,49,24,455.0,Pound
-False,1908,4.18421,4.19248,4.19248,48,27,455.0,Dollar
-False,2141,4.3,4.09327,4.09327,48,6,468.0,Pound
-True,295,3.75,3.60453,3.60453,48,18,455.0,Euro
-True,1222,4.2,4.49792,4.49792,48,15,455.0,Pound
-True,1821,4.45,4.0677,4.0677,48,69,455.0,Pound
-False,2250,4.45,4.45293,4.45293,48,15,455.0,Dollar
-False,2580,3.1,3.27507,3.27507,48,39,455.0,Dollar
-False,1643,4.2,4.20894,4.20894,48,24,455.0,Euro
-False,177,4.2,4.16133,4.16133,48,190,455.0,Dollar
-True,929,3.8,3.71586,3.71586,48,18,455.0,Pound
-True,406,3.55,3.28712,3.28712,48,48,468.0,Euro
-True,7442,3.8913,3.90809,3.90809,48,0,455.0,Euro
-True,205,4.425,4.43793,4.43793,48,18,455.0,Pound
-True,157,4.77273,4.52607,4.52607,47,20,3200.0,Euro
-True,809,3.05,3.08854,3.08854,47,36,455.0,Dollar
-False,7189,4.6,4.5761,4.5761,47,78,455.0,Euro
-False,170,4.75,4.74816,4.74816,47,47,455.0,Pound
-True,1965,4.0,3.95533,3.95533,47,27,455.0,Pound
-True,3695,4.05,4.05674,4.05674,47,17,455.0,Euro
-True,4176,3.6,3.13479,3.13479,47,18,455.0,Pound
-False,4221,3.2,3.08164,3.08164,47,16,455.0,Pound
-True,210,3.8,3.69653,3.69653,47,21,455.0,Euro
-False,1217,4.15,4.17971,4.17971,48,26,455.0,Dollar
-True,337,4.05,4.01348,4.01348,48,0,455.0,Euro
-True,310,4.11538,3.9782,3.9782,47,0,455.0,Euro
-True,492,3.85,3.89058,3.89058,47,18,455.0,Pound
-True,6228,4.4,4.31092,4.31092,47,18,455.0,Pound
-False,228,3.7,3.67785,3.67785,47,13,455.0,Euro
-False,272,4.4,4.3803,4.3803,47,62,455.0,Euro
-True,531,4.25,4.2762,4.2762,47,9,455.0,Pound
-True,248,4.4,4.44199,4.44199,47,13,455.0,Euro
-False,8383,3.8,4.08757,4.08757,47,14,455.0,Pound
-True,434,4.65,4.64196,4.64196,47,5,455.0,Pound
-True,6924,4.46,4.49747,4.49747,47,72,455.0,Dollar
-True,1609,4.35,4.28294,4.28294,47,43,455.0,Pound
-True,174,3.95,3.96325,3.96325,47,26,455.0,Pound
-True,4741,4.35,4.09532,4.09532,47,57,455.0,Pound
-False,3059,4.0,4.13244,4.13244,47,23,455.0,Pound
-True,198,3.95,3.9485,3.9485,48,30,455.0,Pound
-True,1764,4.0,4.48362,4.48362,47,9,455.0,Euro
-True,7583,3.7,3.53044,3.53044,47,26,455.0,Dollar
-True,374,4.9,4.89616,4.89616,47,38,455.0,Dollar
-False,1466,4.55,4.53785,4.53785,47,37,455.0,Euro
-True,1371,4.5,4.61049,4.61049,47,44,455.0,Euro
-True,190,4.1,4.01931,4.01931,47,10,455.0,Euro
-False,1924,4.27778,4.00744,4.00744,47,35,455.0,Dollar
-True,204,3.84615,4.05385,4.05385,47,46,2400.0,Pound
-False,6581,4.35,4.3583,4.3583,47,36,455.0,Euro
-True,268,4.45652,4.45892,4.45892,47,12,455.0,Pound
-False,233,3.95,4.0159,4.0159,47,17,455.0,Pound
-True,340,4.15,4.13664,4.13664,47,23,468.0,Euro
-True,3692,3.6,3.27587,3.27587,47,10,455.0,Dollar
-False,901,4.45,4.38675,4.38675,47,46,455.0,Dollar
-False,1132,3.9,3.84187,3.84187,47,19,455.0,Dollar
-True,10188,3.55,3.41703,3.41703,47,51,455.0,Pound
-True,350,3.9,3.95128,3.95128,47,32,455.0,Euro
-True,2263,4.3,4.25779,4.25779,47,36,455.0,Pound
-True,299,3.05,3.109,3.109,47,49,494.0,Pound
-False,2537,3.9,3.86087,3.86087,47,52,455.0,Dollar
-True,1262,3.6,3.57856,3.57856,47,48,455.0,Euro
-False,274,4.17391,4.1969,4.1969,49,0,455.0,Euro
-True,204,4.38235,4.38741,4.38741,47,7,455.0,Euro
-True,1328,3.95,4.08553,4.08553,47,14,455.0,Dollar
-False,644,4.1,4.09819,4.09819,47,22,455.0,Pound
-True,211,4.21875,4.2439,4.2439,47,32,455.0,Pound
-True,1031,4.2,4.19258,4.19258,47,23,455.0,Euro
-False,2150,3.9,3.95722,3.95722,47,11,455.0,Euro
-False,244,4.4,4.40465,4.40465,47,46,455.0,Pound
-False,2232,4.25,4.2739,4.2739,47,37,455.0,Dollar
-True,1556,4.39286,4.22661,4.22661,47,39,455.0,Dollar
-True,4287,3.95,4.01923,4.01923,47,7,455.0,Dollar
-False,1003,4.5,4.39799,4.39799,46,33,455.0,Euro
-True,1282,4.7,4.44228,4.44228,46,25,455.0,Pound
-True,166,4.25,4.3005,4.3005,46,8,455.0,Euro
-True,416,4.6,4.58634,4.58634,46,17,455.0,Euro
-False,187,4.15,4.11973,4.11973,46,8,455.0,Euro
-True,228,3.94737,3.93124,3.93124,46,30,455.0,Euro
-True,317,4.25,4.13047,4.13047,46,35,455.0,Euro
-True,1891,3.9,3.87286,3.87286,46,8,455.0,Dollar
-True,15201,3.95,4.12991,4.12991,46,7,455.0,Euro
-True,2791,4.2,4.23405,4.23405,46,19,455.0,Pound
-False,291,3.95,3.96893,3.96893,46,12,455.0,Dollar
-True,1313,4.1,4.14855,4.14855,46,34,455.0,Dollar
-False,214,4.15,4.07089,4.07089,46,43,455.0,Pound
-False,713,4.4,4.29654,4.29654,46,84,455.0,Dollar
-False,1105,3.85,4.05071,4.05071,46,62,455.0,Dollar
-True,814,4.2,4.16461,4.16461,46,5,455.0,Pound
-False,547,3.85,3.66547,3.66547,46,0,455.0,Pound
-False,189,3.45,3.40582,3.40582,46,10,455.0,Pound
-True,5816,3.8,3.95716,3.95716,46,19,455.0,Dollar
-False,15118,3.8,3.85002,3.85002,46,22,455.0,Euro
-False,207,4.35,4.44395,4.44395,46,18,455.0,Pound
-True,3044,3.65,3.84023,3.84023,46,24,455.0,Euro
-False,1333,4.55,4.50898,4.50898,46,6,455.0,Dollar
-False,1207,4.2,4.1383,4.1383,46,27,455.0,Pound
-False,12517,4.35,4.3019,4.3019,46,41,455.0,Dollar
-False,1749,4.3,4.1594,4.1594,46,25,455.0,Pound
-False,4862,3.7,3.23317,3.23317,46,45,455.0,Euro
-False,150,4.4,4.31781,4.31781,46,50,455.0,Euro
-False,123,4.58621,3.98656,3.98656,46,35,455.0,Euro
-True,245,3.85,3.64913,3.64913,46,22,455.0,Dollar
-True,1077,4.3,4.23117,4.23117,46,30,455.0,Dollar
-False,1722,3.95,4.08308,4.08308,46,18,455.0,Pound
-True,2844,3.7,3.62416,3.62416,46,13,455.0,Pound
-True,803,4.15,3.9898,3.9898,46,31,468.0,Euro
-True,291,4.08333,4.21813,4.21813,47,7,455.0,Pound
-True,15537,4.57895,4.54675,4.54675,46,35,455.0,Dollar
-True,1598,4.05,4.05478,4.05478,46,42,455.0,Euro
-False,132,4.45,4.46236,4.46236,46,25,455.0,Dollar
-True,1498,3.7,3.68713,3.68713,46,29,455.0,Dollar
-True,2444,4.0,3.98778,3.98778,46,14,455.0,Pound
-False,10846,3.4,3.72118,3.72118,45,21,455.0,Pound
-True,982,3.95,3.98479,3.98479,45,5,455.0,Dollar
-True,169,4.2,4.22069,4.22069,45,31,455.0,Euro
-False,222,4.5,4.4542,4.4542,45,112,455.0,Dollar
-True,466,4.05,4.00535,4.00535,45,64,455.0,Dollar
-False,193,4.29545,4.27667,4.27667,45,0,455.0,Euro
-False,366,4.3,4.28942,4.28942,45,105,455.0,Dollar
-False,1354,3.25,3.21654,3.21654,45,33,455.0,Euro
-True,1682,4.15,4.10132,4.10132,45,25,455.0,Dollar
-True,568,3.35,3.28368,3.28368,45,23,455.0,Euro
-False,2702,3.7,4.01074,4.01074,45,18,455.0,Pound
-True,1170,4.0,4.105,4.105,45,24,455.0,Dollar
-True,381,3.75,3.77297,3.77297,45,17,455.0,Dollar
-True,2445,1.9,1.55305,1.55305,45,36,455.0,Euro
-False,269,4.17857,4.35806,4.35806,45,154,455.0,Dollar
-False,135,4.8,4.74564,4.74564,45,97,455.0,Euro
-False,2265,4.2,4.20608,4.20608,45,64,455.0,Dollar
-True,2108,4.75,4.79567,4.79567,45,42,455.0,Euro
-False,2265,4.5,4.45774,4.45774,45,22,455.0,Euro
-True,283,3.45,3.47984,3.47984,45,8,455.0,Euro
-False,2162,4.4,4.27385,4.27385,45,21,455.0,Euro
-True,4736,3.95,3.99003,3.99003,45,14,455.0,Pound
-False,2635,4.15,4.15145,4.15145,45,31,455.0,Euro
-True,4085,3.65,3.69852,3.69852,45,5,455.0,Pound
-False,159,4.05,4.0945,4.0945,45,15,455.0,Pound
-True,3519,4.5,4.56282,4.56282,45,12,455.0,Pound
-False,1374,4.65,4.69073,4.69073,45,29,455.0,Pound
-False,1286,3.9,3.89793,3.89793,45,87,455.0,Pound
-True,6802,4.26087,4.11173,4.11173,45,11,455.0,Dollar
-True,1846,4.1,4.12423,4.12423,45,5,455.0,Dollar
-True,3453,3.1,3.19681,3.19681,45,5,455.0,Pound
-False,185,3.0,3.04971,3.04971,45,8,455.0,Euro
-False,5384,4.55,4.3864,4.3864,45,34,455.0,Dollar
-False,1002,4.6,4.67703,4.67703,45,6,455.0,Euro
-False,91,3.76087,3.75425,3.75425,45,17,455.0,Pound
-False,217,4.19231,4.16509,4.16509,45,30,455.0,Dollar
-False,307,3.8,3.79098,3.79098,45,21,455.0,Dollar
-True,197,4.1,4.11379,4.11379,45,11,455.0,Dollar
-True,156,4.0,3.97685,3.97685,45,32,455.0,Pound
-False,227,4.45,4.46337,4.46337,45,5,455.0,Euro
-True,70,4.35,4.18353,4.18353,45,7,455.0,Euro
-True,295,4.35,4.34083,4.34083,45,5,455.0,Pound
-False,1378,4.75,4.76626,4.76626,45,45,455.0,Dollar
-False,6680,3.85,3.89703,3.89703,45,17,455.0,Dollar
-True,99,4.15,4.08063,4.08063,45,27,455.0,Dollar
-False,343,4.55,4.57972,4.57972,44,20,455.0,Pound
-True,256,3.6,3.61632,3.61632,44,21,455.0,Euro
-False,3686,3.95,4.12307,4.12307,44,15,455.0,Euro
-False,1211,4.5,4.55349,4.55349,44,15,455.0,Pound
-False,4370,3.3,3.25662,3.25662,44,10,455.0,Dollar
-False,6488,3.5,3.61696,3.61696,44,84,455.0,Euro
-True,134,4.16667,4.15061,4.15061,44,5,455.0,Euro
-True,248,3.95,3.86538,3.86538,44,18,455.0,Pound
-False,794,4.45,4.53956,4.53956,44,36,455.0,Pound
-False,9465,3.7,3.7191,3.7191,44,23,455.0,Pound
-True,3850,4.5,4.44507,4.44507,44,26,455.0,Pound
-False,13351,3.65,3.54602,3.54602,44,24,455.0,Pound
-False,8715,2.8,2.56675,2.56675,44,14,455.0,Dollar
-False,1177,4.1,4.20105,4.20105,44,66,455.0,Dollar
-False,8755,4.0,3.79659,3.79659,44,37,455.0,Dollar
-True,1843,3.9,3.8586,3.8586,44,15,455.0,Pound
-False,19023,3.85,3.70632,3.70632,44,20,455.0,Pound
-False,208,3.8,3.78582,3.78582,45,19,455.0,Pound
-True,6204,4.05,4.25779,4.25779,44,24,455.0,Dollar
-False,173,4.1,4.1102,4.1102,44,9,455.0,Pound
-True,272,4.5,4.49956,4.49956,44,8,455.0,Pound
-True,274,4.45,4.41983,4.41983,44,121,455.0,Euro
-True,285,4.0,4.0322,4.0322,44,21,455.0,Dollar
-False,1626,3.85,3.92985,3.92985,44,22,455.0,Dollar
-True,1967,4.2,4.19107,4.19107,44,19,455.0,Euro
-True,82,4.26923,4.27873,4.27873,44,7,2080.0,Dollar
-True,251,4.4,4.43267,4.43267,44,55,455.0,Dollar
-True,1877,4.2,4.57406,4.57406,44,18,455.0,Euro
-True,2156,3.85,3.90764,3.90764,44,18,455.0,Dollar
-True,179,3.9,3.89423,3.89423,45,83,455.0,Euro
-True,9028,4.7,4.77768,4.77768,44,35,455.0,Pound
-True,188,4.8,4.82396,4.82396,44,6,960.0,Dollar
-False,5585,3.41667,3.51445,3.51445,44,18,455.0,Pound
-False,189,4.75,4.74461,4.74461,44,32,455.0,Euro
-False,1354,3.7,3.78193,3.78193,44,47,455.0,Pound
-False,168,4.68605,4.66232,4.66232,44,12,455.0,Dollar
-False,2029,4.33333,4.24776,4.24776,44,39,455.0,Euro
-False,1112,3.8,3.84036,3.84036,44,15,455.0,Dollar
-False,1708,4.35,4.26789,4.26789,44,43,455.0,Euro
-False,636,4.75,4.7633,4.7633,44,10,455.0,Euro
-True,3671,3.95,3.85204,3.85204,44,27,455.0,Euro
-True,922,3.95,3.92201,3.92201,44,16,455.0,Pound
-False,5735,4.2,3.94216,3.94216,44,58,455.0,Euro
-True,234,4.5,4.50001,4.50001,44,22,455.0,Dollar
-False,2650,4.1,4.0528,4.0528,44,42,455.0,Dollar
-True,896,3.85,3.85371,3.85371,44,26,455.0,Pound
-False,1241,3.8,3.73034,3.73034,44,22,455.0,Pound
-True,5286,3.42188,3.41967,3.41967,44,6,455.0,Pound
-True,4314,4.45,4.3844,4.3844,44,20,455.0,Euro
-True,191,4.4,4.45875,4.45875,44,46,455.0,Euro
-False,748,3.85,3.97786,3.97786,43,97,455.0,Euro
-True,366,3.7,3.64591,3.64591,43,16,455.0,Dollar
-False,142,3.95,3.95254,3.95254,43,18,455.0,Pound
-False,2368,4.0,3.90564,3.90564,43,30,455.0,Pound
-False,2160,4.8,4.81977,4.81977,43,37,455.0,Euro
-True,6914,3.9,4.10534,4.10534,43,23,455.0,Dollar
-False,173,4.65,4.61081,4.61081,43,23,455.0,Pound
-False,2412,4.22093,4.17258,4.17258,43,23,455.0,Pound
-False,890,3.73256,3.6627,3.6627,43,9,455.0,Dollar
-True,299,3.8,3.90431,3.90431,43,66,455.0,Pound
-True,1214,3.8,3.81288,3.81288,43,35,455.0,Pound
-False,1454,4.1,4.14268,4.14268,43,35,455.0,Dollar
-True,5019,4.2,4.1911,4.1911,43,27,455.0,Pound
-True,613,4.35,4.29712,4.29712,43,25,455.0,Euro
-True,4700,4.15,4.43388,4.43388,43,24,455.0,Euro
-False,519,4.1,4.02784,4.02784,43,0,455.0,Dollar
-False,265,3.2,3.32123,3.32123,43,12,455.0,Dollar
-True,198,4.07692,4.03977,4.03977,43,32,455.0,Pound
-False,3319,4.55,4.45452,4.45452,43,513,455.0,Euro
-False,1027,3.5,3.52061,3.52061,43,107,462.0,Pound
-True,1667,4.2,4.29079,4.29079,43,15,455.0,Dollar
-False,4863,4.4,4.31654,4.31654,43,26,455.0,Pound
-False,122,2.95,2.84513,2.84513,43,10,455.0,Dollar
-True,153,4.15,4.30917,4.30917,43,13,1520.0,Pound
-True,8858,4.1,4.06886,4.06886,43,12,455.0,Pound
-True,249,4.1,4.12645,4.12645,43,48,455.0,Dollar
-True,142,3.85,3.88969,3.88969,43,13,455.0,Dollar
-False,233,4.3,4.20049,4.20049,43,69,455.0,Dollar
-False,3259,3.6,3.46312,3.46312,43,14,455.0,Euro
-False,224,3.6,3.67166,3.67166,43,7,455.0,Dollar
-False,8337,3.55,3.33288,3.33288,43,14,455.0,Euro
-False,538,4.55,4.55704,4.55704,43,8,455.0,Euro
-False,374,4.05,4.06071,4.06071,43,38,455.0,Dollar
-False,238,4.3,4.27373,4.27373,43,8,455.0,Dollar
-False,184,4.46512,4.53717,4.53717,43,12,455.0,Euro
-False,292,4.15,3.70286,3.70286,43,14,455.0,Dollar
-False,163,4.35,4.40848,4.40848,43,13,468.0,Dollar
-False,73,4.3,4.38795,4.38795,43,36,455.0,Pound
-False,498,4.1,4.20645,4.20645,43,71,455.0,Dollar
-False,1061,3.5,3.51129,3.51129,43,18,455.0,Pound
-False,116,4.4,4.42764,4.42764,43,21,455.0,Euro
-False,285,3.1,3.07306,3.07306,43,0,455.0,Pound
-False,1049,4.8,4.78726,4.78726,43,314,462.0,Dollar
-True,7122,4.25,3.95051,3.95051,43,19,455.0,Euro
-False,424,3.85,3.8536,3.8536,43,15,455.0,Pound
-False,7739,3.05,2.41568,2.41568,43,18,455.0,Euro
-True,975,4.20833,4.31248,4.31248,43,5,455.0,Euro
-False,285,4.03333,4.07268,4.07268,43,179,455.0,Pound
-False,1715,4.3,4.34987,4.34987,43,6,455.0,Pound
-True,1051,4.5,4.57417,4.57417,42,15,455.0,Pound
-True,193,3.95,4.01391,4.01391,42,17,455.0,Dollar
-False,1614,4.15,4.13667,4.13667,42,31,455.0,Pound
-True,2203,3.25,3.1985,3.1985,42,14,455.0,Dollar
-True,1500,4.05,3.85149,3.85149,42,28,455.0,Euro
-True,226,4.45,4.44256,4.44256,42,36,455.0,Euro
-True,555,4.25862,3.96263,3.96263,42,34,2720.0,Euro
-False,1936,3.8,3.78461,3.78461,42,15,455.0,Euro
-True,2125,4.25,4.15706,4.15706,42,34,455.0,Dollar
-True,426,4.2,4.15912,4.15912,42,54,455.0,Pound
-False,8281,4.25,4.12075,4.12075,42,25,455.0,Euro
-True,9666,4.36111,4.31494,4.31494,42,22,455.0,Euro
-False,529,4.25,4.19092,4.19092,42,26,455.0,Dollar
-False,247,3.15,3.14999,3.14999,42,38,455.0,Euro
-False,167,3.9,3.8517,3.8517,42,10,455.0,Euro
-True,407,4.7,4.65471,4.65471,42,82,455.0,Dollar
-True,481,3.25,3.44122,3.44122,42,5,455.0,Dollar
-False,224,4.55,4.26433,4.26433,42,21,455.0,Euro
-False,5626,4.3,4.41015,4.41015,42,11,455.0,Dollar
-True,1063,4.0,3.94086,3.94086,42,5,455.0,Euro
-True,16086,4.52,4.41792,4.41792,45,23,468.0,Pound
-False,2075,4.65,4.41708,4.41708,42,38,455.0,Dollar
-True,196,4.25,4.22841,4.22841,42,31,480.0,Pound
-False,702,4.7,4.71322,4.71322,42,11,455.0,Pound
-False,1312,3.6,3.61261,3.61261,42,15,455.0,Pound
-False,132,3.85,3.92316,3.92316,42,15,455.0,Dollar
-False,178,4.05263,4.17375,4.17375,42,29,455.0,Dollar
-False,281,4.17949,4.17553,4.17553,42,18,455.0,Euro
-False,247,4.36905,4.35131,4.35131,42,210,3200.0,Euro
-False,243,4.3,4.30965,4.30965,42,29,455.0,Euro
-True,1476,3.75,3.74129,3.74129,42,18,455.0,Euro
-False,4564,4.05,4.17374,4.17374,42,10,455.0,Euro
-True,1281,4.35,4.27785,4.27785,42,16,455.0,Euro
-True,1189,4.25,4.15237,4.15237,42,15,455.0,Euro
-True,3037,4.2,4.12982,4.12982,42,18,455.0,Dollar
-True,135,3.65,3.65096,3.65096,42,5,455.0,Dollar
-True,2629,4.1,4.18378,4.18378,42,8,455.0,Pound
-True,745,4.25,4.29805,4.29805,42,10,455.0,Pound
-True,3206,3.65,3.35495,3.35495,42,38,455.0,Euro
-False,193,4.0,4.12138,4.12138,42,22,455.0,Dollar
-True,254,3.7,3.64635,3.64635,42,22,455.0,Dollar
-True,141,3.19231,3.24634,3.24634,42,19,455.0,Euro
-False,1763,4.2,4.28173,4.28173,42,23,455.0,Euro
-True,7855,3.45,3.72348,3.72348,42,8,455.0,Euro
-False,239,4.15,4.08637,4.08637,41,9,455.0,Pound
-False,2286,3.5,3.26067,3.26067,41,9,455.0,Dollar
-False,1047,4.7,4.6749,4.6749,41,27,455.0,Euro
-True,679,4.15,4.21785,4.21785,41,28,455.0,Pound
-False,343,4.0,3.98998,3.98998,42,16,455.0,Pound
-True,3253,3.95,3.65995,3.65995,41,12,720.0,Dollar
-True,181,4.63636,4.62355,4.62355,41,7,700.0,Euro
-False,2327,4.65,4.60459,4.60459,41,12,455.0,Pound
-True,507,3.35,3.35622,3.35622,41,14,455.0,Pound
-True,1893,3.8,3.76124,3.76124,41,45,455.0,Euro
-False,369,4.61538,4.61578,4.61578,41,88,455.0,Pound
-False,230,4.14706,4.12986,4.12986,41,0,455.0,Pound
-False,426,4.25,4.41282,4.41282,41,6,455.0,Pound
-False,5108,3.75,3.03711,3.03711,41,26,455.0,Pound
-False,108,4.08824,4.0879,4.0879,41,21,455.0,Dollar
-True,4395,4.0,4.02824,4.02824,41,159,455.0,Euro
-False,1558,4.1,4.15489,4.15489,41,13,455.0,Dollar
-False,8227,3.8,3.88301,3.88301,41,23,455.0,Euro
-False,4679,4.65,4.55401,4.55401,41,13,455.0,Dollar
-False,74,4.2,4.19633,4.19633,41,6,455.0,Pound
-True,2153,3.8,3.97423,3.97423,41,34,455.0,Euro
-False,95,4.32143,4.4823,4.4823,42,12,2240.0,Dollar
-True,4112,3.55,3.35986,3.35986,41,34,455.0,Dollar
-False,2312,4.05,3.77223,3.77223,41,31,455.0,Pound
-True,146,4.4,4.393,4.393,41,52,455.0,Euro
-False,107,3.8,3.82384,3.82384,41,7,455.0,Dollar
-False,271,3.75,3.64096,3.64096,41,123,455.0,Dollar
-True,2851,4.45,4.67945,4.67945,41,25,455.0,Euro
-True,980,4.2,4.15737,4.15737,41,11,455.0,Pound
-False,136,4.6,4.58247,4.58247,41,24,455.0,Pound
-False,525,4.45,4.52593,4.52593,41,17,455.0,Dollar
-False,104,3.4,3.34412,3.34412,41,17,455.0,Dollar
-True,1147,3.25,2.84797,2.84797,41,0,455.0,Dollar
-True,14341,4.33333,4.48406,4.48406,41,98,455.0,Dollar
-True,7054,4.22727,4.32712,4.32712,41,22,455.0,Euro
-True,1495,3.25,3.35392,3.35392,41,21,455.0,Dollar
-False,113,2.5,2.51939,2.51939,41,6,455.0,Euro
-False,1802,3.9,3.92195,3.92195,41,27,455.0,Dollar
-True,1162,4.25,4.17777,4.17777,41,38,455.0,Dollar
-False,3364,3.65,3.58767,3.58767,42,23,455.0,Euro
-False,961,3.65,3.63873,3.63873,41,25,455.0,Euro
-False,4367,3.82353,3.91727,3.91727,41,40,455.0,Pound
-True,4192,3.9,3.79573,3.79573,41,22,455.0,Dollar
-True,743,3.0,2.95449,2.95449,41,23,455.0,Dollar
-False,1347,4.2,4.20331,4.20331,41,36,455.0,Pound
-False,137,4.55,4.54786,4.54786,41,105,455.0,Dollar
-True,84,3.9,3.9343,3.9343,42,9,480.0,Pound
-True,3384,2.6,2.7325,2.7325,41,23,455.0,Pound
-False,3025,4.55,4.58455,4.58455,41,29,455.0,Dollar
-True,170,4.45,4.43417,4.43417,41,26,455.0,Dollar
-True,5849,3.05,2.69873,2.69873,41,37,455.0,Dollar
-False,245,4.45,4.46463,4.46463,41,21,455.0,Dollar
-True,1045,4.5,4.42306,4.42306,41,33,455.0,Pound
-False,452,4.0,4.01007,4.01007,41,25,455.0,Euro
-False,3007,3.45,3.53155,3.53155,41,18,455.0,Euro
-True,373,4.3,4.24359,4.24359,42,23,455.0,Euro
-True,5697,4.18,4.40068,4.40068,41,24,455.0,Dollar
-True,6054,4.0,4.01152,4.01152,41,11,455.0,Pound
-False,191,3.25,3.19862,3.19862,40,29,455.0,Euro
-True,5031,4.4,4.20247,4.20247,40,13,455.0,Euro
-True,8581,4.63636,4.68382,4.68382,40,33,455.0,Euro
-False,518,3.9,4.13578,4.13578,40,39,455.0,Dollar
-False,1782,4.5,4.70947,4.70947,40,24,455.0,Euro
-False,2498,3.9,3.92093,3.92093,40,53,455.0,Dollar
-False,96,3.61905,3.61379,3.61379,40,35,455.0,Pound
-False,3435,4.875,4.96242,4.96242,40,54,455.0,Euro
-True,875,4.1,4.02127,4.02127,40,24,455.0,Pound
-True,1941,4.3,4.22101,4.22101,40,34,455.0,Pound
-False,2160,4.45,4.38303,4.38303,40,30,455.0,Dollar
-True,777,3.8,3.48434,3.48434,40,15,455.0,Euro
-True,161,4.0,4.06449,4.06449,40,19,455.0,Dollar
-False,259,3.7,3.51763,3.51763,40,54,700.0,Euro
-False,1872,4.15,4.09478,4.09478,40,37,455.0,Pound
-False,7327,2.05,1.94323,1.94323,40,111,455.0,Euro
-True,1499,4.2,4.31501,4.31501,40,8,455.0,Pound
-True,9084,4.225,4.25751,4.25751,41,14,455.0,Euro
-False,4974,3.9,3.98864,3.98864,40,26,455.0,Dollar
-True,212,4.65,4.60345,4.60345,40,28,455.0,Dollar
-True,310,4.3,4.35523,4.35523,40,27,455.0,Dollar
-False,155,4.71212,4.50451,4.50451,41,33,455.0,Euro
-True,2326,4.05,4.33542,4.33542,40,22,455.0,Dollar
-False,434,4.64706,4.47668,4.47668,40,50,455.0,Euro
-True,4405,4.25,4.26,4.26,40,12,455.0,Pound
-False,274,4.25,4.21558,4.21558,40,12,455.0,Euro
-True,10027,4.125,4.12239,4.12239,40,24,455.0,Pound
-False,2391,3.25,3.15396,3.15396,40,13,455.0,Pound
-False,1317,4.05,4.10319,4.10319,40,17,455.0,Euro
-False,4863,2.7,2.63667,2.63667,40,5,455.0,Dollar
-False,1161,4.15,3.8854,3.8854,40,14,455.0,Euro
-False,2547,3.55,3.63229,3.63229,40,23,455.0,Euro
-True,330,3.0,2.89455,2.89455,40,12,455.0,Dollar
-False,197,4.5,4.47625,4.47625,40,35,455.0,Dollar
-True,295,4.4,4.36176,4.36176,40,7,455.0,Euro
-False,6717,4.45,4.45218,4.45218,40,20,455.0,Euro
-True,9784,4.1,3.64209,3.64209,40,22,520.0,Euro
-True,1272,4.4,4.42194,4.42194,40,48,455.0,Pound
-True,6686,4.1,3.99217,3.99217,40,10,455.0,Euro
-True,8064,4.14103,4.19908,4.19908,40,21,455.0,Dollar
-True,4038,4.2,4.20096,4.20096,40,16,455.0,Dollar
-False,201,4.7,4.64732,4.64732,40,33,455.0,Pound
-False,289,4.25,4.27966,4.27966,40,9,455.0,Euro
-True,243,2.85,3.09546,3.09546,40,17,455.0,Dollar
-True,1452,4.05,4.10409,4.10409,40,25,455.0,Dollar
-True,10176,4.425,4.62619,4.62619,40,84,455.0,Euro
-False,726,3.9,4.01546,4.01546,39,11,455.0,Dollar
-False,2180,4.1,4.0658,4.0658,39,29,455.0,Euro
-False,1866,4.6,4.52824,4.52824,39,44,455.0,Dollar
-True,1257,4.35,4.42343,4.42343,39,15,455.0,Pound
-True,147,4.4,4.42766,4.42766,39,29,455.0,Pound
-True,1258,4.13333,4.17812,4.17812,39,85,455.0,Pound
-True,367,3.25,3.36111,3.36111,39,21,455.0,Dollar
-True,1094,4.5,4.5892,4.5892,39,49,455.0,Euro
-True,4013,4.05,4.0482,4.0482,39,18,455.0,Euro
-False,1850,4.65,4.71158,4.71158,39,22,455.0,Dollar
-True,180,3.4,3.27122,3.27122,39,8,455.0,Euro
-False,5284,4.3,4.21299,4.21299,39,18,455.0,Euro
-True,2801,3.3,3.40046,3.40046,39,40,455.0,Pound
-True,1621,4.3,4.28752,4.28752,39,29,455.0,Pound
-False,77,4.42857,4.46634,4.46634,39,10,455.0,Euro
-True,11587,4.4,4.41947,4.41947,39,13,455.0,Dollar
-False,211,4.14103,4.0812,4.0812,39,8,455.0,Pound
-True,2076,4.52273,4.3909,4.3909,40,27,455.0,Pound
-True,2088,3.45,3.45876,3.45876,39,27,455.0,Pound
-False,272,3.5,3.7051,3.7051,39,14,455.0,Dollar
-True,10402,4.4,4.45947,4.45947,39,23,455.0,Pound
-False,4473,3.85,3.9444,3.9444,39,14,455.0,Pound
-False,4551,4.4,4.29178,4.29178,39,28,455.0,Pound
-False,168,4.3,4.31609,4.31609,39,35,3200.0,Dollar
-True,936,4.0,4.02951,4.02951,39,14,455.0,Dollar
-False,1072,4.3,4.1488,4.1488,39,25,455.0,Euro
-True,15924,3.85,3.75321,3.75321,39,12,455.0,Dollar
-True,620,4.78571,4.6509,4.6509,40,36,455.0,Pound
-True,667,3.95,3.9689,3.9689,39,26,455.0,Euro
-False,324,4.15,4.15652,4.15652,39,26,455.0,Euro
-False,396,4.0,3.23829,3.23829,39,9,455.0,Pound
-False,360,4.2,4.116,4.116,39,12,455.0,Pound
-False,163,4.31818,4.29819,4.29819,39,20,455.0,Pound
-True,4271,4.55,4.18211,4.18211,39,30,455.0,Euro
-True,343,4.47727,4.35081,4.35081,39,39,455.0,Euro
-True,3345,3.9,3.96002,3.96002,39,22,455.0,Dollar
-True,135,3.9,4.10487,4.10487,39,5,455.0,Euro
-False,526,3.85,3.84431,3.84431,39,10,455.0,Euro
-True,359,4.35,4.31888,4.31888,39,24,455.0,Pound
-False,178,4.35,4.30399,4.30399,39,32,455.0,Euro
-False,356,4.0,3.87003,3.87003,39,36,455.0,Dollar
-True,4272,4.05,4.0144,4.0144,39,23,455.0,Euro
-True,138,3.65,3.51929,3.51929,39,16,455.0,Euro
-False,314,4.45,4.37885,4.37885,39,20,455.0,Dollar
-True,11522,4.05,4.19359,4.19359,39,42,455.0,Euro
-True,1123,4.45,4.43942,4.43942,39,24,455.0,Euro
-True,526,4.45,4.43151,4.43151,39,50,455.0,Pound
-False,99,4.4375,4.37743,4.37743,39,12,455.0,Dollar
-False,2422,3.4,3.48486,3.48486,39,7,455.0,Pound
-False,2159,3.5,3.60013,3.60013,39,12,455.0,Euro
-False,2901,3.4,3.38591,3.38591,39,34,455.0,Dollar
-True,163,3.6,3.66932,3.66932,39,7,455.0,Dollar
-False,170,4.3,4.29292,4.29292,39,38,455.0,Euro
-False,157,4.0,4.05329,4.05329,38,10,455.0,Dollar
-False,201,4.25,4.22026,4.22026,38,17,455.0,Pound
-False,439,5.0,5.0,5.0,38,71,455.0,Pound
-False,115,4.23077,4.18597,4.18597,38,28,455.0,Pound
-False,92,4.77632,4.43682,4.43682,38,31,455.0,Dollar
-True,3247,4.0,4.05387,4.05387,38,38,455.0,Pound
-False,1927,3.9,3.81174,3.81174,38,8,455.0,Pound
-False,583,4.76667,4.75928,4.75928,38,119,455.0,Pound
-False,1096,3.66667,3.4743,3.4743,39,10,455.0,Dollar
-False,7091,4.19444,4.29798,4.29798,39,25,455.0,Euro
-True,3039,4.1,3.94021,3.94021,38,17,455.0,Euro
-True,112,4.33333,4.29691,4.29691,38,50,455.0,Dollar
-True,864,3.65,3.60456,3.60456,38,24,455.0,Pound
-True,7986,4.5,4.33345,4.33345,38,66,455.0,Dollar
-False,1139,3.85,3.93873,3.93873,38,27,455.0,Dollar
-False,5503,3.75,3.68009,3.68009,38,52,455.0,Pound
-False,168,4.3,4.41799,4.41799,38,4,455.0,Pound
-True,6643,4.52632,4.58633,4.58633,38,32,455.0,Dollar
-False,9047,4.19737,4.26449,4.26449,39,15,455.0,Dollar
-False,3136,3.55,3.00358,3.00358,38,8,455.0,Euro
-False,143,3.95,4.01056,4.01056,38,7,455.0,Dollar
-False,961,4.0,3.54105,3.54105,38,17,455.0,Euro
-True,320,3.9,3.89598,3.89598,38,25,455.0,Pound
-True,1351,4.4,4.23177,4.23177,38,11,455.0,Dollar
-True,2482,4.1,4.06574,4.06574,38,15,455.0,Euro
-False,3784,4.7,4.67652,4.67652,38,42,455.0,Dollar
-False,1405,3.95,3.95256,3.95256,38,13,455.0,Pound
-True,157,4.2,4.19834,4.19834,38,25,455.0,Dollar
-False,5626,4.1,4.08983,4.08983,38,18,455.0,Dollar
-True,503,3.75,3.77557,3.77557,38,12,455.0,Dollar
-True,123,3.8,3.64321,3.64321,38,10,455.0,Euro
-True,193,3.95,4.10975,4.10975,38,20,455.0,Dollar
-True,753,3.95,3.90479,3.90479,38,31,455.0,Pound
-False,4514,4.0,3.76661,3.76661,38,17,455.0,Euro
-True,13347,3.78947,3.93601,3.93601,38,37,455.0,Euro
-True,219,3.5,3.53301,3.53301,38,16,455.0,Dollar
-False,1519,3.2,3.34162,3.34162,38,7,455.0,Dollar
-True,2368,4.05,3.94269,3.94269,38,16,455.0,Dollar
-True,392,4.6,4.57578,4.57578,39,39,455.0,Dollar
-True,514,3.7,3.74909,3.74909,38,26,455.0,Pound
-True,362,4.6,4.54845,4.54845,39,8,455.0,Dollar
-False,292,3.85,3.94933,3.94933,38,107,455.0,Dollar
-True,1806,4.75,4.70695,4.70695,38,16,455.0,Euro
-True,3400,4.5,4.50025,4.50025,38,59,455.0,Euro
-False,3272,4.05,4.09226,4.09226,38,12,455.0,Euro
-True,7429,4.28571,4.30608,4.30608,38,192,455.0,Euro
-True,1417,4.25,4.56091,4.56091,38,24,455.0,Pound
-True,277,4.1,4.16261,4.16261,38,43,455.0,Pound
-True,10005,3.8,4.17177,4.17177,38,36,455.0,Euro
-False,2264,4.45,4.37144,4.37144,38,14,455.0,Euro
-False,2945,4.43421,4.38928,4.38928,38,31,700.0,Euro
-True,464,4.85,4.84243,4.84243,37,18,455.0,Pound
-False,5270,3.75,3.36315,3.36315,37,23,455.0,Dollar
-True,1080,4.4,4.52874,4.52874,37,34,455.0,Dollar
-False,185,4.15,4.18056,4.18056,37,12,455.0,Pound
-True,422,4.3,4.28183,4.28183,37,43,455.0,Pound
-False,3501,3.5,3.68879,3.68879,37,32,455.0,Euro
-False,114,4.35,4.25452,4.25452,37,17,455.0,Dollar
-False,349,4.25,4.32866,4.32866,37,30,455.0,Dollar
-True,4517,4.3,4.43479,4.43479,37,50,455.0,Dollar
-False,363,4.1,4.05807,4.05807,37,38,455.0,Euro
-True,3832,2.9,3.48933,3.48933,37,15,455.0,Euro
-True,94,4.39286,4.37821,4.37821,37,9,3200.0,Dollar
-True,109,3.4,3.36174,3.36174,37,32,455.0,Euro
-False,390,4.1,4.09989,4.09989,37,24,455.0,Dollar
-True,287,3.6,3.59916,3.59916,37,20,455.0,Pound
-True,5053,2.5,2.73536,2.73536,37,28,455.0,Dollar
-False,1179,4.45,4.46267,4.46267,37,26,455.0,Dollar
-True,2811,4.2,4.21095,4.21095,37,14,455.0,Pound
-True,690,4.3,4.2409,4.2409,37,7,455.0,Pound
-True,1143,4.65,4.60998,4.60998,37,22,455.0,Pound
-False,268,4.2,4.27744,4.27744,37,35,455.0,Dollar
-True,1313,3.55,3.47183,3.47183,37,50,455.0,Dollar
-False,728,2.6,2.59588,2.59588,37,7,455.0,Pound
-True,4323,3.45,3.51398,3.51398,37,24,455.0,Pound
-True,1359,3.9,3.84926,3.84926,37,12,455.0,Pound
-True,221,4.35,4.37196,4.37196,37,19,455.0,Pound
-True,1684,4.0,4.0365,4.0365,37,39,455.0,Pound
-True,5070,4.2,4.13456,4.13456,37,19,455.0,Dollar
-False,1424,4.2,4.03275,4.03275,37,31,455.0,Pound
-False,104,4.32143,4.18066,4.18066,37,12,455.0,Euro
-False,2686,3.85,3.72971,3.72971,37,21,455.0,Euro
-True,140,3.35,3.35277,3.35277,37,10,455.0,Euro
-True,479,4.25,4.22774,4.22774,37,14,455.0,Euro
-True,1448,4.2,4.19399,4.19399,37,28,455.0,Pound
-True,2465,4.65,4.67906,4.67906,37,16,455.0,Dollar
-False,1646,2.95,2.86946,2.86946,37,19,455.0,Euro
-True,414,3.7,3.52288,3.52288,37,18,520.0,Dollar
-True,1313,3.9,3.93373,3.93373,37,22,455.0,Dollar
-False,95,4.05,3.9742,3.9742,37,22,455.0,Euro
-True,343,2.8,2.89167,2.89167,37,0,520.0,Pound
-True,8543,4.32,4.48612,4.48612,37,6,455.0,Pound
-True,7320,3.4,2.97273,2.97273,37,11,455.0,Pound
-True,2633,4.15,4.04333,4.04333,37,26,455.0,Dollar
-True,199,3.85,3.84194,3.84194,37,8,455.0,Dollar
-True,391,3.05,3.0943,3.0943,37,26,455.0,Euro
-False,180,3.15,3.07066,3.07066,37,24,455.0,Euro
-True,108,3.25,3.24372,3.24372,37,8,455.0,Euro
-False,13388,3.15,3.52042,3.52042,37,14,455.0,Dollar
-True,178,4.46154,4.39436,4.39436,37,31,455.0,Euro
-True,439,4.3,4.2672,4.2672,37,9,455.0,Pound
-True,215,4.25,4.29162,4.29162,37,13,455.0,Dollar
-False,3007,3.9,4.42748,4.42748,37,20,455.0,Pound
-True,2194,4.6,4.58019,4.58019,37,27,455.0,Dollar
-False,6402,3.55,3.47334,3.47334,37,20,455.0,Pound
-True,160,4.0,3.98103,3.98103,37,59,455.0,Euro
-True,2784,3.8,3.7435,3.7435,37,19,455.0,Euro
-False,350,4.1,4.24054,4.24054,37,33,455.0,Pound
-True,7211,3.75,3.66891,3.66891,37,69,455.0,Pound
-True,6634,4.5,4.55978,4.55978,37,20,455.0,Pound
-True,478,4.58333,4.56028,4.56028,37,10,455.0,Pound
-False,1548,4.45,4.44713,4.44713,36,12,455.0,Euro
-True,360,2.85,2.8686,2.8686,36,51,455.0,Dollar
-False,243,4.1,4.00002,4.00002,36,10,455.0,Dollar
-True,170,4.33333,4.31352,4.31352,36,0,455.0,Dollar
-False,3341,4.26667,4.35011,4.35011,36,7,455.0,Dollar
-False,6271,4.0,4.03066,4.03066,36,33,455.0,Euro
-False,372,4.3,4.28484,4.28484,36,18,455.0,Dollar
-False,553,2.95,2.97596,2.97596,36,16,455.0,Dollar
-False,69,3.75,3.66158,3.66158,36,6,455.0,Pound
-False,228,3.75,3.73263,3.73263,36,143,455.0,Pound
-True,6012,4.8,4.82842,4.82842,36,56,455.0,Dollar
-True,197,4.55,4.72431,4.72431,36,43,455.0,Dollar
-True,1179,4.0,3.99632,3.99632,36,12,455.0,Euro
-False,2868,4.5,4.52897,4.52897,36,12,455.0,Dollar
-False,2171,3.55,3.60917,3.60917,36,37,455.0,Pound
-True,326,3.65,3.73975,3.73975,36,21,455.0,Euro
-True,1254,4.2,4.27843,4.27843,36,43,455.0,Dollar
-True,977,4.54545,4.57811,4.57811,36,36,455.0,Pound
-True,8686,4.15,4.39867,4.39867,36,71,455.0,Dollar
-False,8533,4.04167,3.96655,3.96655,36,25,455.0,Euro
-False,4507,3.25,3.46291,3.46291,36,19,455.0,Pound
-True,112,4.0,4.0283,4.0283,36,10,455.0,Euro
-False,919,4.02941,4.09865,4.09865,37,131,1360.0,Dollar
-True,459,4.2,4.11625,4.11625,36,34,455.0,Pound
-True,1634,2.8,2.7395,2.7395,36,27,455.0,Pound
-True,2820,4.05,4.08098,4.08098,36,30,455.0,Euro
-True,832,4.4,4.49174,4.49174,36,56,455.0,Euro
-True,132,4.56522,4.48299,4.48299,37,27,455.0,Dollar
-False,5821,3.85,3.78203,3.78203,36,36,455.0,Dollar
-False,896,4.33333,4.32719,4.32719,36,36,455.0,Dollar
-True,305,4.3,4.31143,4.31143,36,7,455.0,Pound
-False,1114,4.3,4.29549,4.29549,36,16,455.0,Dollar
-True,2791,4.35,4.23454,4.23454,36,26,455.0,Pound
-True,9215,4.0,4.29464,4.29464,36,17,455.0,Pound
-False,1953,4.6,4.58225,4.58225,36,14,455.0,Euro
-True,126,4.3,4.31585,4.31585,36,21,455.0,Pound
-False,9220,3.91667,3.95235,3.95235,36,28,455.0,Pound
-False,173,4.25,4.23116,4.23116,36,16,455.0,Pound
-False,225,4.3,4.18614,4.18614,36,20,455.0,Euro
-False,157,4.45,4.62646,4.62646,36,29,700.0,Pound
-True,2677,4.25,4.24988,4.24988,36,24,455.0,Euro
-True,2606,4.2,4.14034,4.14034,36,14,455.0,Pound
-True,122,3.9,3.94902,3.94902,36,22,455.0,Euro
-False,157,3.9,3.97697,3.97697,36,39,455.0,Dollar
-False,1108,4.2,4.41525,4.41525,36,28,455.0,Pound
-False,780,3.4,3.49189,3.49189,36,21,455.0,Dollar
-True,10834,4.11538,4.25516,4.25516,36,22,455.0,Pound
-False,108,4.04545,4.07617,4.07617,36,0,455.0,Euro
-True,2226,3.75,3.9849,3.9849,36,18,455.0,Pound
-False,270,4.25,4.2549,4.2549,36,29,455.0,Dollar
-True,835,4.8,4.80339,4.80339,36,77,455.0,Pound
-False,203,4.4,4.51103,4.51103,36,8,455.0,Euro
-False,2127,4.25,4.25158,4.25158,36,33,455.0,Pound
-False,6023,4.3,4.39633,4.39633,36,23,455.0,Pound
-False,101,4.18182,4.11472,4.11472,36,6,455.0,Dollar
-False,150,4.95,4.95576,4.95576,36,9,960.0,Dollar
-False,17413,3.4,3.31811,3.31811,36,40,455.0,Pound
-True,2030,4.2,4.33658,4.33658,36,17,455.0,Pound
-False,132,4.2,4.14098,4.14098,36,86,455.0,Dollar
-False,1202,3.6,3.61619,3.61619,36,26,455.0,Dollar
-True,10010,3.58824,3.71802,3.71802,35,23,455.0,Euro
-True,268,4.15,4.12152,4.12152,35,33,455.0,Dollar
-False,928,4.55,4.57295,4.57295,35,35,455.0,Pound
-False,316,2.4,2.5215,2.5215,35,31,455.0,Euro
-False,334,4.05,3.94362,3.94362,35,102,455.0,Pound
-True,507,4.1,4.19622,4.19622,35,6,455.0,Pound
-False,4221,4.71875,4.72526,4.72526,35,22,455.0,Pound
-False,895,3.75,3.66608,3.66608,35,39,455.0,Dollar
-False,1818,3.5,3.68103,3.68103,35,15,455.0,Euro
-True,1317,4.45,4.47699,4.47699,35,56,455.0,Euro
-False,4415,4.1,4.17502,4.17502,35,105,488.0,Euro
-True,4563,4.45,4.36923,4.36923,35,63,455.0,Pound
-True,292,4.4,4.42028,4.42028,35,25,455.0,Pound
-True,124,3.85,3.87067,3.87067,35,21,455.0,Pound
-False,113,4.2,4.27373,4.27373,35,17,455.0,Dollar
-False,136,3.1,3.10345,3.10345,35,16,455.0,Dollar
-False,4638,4.5,4.51931,4.51931,35,7,455.0,Pound
-False,748,3.94286,4.0792,4.0792,35,0,455.0,Dollar
-False,540,3.5,4.18524,4.18524,35,8,455.0,Dollar
-True,793,4.0,4.00813,4.00813,35,25,455.0,Pound
-True,110,4.0,3.92977,3.92977,35,6,455.0,Dollar
-True,526,4.15,4.07681,4.07681,35,22,455.0,Dollar
-False,244,3.7,3.78722,3.78722,35,21,455.0,Dollar
-False,1902,3.8,3.77919,3.77919,35,40,455.0,Dollar
-True,1349,4.0,4.02398,4.02398,35,17,455.0,Pound
-True,245,4.7,4.65883,4.65883,35,33,455.0,Dollar
-False,192,3.8,3.77464,3.77464,35,10,455.0,Pound
-False,195,4.3,4.37611,4.37611,35,33,455.0,Dollar
-False,81,4.25,4.19346,4.19346,35,7,455.0,Pound
-False,2314,3.75,3.55424,3.55424,35,13,455.0,Euro
-True,1085,4.0,4.05521,4.05521,35,28,455.0,Euro
-False,86,4.45,4.28497,4.28497,35,15,455.0,Pound
-False,6631,4.05,4.38849,4.38849,35,28,455.0,Dollar
-False,2566,4.75,4.77095,4.77095,35,99,455.0,Dollar
-False,229,4.15,4.0722,4.0722,35,15,700.0,Euro
-True,1350,4.35,4.34032,4.34032,35,18,455.0,Pound
-True,8681,4.5,4.35797,4.35797,35,40,455.0,Pound
-False,1574,3.8,3.48533,3.48533,35,52,455.0,Dollar
-True,693,4.55,4.60881,4.60881,35,14,455.0,Euro
-True,2157,3.65,3.63239,3.63239,35,10,455.0,Dollar
-True,1016,4.0,4.13471,4.13471,35,27,455.0,Dollar
-True,9762,4.7,4.71852,4.71852,35,18,455.0,Dollar
-False,4994,3.25,3.23537,3.23537,35,60,455.0,Euro
-True,104,4.05,4.13178,4.13178,35,18,455.0,Pound
-True,130,4.95,4.93529,4.93529,36,0,3200.0,Pound
-True,104,4.28261,4.44637,4.44637,35,56,455.0,Euro
-False,4411,4.05,3.95246,3.95246,35,29,455.0,Euro
-False,72,4.36364,4.38776,4.38776,35,11,455.0,Euro
-True,266,4.46154,4.47581,4.47581,36,42,455.0,Euro
-False,5023,4.4,4.449,4.449,35,53,455.0,Pound
-False,2310,3.75,4.04932,4.04932,35,53,455.0,Dollar
-False,3129,4.15,4.16006,4.16006,35,14,455.0,Pound
-True,1419,3.65,3.44811,3.44811,35,34,455.0,Dollar
-True,3239,4.0,3.84593,3.84593,35,40,455.0,Pound
-True,2511,4.8,4.80821,4.80821,36,32,455.0,Pound
-False,1291,3.45,3.42982,3.42982,35,18,455.0,Euro
-True,3297,4.4,4.23366,4.23366,35,19,455.0,Pound
-False,276,4.33333,4.30393,4.30393,35,219,455.0,Dollar
-True,200,4.3,4.36559,4.36559,35,17,455.0,Dollar
-True,100,4.03571,4.08015,4.08015,35,20,455.0,Dollar
-True,1041,4.35,4.21894,4.21894,35,73,455.0,Pound
-True,1445,3.85,3.84912,3.84912,35,26,455.0,Euro
-True,256,3.8,3.77616,3.77616,35,61,455.0,Dollar
-True,880,4.1,4.02431,4.02431,36,14,455.0,Dollar
-False,483,3.85,3.70114,3.70114,35,16,455.0,Pound
-True,159,4.15,4.13108,4.13108,35,19,455.0,Euro
-False,123,4.4,4.38468,4.38468,35,31,455.0,Pound
-False,1937,3.5,3.62527,3.62527,35,8,455.0,Dollar
-False,418,3.95,4.03753,4.03753,35,52,455.0,Pound
-False,244,3.45,3.4648,3.4648,35,25,455.0,Pound
-False,227,3.85,3.85314,3.85314,35,22,455.0,Pound
-True,321,4.65,4.57196,4.57196,35,37,455.0,Euro
-False,5996,3.6,3.13268,3.13268,35,22,455.0,Dollar
-True,769,4.35,4.36649,4.36649,34,22,455.0,Dollar
-False,111,4.25,4.41076,4.41076,34,41,455.0,Dollar
-False,649,3.4,3.49054,3.49054,34,12,455.0,Pound
-False,89,3.6,3.74624,3.74624,34,23,3200.0,Euro
-True,1452,4.0,4.03456,4.03456,34,21,455.0,Pound
-True,174,4.14286,4.2751,4.2751,37,29,455.0,Pound
-True,177,4.51613,4.4126,4.4126,35,131,455.0,Pound
-False,1616,3.95,3.92845,3.92845,34,28,455.0,Pound
-False,1768,3.8,3.75037,3.75037,34,67,455.0,Pound
-False,2283,4.5,4.47472,4.47472,34,49,455.0,Dollar
-True,295,4.3,4.27262,4.27262,34,24,455.0,Dollar
-False,953,3.55,3.68127,3.68127,34,16,455.0,Pound
-True,469,3.3,3.06003,3.06003,34,25,455.0,Euro
-True,14404,4.25,4.18484,4.18484,34,145,455.0,Dollar
-True,5138,3.5,3.98373,3.98373,34,9,800.0,Pound
-False,205,4.1,3.92702,3.92702,34,7,455.0,Pound
-False,72,4.1,4.24297,4.24297,34,74,455.0,Euro
-False,2801,3.85,3.73097,3.73097,34,41,455.0,Euro
-False,412,4.45,4.6631,4.6631,34,7,455.0,Pound
-True,389,3.9,3.89551,3.89551,34,41,455.0,Dollar
-False,175,4.25,4.20917,4.20917,34,37,455.0,Euro
-False,4722,3.2,2.99937,2.99937,34,24,455.0,Euro
-True,3619,3.9,3.8544,3.8544,34,34,455.0,Pound
-False,167,3.75,3.9554,3.9554,34,20,455.0,Pound
-True,150,4.25,4.27542,4.27542,34,22,455.0,Dollar
-False,746,4.85294,4.78937,4.78937,34,16,455.0,Dollar
-True,315,2.25,2.2485,2.2485,34,7,455.0,Dollar
-False,191,3.75,3.75495,3.75495,34,10,455.0,Dollar
-True,3698,4.25,4.18778,4.18778,34,23,455.0,Euro
-True,724,4.5,4.7013,4.7013,34,78,455.0,Pound
-False,1089,4.45,4.49929,4.49929,34,6,455.0,Euro
-False,119,4.35,4.34426,4.34426,34,6,455.0,Dollar
-True,101,4.5,4.54132,4.54132,34,7,455.0,Euro
-True,2114,3.9,3.95461,3.95461,34,8,455.0,Pound
-True,1304,4.15,4.08527,4.08527,34,38,468.0,Pound
-True,1668,4.5,4.4917,4.4917,34,27,455.0,Dollar
-False,366,4.2,4.07354,4.07354,34,18,455.0,Pound
-True,1948,3.6,3.49417,3.49417,34,31,455.0,Euro
-True,1601,3.9,4.18066,4.18066,34,7,455.0,Euro
-False,9081,3.85,3.93421,3.93421,34,26,455.0,Euro
-False,1626,4.5,4.36047,4.36047,34,18,455.0,Dollar
-True,2831,4.1,3.93517,3.93517,34,10,455.0,Pound
-False,94,4.2,4.21137,4.21137,34,17,455.0,Dollar
-True,5961,4.29412,4.40398,4.40398,34,11,455.0,Euro
-True,272,3.95,3.87215,3.87215,34,31,455.0,Dollar
-True,267,3.95,3.9932,3.9932,34,26,455.0,Dollar
-False,385,3.85,3.78419,3.78419,34,31,455.0,Pound
-True,1597,4.65,4.6327,4.6327,34,29,455.0,Pound
-False,158,3.1,3.15165,3.15165,34,22,455.0,Euro
-False,3696,4.25,4.21377,4.21377,34,19,455.0,Pound
-False,172,4.23214,4.25595,4.25595,34,13,455.0,Pound
-False,214,4.35,4.49926,4.49926,34,32,455.0,Euro
-False,12794,3.7,3.78622,3.78622,34,53,455.0,Euro
-True,8224,3.6,3.89028,3.89028,34,16,455.0,Euro
-True,1537,4.13158,4.25051,4.25051,34,47,455.0,Euro
-False,7107,4.2,4.46468,4.46468,34,37,455.0,Dollar
-False,1599,4.45,4.54026,4.54026,34,26,455.0,Dollar
-True,806,3.8,3.6844,3.6844,34,30,455.0,Euro
-False,363,4.0,3.86162,3.86162,34,51,455.0,Dollar
-False,1584,3.9,3.71626,3.71626,34,50,455.0,Pound
-False,113,4.07895,3.97984,3.97984,34,34,455.0,Euro
-False,314,4.39706,4.48056,4.48056,34,9,455.0,Pound
-False,3546,4.5,4.56973,4.56973,34,19,455.0,Pound
-False,1117,4.1,4.12242,4.12242,33,9,455.0,Euro
-True,164,4.35,4.32095,4.32095,33,110,455.0,Pound
-True,155,4.85,4.84262,4.84262,33,14,455.0,Pound
-True,6769,3.7,4.07146,4.07146,33,14,455.0,Euro
-False,1764,4.3,4.24326,4.24326,33,8,455.0,Euro
-False,1979,4.15,3.90836,3.90836,33,27,455.0,Euro
-False,68,4.1,4.13946,4.13946,33,7,455.0,Dollar
-True,108,3.9,3.85839,3.85839,33,27,455.0,Dollar
-True,2759,3.65,3.62494,3.62494,33,12,455.0,Pound
-True,1075,3.85,3.83842,3.83842,33,16,455.0,Euro
-True,105,4.56061,4.56875,4.56875,36,43,455.0,Pound
-True,116,4.3,4.30656,4.30656,33,6,455.0,Dollar
-True,230,4.15,4.22913,4.22913,33,12,455.0,Euro
-True,197,4.2,4.21466,4.21466,33,54,455.0,Pound
-False,1424,4.05,4.17516,4.17516,33,17,455.0,Euro
-True,1260,3.55,3.60502,3.60502,33,30,455.0,Euro
-True,1099,4.4,4.39986,4.39986,33,17,455.0,Euro
-False,208,4.40909,4.36064,4.36064,33,9,455.0,Dollar
-False,310,4.2,4.17224,4.17224,33,33,455.0,Dollar
-True,2264,3.55,3.56694,3.56694,33,13,455.0,Euro
-False,816,3.55,3.54281,3.54281,33,18,455.0,Pound
-False,2266,4.3,4.2552,4.2552,33,7,455.0,Pound
-True,663,4.55,4.69098,4.69098,33,29,455.0,Dollar
-False,2762,3.85,3.59521,3.59521,33,20,455.0,Dollar
-False,3845,3.9,4.06461,4.06461,33,20,455.0,Pound
-False,5820,3.5,3.30793,3.30793,33,28,455.0,Pound
-True,153,4.0,3.92333,3.92333,33,17,455.0,Pound
-False,4430,4.4,4.19823,4.19823,33,33,455.0,Pound
-False,293,3.75,3.74303,3.74303,33,18,455.0,Euro
-True,212,3.75,3.73634,3.73634,33,19,455.0,Pound
-True,2666,4.0,3.73182,3.73182,33,27,455.0,Euro
-False,315,4.71429,4.69314,4.69314,33,313,455.0,Pound
-True,5181,4.5,4.48189,4.48189,33,16,455.0,Dollar
-False,99,4.3,4.24721,4.24721,33,12,455.0,Dollar
-False,110,4.3,4.32601,4.32601,33,24,455.0,Dollar
-False,975,2.8,2.63071,2.63071,33,27,468.0,Euro
-True,215,4.0,3.96958,3.96958,33,19,455.0,Dollar
-True,185,4.31818,4.25879,4.25879,33,13,455.0,Euro
-True,1329,3.95,4.04095,4.04095,33,9,455.0,Pound
-False,387,4.64583,4.62816,4.62816,33,11,455.0,Pound
-True,5818,3.7,3.57281,3.57281,33,31,455.0,Pound
-True,2121,4.25,4.13832,4.13832,33,7,455.0,Euro
-True,5563,3.15,3.09239,3.09239,33,8,455.0,Euro
-False,262,3.5,3.60993,3.60993,33,13,455.0,Euro
-False,892,3.7,3.74821,3.74821,33,23,455.0,Euro
-True,642,3.75,3.94566,3.94566,33,15,455.0,Dollar
-True,3615,4.0,3.94266,3.94266,33,9,455.0,Pound
-True,189,3.65,3.8821,3.8821,33,78,455.0,Euro
-True,8098,4.21875,4.41968,4.41968,33,27,455.0,Dollar
-True,960,4.25,4.2654,4.2654,33,5,455.0,Euro
-True,3747,3.5,2.90921,2.90921,33,21,468.0,Dollar
-True,116,4.375,4.35504,4.35504,33,9,455.0,Pound
-True,283,4.15,4.15977,4.15977,33,78,455.0,Pound
-False,482,3.9,3.86386,3.86386,33,10,468.0,Euro
-True,378,4.2,4.18811,4.18811,33,65,455.0,Pound
-False,1297,4.15,4.14013,4.14013,33,19,455.0,Pound
-False,1501,2.8,2.97476,2.97476,33,26,455.0,Dollar
-False,248,4.5,4.48916,4.48916,33,27,455.0,Euro
-False,3195,4.45,4.47386,4.47386,33,39,455.0,Euro
-True,296,4.55882,4.21475,4.21475,33,34,455.0,Pound
-True,1276,3.8,3.81182,3.81182,33,19,455.0,Dollar
-True,2065,4.45,4.44598,4.44598,33,14,455.0,Dollar
-False,223,4.3,4.1284,4.1284,33,15,455.0,Euro
-True,148,3.95,3.97834,3.97834,33,16,455.0,Euro
-False,2819,4.2,4.46797,4.46797,33,11,455.0,Dollar
-True,245,4.85,4.81125,4.81125,33,51,455.0,Dollar
-True,5353,4.42424,4.56803,4.56803,33,8,455.0,Dollar
-False,512,4.6,4.70493,4.70493,32,24,455.0,Euro
-False,263,4.75,4.75285,4.75285,32,6,455.0,Euro
-True,1735,3.75,3.75629,3.75629,32,12,455.0,Euro
-False,233,3.55,3.60847,3.60847,32,44,455.0,Euro
-True,1249,3.7,3.88096,3.88096,32,44,455.0,Pound
-False,1144,4.8,4.77889,4.77889,32,16,455.0,Euro
-False,176,3.9,4.06412,4.06412,32,88,455.0,Euro
-True,109,4.3,4.39168,4.39168,32,26,455.0,Euro
-True,1029,4.40625,4.4239,4.4239,32,10,455.0,Euro
-True,3577,3.15,3.30378,3.30378,32,7,455.0,Pound
-False,2123,4.35,4.22233,4.22233,32,6,455.0,Pound
-False,2655,4.0,4.06282,4.06282,32,120,455.0,Euro
-True,2855,4.1,4.18984,4.18984,32,24,455.0,Euro
-True,156,4.55,4.53762,4.53762,32,6,455.0,Euro
-True,684,3.2,3.4717,3.4717,32,13,455.0,Dollar
-False,412,3.7,3.70804,3.70804,32,7,455.0,Pound
-False,468,3.75,3.87619,3.87619,32,54,455.0,Dollar
-True,371,4.1,3.96186,3.96186,32,44,455.0,Euro
-False,222,4.5,4.57179,4.57179,32,87,455.0,Pound
-False,145,4.45,4.33166,4.33166,32,21,455.0,Euro
-False,97,4.35,4.48686,4.48686,32,17,455.0,Dollar
-True,144,4.35,4.36814,4.36814,32,5,455.0,Pound
-False,74,4.2,4.16463,4.16463,32,12,455.0,Dollar
-True,174,4.35,4.36877,4.36877,32,50,455.0,Pound
-False,4039,4.1,4.43175,4.43175,32,17,455.0,Pound
-False,1360,4.15,4.32936,4.32936,32,11,455.0,Dollar
-False,1938,4.25,4.20115,4.20115,34,51,455.0,Dollar
-True,169,3.9,3.88388,3.88388,32,30,455.0,Euro
-True,116,3.4,3.29105,3.29105,32,8,455.0,Dollar
-False,6615,3.35,4.03258,4.03258,32,0,455.0,Euro
-False,156,4.35,4.34373,4.34373,32,20,455.0,Dollar
-True,1714,4.0,3.96079,3.96079,32,97,455.0,Pound
-False,209,3.95,4.00123,4.00123,32,44,455.0,Euro
-False,254,3.9,3.84019,3.84019,32,12,455.0,Euro
-False,1155,4.55,4.63889,4.63889,32,19,455.0,Euro
-True,107,4.8,4.7655,4.7655,32,50,455.0,Dollar
-False,166,4.76667,4.72768,4.72768,32,26,455.0,Pound
-False,253,3.85,3.88102,3.88102,32,28,455.0,Pound
-False,649,2.85,2.78543,2.78543,32,7,455.0,Pound
-False,903,3.7,3.66676,3.66676,32,6,455.0,Pound
-True,1415,4.9,4.87331,4.87331,32,27,455.0,Euro
-False,287,3.9,3.83114,3.83114,32,30,455.0,Pound
-False,1362,4.55,4.50371,4.50371,32,25,455.0,Pound
-True,692,4.6,4.57694,4.57694,32,16,455.0,Dollar
-False,1137,4.3,4.33725,4.33725,32,24,455.0,Euro
-True,123,3.95,3.94667,3.94667,32,38,455.0,Euro
-True,10161,4.15,4.26592,4.26592,32,15,455.0,Pound
-True,1167,3.35,3.62298,3.62298,32,22,455.0,Euro
-True,942,4.35,4.08302,4.08302,32,18,455.0,Dollar
-False,1153,4.35,4.17974,4.17974,32,8,455.0,Dollar
-False,774,4.1,4.05345,4.05345,32,34,455.0,Euro
-False,2386,4.59375,4.57659,4.57659,32,25,455.0,Euro
-True,101,4.73438,4.72755,4.72755,32,40,455.0,Pound
-False,902,3.55,3.67652,3.67652,32,19,455.0,Dollar
-True,3082,3.7,3.82056,3.82056,32,29,455.0,Euro
-False,8274,4.0,4.18747,4.18747,32,31,455.0,Pound
-False,3669,3.9,3.7578,3.7578,32,12,455.0,Dollar
-False,141,4.8,4.78966,4.78966,32,7,455.0,Pound
-False,141,4.16667,4.16797,4.16797,32,21,455.0,Euro
-False,116,3.5,3.44313,3.44313,32,49,455.0,Pound
-True,5093,3.2,3.55247,3.55247,31,14,455.0,Pound
-True,2514,4.4,4.34484,4.34484,31,16,455.0,Euro
-False,1492,3.5,3.71457,3.71457,31,21,455.0,Pound
-True,537,3.65,3.61792,3.61792,31,60,520.0,Euro
-False,158,3.8,3.77149,3.77149,31,44,455.0,Pound
-True,1727,4.8,4.78907,4.78907,31,20,455.0,Dollar
-True,799,4.2,4.16749,4.16749,31,17,455.0,Dollar
-True,247,4.6,4.61806,4.61806,31,59,455.0,Dollar
-True,4794,3.95,4.21912,4.21912,31,44,455.0,Euro
-True,149,3.7,3.759,3.759,31,14,455.0,Pound
-False,138,3.15,3.13706,3.13706,31,7,455.0,Euro
-True,237,4.3,4.29203,4.29203,31,12,455.0,Euro
-True,1227,3.9,3.80289,3.80289,31,29,455.0,Pound
-False,97,3.96154,4.05924,4.05924,31,18,455.0,Pound
-False,3728,3.67742,3.6748,3.6748,31,6,455.0,Dollar
-False,1177,4.2,4.38461,4.38461,31,6,455.0,Euro
-False,141,4.75,4.77004,4.77004,31,53,455.0,Pound
-False,5003,3.7,3.58261,3.58261,31,25,455.0,Pound
-False,4791,4.0,3.66321,3.66321,31,30,455.0,Pound
-True,1205,4.3,4.21277,4.21277,31,19,455.0,Pound
-True,231,4.7,4.6791,4.6791,31,38,455.0,Pound
-True,1120,4.25,4.19282,4.19282,31,7,455.0,Euro
-False,2647,4.4,4.39356,4.39356,31,24,455.0,Euro
-True,719,4.4,4.44521,4.44521,31,25,455.0,Pound
-False,128,4.35,4.31884,4.31884,31,22,455.0,Dollar
-False,167,4.40909,4.37767,4.37767,31,51,455.0,Pound
-False,6434,4.04839,4.0535,4.0535,31,17,455.0,Dollar
-False,1344,3.1,3.45442,3.45442,31,20,455.0,Euro
-True,2816,4.2,4.39006,4.39006,31,39,455.0,Dollar
-True,9307,3.84615,3.99604,3.99604,31,22,455.0,Euro
-True,2617,4.05,3.8635,3.8635,31,15,455.0,Euro
-True,6031,4.38,4.36757,4.36757,31,36,455.0,Pound
-False,145,3.8,3.8093,3.8093,31,56,455.0,Pound
-False,1560,4.15,3.99678,3.99678,31,16,455.0,Dollar
-False,3915,3.35,3.67118,3.67118,31,10,455.0,Dollar
-False,268,3.85,4.26562,4.26562,31,7,455.0,Pound
-False,200,4.2931,4.20266,4.20266,31,13,455.0,Pound
-False,242,3.65,3.14027,3.14027,31,39,455.0,Pound
-False,1340,4.1,3.99053,3.99053,31,7,455.0,Euro
-True,1351,3.35,3.07031,3.07031,31,9,455.0,Pound
-False,219,4.0,4.09962,4.09962,31,16,455.0,Dollar
-False,103,3.5,3.30415,3.30415,31,62,455.0,Euro
-False,83,4.05,4.02476,4.02476,31,8,455.0,Dollar
-True,397,3.2,3.22574,3.22574,31,18,455.0,Pound
-True,1971,4.5,4.42724,4.42724,31,17,455.0,Euro
-False,227,4.25,4.2789,4.2789,31,31,455.0,Dollar
-False,445,3.2,3.46072,3.46072,31,45,455.0,Dollar
-True,438,3.6,3.63769,3.63769,31,26,455.0,Euro
-False,376,3.8,3.77373,3.77373,31,20,455.0,Euro
-True,606,4.05,4.10496,4.10496,31,32,455.0,Dollar
-False,852,4.15,4.15231,4.15231,31,31,455.0,Pound
-False,4082,3.7,3.49514,3.49514,31,55,455.0,Pound
-False,100,3.8,3.82838,3.82838,31,15,455.0,Pound
-True,219,3.5,3.4581,3.4581,31,0,455.0,Pound
-False,160,4.71429,4.71397,4.71397,31,27,455.0,Pound
-True,8497,4.43333,4.49667,4.49667,31,18,455.0,Pound
-False,169,4.75,4.77053,4.77053,31,20,455.0,Dollar
-True,417,4.3,4.20312,4.20312,31,29,455.0,Pound
-False,128,3.7,3.52775,3.52775,31,11,455.0,Dollar
-True,9337,4.1,4.0987,4.0987,31,12,455.0,Euro
-True,3916,3.95,3.8062,3.8062,31,37,455.0,Pound
-True,95,4.59091,4.70311,4.70311,31,11,455.0,Euro
-False,3744,4.3,4.61997,4.61997,31,26,455.0,Pound
-False,505,4.55,4.52495,4.52495,31,18,455.0,Euro
-True,155,3.45,3.40131,3.40131,31,6,455.0,Euro
-False,613,2.7,2.94153,2.94153,31,9,455.0,Pound
-False,134,4.35,4.33382,4.33382,31,33,455.0,Dollar
-False,274,4.05,4.15409,4.15409,31,49,455.0,Dollar
-True,5941,4.25806,4.36622,4.36622,31,30,455.0,Pound
-True,1290,3.6,3.41654,3.41654,31,44,455.0,Dollar
-False,621,3.45,3.50799,3.50799,31,22,455.0,Dollar
-True,810,4.0,4.23479,4.23479,31,27,455.0,Dollar
-True,1205,3.3,3.38882,3.38882,31,37,455.0,Euro
-False,74,4.45,4.41949,4.41949,31,8,455.0,Dollar
-True,150,3.8,3.67462,3.67462,31,20,455.0,Euro
-False,1781,4.25,3.96435,3.96435,31,6,455.0,Pound
-False,132,3.75,3.70564,3.70564,31,12,455.0,Dollar
-True,239,4.65,4.56058,4.56058,31,36,455.0,Euro
-True,8121,4.58333,4.60474,4.60474,31,17,455.0,Pound
-True,229,4.59677,4.63915,4.63915,32,20,455.0,Dollar
-True,707,4.1,4.03922,4.03922,30,47,455.0,Pound
-False,170,4.15,4.17631,4.17631,30,9,455.0,Pound
-False,288,4.55,4.4468,4.4468,30,36,455.0,Dollar
-False,2413,4.05,3.96793,3.96793,30,30,455.0,Dollar
-False,338,4.35,4.36109,4.36109,30,35,455.0,Dollar
-True,282,4.3,4.25073,4.25073,30,26,455.0,Dollar
-False,532,3.4,3.38313,3.38313,30,33,455.0,Dollar
-True,249,3.55,3.62732,3.62732,30,67,455.0,Pound
-False,212,4.25,4.17772,4.17772,30,34,455.0,Dollar
-False,875,4.4,4.39903,4.39903,30,14,455.0,Euro
-True,4369,4.4,4.56712,4.56712,30,42,455.0,Dollar
-False,2555,4.6,4.52162,4.52162,30,39,455.0,Euro
-True,778,4.15,4.229,4.229,30,17,455.0,Pound
-True,2181,3.65,3.67787,3.67787,30,39,455.0,Dollar
-False,155,4.5,4.47075,4.47075,30,25,455.0,Dollar
-True,5983,4.34483,4.36768,4.36768,30,22,455.0,Dollar
-False,129,4.1,4.13243,4.13243,30,37,455.0,Euro
-False,3234,4.25,4.0752,4.0752,30,17,455.0,Euro
-True,856,3.85,3.94248,3.94248,30,74,468.0,Dollar
-False,210,3.5,3.51871,3.51871,30,12,455.0,Dollar
-True,2917,3.05,3.07745,3.07745,30,7,455.0,Dollar
-False,266,4.2,4.1363,4.1363,30,94,455.0,Dollar
-True,2093,4.1,4.11916,4.11916,30,262,455.0,Euro
-False,184,3.45,3.43277,3.43277,30,17,468.0,Pound
-True,88,4.0,3.9427,3.9427,30,20,455.0,Euro
-True,206,4.55,4.56614,4.56614,30,0,455.0,Dollar
-False,88,4.65,4.54717,4.54717,30,23,455.0,Euro
-True,5007,4.05,3.97673,3.97673,30,41,455.0,Euro
-False,252,4.05,4.12705,4.12705,30,25,455.0,Pound
-True,996,4.1,4.08643,4.08643,30,8,455.0,Euro
-True,178,3.6,3.44566,3.44566,30,40,455.0,Pound
-False,70,4.43478,4.0283,4.0283,30,15,455.0,Pound
-True,3408,4.05,3.94015,3.94015,30,70,455.0,Pound
-False,213,3.35,3.29351,3.29351,30,8,455.0,Dollar
-True,278,4.55,4.53579,4.53579,30,6,455.0,Euro
-False,1160,4.3,4.18305,4.18305,30,32,455.0,Euro
-False,190,4.35,4.33391,4.33391,30,74,455.0,Euro
-True,753,3.9,3.9085,3.9085,30,19,455.0,Dollar
-True,3400,3.4,3.44882,3.44882,30,28,455.0,Dollar
-True,5789,4.45,4.50494,4.50494,30,22,455.0,Euro
-False,1602,4.55,4.50046,4.50046,30,39,455.0,Dollar
-True,5844,3.3,3.18944,3.18944,30,20,455.0,Pound
-True,953,3.8,3.8439,3.8439,30,49,455.0,Pound
-False,100,4.33333,4.42089,4.42089,30,11,455.0,Euro
-False,82,4.45,4.38993,4.38993,30,12,455.0,Pound
-True,863,4.2,4.09023,4.09023,30,8,455.0,Pound
-False,2997,3.7,4.00036,4.00036,30,16,455.0,Dollar
-True,2698,4.35,4.20252,4.20252,30,32,455.0,Pound
-False,721,4.55,4.55346,4.55346,30,21,455.0,Dollar
-False,190,4.6,4.59896,4.59896,30,12,455.0,Pound
-True,1099,3.85,3.81719,3.81719,30,15,455.0,Euro
-False,6872,4.6,4.37432,4.37432,30,24,455.0,Euro
-True,208,3.45,3.68734,3.68734,30,26,455.0,Euro
-False,323,4.45,4.53625,4.53625,30,47,455.0,Pound
-False,566,3.95,3.9521,3.9521,30,25,455.0,Pound
-True,2217,3.7,3.47584,3.47584,30,25,455.0,Euro
-True,2503,3.75,3.20141,3.20141,30,16,455.0,Pound
-False,6488,4.5,4.66144,4.66144,30,14,455.0,Dollar
-False,811,2.95,3.39738,3.39738,30,37,455.0,Euro
-False,787,4.25,4.25065,4.25065,30,11,455.0,Euro
-False,128,4.55,4.63798,4.63798,30,45,455.0,Pound
-True,93,4.95,4.93679,4.93679,30,59,455.0,Euro
-False,104,4.33333,4.24841,4.24841,30,15,455.0,Dollar
-False,2292,4.25,4.39643,4.39643,31,66,455.0,Dollar
-False,170,4.2,4.14669,4.14669,30,19,455.0,Euro
-False,3377,4.15,3.93552,3.93552,30,10,455.0,Dollar
-False,840,2.75,2.79436,2.79436,30,24,455.0,Euro
-True,662,4.15,4.10097,4.10097,30,40,455.0,Dollar
-False,343,4.7,4.66858,4.66858,30,27,455.0,Pound
-False,512,3.25,3.18356,3.18356,30,41,455.0,Euro
-False,243,4.05,3.98356,3.98356,30,52,455.0,Dollar
-False,285,4.7,4.75213,4.75213,30,34,455.0,Euro
-False,154,4.1,3.8422,3.8422,30,46,455.0,Dollar
-False,196,4.0,3.91846,3.91846,30,72,455.0,Pound
-True,162,4.71667,4.6724,4.6724,30,54,455.0,Pound
-False,4720,3.9,4.00103,4.00103,30,6,455.0,Pound
-False,190,4.2619,4.25768,4.25768,30,108,455.0,Pound
-True,131,4.75,4.79686,4.79686,31,42,455.0,Dollar
-False,2106,3.25,2.98505,2.98505,30,15,455.0,Dollar
-False,149,4.45,4.53297,4.53297,29,36,455.0,Euro
-True,204,3.75,3.37795,3.37795,29,29,455.0,Euro
-False,1140,4.25,4.35117,4.35117,29,27,455.0,Euro
-False,208,4.25,3.9917,3.9917,29,26,455.0,Pound
-True,256,3.35,3.32451,3.32451,29,15,455.0,Euro
-False,4834,3.95,3.99411,3.99411,29,21,455.0,Euro
-False,216,4.4,4.38149,4.38149,29,33,455.0,Euro
-False,88,3.8,3.80632,3.80632,29,11,455.0,Euro
-True,1418,4.7,4.67019,4.67019,29,19,455.0,Euro
-False,5572,4.2,3.96595,3.96595,29,21,455.0,Pound
-True,1466,4.7,4.68821,4.68821,29,65,455.0,Euro
-False,1196,4.1,4.22218,4.22218,29,10,455.0,Dollar
-False,6834,2.8,2.68612,2.68612,29,13,455.0,Dollar
-False,167,3.5,3.54172,3.54172,29,16,455.0,Dollar
-True,193,3.75,3.70958,3.70958,29,18,455.0,Dollar
-True,4178,4.3,4.26738,4.26738,29,13,455.0,Dollar
-False,148,4.55,4.52722,4.52722,29,45,455.0,Euro
-True,4030,4.65,4.5893,4.5893,29,11,455.0,Euro
-True,1443,3.95,3.96999,3.96999,29,22,455.0,Dollar
-True,1122,3.85,3.84617,3.84617,29,12,455.0,Euro
-True,717,3.3,3.35149,3.35149,29,12,455.0,Euro
-True,1123,4.75,4.71822,4.71822,29,9,455.0,Dollar
-False,693,3.45,3.34219,3.34219,29,40,455.0,Euro
-False,250,4.55,4.58831,4.58831,29,26,455.0,Pound
-True,888,4.05,4.07397,4.07397,29,46,455.0,Pound
-False,1219,4.4,4.4285,4.4285,29,37,455.0,Dollar
-False,140,4.6,4.63656,4.63656,29,11,455.0,Euro
-False,2265,3.9,3.86818,3.86818,29,12,455.0,Dollar
-False,69,4.4,4.4285,4.4285,29,8,455.0,Pound
-True,399,4.3,4.33032,4.33032,29,49,455.0,Euro
-True,1457,4.25,4.38652,4.38652,29,18,455.0,Pound
-True,2855,4.05,4.27026,4.27026,29,21,455.0,Pound
-False,297,3.65,3.87953,3.87953,29,26,800.0,Pound
-True,132,4.16667,4.23643,4.23643,29,35,455.0,Pound
-False,38,4.74138,4.74189,4.74189,29,22,700.0,Dollar
-False,233,4.2,4.20839,4.20839,29,10,455.0,Dollar
-False,2043,4.15,4.03761,4.03761,29,78,455.0,Euro
-False,11150,3.8,3.84653,3.84653,29,45,455.0,Dollar
-True,1126,3.45,3.29835,3.29835,29,36,455.0,Euro
-False,125,3.9,3.77434,3.77434,29,44,455.0,Pound
-False,195,3.95,3.84869,3.84869,29,8,455.0,Pound
-False,135,4.05,3.94432,3.94432,29,36,455.0,Pound
-False,84,4.15,4.07337,4.07337,29,26,455.0,Pound
-False,2423,4.5,4.39126,4.39126,29,12,455.0,Euro
-True,67,4.15,4.05024,4.05024,29,8,455.0,Pound
-True,7253,4.22727,4.1227,4.1227,29,29,455.0,Euro
-False,1743,4.15,4.13558,4.13558,29,45,455.0,Pound
-False,2094,4.5,4.46268,4.46268,29,56,455.0,Euro
-True,247,4.5,4.42794,4.42794,29,13,455.0,Euro
-True,122,4.4,4.34529,4.34529,29,22,455.0,Dollar
-False,136,3.5,3.54899,3.54899,30,24,455.0,Dollar
-True,1826,3.2,3.55848,3.55848,29,22,455.0,Euro
-False,1079,4.05,4.0529,4.0529,29,11,455.0,Dollar
-False,66,4.55,4.53549,4.53549,29,17,455.0,Euro
-False,138,3.95,3.96288,3.96288,29,42,455.0,Dollar
-True,6766,4.17241,4.20019,4.20019,29,29,455.0,Pound
-False,860,3.9,3.87178,3.87178,29,23,455.0,Euro
-True,118,3.95,3.93049,3.93049,29,10,455.0,Pound
-False,829,3.95,3.93963,3.93963,29,36,455.0,Euro
-True,132,3.85,3.80213,3.80213,29,55,455.0,Euro
-False,6398,4.05,3.78251,3.78251,29,35,455.0,Euro
-False,238,4.25,4.10472,4.10472,29,42,455.0,Dollar
-False,134,4.65,4.70907,4.70907,29,17,455.0,Pound
-True,292,4.95,4.95259,4.95259,29,30,455.0,Euro
-False,313,3.5,3.59567,3.59567,29,14,455.0,Pound
-True,2695,4.55,4.38428,4.38428,29,19,455.0,Dollar
-True,1602,4.8,4.74569,4.74569,29,10,455.0,Pound
-True,3438,3.35,3.53096,3.53096,29,15,455.0,Euro
-True,123,4.3,4.28191,4.28191,29,11,2320.0,Pound
-False,149,4.05,3.88676,3.88676,29,54,455.0,Pound
-True,5041,4.05172,4.14027,4.14027,29,27,455.0,Pound
-False,109,4.68966,4.63355,4.63355,29,7,455.0,Pound
-True,442,4.05,4.17677,4.17677,29,31,455.0,Dollar
-False,334,3.45,3.48576,3.48576,29,22,455.0,Euro
-True,281,4.15,4.23283,4.23283,29,65,455.0,Euro
-False,135,3.0,3.04761,3.04761,29,9,455.0,Dollar
-True,737,4.25,4.07217,4.07217,29,27,455.0,Euro
-False,92,4.4,4.26486,4.26486,29,25,455.0,Dollar
-True,1055,3.95,3.84461,3.84461,29,7,455.0,Euro
-False,224,4.2,4.13437,4.13437,29,22,455.0,Pound
-True,5597,3.95,4.20521,4.20521,29,27,455.0,Dollar
-True,1877,4.7,4.68048,4.68048,29,24,455.0,Euro
-True,87,3.5,3.49379,3.49379,29,27,455.0,Euro
-False,336,4.7,4.73441,4.73441,28,35,455.0,Euro
-False,111,4.25,4.25056,4.25056,28,13,455.0,Euro
-True,111,3.9,4.10898,4.10898,28,18,455.0,Pound
-False,602,3.0,2.97331,2.97331,28,41,455.0,Pound
-True,110,4.45,4.48784,4.48784,28,14,455.0,Euro
-False,193,4.6,4.59291,4.59291,28,36,455.0,Dollar
-True,119,3.8,3.67156,3.67156,28,15,455.0,Pound
-False,1456,3.45,3.49235,3.49235,28,10,455.0,Pound
-False,49,3.45,3.45645,3.45645,28,12,455.0,Euro
-False,1153,4.3,4.27442,4.27442,28,25,455.0,Pound
-False,1287,3.85,3.95382,3.95382,28,10,455.0,Euro
-True,519,3.75,3.72947,3.72947,28,8,455.0,Pound
-False,6139,3.7,3.21873,3.21873,28,18,455.0,Euro
-False,1050,4.15,4.00025,4.00025,28,29,455.0,Dollar
-True,662,4.2,4.09761,4.09761,28,26,700.0,Dollar
-False,136,4.35,4.36637,4.36637,28,22,455.0,Euro
-True,846,4.3,4.35939,4.35939,28,13,455.0,Dollar
-True,118,4.75,4.81861,4.81861,29,29,455.0,Pound
-False,1441,3.65,3.85383,3.85383,28,10,455.0,Euro
-True,181,4.65,4.62531,4.62531,28,12,455.0,Dollar
-False,1832,3.3,3.28611,3.28611,28,69,455.0,Euro
-False,4010,4.15,3.89241,3.89241,28,13,455.0,Dollar
-False,78,4.28571,4.24081,4.24081,28,0,640.0,Euro
-False,195,4.75,4.7836,4.7836,28,21,455.0,Dollar
-False,782,4.3,4.30445,4.30445,29,79,455.0,Euro
-True,130,4.5,4.54117,4.54117,28,34,455.0,Euro
-True,176,3.8,3.6235,3.6235,28,32,455.0,Pound
-False,1068,3.35,3.39779,3.39779,28,32,455.0,Euro
-True,151,4.75,4.73896,4.73896,28,14,455.0,Pound
-True,2033,4.1,4.05481,4.05481,28,72,455.0,Dollar
-True,172,4.16071,4.14038,4.14038,28,10,455.0,Dollar
-False,1209,4.15,4.11888,4.11888,28,39,455.0,Pound
-True,694,4.4,4.38328,4.38328,28,27,455.0,Dollar
-False,5369,4.05,3.87161,3.87161,28,67,455.0,Pound
-True,101,4.6,4.59053,4.59053,28,16,455.0,Euro
-False,75,4.58824,4.60903,4.60903,28,35,455.0,Dollar
-True,323,4.55,4.54603,4.54603,28,44,455.0,Pound
-False,455,4.35,4.41787,4.41787,28,42,455.0,Euro
-False,173,3.8,3.73263,3.73263,28,13,455.0,Pound
-False,111,3.1,2.92756,2.92756,28,10,455.0,Pound
-True,4811,4.1,3.90464,3.90464,28,23,455.0,Dollar
-True,4071,3.7,3.61118,3.61118,28,37,455.0,Dollar
-False,53,4.86,4.85517,4.85517,28,26,455.0,Euro
-True,121,4.85,4.84737,4.84737,28,12,455.0,Dollar
-False,1246,4.25,4.28269,4.28269,28,17,455.0,Euro
-True,210,4.45,4.42563,4.42563,28,46,455.0,Dollar
-True,1466,3.75,4.25624,4.25624,28,43,455.0,Pound
-True,2256,3.65,3.65823,3.65823,28,7,455.0,Euro
-True,236,3.95,4.01401,4.01401,28,10,455.0,Euro
-False,209,4.6,4.60132,4.60132,28,31,455.0,Dollar
-False,779,2.95,2.88443,2.88443,28,5,455.0,Dollar
-False,108,4.91071,4.89885,4.89885,30,46,455.0,Euro
-True,752,3.6,3.98967,3.98967,28,31,455.0,Pound
-True,173,4.6,4.57709,4.57709,28,6,720.0,Pound
-False,5014,3.9,3.98257,3.98257,28,31,455.0,Dollar
-True,3207,4.25,4.30652,4.30652,28,8,455.0,Dollar
-False,155,4.2,4.17963,4.17963,28,28,455.0,Euro
-True,123,3.25,3.23188,3.23188,28,12,455.0,Dollar
-True,481,4.35,4.35438,4.35438,28,15,455.0,Dollar
-True,394,4.3,4.42225,4.42225,28,73,455.0,Euro
-True,100,4.5,4.52913,4.52913,28,27,455.0,Dollar
-False,723,4.5,4.58155,4.58155,28,60,455.0,Pound
-True,2060,4.0,3.91291,3.91291,28,43,455.0,Euro
-True,1506,4.05,4.2306,4.2306,28,20,455.0,Dollar
-True,2476,3.95,3.79535,3.79535,28,12,455.0,Dollar
-True,1053,3.4,3.76106,3.76106,28,10,455.0,Pound
-False,1147,4.2,4.19551,4.19551,28,11,455.0,Pound
-True,68,4.4,4.24177,4.24177,28,27,455.0,Pound
-True,1124,4.5,4.52622,4.52622,29,9,455.0,Pound
-True,124,4.53846,4.53072,4.53072,28,40,1920.0,Pound
-True,1676,3.65,3.40537,3.40537,28,95,455.0,Dollar
-False,6913,4.05,4.06866,4.06866,28,27,455.0,Euro
-True,389,3.65,3.74593,3.74593,28,23,455.0,Euro
-False,149,2.85,2.85834,2.85834,28,41,455.0,Pound
-True,206,4.1,4.23321,4.23321,28,25,455.0,Euro
-True,117,4.2,4.22994,4.22994,28,13,455.0,Pound
-True,143,4.45,4.46589,4.46589,28,10,455.0,Pound
-False,694,4.2,4.20013,4.20013,28,11,455.0,Dollar
-True,135,4.86364,4.84194,4.84194,28,6,455.0,Pound
-False,116,4.3,4.27284,4.27284,28,14,455.0,Dollar
-True,900,4.25,4.24342,4.24342,27,19,700.0,Euro
-True,221,4.7,4.6136,4.6136,27,41,455.0,Euro
-False,707,4.5,4.50731,4.50731,27,18,455.0,Dollar
-False,1633,4.0,3.93767,3.93767,27,22,455.0,Pound
-False,7580,3.39286,3.80102,3.80102,27,21,455.0,Pound
-True,99,4.0,4.0371,4.0371,27,17,455.0,Euro
-True,152,4.2,4.38152,4.38152,27,27,455.0,Dollar
-True,191,3.7,3.46294,3.46294,27,0,455.0,Euro
-False,6612,4.27083,4.42049,4.42049,27,26,455.0,Euro
-False,6537,3.9,3.57496,3.57496,27,15,455.0,Dollar
-False,176,3.85,3.84146,3.84146,27,9,455.0,Pound
-False,255,4.05,3.89175,3.89175,27,16,455.0,Pound
-True,65,3.55,4.17567,4.17567,27,5,455.0,Euro
-False,607,3.85,3.79979,3.79979,27,36,455.0,Euro
-True,3038,4.25,4.10971,4.10971,27,52,455.0,Pound
-True,8693,4.33333,4.37427,4.37427,27,68,455.0,Euro
-False,3691,4.35,4.1603,4.1603,27,39,468.0,Pound
-True,186,3.75,3.64867,3.64867,27,13,455.0,Dollar
-True,627,3.85,3.9597,3.9597,27,15,455.0,Pound
-False,331,4.05,4.02448,4.02448,27,33,455.0,Dollar
-True,1735,3.55,3.62677,3.62677,27,52,455.0,Euro
-True,142,4.6,4.58361,4.58361,27,11,800.0,Pound
-False,118,3.85,3.8478,3.8478,27,20,455.0,Pound
-True,2369,3.85,3.68989,3.68989,27,38,455.0,Pound
-True,119,4.75,4.77984,4.77984,27,29,455.0,Dollar
-False,1979,4.4,4.31946,4.31946,27,29,455.0,Dollar
-True,127,4.59259,4.58543,4.58543,27,29,455.0,Euro
-False,4276,3.72222,3.65047,3.65047,27,8,455.0,Euro
-False,526,4.2,4.61035,4.61035,28,49,455.0,Euro
-True,170,3.55,3.65748,3.65748,27,10,455.0,Pound
-False,1343,4.3,3.8461,3.8461,27,36,455.0,Pound
-True,166,4.4,4.42428,4.42428,27,44,455.0,Dollar
-False,80,3.07692,3.10904,3.10904,27,18,455.0,Dollar
-False,258,3.8,3.84493,3.84493,27,17,455.0,Pound
-False,82,3.85,3.79214,3.79214,27,34,455.0,Dollar
-True,120,3.9,4.0578,4.0578,27,49,455.0,Euro
-True,105,3.85,3.88345,3.88345,27,6,455.0,Euro
-False,1609,4.8,4.8544,4.8544,27,23,455.0,Euro
-True,1752,4.15,4.09916,4.09916,27,8,455.0,Pound
-True,1183,3.7,3.66632,3.66632,27,20,455.0,Dollar
-True,1672,3.45,3.43806,3.43806,27,4,455.0,Pound
-False,1326,4.5,4.53031,4.53031,27,29,455.0,Pound
-True,68,4.05,3.96999,3.96999,27,41,455.0,Pound
-True,1061,3.85,3.78202,3.78202,27,6,455.0,Pound
-True,191,4.11765,4.09969,4.09969,27,15,455.0,Pound
-True,185,4.5,4.54034,4.54034,27,47,455.0,Euro
-True,263,4.15,4.10223,4.10223,27,88,462.0,Euro
-True,680,4.15,4.10219,4.10219,27,13,455.0,Euro
-False,77,4.33333,4.33282,4.33282,27,25,455.0,Dollar
-False,2089,3.5,3.57258,3.57258,27,96,455.0,Euro
-True,3146,3.15,3.22498,3.22498,27,16,455.0,Euro
-False,232,4.4,4.31949,4.31949,27,35,455.0,Dollar
-True,4556,4.3,3.92197,3.92197,27,11,455.0,Dollar
-False,408,4.15,4.38281,4.38281,27,12,455.0,Pound
-True,113,4.05,4.07321,4.07321,27,9,455.0,Euro
-False,184,4.85,4.84597,4.84597,27,37,455.0,Euro
-False,361,3.9,3.84124,3.84124,27,59,455.0,Euro
-True,2495,4.15,4.02382,4.02382,27,11,455.0,Pound
-False,183,4.30769,4.23763,4.23763,28,34,455.0,Pound
-True,138,4.57407,4.57942,4.57942,27,41,1520.0,Pound
-True,1391,4.05,4.09566,4.09566,27,29,455.0,Euro
-False,70,4.31818,4.33015,4.33015,27,8,455.0,Pound
-False,1075,3.85,3.74158,3.74158,27,25,455.0,Dollar
-True,256,4.0,3.9951,3.9951,27,9,455.0,Pound
-False,128,4.3,4.21021,4.21021,27,29,455.0,Pound
-False,1362,3.25,3.29053,3.29053,27,21,455.0,Pound
-False,62,3.9,3.937,3.937,27,24,2880.0,Pound
-False,904,4.7,4.69918,4.69918,27,11,455.0,Dollar
-False,6187,4.35,4.71852,4.71852,27,24,455.0,Euro
-False,246,3.8,3.75377,3.75377,27,0,455.0,Euro
-True,3209,4.5,4.47988,4.47988,27,113,455.0,Dollar
-True,296,4.0,4.05657,4.05657,27,38,455.0,Pound
-True,213,3.8,3.75853,3.75853,27,5,455.0,Euro
-False,3318,3.7,3.73458,3.73458,27,28,455.0,Pound
-False,2211,4.05,3.89007,3.89007,27,12,455.0,Pound
-False,7265,3.84375,3.83191,3.83191,27,11,455.0,Euro
-True,109,3.8,3.926,3.926,27,43,455.0,Euro
-True,1436,3.55,3.69014,3.69014,26,47,455.0,Dollar
-False,247,3.8,3.99676,3.99676,26,26,455.0,Euro
-False,1036,3.85,3.93156,3.93156,26,19,455.0,Pound
-True,605,4.5,4.45061,4.45061,26,16,455.0,Pound
-True,862,4.1,3.87651,3.87651,26,22,455.0,Dollar
-True,534,3.1,3.09057,3.09057,26,9,455.0,Euro
-True,3614,4.65,4.65824,4.65824,26,20,455.0,Dollar
-False,101,4.6,4.5748,4.5748,26,10,455.0,Pound
-True,136,4.8,4.74665,4.74665,26,63,455.0,Dollar
-False,14677,4.11538,3.94368,3.94368,26,91,455.0,Dollar
-True,5411,4.25,4.23542,4.23542,26,7,455.0,Dollar
-False,1518,3.91667,3.98742,3.98742,26,5,455.0,Pound
-True,3642,3.5,3.12582,3.12582,26,12,455.0,Dollar
-True,2442,3.85,3.9491,3.9491,26,21,455.0,Dollar
-False,100,4.45,4.40392,4.40392,26,29,455.0,Euro
-False,249,4.35,4.47652,4.47652,26,12,455.0,Dollar
-True,184,4.35,4.43386,4.43386,26,10,455.0,Euro
-False,68,4.0,4.02518,4.02518,26,35,455.0,Pound
-True,72,4.25,4.26464,4.26464,26,8,455.0,Euro
-False,1287,3.6,3.61818,3.61818,26,24,455.0,Euro
-False,1178,3.1,3.20675,3.20675,26,18,455.0,Dollar
-True,2683,4.35,4.35507,4.35507,27,18,455.0,Dollar
-False,332,4.85,4.90098,4.90098,27,25,455.0,Pound
-False,1736,4.05,4.05432,4.05432,26,17,455.0,Dollar
-True,97,3.65,3.60327,3.60327,26,15,455.0,Pound
-False,792,3.3,3.33312,3.33312,26,9,455.0,Euro
-False,5262,3.15,3.15779,3.15779,26,17,455.0,Dollar
-False,132,3.25,3.34161,3.34161,26,13,455.0,Pound
-True,118,4.1,4.11736,4.11736,26,13,455.0,Euro
-False,165,4.55,4.54823,4.54823,26,12,455.0,Pound
-True,8959,3.9,2.62665,2.62665,27,14,455.0,Pound
-True,203,3.55,3.34705,3.34705,26,25,455.0,Euro
-True,71,3.85,3.85835,3.85835,26,12,455.0,Dollar
-False,1332,4.15,4.15746,4.15746,26,56,455.0,Euro
-False,3544,3.4,3.10467,3.10467,26,12,455.0,Dollar
-True,6104,4.4,4.51548,4.51548,26,10,455.0,Euro
-True,13084,4.35,4.12239,4.12239,26,6,455.0,Dollar
-False,7179,4.34615,4.51694,4.51694,26,23,455.0,Pound
-True,1755,4.45,4.36144,4.36144,26,29,455.0,Euro
-True,1410,4.3,4.27943,4.27943,26,46,455.0,Euro
-False,2781,3.85,3.70314,3.70314,26,8,455.0,Euro
-True,1066,2.8,2.97557,2.97557,26,23,455.0,Euro
-True,259,4.0,3.95252,3.95252,26,23,455.0,Pound
-False,72,4.6,4.45672,4.45672,26,21,455.0,Pound
-False,2449,3.9,4.14263,4.14263,26,11,455.0,Euro
-False,1496,4.15,4.3831,4.3831,26,25,455.0,Euro
-False,1014,3.9,3.85836,3.85836,26,22,455.0,Dollar
-False,2746,4.05,4.19926,4.19926,26,21,455.0,Pound
-True,1119,3.85,3.80626,3.80626,26,35,455.0,Pound
-False,96,4.2,4.15157,4.15157,26,17,455.0,Pound
-True,1473,4.2,4.24547,4.24547,26,30,455.0,Euro
-True,1102,4.55,4.48819,4.48819,26,15,455.0,Pound
-True,1102,3.95,3.99664,3.99664,26,192,455.0,Euro
-False,2729,4.55,4.51303,4.51303,26,38,455.0,Pound
-False,3607,4.1,4.07973,4.07973,26,62,455.0,Pound
-False,175,4.8,4.78301,4.78301,26,12,455.0,Euro
-False,54,3.47059,3.63367,3.63367,26,14,455.0,Euro
-False,81,4.7,4.68577,4.68577,26,37,455.0,Dollar
-True,2370,3.95,4.04328,4.04328,26,19,455.0,Dollar
-False,3079,4.7,4.62204,4.62204,26,30,455.0,Pound
-True,3982,4.3,4.38968,4.38968,26,17,455.0,Dollar
-True,2532,4.0,3.91773,3.91773,26,76,455.0,Euro
-True,119,4.5,4.44512,4.44512,26,60,455.0,Pound
-False,3226,4.1,4.22179,4.22179,26,12,455.0,Pound
-True,5607,3.65,3.76709,3.76709,26,30,455.0,Pound
-False,848,3.9,4.03456,4.03456,26,19,455.0,Euro
-False,1210,3.85,3.54949,3.54949,26,34,455.0,Euro
-True,292,4.35,4.41459,4.41459,26,19,455.0,Euro
-True,155,4.22727,4.00769,4.00769,26,48,455.0,Pound
-True,5051,3.6,3.65932,3.65932,26,11,455.0,Pound
-True,124,4.2,4.185,4.185,26,10,455.0,Pound
-True,5391,3.92308,3.94271,3.94271,26,21,455.0,Pound
-True,77,4.73077,4.52705,4.52705,26,39,455.0,Euro
-True,612,4.45,4.53348,4.53348,26,41,455.0,Pound
-False,139,3.8,3.95437,3.95437,26,11,455.0,Euro
-True,927,4.25,4.20871,4.20871,26,32,455.0,Pound
-False,1250,3.75,3.50345,3.50345,26,36,455.0,Pound
-False,791,3.85,3.50657,3.50657,26,25,455.0,Pound
-True,122,4.8,4.79498,4.79498,26,35,455.0,Dollar
-True,3662,3.15,2.66672,2.66672,26,145,455.0,Pound
-True,37,3.85,4.08247,4.08247,26,9,455.0,Euro
-False,1170,3.55,3.63187,3.63187,26,24,455.0,Euro
-True,2157,3.45,3.69566,3.69566,26,17,455.0,Pound
-False,777,3.7,3.72159,3.72159,26,26,455.0,Pound
-False,2551,3.55,3.41162,3.41162,26,37,455.0,Pound
-True,126,3.6,3.47162,3.47162,27,0,455.0,Pound
-False,3933,3.7,3.57555,3.57555,26,10,455.0,Pound
-True,545,3.85,3.97576,3.97576,26,28,455.0,Dollar
-False,5500,4.32692,4.27801,4.27801,26,12,455.0,Pound
-True,463,4.25,3.99639,3.99639,25,14,455.0,Euro
-True,1211,3.65,3.5836,3.5836,25,39,455.0,Pound
-True,281,3.5,3.49967,3.49967,25,15,455.0,Dollar
-True,984,3.7,3.66123,3.66123,25,19,455.0,Euro
-False,1189,4.05,4.09105,4.09105,25,99,455.0,Dollar
-True,2006,3.95,3.97287,3.97287,25,19,455.0,Pound
-False,121,4.0,4.03127,4.03127,25,24,455.0,Pound
-False,474,3.3,3.32523,3.32523,25,74,455.0,Dollar
-False,216,4.5,4.36054,4.36054,25,28,455.0,Dollar
-False,111,4.9,4.89941,4.89941,25,9,1600.0,Dollar
-True,159,4.1,4.1909,4.1909,25,115,455.0,Euro
-False,156,4.0,4.00033,4.00033,25,46,468.0,Pound
-False,198,4.38095,4.31999,4.31999,25,64,455.0,Pound
-True,120,4.07692,4.10748,4.10748,25,42,455.0,Euro
-True,834,3.25,3.01802,3.01802,25,26,455.0,Euro
-True,671,3.75,3.82331,3.82331,25,18,455.0,Dollar
-False,161,4.45,4.38935,4.38935,25,39,455.0,Euro
-True,337,3.65,3.65906,3.65906,25,27,455.0,Euro
-True,2366,4.25,4.38033,4.38033,25,10,455.0,Dollar
-False,2220,4.0,4.0383,4.0383,25,12,455.0,Pound
-False,1949,4.3,4.33203,4.33203,25,24,455.0,Dollar
-False,1261,4.6,4.59276,4.59276,25,91,455.0,Pound
-True,165,4.44,4.44651,4.44651,27,49,455.0,Euro
-False,8232,4.1,4.13294,4.13294,25,37,455.0,Dollar
-False,80,3.8,3.77506,3.77506,25,10,455.0,Dollar
-False,137,3.65,3.60355,3.60355,25,9,455.0,Euro
-True,958,3.25,3.33399,3.33399,25,35,455.0,Euro
-False,5186,3.5,3.588,3.588,25,19,455.0,Euro
-True,58,3.9,3.869,3.869,25,8,455.0,Euro
-False,2752,3.7,3.6355,3.6355,25,13,455.0,Euro
-True,1175,4.55,4.58596,4.58596,25,23,455.0,Dollar
-False,75,3.35,3.33789,3.33789,25,9,455.0,Euro
-True,109,4.25,3.94227,3.94227,25,11,455.0,Pound
-True,3376,3.55,3.58187,3.58187,25,12,455.0,Euro
-True,102,4.31818,4.30034,4.30034,25,25,455.0,Dollar
-False,825,4.47368,4.45701,4.45701,25,85,455.0,Pound
-True,152,4.6,4.57253,4.57253,25,45,455.0,Pound
-True,993,4.2,4.28208,4.28208,25,14,455.0,Pound
-True,3021,3.5,3.50621,3.50621,25,10,455.0,Euro
-True,3638,4.15,4.05955,4.05955,25,33,455.0,Euro
-False,1500,4.35,4.35399,4.35399,25,38,455.0,Euro
-False,194,4.45,4.42107,4.42107,25,45,3200.0,Pound
-True,13181,4.5,4.64346,4.64346,25,76,455.0,Euro
-False,154,4.0,3.99083,3.99083,25,26,455.0,Pound
-False,5639,3.5,3.63667,3.63667,25,24,455.0,Dollar
-False,960,4.0,3.95255,3.95255,25,22,455.0,Euro
-False,66,4.05,4.02094,4.02094,25,16,455.0,Euro
-True,119,4.35,4.29944,4.29944,25,36,455.0,Pound
-True,5569,4.65,4.81056,4.81056,25,49,455.0,Pound
-False,108,4.25,4.14752,4.14752,25,8,455.0,Dollar
-False,230,4.27083,4.43679,4.43679,25,30,455.0,Euro
-False,3088,3.8,3.82396,3.82396,25,6,455.0,Pound
-False,1431,3.75,3.55269,3.55269,25,43,455.0,Pound
-True,71,4.05,4.03662,4.03662,25,20,455.0,Pound
-False,860,4.2,4.19254,4.19254,25,21,455.0,Euro
-True,283,4.15,4.04032,4.04032,25,16,455.0,Pound
-False,925,3.05,3.1225,3.1225,25,12,455.0,Euro
-True,7470,3.7,3.96158,3.96158,25,10,455.0,Pound
-False,5056,4.2,4.16921,4.16921,25,14,455.0,Euro
-False,3627,3.5,3.89712,3.89712,25,37,455.0,Pound
-True,143,4.48,4.54238,4.54238,25,50,1200.0,Euro
-True,66,3.85,3.4887,3.4887,25,18,1360.0,Euro
-True,8297,3.6,3.87812,3.87812,25,38,455.0,Dollar
-False,324,4.45,4.21312,4.21312,25,38,455.0,Dollar
-True,471,3.7,3.78116,3.78116,25,11,455.0,Dollar
-False,94,4.0,4.02976,4.02976,25,12,455.0,Euro
-True,172,3.95,3.7328,3.7328,25,13,455.0,Euro
-False,325,4.25,4.27848,4.27848,25,9,455.0,Pound
-False,111,3.95,3.88866,3.88866,25,20,455.0,Dollar
-True,83,3.9,3.87844,3.87844,25,11,455.0,Pound
-False,138,3.7,3.53708,3.53708,25,0,455.0,Pound
-False,338,4.55,4.50662,4.50662,25,0,455.0,Euro
-True,1355,4.35,4.36524,4.36524,25,26,455.0,Euro
-False,69,4.58,4.27687,4.27687,25,10,455.0,Pound
-False,507,4.05,4.01269,4.01269,25,10,455.0,Pound
-True,5258,4.15,4.03139,4.03139,25,134,455.0,Pound
-True,765,4.4,4.52771,4.52771,25,6,455.0,Dollar
-False,1339,4.0,3.90664,3.90664,25,15,455.0,Dollar
-True,4521,3.65,4.01711,4.01711,25,21,455.0,Pound
-True,66,4.75,4.74846,4.74846,25,27,455.0,Dollar
-True,2553,3.35,3.62194,3.62194,25,54,455.0,Dollar
-True,6232,3.8,3.66636,3.66636,25,7,455.0,Dollar
-True,661,4.15,4.17718,4.17718,24,57,455.0,Euro
-True,118,3.8,3.75769,3.75769,24,6,455.0,Euro
-True,85,3.3,3.32237,3.32237,24,11,455.0,Pound
-True,3003,3.85,3.63206,3.63206,24,22,455.0,Euro
-False,151,3.2,3.15752,3.15752,24,11,455.0,Dollar
-True,143,3.85,3.97658,3.97658,24,48,455.0,Euro
-False,1823,4.5,4.6288,4.6288,24,11,455.0,Euro
-False,2142,4.0,3.98658,3.98658,24,58,455.0,Euro
-False,755,4.1,4.03838,4.03838,24,17,455.0,Dollar
-False,1338,3.2,3.27347,3.27347,24,8,455.0,Dollar
-True,747,4.25,4.28777,4.28777,24,16,455.0,Dollar
-False,2077,4.2,4.06177,4.06177,24,8,455.0,Euro
-True,108,4.3,4.13959,4.13959,24,48,455.0,Dollar
-False,2454,3.3,3.13407,3.13407,24,18,455.0,Dollar
-False,108,4.8,4.82344,4.82344,24,21,455.0,Euro
-False,65,2.35,2.47247,2.47247,24,72,455.0,Dollar
-False,338,4.13636,3.82782,3.82782,24,29,455.0,Euro
-False,440,3.95,3.93661,3.93661,24,14,455.0,Pound
-False,729,3.35,3.03714,3.03714,24,26,455.0,Pound
-True,107,4.05,4.01392,4.01392,24,47,455.0,Euro
-True,4245,3.7,3.92925,3.92925,24,24,455.0,Dollar
-True,79,4.55,4.54661,4.54661,24,12,455.0,Pound
-True,211,3.95,4.0796,4.0796,24,0,455.0,Euro
-True,4210,3.75,3.32402,3.32402,24,24,455.0,Pound
-True,1118,4.1,4.13112,4.13112,24,31,455.0,Euro
-False,1203,4.35,4.30861,4.30861,24,11,455.0,Pound
-True,2476,4.85,4.82562,4.82562,24,175,455.0,Euro
-True,1786,3.9,3.96673,3.96673,24,15,455.0,Dollar
-True,223,3.9,3.85902,3.85902,24,16,455.0,Pound
-False,427,4.75,4.7612,4.7612,24,22,455.0,Pound
-True,121,3.95,3.84463,3.84463,24,17,455.0,Euro
-False,383,4.2,4.17254,4.17254,24,42,455.0,Pound
-True,149,4.45,4.33837,4.33837,24,19,455.0,Euro
-True,1142,3.4,3.27646,3.27646,24,17,455.0,Euro
-True,579,2.55,2.75386,2.75386,24,40,455.0,Euro
-False,9492,4.05,3.94271,3.94271,24,18,455.0,Pound
-True,6297,3.9,3.90234,3.90234,24,12,455.0,Euro
-True,11454,4.2,3.80062,3.80062,24,21,455.0,Dollar
-False,808,3.4,4.04479,4.04479,24,21,455.0,Dollar
-False,126,4.15,4.00392,4.00392,24,30,455.0,Pound
-False,1275,4.7,4.77214,4.77214,24,29,455.0,Euro
-False,1264,4.2,4.15987,4.15987,24,22,455.0,Pound
-True,1074,4.25,4.24453,4.24453,24,13,455.0,Dollar
-False,241,4.4,4.37964,4.37964,24,25,455.0,Pound
-True,232,4.3,4.33147,4.33147,24,31,455.0,Dollar
-False,302,4.4,4.41381,4.41381,24,8,455.0,Pound
-False,1192,4.8,4.70219,4.70219,24,99,455.0,Euro
-False,166,3.9,3.8891,3.8891,24,7,455.0,Euro
-True,146,4.05,4.43926,4.43926,24,27,455.0,Euro
-True,1737,4.05,3.91849,3.91849,24,18,455.0,Euro
-False,655,4.65,4.65753,4.65753,24,23,455.0,Pound
-False,1360,4.4,4.35246,4.35246,24,59,455.0,Euro
-True,106,4.5,4.50281,4.50281,24,10,455.0,Dollar
-False,4990,3.75,2.97987,2.97987,24,10,455.0,Pound
-True,1758,4.2,4.00677,4.00677,24,30,455.0,Dollar
-True,1715,4.2,4.09507,4.09507,24,28,455.0,Dollar
-False,5987,4.38095,4.28571,4.28571,24,37,455.0,Pound
-True,214,4.85,4.83278,4.83278,24,29,455.0,Pound
-True,433,3.65,3.62455,3.62455,24,25,455.0,Euro
-True,62,3.7,3.61892,3.61892,24,6,455.0,Dollar
-False,120,4.65,4.59209,4.59209,24,28,2560.0,Euro
-True,109,4.5,4.76546,4.76546,25,31,455.0,Euro
-True,182,4.55,4.58652,4.58652,24,18,455.0,Pound
-False,4918,4.3,3.97773,3.97773,24,25,455.0,Pound
-True,2526,3.6,3.53098,3.53098,24,68,455.0,Pound
-True,4759,3.8,3.73628,3.73628,24,23,455.0,Euro
-False,1020,2.65,2.69486,2.69486,24,29,455.0,Dollar
-False,894,4.35,3.90109,3.90109,24,8,455.0,Dollar
-False,290,3.85,3.76617,3.76617,24,12,455.0,Pound
-True,737,3.95,4.00796,4.00796,24,78,455.0,Dollar
-True,1760,3.6,3.43983,3.43983,24,42,455.0,Euro
-True,7692,4.375,4.55199,4.55199,24,40,455.0,Dollar
-False,1201,3.8,3.88573,3.88573,24,19,455.0,Euro
-False,95,4.5,4.57092,4.57092,25,39,1840.0,Dollar
-True,5559,4.3,4.30467,4.30467,24,21,455.0,Euro
-True,3015,4.2,3.92732,3.92732,24,11,455.0,Dollar
-True,95,3.45,3.50621,3.50621,24,18,455.0,Euro
-True,129,4.35,4.33272,4.33272,24,15,700.0,Dollar
-True,80,2.85,2.83686,2.83686,24,8,455.0,Pound
-True,914,4.3,4.33021,4.33021,24,82,455.0,Euro
-True,124,3.4,3.42758,3.42758,24,11,455.0,Euro
-False,5015,3.39286,3.34213,3.34213,24,0,455.0,Euro
-True,481,3.3,2.93186,2.93186,24,10,455.0,Dollar
-True,2260,4.45,4.44146,4.44146,24,247,462.0,Pound
-False,235,4.4,4.40651,4.40651,24,56,455.0,Pound
-False,869,3.85,3.48492,3.48492,24,80,455.0,Dollar
-False,568,3.9,3.96083,3.96083,24,26,455.0,Dollar
-False,101,4.79167,4.81289,4.81289,25,40,455.0,Euro
-True,1677,4.3,4.54189,4.54189,24,31,1920.0,Euro
-True,1129,3.65,3.39624,3.39624,24,17,455.0,Euro
-True,155,4.1,4.28139,4.28139,24,12,455.0,Pound
-False,197,4.6,4.59222,4.59222,24,13,455.0,Pound
-True,2491,4.05,3.8684,3.8684,24,31,455.0,Pound
-True,193,4.65,4.64669,4.64669,24,20,455.0,Euro
-False,133,4.25,4.20093,4.20093,24,51,455.0,Pound
-False,97,3.7,3.71652,3.71652,24,11,455.0,Euro
-True,95,3.25,3.27375,3.27375,24,143,455.0,Pound
-True,165,3.86364,3.89194,3.89194,24,51,455.0,Euro
-False,627,3.9,4.15755,4.15755,23,19,455.0,Euro
-False,616,3.9,3.92626,3.92626,23,14,455.0,Dollar
-False,2780,4.0,4.50944,4.50944,23,28,455.0,Euro
-True,2263,4.4,4.53414,4.53414,23,16,455.0,Dollar
-False,627,3.6,3.6002,3.6002,23,22,455.0,Dollar
-False,724,3.5,3.76836,3.76836,24,19,455.0,Dollar
-True,1349,4.1,4.13964,4.13964,23,25,455.0,Dollar
-True,1079,2.05,2.56684,2.56684,23,19,455.0,Euro
-False,306,4.45,4.39143,4.39143,23,37,455.0,Dollar
-False,2188,3.7,3.7202,3.7202,23,9,455.0,Pound
-True,122,4.25,4.04513,4.04513,23,49,455.0,Pound
-True,2018,3.45,2.81024,2.81024,23,36,455.0,Euro
-False,188,4.3,4.38451,4.38451,23,11,455.0,Dollar
-False,5693,4.58333,4.44607,4.44607,23,31,455.0,Dollar
-True,149,4.1875,3.98799,3.98799,23,0,494.0,Dollar
-False,81,4.4,4.3939,4.3939,23,13,455.0,Pound
-True,5808,4.6087,4.67048,4.67048,23,10,455.0,Pound
-False,4199,3.5,3.79306,3.79306,23,13,455.0,Dollar
-True,348,4.15,4.09105,4.09105,23,105,455.0,Dollar
-True,511,4.35,4.51084,4.51084,23,48,455.0,Euro
-True,1482,4.35,4.36878,4.36878,23,17,455.0,Euro
-False,606,3.95,3.88701,3.88701,23,13,455.0,Dollar
-True,1669,3.65,3.65861,3.65861,23,29,455.0,Euro
-False,1320,3.4,3.38678,3.38678,23,13,455.0,Euro
-True,1084,3.55,3.51681,3.51681,23,49,455.0,Euro
-True,448,4.55,4.61121,4.61121,23,9,455.0,Euro
-False,1654,3.8,3.88109,3.88109,23,23,455.0,Dollar
-True,464,3.7,3.69145,3.69145,23,34,455.0,Pound
-True,1189,3.6,3.59777,3.59777,23,18,455.0,Dollar
-True,1366,4.3,4.50807,4.50807,23,18,455.0,Dollar
-True,194,4.05,3.97704,3.97704,23,10,455.0,Pound
-False,133,4.35,4.42397,4.42397,23,15,455.0,Pound
-False,2070,4.6,4.49007,4.49007,23,29,455.0,Dollar
-False,204,4.45,4.37976,4.37976,23,40,455.0,Pound
-True,2285,3.95,3.78926,3.78926,23,69,455.0,Pound
-True,108,3.9,3.44139,3.44139,23,13,455.0,Pound
-True,3585,3.1,2.81441,2.81441,23,63,455.0,Euro
-False,181,3.65,3.71877,3.71877,23,13,455.0,Pound
-True,89,3.25,3.43545,3.43545,23,16,455.0,Euro
-True,3014,4.05,4.5511,4.5511,23,5,455.0,Euro
-True,692,3.93478,3.88976,3.88976,23,37,455.0,Dollar
-True,2340,4.05,4.01262,4.01262,23,13,455.0,Euro
-False,974,4.5,4.38601,4.38601,23,7,455.0,Pound
-True,1795,3.65,3.73643,3.73643,23,38,455.0,Euro
-True,315,4.3,4.35206,4.35206,23,36,455.0,Euro
-False,475,3.7,3.57401,3.57401,23,12,455.0,Pound
-False,1178,3.95,3.92543,3.92543,23,19,455.0,Dollar
-True,728,4.05,3.91927,3.91927,23,82,455.0,Euro
-False,942,4.4,4.43817,4.43817,23,31,455.0,Pound
-True,6568,3.55,3.65505,3.65505,23,66,455.0,Pound
-True,88,3.7,3.72199,3.72199,23,20,455.0,Dollar
-True,50,4.15,3.98682,3.98682,23,26,455.0,Euro
-False,57,4.6,4.58088,4.58088,23,17,455.0,Euro
-True,1204,4.25,4.13093,4.13093,23,31,455.0,Euro
-True,4954,4.4,4.47478,4.47478,23,79,455.0,Dollar
-True,241,4.3,4.33276,4.33276,23,42,455.0,Dollar
-False,614,3.45,3.50206,3.50206,23,35,455.0,Dollar
-True,390,3.55,3.57137,3.57137,23,5,455.0,Euro
-False,2138,4.35,4.21151,4.21151,23,47,455.0,Euro
-False,106,4.15,4.61579,4.61579,23,20,455.0,Euro
-False,249,4.15,4.13178,4.13178,23,10,455.0,Euro
-False,1158,4.3,4.11447,4.11447,23,37,455.0,Pound
-False,1303,4.2,4.26409,4.26409,23,19,455.0,Dollar
-False,83,4.05,3.96777,3.96777,23,34,455.0,Pound
-True,5926,4.34211,4.50294,4.50294,23,37,455.0,Euro
-False,10751,3.65,4.07393,4.07393,23,29,455.0,Pound
-True,338,3.85,3.7328,3.7328,23,28,455.0,Dollar
-False,1958,3.95,3.72986,3.72986,23,34,455.0,Dollar
-False,79,3.25,3.78532,3.78532,23,108,455.0,Pound
-False,150,4.05,4.03556,4.03556,23,17,455.0,Pound
-True,4167,3.45,3.37593,3.37593,23,37,455.0,Euro
-True,127,3.65,3.60651,3.60651,23,26,455.0,Dollar
-True,1153,3.75,3.65809,3.65809,23,87,455.0,Euro
-False,4953,4.1,4.17003,4.17003,23,13,455.0,Euro
-False,1509,4.4,4.37427,4.37427,23,102,455.0,Dollar
-True,102,4.3,4.312,4.312,23,31,455.0,Euro
-False,1009,4.35,4.30409,4.30409,23,40,455.0,Pound
-False,1101,4.20455,4.25928,4.25928,23,10,3200.0,Pound
-False,5660,4.22222,4.27592,4.27592,23,26,455.0,Pound
-True,840,4.25,4.36505,4.36505,23,21,455.0,Dollar
-True,297,4.4,4.41347,4.41347,23,33,455.0,Dollar
-True,123,4.2,4.48369,4.48369,23,11,455.0,Pound
-False,1213,4.15,4.03216,4.03216,23,35,455.0,Euro
-True,111,3.9,3.8826,3.8826,23,18,455.0,Euro
-False,91,4.3,4.28709,4.28709,23,11,455.0,Dollar
-True,613,3.8,3.66383,3.66383,23,64,455.0,Euro
-False,1860,4.7,4.71437,4.71437,23,12,455.0,Dollar
-False,665,4.3,4.35975,4.35975,23,28,455.0,Euro
-True,101,4.0,3.86502,3.86502,23,40,455.0,Dollar
-False,753,2.8,2.5237,2.5237,23,49,455.0,Euro
-False,3083,3.7,3.87941,3.87941,23,33,455.0,Euro
-False,169,4.3,4.29038,4.29038,23,86,455.0,Pound
-False,5505,3.86364,3.96645,3.96645,22,28,455.0,Euro
-False,1625,3.5,2.87219,2.87219,22,22,455.0,Pound
-True,82,4.25,4.23937,4.23937,22,7,455.0,Euro
-True,142,3.6,3.58757,3.58757,22,8,455.0,Euro
-True,122,4.45,4.5039,4.5039,22,13,455.0,Euro
-True,208,4.25,4.45881,4.45881,22,17,455.0,Pound
-True,1206,3.8,3.91113,3.91113,22,14,455.0,Euro
-False,892,4.2,4.25756,4.25756,22,32,455.0,Euro
-True,255,3.5,3.48719,3.48719,22,20,455.0,Pound
-False,804,4.05,3.85148,3.85148,22,13,455.0,Euro
-True,940,2.75,2.75738,2.75738,22,8,455.0,Dollar
-False,10621,4.4,4.23455,4.23455,22,33,455.0,Pound
-False,76,4.85,4.83713,4.83713,22,8,455.0,Euro
-False,151,3.75,3.65545,3.65545,22,30,455.0,Pound
-True,282,4.65,4.66975,4.66975,23,18,455.0,Euro
-True,682,4.5,4.4719,4.4719,22,41,455.0,Euro
-True,1159,3.95,3.94564,3.94564,22,6,455.0,Pound
-False,2150,4.3,4.34716,4.34716,22,9,455.0,Dollar
-False,120,4.35,4.32853,4.32853,22,9,455.0,Dollar
-False,89,3.65,3.64547,3.64547,22,132,455.0,Pound
-True,426,4.05,4.09002,4.09002,22,33,455.0,Dollar
-True,156,3.95,4.04201,4.04201,22,9,455.0,Pound
-False,1174,4.7,4.65907,4.65907,22,31,455.0,Euro
-True,193,4.3,4.3967,4.3967,22,45,455.0,Euro
-True,171,4.3,4.02226,4.02226,22,14,455.0,Euro
-False,2110,3.9,3.95434,3.95434,22,8,455.0,Pound
-True,108,3.5,3.76526,3.76526,22,13,455.0,Pound
-False,6972,4.25,4.15296,4.15296,22,47,455.0,Euro
-True,3615,3.7,3.61816,3.61816,22,12,455.0,Euro
-False,131,4.25,4.24175,4.24175,22,24,520.0,Dollar
-True,107,3.75,3.80181,3.80181,22,46,455.0,Pound
-False,3062,3.84091,3.92185,3.92185,22,15,455.0,Pound
-False,3721,3.5,3.7219,3.7219,22,60,455.0,Pound
-True,184,4.35,4.33321,4.33321,22,23,455.0,Euro
-True,1923,4.4,4.36859,4.36859,22,34,455.0,Euro
-True,1357,4.1,3.92176,3.92176,22,33,455.0,Euro
-False,6124,4.22727,4.4734,4.4734,22,28,455.0,Pound
-True,2058,4.55,4.54056,4.54056,22,124,455.0,Euro
-True,3641,3.75,3.63921,3.63921,22,16,455.0,Dollar
-False,95,4.4,4.39081,4.39081,22,10,455.0,Euro
-False,1375,2.5,2.55396,2.55396,22,15,455.0,Pound
-False,508,4.45,4.42709,4.42709,22,24,455.0,Dollar
-False,2755,4.5,4.6887,4.6887,22,20,455.0,Pound
-False,114,3.5,3.12081,3.12081,22,9,455.0,Dollar
-False,269,4.4,4.36987,4.36987,22,6,455.0,Dollar
-False,1100,3.95,3.82171,3.82171,22,9,455.0,Dollar
-True,4146,3.65,3.73494,3.73494,22,28,455.0,Dollar
-False,101,4.25,4.33636,4.33636,22,16,455.0,Pound
-False,1186,4.5,4.63929,4.63929,22,8,455.0,Euro
-False,1161,4.05,4.16751,4.16751,22,39,455.0,Pound
-True,1188,4.15,4.42303,4.42303,22,17,455.0,Dollar
-False,736,4.7,4.68615,4.68615,22,13,455.0,Pound
-False,1029,4.05,3.98843,3.98843,22,13,455.0,Dollar
-True,122,4.3,4.34151,4.34151,22,15,455.0,Pound
-True,738,4.05,4.09372,4.09372,22,6,455.0,Pound
-True,13725,4.0,3.91192,3.91192,22,16,455.0,Dollar
-True,210,4.7,4.63545,4.63545,22,13,455.0,Euro
-True,194,3.1,3.10021,3.10021,22,19,455.0,Euro
-True,3446,4.35,4.27516,4.27516,22,42,455.0,Pound
-True,582,3.1,3.23602,3.23602,22,39,455.0,Euro
-True,138,3.95,3.89272,3.89272,22,19,455.0,Pound
-True,1102,3.95,3.98211,3.98211,22,32,455.0,Dollar
-True,129,3.6,3.67571,3.67571,22,57,455.0,Pound
-True,708,3.95,4.12205,4.12205,22,18,455.0,Pound
-False,104,4.0,4.02044,4.02044,22,27,455.0,Euro
-False,124,3.3,3.40152,3.40152,22,22,455.0,Euro
-True,478,3.5,3.58116,3.58116,22,16,455.0,Euro
-True,616,1.9,1.61558,1.61558,22,4,455.0,Euro
-True,927,3.55,3.57274,3.57274,22,23,455.0,Euro
-True,3980,4.1,4.18163,4.18163,22,17,455.0,Pound
-True,650,3.4,3.31326,3.31326,22,40,455.0,Pound
-False,105,4.35,4.29433,4.29433,22,265,455.0,Dollar
-False,72,4.3,4.32375,4.32375,22,111,455.0,Pound
-False,109,4.45,4.47669,4.47669,22,27,455.0,Pound
-False,238,4.65,4.66455,4.66455,22,34,455.0,Pound
-True,1674,3.8,4.1599,4.1599,22,27,455.0,Dollar
-False,783,3.3,3.31806,3.31806,22,65,455.0,Dollar
-True,148,4.55,4.59081,4.59081,22,27,455.0,Dollar
-False,2781,4.0,3.94682,3.94682,23,10,455.0,Dollar
-False,2141,4.75,4.72823,4.72823,22,25,455.0,Euro
-False,93,4.45,4.44196,4.44196,22,8,1520.0,Euro
-True,5906,3.25,3.15487,3.15487,22,9,455.0,Pound
-True,1456,4.2,4.33916,4.33916,22,7,455.0,Euro
-False,119,4.0,4.00505,4.00505,22,14,455.0,Dollar
-False,1560,4.1,4.11187,4.11187,22,17,455.0,Pound
-True,3279,4.5,4.40583,4.40583,22,38,455.0,Pound
-False,75,4.1,4.13158,4.13158,22,22,474.0,Dollar
-False,773,4.55,4.57692,4.57692,22,27,455.0,Pound
-False,10694,3.95,3.65715,3.65715,22,26,455.0,Pound
-True,1426,3.5,3.39709,3.39709,22,22,455.0,Euro
-True,553,4.05,4.1249,4.1249,22,9,455.0,Pound
-False,563,4.65,4.5444,4.5444,22,43,455.0,Pound
-False,4929,4.29412,4.56594,4.56594,22,27,455.0,Pound
-False,37,4.34091,4.24819,4.24819,22,18,455.0,Euro
-False,1011,3.7,3.68492,3.68492,22,20,455.0,Dollar
-True,909,3.7,3.80852,3.80852,22,22,455.0,Pound
-True,1788,3.8,3.75542,3.75542,22,12,455.0,Euro
-False,1393,4.2,4.19273,4.19273,22,34,455.0,Euro
-False,93,3.05,2.97567,2.97567,22,43,455.0,Pound
-True,4132,4.3,4.4392,4.4392,22,7,455.0,Dollar
-False,2015,3.45,3.36304,3.36304,22,59,455.0,Pound
-False,4981,4.5,4.30166,4.30166,22,15,455.0,Pound
-True,175,2.9,2.77059,2.77059,22,42,455.0,Pound
-False,1499,4.65,4.63475,4.63475,22,9,455.0,Dollar
-True,80,4.35,4.21262,4.21262,22,23,455.0,Euro
-False,600,4.6,4.45018,4.45018,22,21,455.0,Dollar
-False,2828,4.4,4.42499,4.42499,22,47,455.0,Euro
-True,1374,4.6,4.42776,4.42776,22,25,455.0,Euro
-True,4093,3.84615,3.72496,3.72496,22,61,455.0,Pound
-False,793,4.11538,4.10117,4.10117,22,64,455.0,Dollar
-False,118,3.35,3.33974,3.33974,21,16,455.0,Euro
-False,1616,4.5,4.53558,4.53558,21,6,455.0,Euro
-True,5660,4.2,4.1806,4.1806,21,152,455.0,Pound
-True,1152,3.45,3.3892,3.3892,21,12,455.0,Euro
-True,4862,3.95,3.82335,3.82335,21,15,455.0,Euro
-True,119,3.7,3.68894,3.68894,21,7,455.0,Dollar
-True,120,4.35,4.34907,4.34907,21,5,455.0,Dollar
-True,2069,3.7,3.66409,3.66409,21,12,455.0,Pound
-False,40,4.15,4.3056,4.3056,21,7,455.0,Euro
-False,58,4.5,4.4779,4.4779,21,10,455.0,Euro
-False,841,3.85714,3.89864,3.89864,21,15,455.0,Pound
-True,723,4.25,4.2654,4.2654,21,11,455.0,Dollar
-True,38,4.05,4.13097,4.13097,21,26,455.0,Euro
-True,2678,4.15,4.16909,4.16909,21,12,455.0,Dollar
-False,550,4.4,4.17296,4.17296,21,31,455.0,Pound
-False,2704,4.25,4.21049,4.21049,22,7,455.0,Dollar
-False,94,4.04545,4.03103,4.03103,21,34,455.0,Euro
-True,1271,4.25,4.12953,4.12953,21,12,455.0,Dollar
-False,129,4.35,4.25902,4.25902,21,30,455.0,Dollar
-False,1547,3.3,3.89898,3.89898,21,32,455.0,Dollar
-True,265,4.5,4.49784,4.49784,21,40,455.0,Euro
-True,2435,3.8,3.42771,3.42771,21,22,455.0,Euro
-True,1735,4.75,4.71759,4.71759,21,6,455.0,Pound
-False,479,3.35,3.28366,3.28366,21,74,462.0,Euro
-True,304,3.9,3.84838,3.84838,21,21,455.0,Dollar
-True,91,4.59524,4.58563,4.58563,22,38,455.0,Pound
-True,7508,4.45,4.51678,4.51678,21,23,455.0,Euro
-False,4007,4.57143,4.65215,4.65215,21,26,455.0,Euro
-False,168,4.6,4.58759,4.58759,21,13,455.0,Pound
-False,232,4.2,4.19829,4.19829,21,12,455.0,Dollar
-True,67,3.8,3.93027,3.93027,21,39,455.0,Pound
-True,296,4.2,4.19198,4.19198,21,17,455.0,Euro
-False,1347,4.55,4.50693,4.50693,21,9,455.0,Dollar
-True,2739,3.45,3.34648,3.34648,21,49,455.0,Dollar
-True,103,4.45,4.38509,4.38509,21,11,455.0,Euro
-False,1267,3.9,3.78622,3.78622,21,14,455.0,Dollar
-False,1906,4.35,4.35385,4.35385,21,20,455.0,Pound
-True,7466,4.35,4.44546,4.44546,21,9,455.0,Dollar
-False,1039,4.3,4.29154,4.29154,21,26,455.0,Euro
-False,162,3.7,3.61014,3.61014,21,44,455.0,Pound
-True,550,4.04762,3.97211,3.97211,23,32,455.0,Euro
-True,47,4.0,4.04619,4.04619,21,28,455.0,Dollar
-False,6745,4.30952,4.47072,4.47072,21,31,455.0,Pound
-True,112,4.1,4.0341,4.0341,21,24,455.0,Euro
-True,199,3.75,3.65599,3.65599,21,20,455.0,Dollar
-False,815,4.4,4.36165,4.36165,21,46,455.0,Pound
-False,3362,3.4,3.16611,3.16611,21,9,455.0,Euro
-False,463,3.4,3.44159,3.44159,21,16,455.0,Euro
-False,1535,3.7,3.42673,3.42673,21,16,455.0,Pound
-True,224,4.45,4.39843,4.39843,21,20,455.0,Dollar
-False,193,4.65,4.62819,4.62819,21,13,455.0,Dollar
-True,6363,3.8,3.87089,3.87089,21,12,455.0,Pound
-False,144,3.2,3.29281,3.29281,21,12,3200.0,Pound
-False,108,3.35,3.33438,3.33438,21,18,455.0,Euro
-False,106,4.5,4.51006,4.51006,21,37,455.0,Dollar
-False,6403,3.8,3.49993,3.49993,21,20,455.0,Pound
-True,174,4.25,4.27482,4.27482,21,8,455.0,Dollar
-False,4114,3.66667,3.67234,3.67234,21,0,455.0,Dollar
-True,9085,3.85,3.78137,3.78137,21,24,455.0,Dollar
-False,203,4.4,4.39047,4.39047,21,24,700.0,Dollar
-False,597,4.65,4.58965,4.58965,21,19,455.0,Euro
-True,1358,4.2,4.09119,4.09119,21,31,455.0,Dollar
-True,1431,3.5,3.60318,3.60318,21,9,455.0,Euro
-True,1121,4.05,3.54423,3.54423,21,7,455.0,Dollar
-False,302,3.95,4.33886,4.33886,21,19,455.0,Euro
-True,5643,4.30769,4.47019,4.47019,21,16,455.0,Dollar
-True,7316,3.3,2.81206,2.81206,21,16,455.0,Euro
-True,3756,3.85,3.74166,3.74166,21,15,455.0,Dollar
-True,279,4.5,4.47441,4.47441,21,13,455.0,Pound
-False,155,3.65,3.67897,3.67897,21,177,455.0,Pound
-True,4057,4.45,4.72598,4.72598,21,29,455.0,Pound
-True,169,3.75,3.77558,3.77558,21,9,455.0,Euro
-True,80,4.55,4.55452,4.55452,21,45,455.0,Pound
-False,633,4.25,4.19314,4.19314,21,18,455.0,Dollar
-False,7224,3.95,4.18794,4.18794,21,22,455.0,Euro
-False,375,3.8,3.81025,3.81025,21,26,455.0,Dollar
-True,100,3.9,3.99257,3.99257,21,9,455.0,Dollar
-True,4951,3.9,4.09102,4.09102,21,14,455.0,Pound
-True,212,4.05,3.97093,3.97093,21,15,455.0,Pound
-True,1447,3.15,3.1907,3.1907,21,27,455.0,Pound
-True,2605,3.9,3.79614,3.79614,21,14,455.0,Dollar
-True,1125,3.95,4.03895,4.03895,21,34,455.0,Euro
-False,1183,4.1,4.05519,4.05519,21,14,455.0,Pound
-False,1361,3.45,3.31676,3.31676,21,21,455.0,Euro
-True,757,3.8,3.78357,3.78357,21,86,455.0,Dollar
-True,3261,4.35,4.62803,4.62803,21,37,455.0,Pound
-True,1332,4.3,4.4075,4.4075,21,11,455.0,Dollar
-True,710,3.9,3.94238,3.94238,21,21,455.0,Pound
-False,2047,4.0,3.97387,3.97387,21,24,455.0,Dollar
-False,579,4.8,4.80131,4.80131,21,78,455.0,Euro
-False,100,4.0,3.97504,3.97504,21,26,455.0,Euro
-True,79,3.65,3.74043,3.74043,21,21,455.0,Euro
-False,68,3.85,3.9007,3.9007,21,51,455.0,Euro
-True,45,2.95,3.00819,3.00819,21,12,455.0,Pound
-False,91,3.65,3.59366,3.59366,21,22,455.0,Dollar
-True,91,4.25,4.17564,4.17564,21,35,700.0,Pound
-False,159,3.95,3.98119,3.98119,21,19,455.0,Dollar
-True,3554,4.2,4.54788,4.54788,21,95,455.0,Euro
-False,100,3.95,3.75932,3.75932,21,20,455.0,Euro
-False,45,4.15,4.10992,4.10992,21,10,455.0,Pound
-False,1271,4.5,4.46207,4.46207,21,23,455.0,Dollar
-True,12256,4.33333,4.39365,4.39365,23,79,455.0,Pound
-True,578,3.5,3.38139,3.38139,20,47,455.0,Dollar
-False,125,4.0,4.03818,4.03818,20,49,455.0,Pound
-True,2384,4.1,4.12955,4.12955,20,41,455.0,Pound
-True,723,3.55,3.57661,3.57661,20,42,455.0,Euro
-False,104,3.95,4.20256,4.20256,20,19,455.0,Euro
-True,3408,4.1,4.60403,4.60403,20,18,455.0,Dollar
-True,594,3.85,3.72418,3.72418,20,19,455.0,Euro
-True,1309,4.05,4.05879,4.05879,20,16,455.0,Pound
-False,78,4.45,4.42863,4.42863,20,40,455.0,Dollar
-True,648,3.55,3.51023,3.51023,20,15,455.0,Pound
-False,69,4.05,4.04323,4.04323,20,29,455.0,Dollar
-True,105,3.5,3.61997,3.61997,20,437,455.0,Pound
-True,920,3.8,3.88089,3.88089,20,72,455.0,Dollar
-False,705,4.4,4.42062,4.42062,20,20,455.0,Euro
-False,147,3.3,3.26527,3.26527,20,0,455.0,Pound
-True,281,3.75,3.67983,3.67983,20,33,455.0,Euro
-True,59,4.4,4.32489,4.32489,20,8,455.0,Pound
-False,3585,4.2,3.84066,3.84066,20,27,455.0,Euro
-False,693,3.75,3.75174,3.75174,20,78,455.0,Pound
-False,62,4.05,3.74184,3.74184,20,39,455.0,Euro
-False,1164,3.2,3.27116,3.27116,20,20,800.0,Pound
-False,444,4.1,3.99925,3.99925,20,129,455.0,Dollar
-False,506,3.75,3.76865,3.76865,20,11,455.0,Dollar
-False,3429,4.35,4.17876,4.17876,20,21,455.0,Pound
-False,3162,3.85,3.87148,3.87148,20,19,455.0,Pound
-True,83,4.0,4.06977,4.06977,20,32,455.0,Pound
-True,1304,4.25,4.2731,4.2731,20,5,455.0,Euro
-False,598,3.9,3.86681,3.86681,20,36,800.0,Dollar
-False,95,3.85,3.82195,3.82195,20,20,455.0,Dollar
-True,129,3.45,3.47508,3.47508,20,29,455.0,Dollar
-True,1766,4.7,4.68761,4.68761,20,41,455.0,Pound
-True,660,4.45,4.5949,4.5949,20,16,455.0,Euro
-True,500,4.35,4.3722,4.3722,20,43,455.0,Euro
-True,121,4.40909,4.37687,4.37687,20,0,455.0,Pound
-True,920,3.8,3.51193,3.51193,20,19,455.0,Euro
-True,1030,4.55,4.71312,4.71312,20,15,455.0,Dollar
-False,2000,4.0,3.9262,3.9262,20,17,455.0,Euro
-True,2187,4.05,3.99607,3.99607,20,15,455.0,Pound
-True,71,3.65,3.65389,3.65389,20,7,455.0,Pound
-True,73,4.5,4.487,4.487,20,17,455.0,Pound
-False,57,4.25,4.27852,4.27852,20,40,455.0,Pound
-False,270,4.3,4.26309,4.26309,20,11,455.0,Pound
-True,1604,4.3,4.28012,4.28012,20,43,455.0,Euro
-True,2742,3.75,3.40256,3.40256,20,26,455.0,Dollar
-True,97,4.45,4.44119,4.44119,20,34,455.0,Dollar
-False,93,4.4,4.4045,4.4045,20,34,455.0,Dollar
-False,1970,3.75,3.81653,3.81653,20,8,455.0,Euro
-False,78,4.1,4.03159,4.03159,20,18,455.0,Euro
-True,6010,4.375,4.13536,4.13536,20,20,455.0,Pound
-False,10023,4.4,4.61139,4.61139,20,14,455.0,Dollar
-True,108,4.4,4.3654,4.3654,20,45,455.0,Pound
-True,85,4.0,4.00402,4.00402,20,10,455.0,Pound
-False,1039,4.0,4.0819,4.0819,20,22,455.0,Euro
-True,5144,3.95,4.03058,4.03058,20,30,455.0,Dollar
-False,101,3.6,3.59215,3.59215,20,20,455.0,Euro
-False,1937,4.3,4.33084,4.33084,20,6,455.0,Euro
-True,1109,4.4,4.40205,4.40205,20,15,455.0,Dollar
-True,143,4.25,4.2541,4.2541,20,27,455.0,Pound
-False,3112,3.7,3.865,3.865,20,128,455.0,Pound
-True,1606,4.1,4.12954,4.12954,20,41,455.0,Dollar
-False,147,4.55,4.63318,4.63318,20,40,455.0,Euro
-False,3646,4.35,4.19502,4.19502,20,139,455.0,Euro
-False,3293,3.8,3.85279,3.85279,20,8,455.0,Pound
-False,102,4.6,4.69322,4.69322,20,15,455.0,Pound
-True,723,4.05,4.08285,4.08285,20,32,455.0,Euro
-False,861,3.7,3.7978,3.7978,20,16,455.0,Dollar
-False,4947,4.33333,4.41206,4.41206,20,20,455.0,Dollar
-False,45,3.6,3.78818,3.78818,20,5,455.0,Dollar
-False,3021,4.05,4.0677,4.0677,20,52,455.0,Dollar
-True,66,4.3,4.31467,4.31467,20,74,455.0,Dollar
-True,75,4.0,3.82433,3.82433,20,24,455.0,Pound
-False,4992,4.5,4.56305,4.56305,20,27,455.0,Dollar
-True,444,4.7,4.60424,4.60424,20,14,455.0,Dollar
-True,5958,4.15,4.26242,4.26242,20,43,455.0,Dollar
-False,113,4.2,4.19679,4.19679,20,10,455.0,Euro
-False,1577,4.25,4.29975,4.29975,20,33,455.0,Dollar
-True,47,3.75,3.7917,3.7917,20,31,455.0,Pound
-True,69,4.7,4.69887,4.69887,20,61,455.0,Pound
-True,265,3.7,3.57661,3.57661,20,14,455.0,Euro
-False,1188,4.75,4.75749,4.75749,20,18,455.0,Pound
-False,189,4.45833,4.47624,4.47624,20,18,455.0,Euro
-True,86,4.1,4.11507,4.11507,20,20,455.0,Euro
-False,99,4.5,4.47636,4.47636,21,81,3200.0,Euro
-False,60,4.65,4.52846,4.52846,20,15,455.0,Dollar
-True,56,4.1,4.05738,4.05738,20,46,455.0,Dollar
-True,51,4.95,4.95714,4.95714,20,16,3200.0,Pound
-True,660,3.8,3.59464,3.59464,20,29,455.0,Dollar
-True,1118,4.4,4.24409,4.24409,20,6,455.0,Dollar
-False,1808,4.3,4.36668,4.36668,20,58,455.0,Euro
-False,2338,3.85,3.80114,3.80114,20,5,455.0,Dollar
-True,1868,4.25,4.18223,4.18223,20,8,455.0,Euro
-True,182,3.75,3.69133,3.69133,20,95,455.0,Euro
-True,2456,3.9,3.95488,3.95488,20,10,455.0,Pound
-False,1183,4.25,4.03561,4.03561,20,11,455.0,Dollar
-True,75,4.75,4.73138,4.73138,20,18,455.0,Pound
-False,2205,4.0,4.01955,4.01955,20,45,455.0,Dollar
-True,554,4.25,4.19137,4.19137,20,19,455.0,Dollar
-False,57,3.45,3.38182,3.38182,20,129,455.0,Dollar
-False,1480,3.9,3.88933,3.88933,20,49,455.0,Dollar
-True,2084,4.45,4.52768,4.52768,20,14,455.0,Pound
-False,66,4.15,4.06578,4.06578,20,56,455.0,Dollar
-True,549,3.4,3.29632,3.29632,20,14,455.0,Euro
-False,228,3.85,3.96634,3.96634,20,59,455.0,Euro
-False,106,3.8,3.75107,3.75107,20,5,455.0,Pound
-False,781,3.4,3.3559,3.3559,20,24,455.0,Dollar
-True,2580,4.6,4.57587,4.57587,20,26,455.0,Euro
-False,4129,3.6,3.2474,3.2474,20,11,455.0,Dollar
-False,59,4.13636,4.20773,4.20773,20,25,455.0,Euro
-True,1238,3.85,4.06495,4.06495,20,5,455.0,Dollar
-False,867,3.5,3.85723,3.85723,19,6,455.0,Euro
-False,565,3.8,3.92075,3.92075,19,31,455.0,Dollar
-True,1134,4.65,4.61137,4.61137,19,12,455.0,Pound
-True,165,3.9,3.75888,3.75888,19,6,455.0,Dollar
-True,1267,2.35,2.43303,2.43303,19,33,455.0,Euro
-True,58,4.25,4.20633,4.20633,19,15,455.0,Euro
-True,2308,3.65,3.84667,3.84667,19,24,455.0,Pound
-False,2808,4.95,4.90521,4.90521,19,22,455.0,Euro
-True,86,4.0,3.36475,3.36475,19,9,455.0,Pound
-False,73,3.5,3.44393,3.44393,19,26,455.0,Pound
-True,355,4.45,4.58586,4.58586,19,10,455.0,Dollar
-True,1331,4.2,4.26134,4.26134,19,27,455.0,Pound
-False,4181,4.25,4.24178,4.24178,19,10,455.0,Dollar
-True,3041,3.8,3.82697,3.82697,19,10,455.0,Dollar
-True,87,4.35,4.22223,4.22223,19,10,800.0,Dollar
-True,156,4.65,4.64008,4.64008,19,25,455.0,Pound
-False,106,4.6,4.62699,4.62699,20,52,455.0,Euro
-True,6059,4.45,4.63441,4.63441,19,21,455.0,Dollar
-False,495,4.57895,4.46993,4.46993,19,31,455.0,Pound
-False,102,3.55,3.65693,3.65693,19,26,455.0,Dollar
-True,62,3.35,3.13137,3.13137,19,7,455.0,Pound
-False,98,4.15,4.08644,4.08644,19,14,455.0,Pound
-False,4170,4.4,4.63301,4.63301,19,24,455.0,Dollar
-False,3925,4.47222,4.59266,4.59266,20,82,455.0,Euro
-False,168,4.65,4.57966,4.57966,19,12,455.0,Dollar
-True,98,3.85,3.75533,3.75533,19,31,455.0,Dollar
-True,75,4.2,4.18961,4.18961,19,25,455.0,Dollar
-True,65,3.85,3.92326,3.92326,19,9,455.0,Euro
-True,164,3.4,3.46872,3.46872,19,7,455.0,Pound
-True,1011,3.4,3.40989,3.40989,19,25,455.0,Pound
-True,2937,3.92105,4.28547,4.28547,19,20,455.0,Dollar
-True,1894,4.4,4.54346,4.54346,19,22,455.0,Dollar
-True,1135,4.7,4.72968,4.72968,19,7,455.0,Pound
-True,1008,3.9,4.05739,4.05739,19,21,455.0,Euro
-True,1058,4.6,4.77574,4.77574,19,7,455.0,Pound
-True,1180,3.65,3.53127,3.53127,19,13,455.0,Dollar
-False,4780,4.05,3.88357,3.88357,19,30,455.0,Dollar
-False,5665,4.25,4.23727,4.23727,19,83,455.0,Euro
-False,87,3.95,3.79917,3.79917,19,18,455.0,Euro
-True,1868,3.95,4.21885,4.21885,19,10,455.0,Euro
-True,3269,4.45,4.34024,4.34024,19,33,455.0,Euro
-True,1096,3.65,3.54375,3.54375,19,13,455.0,Pound
-True,191,4.0,4.0481,4.0481,19,14,455.0,Euro
-True,80,2.8,2.7452,2.7452,19,57,455.0,Pound
-True,196,4.3,4.32165,4.32165,19,15,455.0,Euro
-False,848,2.75,2.69154,2.69154,19,6,455.0,Dollar
-True,816,3.85,3.88786,3.88786,19,12,455.0,Dollar
-True,8141,3.4,2.85454,2.85454,19,35,455.0,Pound
-False,159,3.95,3.86325,3.86325,19,52,455.0,Pound
-False,62,4.7,4.68261,4.68261,19,19,455.0,Pound
-False,81,4.41176,4.40502,4.40502,19,21,455.0,Pound
-True,69,4.3,4.30313,4.30313,19,11,455.0,Pound
-False,46,4.1,4.13172,4.13172,19,16,455.0,Euro
-False,2143,3.15,3.85548,3.85548,19,16,455.0,Dollar
-True,1029,4.4,4.33224,4.33224,19,34,455.0,Dollar
-True,3904,4.35,4.45111,4.45111,19,10,455.0,Pound
-True,130,3.55,3.42971,3.42971,19,28,455.0,Euro
-False,1210,4.3,4.31511,4.31511,19,23,455.0,Euro
-True,576,4.35,4.31623,4.31623,19,11,455.0,Euro
-False,50,3.85,4.06261,4.06261,19,12,455.0,Euro
-True,64,3.85,3.87272,3.87272,19,7,455.0,Pound
-False,573,4.4,4.47652,4.47652,19,14,455.0,Euro
-True,4371,2.85,3.05094,3.05094,19,5,455.0,Pound
-False,4185,4.2,4.25579,4.25579,19,17,455.0,Dollar
-False,96,4.55,4.59579,4.59579,19,23,455.0,Euro
-False,118,3.75,3.65736,3.65736,19,0,455.0,Pound
-False,67,4.1,4.13457,4.13457,19,46,455.0,Euro
-True,967,4.15,4.30216,4.30216,19,24,455.0,Pound
-False,191,4.25,4.32588,4.32588,19,22,455.0,Euro
-True,1129,4.35,4.30718,4.30718,19,15,455.0,Dollar
-False,1036,3.7,3.75231,3.75231,19,17,455.0,Pound
-True,96,4.45,4.46721,4.46721,19,20,455.0,Dollar
-True,706,3.9,3.85664,3.85664,19,166,462.0,Pound
-True,58,4.3,4.21518,4.21518,19,17,1440.0,Dollar
-True,7165,3.85,3.6995,3.6995,19,29,455.0,Euro
-True,56,4.35,4.30975,4.30975,19,9,455.0,Pound
-False,2678,4.3,4.29831,4.29831,19,24,455.0,Dollar
-True,1169,3.7,3.74266,3.74266,19,32,455.0,Dollar
-True,1934,3.05,3.26429,3.26429,19,16,455.0,Euro
-True,216,3.55,3.65123,3.65123,19,42,455.0,Pound
-False,59,3.85,3.91282,3.91282,19,36,455.0,Euro
-True,54,3.4,3.41503,3.41503,19,26,455.0,Euro
-True,1054,4.3,4.30092,4.30092,19,80,455.0,Dollar
-False,293,4.65,4.66864,4.66864,19,39,455.0,Pound
-False,277,4.1,4.0003,4.0003,19,34,455.0,Euro
-False,186,4.1,4.00153,4.00153,19,12,455.0,Dollar
-False,1651,3.85,3.24984,3.24984,19,25,455.0,Pound
-True,89,3.2,3.32788,3.32788,19,28,455.0,Dollar
-True,2094,4.6,4.54813,4.54813,19,42,455.0,Euro
-True,3845,3.35,3.23941,3.23941,19,20,455.0,Euro
-False,222,3.8,4.02973,4.02973,19,49,455.0,Dollar
-False,287,4.05,3.98562,3.98562,19,15,455.0,Dollar
-True,818,3.0,3.12816,3.12816,19,6,455.0,Euro
-False,83,4.8,4.83208,4.83208,19,47,455.0,Euro
-False,1487,3.65,3.65419,3.65419,19,15,455.0,Euro
-False,77,4.25,4.13526,4.13526,19,58,455.0,Pound
-False,73,3.7,3.76806,3.76806,19,28,455.0,Dollar
-True,1675,4.36842,3.81179,3.81179,19,12,455.0,Dollar
-True,35,4.0,4.0496,4.0496,19,15,455.0,Dollar
-True,65,3.35,3.34611,3.34611,19,0,800.0,Dollar
-True,2459,4.25,4.29272,4.29272,19,30,455.0,Dollar
-False,884,4.05,3.45235,3.45235,19,84,455.0,Dollar
-False,130,4.78947,4.76502,4.76502,20,135,455.0,Euro
-False,140,4.25,4.05902,4.05902,19,23,455.0,Euro
-True,82,3.7,3.9218,3.9218,20,11,455.0,Euro
-True,1244,3.9,3.60711,3.60711,19,10,455.0,Dollar
-True,64,4.25,4.2507,4.2507,19,17,455.0,Pound
-False,39,3.9,3.92289,3.92289,19,9,455.0,Euro
-True,1092,4.8,4.80017,4.80017,19,60,455.0,Dollar
-False,1316,3.95,4.01131,4.01131,19,18,455.0,Dollar
-False,113,4.1,3.81087,3.81087,19,26,455.0,Euro
-False,16071,4.15,4.07993,4.07993,19,5,455.0,Pound
-True,2234,3.75,3.81124,3.81124,19,5,455.0,Pound
-False,4182,4.65789,4.72874,4.72874,19,20,455.0,Pound
-False,1576,3.35,3.12,3.12,18,7,455.0,Dollar
-True,105,4.2,4.25913,4.25913,18,35,455.0,Euro
-True,1259,3.45,3.36791,3.36791,18,29,455.0,Pound
-True,1155,4.2,4.06795,4.06795,18,21,455.0,Dollar
-True,13435,4.2,3.76017,3.76017,18,47,455.0,Pound
-False,1787,3.95,3.90535,3.90535,18,29,455.0,Dollar
-True,270,3.95,3.88485,3.88485,18,101,455.0,Pound
-False,13054,3.65,3.65554,3.65554,18,17,455.0,Pound
-True,216,4.5,4.4386,4.4386,18,18,455.0,Euro
-True,82,4.1,4.1352,4.1352,18,30,455.0,Dollar
-True,1440,4.35,4.2071,4.2071,19,29,455.0,Pound
-False,84,4.15,4.17644,4.17644,18,27,455.0,Pound
-False,3238,2.6,2.70521,2.70521,18,11,455.0,Euro
-False,2899,4.25,3.74127,3.74127,18,43,455.0,Euro
-False,296,4.0,4.03131,4.03131,18,8,455.0,Pound
-False,49,3.95,3.91237,3.91237,18,5,455.0,Dollar
-True,52,4.2,4.13909,4.13909,18,75,455.0,Euro
-False,1799,4.25,4.50587,4.50587,18,35,455.0,Pound
-False,135,4.3,4.28223,4.28223,18,16,455.0,Dollar
-True,108,4.1,4.06219,4.06219,18,11,455.0,Dollar
-True,108,3.85,3.71877,3.71877,18,0,455.0,Euro
-True,69,4.3,4.31191,4.31191,18,16,455.0,Dollar
-False,43,3.65,3.63486,3.63486,18,9,455.0,Pound
-False,92,4.35,4.37938,4.37938,18,38,455.0,Pound
-True,126,4.25,4.2738,4.2738,18,41,455.0,Dollar
-True,3725,4.23077,3.99114,3.99114,18,33,455.0,Euro
-True,67,4.16667,4.37165,4.37165,18,18,455.0,Dollar
-False,1437,3.5,3.57326,3.57326,18,14,455.0,Dollar
-True,124,4.25,4.22102,4.22102,18,60,455.0,Dollar
-True,3347,4.6,4.81636,4.81636,18,23,455.0,Pound
-False,49,4.9,4.88135,4.88135,18,14,455.0,Euro
-True,66,4.3,4.27859,4.27859,19,0,455.0,Pound
-True,852,3.8,4.1276,4.1276,18,8,455.0,Pound
-True,6021,3.6,3.71853,3.71853,18,10,455.0,Dollar
-True,70,4.65,4.68436,4.68436,18,21,455.0,Euro
-True,54,4.1,4.12745,4.12745,18,11,455.0,Pound
-True,379,4.1,4.08705,4.08705,18,17,455.0,Pound
-False,38,5.0,5.0,5.0,18,14,455.0,Euro
-False,366,4.25,4.25697,4.25697,18,18,455.0,Euro
-False,41,4.45,4.57743,4.57743,18,6,455.0,Dollar
-False,59,4.45,4.42053,4.42053,18,14,455.0,Euro
-True,952,4.5,4.45912,4.45912,18,18,455.0,Dollar
-False,67,4.5,4.49391,4.49391,18,41,455.0,Euro
-True,100,4.8,4.77084,4.77084,18,38,455.0,Dollar
-True,14522,3.15,2.84006,2.84006,18,23,455.0,Euro
-False,93,4.15,3.99065,3.99065,18,33,700.0,Euro
-False,370,4.35,4.56911,4.56911,18,6,455.0,Euro
-False,1104,3.1,3.12894,3.12894,18,26,455.0,Dollar
-True,81,4.35,4.37818,4.37818,18,7,1120.0,Euro
-False,88,1.9,1.64343,1.64343,18,8,455.0,Euro
-False,6017,3.85,3.70335,3.70335,18,10,455.0,Pound
-True,86,3.75,3.7513,3.7513,18,185,455.0,Dollar
-True,981,4.9,4.89161,4.89161,18,7,455.0,Euro
-True,731,3.35,3.00799,3.00799,18,5,455.0,Euro
-False,56,4.65,4.69406,4.69406,18,50,455.0,Pound
-True,3939,2.9,3.17281,3.17281,18,17,455.0,Pound
-True,197,3.9,3.76287,3.76287,18,14,455.0,Euro
-True,771,4.375,4.42691,4.42691,18,21,455.0,Euro
-False,70,4.44444,4.35369,4.35369,18,8,455.0,Pound
-True,113,4.0,4.01657,4.01657,18,45,455.0,Pound
-True,355,4.65,4.60242,4.60242,18,19,455.0,Euro
-False,837,3.45,3.45357,3.45357,18,30,455.0,Pound
-False,126,3.7,3.5827,3.5827,18,89,455.0,Euro
-False,147,4.0,4.08668,4.08668,18,34,455.0,Dollar
-False,592,4.2,4.19766,4.19766,18,33,455.0,Dollar
-False,978,4.5,4.25116,4.25116,18,16,455.0,Dollar
-False,1513,3.45,3.40608,3.40608,18,20,455.0,Dollar
-True,177,4.4,4.4732,4.4732,18,27,455.0,Euro
-True,3919,3.6,3.05513,3.05513,18,10,455.0,Pound
-False,2699,4.27273,4.27557,4.27557,18,23,455.0,Dollar
-True,2186,4.6,4.61185,4.61185,19,25,455.0,Euro
-False,126,4.65,4.74769,4.74769,18,45,455.0,Dollar
-True,40,4.0,4.00224,4.00224,18,17,455.0,Pound
-False,919,3.9,3.8932,3.8932,18,233,455.0,Euro
-False,3900,3.83333,3.95246,3.95246,18,9,455.0,Dollar
-False,4210,4.40625,4.10631,4.10631,18,20,455.0,Euro
-True,702,3.85,3.8268,3.8268,18,78,455.0,Pound
-True,4216,4.16667,4.23123,4.23123,18,6,455.0,Dollar
-True,265,4.4,4.29639,4.29639,18,18,455.0,Dollar
-False,3247,4.3,4.2535,4.2535,18,28,455.0,Euro
-False,258,4.55,4.46519,4.46519,18,27,455.0,Dollar
-True,4277,4.3,4.37539,4.37539,18,33,455.0,Pound
-False,1085,4.55,4.78398,4.78398,18,11,455.0,Dollar
-True,47,4.65,4.63931,4.63931,18,13,455.0,Euro
-True,928,4.25,4.18514,4.18514,18,12,455.0,Pound
-True,105,4.1,4.0926,4.0926,18,22,455.0,Pound
-False,219,4.15,4.10218,4.10218,18,39,455.0,Euro
-False,1023,3.4,3.11205,3.11205,18,7,455.0,Pound
-True,5550,4.35,4.43562,4.43562,18,47,455.0,Pound
-True,2059,3.85,3.93658,3.93658,18,7,455.0,Dollar
-False,3604,2.8,2.27137,2.27137,18,11,455.0,Dollar
-True,1569,4.25,4.33173,4.33173,18,24,455.0,Dollar
-False,1852,4.1,4.13322,4.13322,18,11,455.0,Pound
-True,292,4.4,4.49535,4.49535,18,36,455.0,Dollar
-True,77,3.95,3.9397,3.9397,18,21,455.0,Dollar
-False,60,4.3,4.14202,4.14202,18,8,455.0,Dollar
-True,77,3.65,3.58294,3.58294,18,21,455.0,Pound
-False,150,4.6,4.58549,4.58549,18,19,455.0,Euro
-True,123,4.1,4.06374,4.06374,18,15,455.0,Euro
-False,696,2.35,2.67156,2.67156,18,11,455.0,Euro
-False,1701,3.65,3.86469,3.86469,18,23,455.0,Pound
-True,1593,3.9,3.80966,3.80966,18,7,455.0,Euro
-True,3428,3.5,3.43474,3.43474,18,29,455.0,Dollar
-True,6487,4.0,3.71852,3.71852,18,17,455.0,Euro
-True,2524,4.4,4.29016,4.29016,18,14,455.0,Dollar
-True,8585,4.1,4.1588,4.1588,18,65,455.0,Euro
-True,591,3.95,4.14191,4.14191,18,15,455.0,Euro
-True,68,4.5,4.45148,4.45148,18,26,455.0,Pound
-True,5811,3.35,3.25463,3.25463,18,55,455.0,Pound
-True,1330,4.4,4.18465,4.18465,18,13,455.0,Euro
-True,69,4.05,3.9138,3.9138,18,7,455.0,Pound
-True,58,4.35,4.32127,4.32127,18,11,455.0,Dollar
-False,2769,4.4,4.52157,4.52157,18,9,455.0,Dollar
-False,46,4.15,4.09289,4.09289,18,29,455.0,Dollar
-False,52,4.5,4.53631,4.53631,18,42,455.0,Dollar
-False,2902,4.2,4.07732,4.07732,18,13,455.0,Pound
-False,1131,3.85,4.16081,4.16081,18,17,455.0,Pound
-True,69,3.75,3.74002,3.74002,18,11,455.0,Dollar
-False,576,3.45,3.2994,3.2994,18,30,455.0,Dollar
-False,422,3.95,3.87578,3.87578,18,24,455.0,Euro
-True,909,4.35,4.40308,4.40308,18,11,455.0,Dollar
-False,79,4.15,4.18331,4.18331,18,63,455.0,Pound
-True,59,4.25,4.2063,4.2063,18,17,455.0,Euro
-False,2755,3.9,4.00565,4.00565,18,23,455.0,Dollar
-True,68,3.95,3.93774,3.93774,18,9,455.0,Pound
-False,1211,3.75,3.56437,3.56437,17,15,455.0,Dollar
-True,235,3.75,3.7162,3.7162,17,71,455.0,Euro
-True,1207,3.95,3.89986,3.89986,17,8,455.0,Dollar
-True,1710,4.65,4.3213,4.3213,17,28,455.0,Dollar
-False,1013,3.8,3.75807,3.75807,17,26,455.0,Dollar
-False,2924,4.45,4.43082,4.43082,17,22,455.0,Dollar
-True,145,4.7,4.45049,4.45049,17,19,455.0,Pound
-True,1138,4.1,4.1368,4.1368,17,113,455.0,Euro
-True,275,4.35,4.05408,4.05408,17,12,455.0,Pound
-False,617,4.05,4.03927,4.03927,17,6,455.0,Dollar
-False,1377,4.8,4.79403,4.79403,17,9,455.0,Pound
-True,140,4.0,3.86219,3.86219,17,8,455.0,Pound
-False,96,4.4,4.38819,4.38819,17,30,455.0,Pound
-True,2110,4.2,4.21697,4.21697,17,25,455.0,Pound
-False,92,3.45,3.37278,3.37278,17,25,455.0,Pound
-True,47,4.15,4.1295,4.1295,17,26,455.0,Euro
-False,373,4.7,4.6003,4.6003,17,61,455.0,Pound
-True,62,4.3,4.29494,4.29494,17,15,455.0,Dollar
-False,248,3.75,4.11207,4.11207,17,45,455.0,Dollar
-True,100,4.4,4.332,4.332,17,22,455.0,Dollar
-True,5763,4.02941,4.10753,4.10753,17,12,455.0,Euro
-True,75,4.5,4.473,4.473,17,12,455.0,Pound
-True,110,4.25,4.25268,4.25268,17,11,455.0,Dollar
-True,115,3.8,3.81077,3.81077,17,114,455.0,Pound
-False,1477,4.3,4.43086,4.43086,17,78,455.0,Pound
-True,2436,4.3,4.50617,4.50617,17,11,455.0,Pound
-True,928,4.0,3.99207,3.99207,17,12,455.0,Pound
-False,1694,4.65,4.6471,4.6471,17,54,455.0,Pound
-False,1139,3.35,3.41961,3.41961,17,12,455.0,Dollar
-False,127,3.65,3.64398,3.64398,17,12,455.0,Euro
-False,1201,4.1,3.72599,3.72599,17,29,455.0,Pound
-False,5673,4.1,4.05901,4.05901,17,11,455.0,Euro
-True,3390,4.45,4.29325,4.29325,17,22,455.0,Euro
-False,1040,4.35,4.44567,4.44567,17,24,455.0,Dollar
-True,1549,3.8,3.87788,3.87788,17,33,488.0,Euro
-True,65,4.45,4.56137,4.56137,17,42,455.0,Dollar
-True,628,4.45,4.34132,4.34132,17,64,800.0,Dollar
-True,352,3.9,3.91005,3.91005,17,24,700.0,Pound
-True,90,4.5,4.59402,4.59402,17,19,455.0,Dollar
-False,37,3.5,3.46521,3.46521,17,13,455.0,Euro
-True,135,3.7,3.76609,3.76609,17,46,455.0,Dollar
-False,1048,3.55,3.52571,3.52571,17,15,455.0,Pound
-True,975,4.7,4.6525,4.6525,17,48,455.0,Euro
-True,8453,3.75,3.87649,3.87649,17,16,455.0,Dollar
-True,3177,3.7,3.63908,3.63908,17,8,455.0,Dollar
-False,120,4.5,4.48014,4.48014,17,58,455.0,Euro
-True,83,4.15,4.16186,4.16186,17,5,455.0,Pound
-True,48,4.45,4.45174,4.45174,17,11,455.0,Dollar
-True,96,3.7,3.75491,3.75491,17,9,455.0,Pound
-False,1117,3.85,3.84459,3.84459,17,17,455.0,Euro
-True,2054,3.75,3.33539,3.33539,17,42,455.0,Euro
-False,3350,3.25,3.42741,3.42741,17,13,455.0,Euro
-True,367,4.05882,4.05118,4.05118,17,16,455.0,Dollar
-True,101,4.47059,4.42149,4.42149,17,28,455.0,Pound
-True,1764,4.25,3.89262,3.89262,17,8,455.0,Pound
-False,128,3.5,3.26387,3.26387,17,22,455.0,Dollar
-True,4192,4.15,4.11233,4.11233,17,10,455.0,Euro
-False,2556,3.9,3.87559,3.87559,17,19,455.0,Pound
-False,239,3.95,3.97474,3.97474,17,45,455.0,Euro
-True,81,4.6,4.55263,4.55263,17,0,1600.0,Pound
-False,83,4.40625,4.45208,4.45208,17,37,455.0,Euro
-False,66,4.05,4.04099,4.04099,17,27,455.0,Pound
-False,1901,3.9,3.84861,3.84861,17,30,455.0,Euro
-True,1357,3.6,3.82586,3.82586,17,8,455.0,Euro
-False,1874,3.85,3.89575,3.89575,17,10,455.0,Dollar
-True,3540,3.8,3.48499,3.48499,17,19,455.0,Dollar
-True,56,4.2,4.15313,4.15313,17,44,455.0,Pound
-False,2152,3.6,3.62669,3.62669,17,23,455.0,Pound
-True,64,4.52941,4.50407,4.50407,17,87,455.0,Dollar
-False,1340,3.9,4.09304,4.09304,17,25,455.0,Pound
-False,555,3.0,2.98952,2.98952,17,85,455.0,Pound
-True,1119,4.55,4.58622,4.58622,17,5,455.0,Dollar
-False,131,3.05,3.07089,3.07089,17,27,455.0,Pound
-False,1251,4.35,4.17988,4.17988,17,47,455.0,Pound
-True,2178,3.85,3.70524,3.70524,17,22,455.0,Dollar
-True,1420,3.65,4.14201,4.14201,17,58,455.0,Dollar
-True,2069,4.4,4.38359,4.38359,17,24,455.0,Pound
-True,92,4.55,4.46196,4.46196,17,31,455.0,Pound
-False,7985,4.2,4.37942,4.37942,17,8,455.0,Pound
-False,2271,3.5,3.91562,3.91562,17,21,455.0,Euro
-True,221,4.65,4.59211,4.59211,17,28,455.0,Euro
-True,2608,4.3,4.50725,4.50725,17,20,455.0,Pound
-True,140,4.44118,4.39391,4.39391,17,107,455.0,Dollar
-False,104,3.85,3.86064,3.86064,17,15,455.0,Euro
-True,5832,4.09091,4.34311,4.34311,17,21,455.0,Euro
-False,220,4.05,4.03856,4.03856,17,34,455.0,Euro
-True,279,3.55,3.67297,3.67297,17,10,700.0,Dollar
-False,98,4.3,4.29401,4.29401,17,17,455.0,Pound
-True,56,3.55,3.83687,3.83687,17,14,455.0,Dollar
-True,1426,3.95,3.90116,3.90116,17,37,2160.0,Dollar
-True,69,4.2,4.17539,4.17539,17,36,455.0,Pound
-True,1139,4.9,4.92147,4.92147,17,13,455.0,Pound
-True,749,3.75,3.79685,3.79685,17,14,455.0,Pound
-False,63,4.8,4.67687,4.67687,17,14,455.0,Pound
-False,113,4.15,4.14724,4.14724,17,29,455.0,Pound
-False,1146,3.85,4.02928,4.02928,17,44,455.0,Dollar
-False,299,3.9,3.76462,3.76462,17,1,455.0,Pound
-False,388,3.9,3.87423,3.87423,17,35,455.0,Pound
-False,536,3.90909,3.96563,3.96563,17,11,455.0,Dollar
-False,942,3.3,3.09365,3.09365,17,18,455.0,Euro
-False,194,4.2,4.22672,4.22672,17,24,455.0,Euro
-True,273,4.1,4.13713,4.13713,17,17,455.0,Euro
-False,4068,3.65,3.79369,3.79369,17,134,481.0,Dollar
-True,204,4.5,4.51918,4.51918,17,22,455.0,Dollar
-True,555,4.05,4.01501,4.01501,17,17,455.0,Euro
-True,1966,4.35,4.34085,4.34085,17,10,455.0,Euro
-False,183,4.2,3.87773,3.87773,17,29,455.0,Pound
-True,937,4.3,4.21783,4.21783,17,22,455.0,Euro
-False,88,3.15,3.28301,3.28301,17,0,455.0,Dollar
-True,69,3.85,3.80075,3.80075,17,0,455.0,Euro
-True,104,4.55,4.41755,4.41755,17,18,455.0,Pound
-False,981,4.45,4.37434,4.37434,17,22,455.0,Pound
-False,123,3.75,3.7344,3.7344,17,107,455.0,Dollar
-False,39,3.75,4.0094,4.0094,17,19,455.0,Dollar
-True,147,4.91176,4.9118,4.9118,17,0,2800.0,Euro
-False,67,4.1,4.01883,4.01883,17,13,455.0,Dollar
-False,31,5.0,5.0,5.0,17,18,455.0,Euro
-True,82,4.6,4.5667,4.5667,16,39,700.0,Euro
-True,479,3.95,3.8522,3.8522,16,34,455.0,Pound
-True,118,4.25,4.17394,4.17394,16,24,455.0,Dollar
-False,2728,4.25,4.10708,4.10708,16,19,455.0,Dollar
-True,2458,3.55,3.35607,3.35607,16,35,455.0,Pound
-False,70,4.15,4.06382,4.06382,16,17,455.0,Euro
-True,72,4.1,4.12144,4.12144,16,32,455.0,Pound
-False,592,4.5,4.53431,4.53431,16,19,455.0,Pound
-False,3051,4.8,4.77601,4.77601,16,18,455.0,Pound
-True,1394,3.7,3.60745,3.60745,16,14,455.0,Pound
-False,2872,3.75,3.84025,3.84025,16,29,455.0,Pound
-False,13842,4.35,4.48722,4.48722,16,15,455.0,Pound
-False,2519,3.6,3.40135,3.40135,16,49,455.0,Dollar
-True,72,3.7,3.69757,3.69757,16,45,455.0,Pound
-True,53,4.55,4.46995,4.46995,16,19,455.0,Dollar
-True,64,4.05,4.07569,4.07569,16,9,455.0,Pound
-True,1146,4.6,4.57635,4.57635,16,25,455.0,Euro
-True,106,3.95,3.98931,3.98931,16,48,455.0,Dollar
-False,5944,3.55,3.74497,3.74497,16,16,455.0,Pound
-False,72,3.85,3.94853,3.94853,16,6,455.0,Dollar
-True,156,3.8,3.78188,3.78188,16,14,455.0,Pound
-True,150,3.5,3.48406,3.48406,16,24,455.0,Euro
-True,4041,3.85,4.19303,4.19303,16,22,455.0,Dollar
-False,619,3.8,4.10221,4.10221,16,11,455.0,Dollar
-False,93,4.8,4.78638,4.78638,16,36,455.0,Euro
-True,1052,4.65,4.57066,4.57066,16,10,455.0,Dollar
-False,74,4.35,4.28484,4.28484,16,12,455.0,Pound
-True,91,4.1,4.14041,4.14041,16,6,455.0,Dollar
-False,163,4.1,3.99956,3.99956,16,25,455.0,Euro
-False,1487,3.85,3.89495,3.89495,16,17,455.0,Dollar
-True,3031,4.05,3.7855,3.7855,16,17,455.0,Pound
-True,999,4.05,3.83766,3.83766,16,17,455.0,Euro
-True,62,2.4,2.63988,2.63988,16,10,455.0,Euro
-True,142,4.75,4.69401,4.69401,16,27,455.0,Pound
-False,740,4.35,4.48272,4.48272,16,16,455.0,Pound
-True,66,3.65,3.19447,3.19447,16,48,455.0,Dollar
-False,1871,3.65,3.52759,3.52759,16,38,455.0,Dollar
-True,92,3.9,4.00294,4.00294,16,177,455.0,Pound
-False,55,3.90625,3.91125,3.91125,16,77,455.0,Euro
-True,1594,4.05,4.03808,4.03808,16,21,455.0,Dollar
-True,969,3.89286,4.12866,4.12866,16,22,455.0,Euro
-False,56,4.1,4.18256,4.18256,16,13,455.0,Euro
-True,74,4.59375,4.46345,4.46345,17,18,455.0,Dollar
-False,54,4.65625,4.67052,4.67052,16,47,2080.0,Dollar
-False,164,4.53125,4.51629,4.51629,16,24,455.0,Dollar
-False,6777,4.125,4.14923,4.14923,16,10,455.0,Euro
-False,45,4.90625,4.8528,4.8528,16,5,455.0,Euro
-True,1296,4.25,4.23978,4.23978,16,21,455.0,Euro
-True,7443,4.3,4.14911,4.14911,16,48,455.0,Pound
-True,152,4.45,4.44176,4.44176,16,30,455.0,Dollar
-True,100,4.35,4.30646,4.30646,16,14,455.0,Dollar
-False,38,3.45,3.4647,3.4647,16,44,455.0,Pound
-True,36,4.05,4.11524,4.11524,16,28,455.0,Euro
-True,1044,4.5,4.65127,4.65127,16,15,455.0,Dollar
-False,77,4.6,4.64017,4.64017,16,26,455.0,Pound
-True,58,4.25,4.25051,4.25051,16,11,455.0,Pound
-False,23,3.8,4.04204,4.04204,16,0,455.0,Pound
-True,1895,3.7,2.96288,2.96288,16,29,455.0,Dollar
-False,273,3.55,3.42099,3.42099,16,20,455.0,Euro
-False,51,4.65,4.58972,4.58972,16,38,455.0,Euro
-True,587,3.9,4.01107,4.01107,16,17,455.0,Pound
-False,61,4.0,3.97029,3.97029,16,5,455.0,Dollar
-True,151,3.8,3.98043,3.98043,16,17,455.0,Pound
-True,93,4.65,4.65239,4.65239,16,31,455.0,Pound
-True,44,4.1,3.98911,3.98911,16,7,455.0,Pound
-True,3453,3.625,3.40714,3.40714,16,7,455.0,Pound
-False,140,4.4,4.50688,4.50688,16,51,455.0,Pound
-True,113,4.15,4.23371,4.23371,16,9,455.0,Pound
-False,1122,4.1,3.59435,3.59435,16,33,455.0,Pound
-False,75,4.1,4.15291,4.15291,16,44,455.0,Pound
-True,96,4.5,4.51414,4.51414,16,32,455.0,Pound
-True,501,4.45,4.39522,4.39522,16,26,455.0,Dollar
-True,850,3.2,2.79323,2.79323,16,19,455.0,Pound
-True,141,4.55,4.52637,4.52637,16,10,455.0,Euro
-False,82,3.85,3.75835,3.75835,16,16,455.0,Pound
-True,14847,3.3,3.84735,3.84735,16,13,455.0,Pound
-True,1184,3.7,3.90588,3.90588,16,27,455.0,Dollar
-True,78,4.1,4.04786,4.04786,16,19,455.0,Euro
-False,59,4.1,3.89024,3.89024,16,27,455.0,Pound
-True,58,3.85,3.89266,3.89266,16,11,455.0,Pound
-False,133,3.3,3.71046,3.71046,16,0,455.0,Pound
-False,52,3.85,3.77254,3.77254,17,13,455.0,Euro
-False,4947,4.2,4.51804,4.51804,16,27,455.0,Euro
-False,1282,3.95,3.94731,3.94731,16,13,455.0,Dollar
-True,1746,4.5,4.48288,4.48288,16,8,455.0,Pound
-True,4330,3.0,3.03757,3.03757,16,8,455.0,Euro
-True,731,3.7,3.59817,3.59817,16,77,455.0,Euro
-True,1617,3.875,4.00037,4.00037,16,32,1200.0,Pound
-False,5236,4.4375,4.45284,4.45284,16,17,455.0,Pound
-True,659,4.25,4.47238,4.47238,16,24,455.0,Pound
-True,70,4.15,4.10482,4.10482,17,12,455.0,Pound
-False,672,3.9,3.8675,3.8675,16,50,455.0,Euro
-True,5019,4.45,4.44001,4.44001,16,18,455.0,Dollar
-False,579,4.1,4.08751,4.08751,16,46,455.0,Dollar
-False,1453,4.05,3.97901,3.97901,16,49,455.0,Dollar
-True,78,2.75,2.61105,2.61105,16,12,455.0,Dollar
-False,5463,4.2,4.13581,4.13581,16,93,455.0,Dollar
-False,57,3.5,3.61004,3.61004,16,21,455.0,Pound
-True,160,2.85,2.44747,2.44747,16,64,455.0,Dollar
-False,808,4.05,4.02462,4.02462,16,43,455.0,Dollar
-False,1342,4.8,4.61131,4.61131,16,15,455.0,Dollar
-False,1267,3.65,3.47102,3.47102,16,41,455.0,Pound
-False,54,3.9,3.86476,3.86476,16,6,455.0,Euro
-True,44,3.6,3.49974,3.49974,16,14,455.0,Pound
-False,60,4.5,4.39265,4.39265,16,25,455.0,Pound
-True,569,3.55,3.5278,3.5278,16,11,455.0,Pound
-False,674,4.25,4.26481,4.26481,16,19,1600.0,Dollar
-False,1776,4.45,4.62096,4.62096,16,40,455.0,Dollar
-False,67,4.1,4.14678,4.14678,16,10,455.0,Euro
-False,790,4.0,4.05204,4.05204,16,17,455.0,Pound
-False,96,3.65,3.55769,3.55769,16,14,455.0,Dollar
-True,3034,4.35,4.21845,4.21845,16,24,455.0,Euro
-True,1106,4.55,4.51334,4.51334,16,7,455.0,Pound
-False,1575,4.0,4.2857,4.2857,16,24,455.0,Euro
-False,891,4.65,4.65048,4.65048,16,16,455.0,Dollar
-True,1030,3.9,3.90127,3.90127,16,11,455.0,Dollar
-False,1126,4.1,4.08687,4.08687,16,6,455.0,Pound
-True,102,3.55,3.75704,3.75704,16,16,455.0,Dollar
-False,99,4.4,4.18449,4.18449,16,12,455.0,Pound
-False,112,3.2,3.44929,3.44929,16,51,455.0,Euro
-True,56,3.6,3.6045,3.6045,16,6,455.0,Euro
-True,5216,3.1,3.44241,3.44241,16,20,455.0,Dollar
-False,80,4.1,4.0545,4.0545,16,8,455.0,Dollar
-True,1436,3.55,3.94176,3.94176,16,15,455.0,Dollar
-True,64,4.35,4.29989,4.29989,16,11,455.0,Dollar
-True,42,3.8,3.82937,3.82937,16,74,455.0,Pound
-False,74,3.5,3.46414,3.46414,16,21,455.0,Euro
-False,296,3.9,3.85017,3.85017,16,10,455.0,Dollar
-True,2187,3.6,3.58682,3.58682,16,35,455.0,Euro
-True,49,4.4,4.36569,4.36569,16,43,455.0,Dollar
-True,762,4.0,3.95215,3.95215,16,18,455.0,Dollar
-False,967,4.2,4.31136,4.31136,16,29,455.0,Dollar
-True,613,4.0,3.83585,3.83585,16,37,455.0,Dollar
-True,144,4.1,4.12603,4.12603,16,294,455.0,Euro
-True,763,4.2,4.22878,4.22878,16,12,455.0,Pound
-False,1801,4.0,3.99497,3.99497,16,16,455.0,Pound
-False,290,3.9,3.79259,3.79259,16,17,455.0,Pound
-False,5218,4.9,4.84513,4.84513,16,22,455.0,Pound
-False,46,3.85,4.07361,4.07361,16,9,455.0,Dollar
-True,277,3.7,3.76358,3.76358,16,25,455.0,Pound
-True,1000,3.8,3.92498,3.92498,16,11,455.0,Pound
-False,172,4.6,4.56319,4.56319,16,6,455.0,Dollar
-False,66,4.05,4.03277,4.03277,16,11,455.0,Euro
-True,49,3.85,3.93973,3.93973,16,12,455.0,Pound
-False,44,4.55,4.28111,4.28111,16,64,455.0,Euro
-True,52,4.25,4.346,4.346,16,16,455.0,Pound
-True,50,4.5,4.38929,4.38929,16,25,455.0,Dollar
-True,181,4.15,4.06094,4.06094,16,0,455.0,Dollar
-False,66,4.4,4.3826,4.3826,15,9,455.0,Pound
-True,89,4.5,4.33581,4.33581,15,42,455.0,Euro
-False,2759,3.8,4.06578,4.06578,15,25,455.0,Euro
-False,242,3.55,3.49004,3.49004,15,31,455.0,Dollar
-True,3917,4.25,4.235,4.235,15,24,455.0,Dollar
-True,2023,3.95,3.93662,3.93662,15,9,455.0,Euro
-False,3745,3.75,3.92185,3.92185,15,21,455.0,Pound
-False,925,3.45,3.43566,3.43566,15,14,455.0,Pound
-True,90,4.0,4.06015,4.06015,15,56,455.0,Pound
-False,81,3.85,3.85841,3.85841,15,11,455.0,Pound
-True,369,4.35,4.33274,4.33274,15,13,455.0,Pound
-True,74,4.65,4.61828,4.61828,15,48,455.0,Euro
-False,91,4.2,4.57934,4.57934,15,20,455.0,Pound
-True,9922,3.35,3.47732,3.47732,15,25,455.0,Euro
-False,155,4.1,4.07876,4.07876,15,55,455.0,Euro
-False,41,4.2,4.12937,4.12937,15,8,455.0,Pound
-True,148,4.1,4.15685,4.15685,15,37,455.0,Dollar
-False,85,3.05,3.10945,3.10945,15,51,1520.0,Pound
-False,131,4.2,4.36217,4.36217,15,33,700.0,Dollar
-False,146,4.2,4.1809,4.1809,15,0,455.0,Dollar
-True,49,4.93333,4.93335,4.93335,15,28,455.0,Pound
-False,37,4.0,3.87987,3.87987,15,26,455.0,Pound
-False,113,4.3,4.23028,4.23028,15,53,455.0,Euro
-True,276,4.3,4.24695,4.24695,15,8,455.0,Pound
-False,7296,4.4,4.53387,4.53387,15,17,455.0,Euro
-False,30,4.65,4.6628,4.6628,15,10,455.0,Euro
-False,29,4.45455,4.2141,4.2141,15,27,455.0,Dollar
-True,129,4.3,4.34967,4.34967,15,55,455.0,Dollar
-True,1048,4.45,4.54792,4.54792,15,10,455.0,Pound
-False,2174,4.7,4.74642,4.74642,15,18,455.0,Dollar
-True,68,3.55,3.5925,3.5925,15,18,455.0,Dollar
-True,96,4.15,4.2018,4.2018,15,48,455.0,Pound
-True,2372,3.5,3.72961,3.72961,15,9,455.0,Dollar
-True,122,3.5,3.46998,3.46998,15,0,455.0,Pound
-True,40,4.35,4.30651,4.30651,15,8,455.0,Euro
-False,71,3.8,3.87578,3.87578,15,6,455.0,Dollar
-False,6072,4.05,4.40069,4.40069,15,30,455.0,Euro
-True,509,4.45,4.15735,4.15735,15,22,455.0,Dollar
-True,40,3.85,4.03984,4.03984,15,59,455.0,Dollar
-False,1218,4.3,4.37319,4.37319,15,31,455.0,Dollar
-True,226,3.0,3.18415,3.18415,15,20,455.0,Dollar
-True,485,4.55,4.48075,4.48075,15,9,455.0,Euro
-False,1068,4.35,4.40978,4.40978,15,29,455.0,Euro
-False,46,3.55,3.66266,3.66266,15,50,455.0,Pound
-False,5683,4.05,3.31787,3.31787,15,12,455.0,Dollar
-True,1029,4.35,4.03414,4.03414,15,32,455.0,Euro
-True,422,3.75,3.83399,3.83399,15,11,455.0,Euro
-True,83,4.65,4.64772,4.64772,15,22,455.0,Euro
-False,35,4.35,4.36436,4.36436,15,9,455.0,Euro
-True,403,3.35,3.64926,3.64926,15,19,455.0,Dollar
-True,778,3.6,3.56892,3.56892,15,9,455.0,Pound
-False,75,4.65,4.66723,4.66723,15,13,1120.0,Pound
-True,62,3.85,3.74563,3.74563,15,57,455.0,Euro
-True,1682,4.25,4.36741,4.36741,15,10,455.0,Euro
-True,70,4.35,4.43382,4.43382,15,11,455.0,Euro
-False,2329,4.5,4.77309,4.77309,15,14,455.0,Pound
-False,50,4.2,4.25115,4.25115,15,9,455.0,Dollar
-False,74,4.55,4.58945,4.58945,15,28,455.0,Pound
-True,48,4.0,3.95071,3.95071,15,13,455.0,Euro
-True,4311,4.06667,3.85993,3.85993,15,16,455.0,Dollar
-True,2388,4.1,4.08646,4.08646,15,55,455.0,Pound
-False,309,4.35,4.39133,4.39133,15,79,455.0,Dollar
-False,92,4.15,4.20445,4.20445,15,29,455.0,Euro
-False,614,3.8,3.96077,3.96077,15,16,455.0,Pound
-False,1310,4.1,4.19875,4.19875,15,9,455.0,Dollar
-False,1231,3.95,3.86915,3.86915,15,25,455.0,Euro
-False,210,3.55,3.65532,3.65532,15,60,455.0,Euro
-False,75,3.6,3.63584,3.63584,15,10,455.0,Dollar
-True,2578,4.15,4.27255,4.27255,15,27,455.0,Pound
-False,106,4.15,4.22091,4.22091,15,15,455.0,Euro
-True,152,4.5,4.63332,4.63332,15,10,455.0,Pound
-True,422,4.2,4.04895,4.04895,15,26,455.0,Dollar
-False,96,4.1,4.08596,4.08596,16,0,455.0,Dollar
-False,115,3.85,3.89235,3.89235,15,7,455.0,Pound
-True,3772,3.65,3.49599,3.49599,15,37,455.0,Pound
-False,131,4.25,4.39725,4.39725,15,11,455.0,Euro
-True,542,4.15,3.9156,3.9156,15,13,455.0,Dollar
-True,97,4.45,4.49054,4.49054,15,9,455.0,Pound
-False,35,4.15,4.1618,4.1618,15,10,455.0,Dollar
-False,30,4.6,4.56523,4.56523,15,40,455.0,Dollar
-True,223,4.6,4.68529,4.68529,15,14,455.0,Euro
-True,62,4.1,4.25847,4.25847,15,17,455.0,Euro
-False,63,3.9,3.8203,3.8203,15,58,455.0,Euro
-True,725,4.4,4.40129,4.40129,15,16,455.0,Dollar
-False,103,4.15,4.19107,4.19107,15,45,455.0,Euro
-False,1315,3.65,3.73548,3.73548,15,6,455.0,Dollar
-False,90,3.6,3.55844,3.55844,15,33,455.0,Dollar
-True,134,3.95,3.72842,3.72842,15,44,455.0,Dollar
-False,7667,4.6,4.61353,4.61353,15,16,455.0,Dollar
-True,132,4.6,4.46817,4.46817,15,49,455.0,Pound
-True,47,4.45,4.40941,4.40941,15,5,455.0,Pound
-True,1506,3.55,3.45198,3.45198,15,20,455.0,Euro
-True,1031,4.2,4.21349,4.21349,16,21,455.0,Pound
-True,83,2.85,3.01984,3.01984,15,157,455.0,Pound
-False,59,4.4,4.41195,4.41195,15,6,455.0,Dollar
-True,23,3.8,3.80404,3.80404,15,0,455.0,Dollar
-True,20,4.96667,4.94068,4.94068,15,10,1360.0,Dollar
-False,29,3.75,3.77427,3.77427,17,23,700.0,Euro
-False,1132,4.0,4.12806,4.12806,15,42,455.0,Euro
-False,1899,4.2,4.30199,4.30199,15,10,455.0,Pound
-False,1536,4.1,3.67328,3.67328,15,123,455.0,Pound
-False,116,4.63333,4.57235,4.57235,15,18,455.0,Dollar
-False,2334,3.5,3.61257,3.61257,15,9,455.0,Euro
-False,48,4.15,4.17941,4.17941,15,8,455.0,Dollar
-False,72,3.9,3.87975,3.87975,15,38,1920.0,Pound
-True,33,4.6,4.47771,4.47771,15,10,2960.0,Pound
-True,66,4.25,4.22134,4.22134,15,10,455.0,Pound
-True,51,4.5,4.41046,4.41046,15,187,455.0,Dollar
-True,1284,4.2,4.31909,4.31909,15,26,455.0,Dollar
-False,95,3.8,3.89312,3.89312,15,30,455.0,Dollar
-False,135,4.05,4.02573,4.02573,15,29,455.0,Pound
-False,5398,3.3,3.50348,3.50348,15,17,455.0,Euro
-False,2984,3.8,3.70362,3.70362,15,85,455.0,Dollar
-False,2365,3.95,4.03554,4.03554,15,43,455.0,Dollar
-False,1335,4.35,4.07332,4.07332,15,7,455.0,Pound
-False,54,3.8,3.84445,3.84445,15,8,455.0,Pound
-False,2102,4.6,4.5275,4.5275,15,15,455.0,Euro
-True,71,3.55,3.62406,3.62406,15,17,455.0,Pound
-True,36,3.35,3.25782,3.25782,15,6,455.0,Euro
-False,55,4.2,4.19923,4.19923,15,12,455.0,Euro
-True,55,3.55,3.51786,3.51786,15,7,455.0,Pound
-False,1003,4.2,4.37303,4.37303,15,20,455.0,Pound
-True,91,4.3,4.33842,4.33842,15,28,455.0,Euro
-False,5470,4.35,4.25333,4.25333,15,42,455.0,Euro
-False,345,4.0,4.00512,4.00512,15,0,455.0,Pound
-True,64,4.05,3.98663,3.98663,15,26,455.0,Dollar
-False,2111,4.0,4.02741,4.02741,15,26,455.0,Pound
-True,43,4.25,4.23991,4.23991,15,6,455.0,Pound
-True,139,3.6,3.74257,3.74257,15,17,455.0,Dollar
-True,1486,4.2,4.41773,4.41773,15,10,455.0,Euro
-False,74,4.1,4.1065,4.1065,15,12,455.0,Euro
-False,4668,4.1,4.27804,4.27804,15,16,455.0,Pound
-False,161,3.75,3.7367,3.7367,15,24,455.0,Pound
-False,170,4.0,3.98242,3.98242,15,23,455.0,Dollar
-False,1088,3.75,3.79607,3.79607,15,21,455.0,Dollar
-True,67,4.25,4.2286,4.2286,15,7,455.0,Pound
-False,108,4.65,4.68728,4.68728,15,15,455.0,Pound
-False,70,4.05,4.04808,4.04808,15,22,455.0,Pound
-True,697,4.0,4.01153,4.01153,15,78,455.0,Dollar
-False,1114,3.65,3.43659,3.43659,15,22,455.0,Pound
-True,1119,3.95,3.94147,3.94147,15,12,455.0,Dollar
-False,44,4.35,4.40368,4.40368,15,16,455.0,Dollar
-False,29,3.9,3.90045,3.90045,15,9,455.0,Pound
-True,63,4.35,4.43799,4.43799,15,55,455.0,Euro
-False,369,4.05,4.05008,4.05008,14,10,455.0,Dollar
-True,90,4.1,4.05689,4.05689,14,10,455.0,Euro
-True,87,4.35,4.31388,4.31388,14,22,455.0,Dollar
-True,132,4.1,4.04673,4.04673,14,9,455.0,Pound
-False,621,4.8,4.74109,4.74109,14,20,455.0,Pound
-True,43,4.35,4.3568,4.3568,14,19,455.0,Euro
-False,820,4.25,3.99057,3.99057,14,18,455.0,Euro
-True,252,4.55,4.52021,4.52021,14,46,455.0,Pound
-False,241,4.4,4.31639,4.31639,14,36,455.0,Pound
-True,4749,2.95,2.7973,2.7973,14,34,455.0,Euro
-False,2438,4.1,4.49918,4.49918,14,31,455.0,Dollar
-False,155,4.65,4.61424,4.61424,14,12,455.0,Pound
-False,112,4.1,4.00912,4.00912,14,44,455.0,Dollar
-True,538,4.25,4.13285,4.13285,14,32,455.0,Dollar
-False,66,4.45,4.43608,4.43608,14,22,455.0,Pound
-False,865,3.85,3.66108,3.66108,14,34,455.0,Euro
-True,43,4.6,4.52241,4.52241,14,10,455.0,Pound
-False,727,4.05,4.02184,4.02184,14,14,455.0,Dollar
-False,1753,4.5,4.68319,4.68319,14,12,455.0,Dollar
-False,51,3.8,3.88542,3.88542,14,8,455.0,Euro
-True,49,3.7,3.69035,3.69035,14,7,455.0,Pound
-False,1920,4.65,4.6123,4.6123,14,19,455.0,Pound
-False,1307,3.85,3.71522,3.71522,14,10,455.0,Euro
-True,4374,4.14286,4.20588,4.20588,14,8,455.0,Dollar
-True,75,3.85,3.79992,3.79992,14,16,507.0,Pound
-True,1782,4.2,4.09522,4.09522,14,27,455.0,Euro
-False,556,3.7,3.4107,3.4107,14,17,455.0,Dollar
-False,2752,4.2,4.08939,4.08939,14,18,455.0,Euro
-True,39,3.5,3.66946,3.66946,14,7,455.0,Dollar
-False,1943,4.1,4.09314,4.09314,14,10,455.0,Euro
-False,2467,3.45,3.73492,3.73492,14,45,455.0,Dollar
-True,3395,4.1,4.03712,4.03712,14,34,455.0,Euro
-False,829,3.45,3.27833,3.27833,14,15,455.0,Dollar
-True,1308,4.05,3.90689,3.90689,14,26,455.0,Dollar
-True,1555,4.15,4.06577,4.06577,14,114,455.0,Dollar
-False,1079,4.25,4.26812,4.26812,14,19,455.0,Euro
-True,56,4.0,4.1373,4.1373,14,5,455.0,Euro
-True,64,4.55,4.5892,4.5892,14,18,800.0,Euro
-True,2030,4.4,4.35593,4.35593,14,19,455.0,Dollar
-True,64,4.7,4.68573,4.68573,15,20,455.0,Euro
-True,114,3.9,3.75075,3.75075,14,19,455.0,Pound
-False,73,4.55,4.50503,4.50503,14,42,700.0,Dollar
-False,348,4.6,4.57317,4.57317,14,19,455.0,Euro
-False,78,4.85,4.84935,4.84935,14,36,455.0,Euro
-True,18,4.1,4.18984,4.18984,14,9,455.0,Pound
-True,139,4.75,4.88961,4.88961,14,58,455.0,Euro
-False,916,3.25,3.19151,3.19151,14,26,455.0,Euro
-False,1608,3.8,3.82992,3.82992,14,11,455.0,Pound
-True,892,4.7,4.66821,4.66821,14,23,455.0,Dollar
-True,2928,3.9,3.67029,3.67029,14,20,455.0,Euro
-False,824,4.5,4.69529,4.69529,14,17,455.0,Dollar
-True,814,3.9,3.3225,3.3225,14,14,455.0,Pound
-True,90,4.45,4.61233,4.61233,14,26,455.0,Pound
-True,155,4.35,4.24553,4.24553,14,30,455.0,Pound
-False,68,3.55,3.48968,3.48968,14,54,455.0,Pound
-False,59,4.15,4.0572,4.0572,14,7,455.0,Euro
-True,2041,4.65,4.70267,4.70267,14,25,560.0,Dollar
-True,60,3.875,3.91453,3.91453,14,7,455.0,Euro
-True,57,3.7,4.03218,4.03218,14,5,700.0,Euro
-True,467,4.0,3.95801,3.95801,14,47,455.0,Pound
-True,260,4.03571,4.09392,4.09392,14,9,455.0,Pound
-False,390,3.75,3.76435,3.76435,14,18,455.0,Pound
-True,93,3.3,3.42999,3.42999,14,0,455.0,Pound
-False,47,3.3,3.3796,3.3796,14,16,455.0,Pound
-True,1535,4.4,4.01014,4.01014,14,9,455.0,Pound
-False,2387,4.0,4.2793,4.2793,14,13,455.0,Euro
-False,34,3.15,3.1176,3.1176,14,9,455.0,Dollar
-True,1338,4.35,4.21654,4.21654,14,55,455.0,Euro
-True,1053,4.75,4.85645,4.85645,15,10,455.0,Pound
-False,25,4.89286,4.95169,4.95169,14,73,455.0,Euro
-True,349,4.35,4.10248,4.10248,14,11,455.0,Pound
-False,138,4.1,4.05106,4.05106,14,15,455.0,Dollar
-True,62,4.3,4.19227,4.19227,14,22,455.0,Pound
-True,80,4.2,4.23117,4.23117,14,20,455.0,Euro
-False,1533,3.6,3.79779,3.79779,14,15,455.0,Euro
-True,572,3.95,3.91815,3.91815,14,15,455.0,Dollar
-False,1066,3.45,3.36557,3.36557,14,8,455.0,Dollar
-True,60,4.3,4.27069,4.27069,14,8,455.0,Euro
-True,72,4.25,4.24152,4.24152,14,11,455.0,Pound
-False,1439,3.75,4.10028,4.10028,14,35,455.0,Euro
-False,128,4.2,4.22284,4.22284,14,22,455.0,Euro
-True,8715,3.89286,3.88109,3.88109,14,211,455.0,Dollar
-True,2047,3.9,3.86408,3.86408,14,23,455.0,Euro
-False,1168,3.35,3.05524,3.05524,14,22,455.0,Euro
-False,543,4.2,4.04161,4.04161,14,23,455.0,Pound
-True,553,4.0,3.92501,3.92501,14,28,455.0,Euro
-True,902,3.45,3.47905,3.47905,14,35,455.0,Euro
-True,8549,2.65,3.22581,3.22581,14,19,455.0,Pound
-False,28,3.9,3.85708,3.85708,14,13,455.0,Euro
-False,32,4.05,4.0528,4.0528,14,12,455.0,Dollar
-False,74,4.4,4.67358,4.67358,14,28,455.0,Pound
-False,43,4.05,4.24388,4.24388,14,52,455.0,Dollar
-True,4435,3.65,3.51524,3.51524,14,21,468.0,Euro
-False,116,3.7,3.73292,3.73292,14,32,455.0,Dollar
-False,106,4.85,4.80524,4.80524,14,52,455.0,Pound
-True,49,4.1,4.07835,4.07835,14,15,455.0,Dollar
-False,2188,3.6,3.75824,3.75824,14,54,455.0,Dollar
-False,1244,3.95,3.9038,3.9038,14,34,455.0,Pound
-False,220,4.25,4.39925,4.39925,14,27,455.0,Dollar
-True,46,3.8,3.78878,3.78878,14,47,455.0,Euro
-True,132,3.95,3.94032,3.94032,14,25,455.0,Pound
-True,3077,3.85,3.83796,3.83796,14,7,455.0,Dollar
-False,1911,4.35,4.26309,4.26309,14,20,455.0,Dollar
-True,80,3.85,3.86779,3.86779,14,25,455.0,Dollar
-True,46,4.25,4.12569,4.12569,14,38,455.0,Pound
-False,1097,4.55,4.59241,4.59241,14,10,455.0,Dollar
-False,1443,4.2,4.11403,4.11403,14,25,455.0,Dollar
-True,4392,4.3,4.12301,4.12301,14,25,455.0,Dollar
-True,70,4.25,4.28254,4.28254,14,21,800.0,Dollar
-True,44,3.5,3.39405,3.39405,14,41,455.0,Dollar
-False,1199,4.45,4.40223,4.40223,14,20,455.0,Pound
-False,26,3.45,3.49611,3.49611,14,20,455.0,Euro
-False,1236,4.45,4.28792,4.28792,14,9,455.0,Dollar
-False,52,3.95,3.72735,3.72735,14,69,455.0,Euro
-True,107,3.85,3.6947,3.6947,14,50,455.0,Dollar
-False,77,4.05,4.18413,4.18413,14,7,455.0,Dollar
-False,4332,2.35,2.36562,2.36562,14,54,455.0,Dollar
-False,1898,3.75,3.47469,3.47469,14,5,455.0,Pound
-False,885,3.95,3.85102,3.85102,15,25,455.0,Dollar
-True,6127,4.0,3.85366,3.85366,14,10,455.0,Euro
-True,86,4.42308,4.35893,4.35893,14,39,455.0,Pound
-False,62,3.95,3.63225,3.63225,14,10,455.0,Dollar
-False,51,3.75,3.83758,3.83758,14,10,455.0,Dollar
-True,1040,3.5,3.44862,3.44862,14,19,455.0,Pound
-False,1208,4.15,4.47922,4.47922,14,31,455.0,Pound
-True,3141,3.75,3.09765,3.09765,14,42,455.0,Pound
-True,586,4.45,4.48824,4.48824,14,23,455.0,Pound
-False,910,4.15,3.82279,3.82279,14,31,455.0,Dollar
-False,756,2.9,2.79821,2.79821,14,28,455.0,Euro
-True,96,4.1,4.05963,4.05963,14,45,455.0,Euro
-False,50,4.4,4.40145,4.40145,14,68,455.0,Pound
-False,561,4.2,4.10488,4.10488,14,11,455.0,Dollar
-True,1987,4.25,4.1816,4.1816,14,16,455.0,Euro
-True,157,3.75,3.62366,3.62366,14,67,455.0,Dollar
-True,66,4.0,4.1557,4.1557,14,14,455.0,Pound
-True,1218,3.45,3.39269,3.39269,14,25,455.0,Euro
-True,143,4.6,4.53135,4.53135,14,8,455.0,Dollar
-False,1960,3.75,3.81488,3.81488,14,20,455.0,Pound
-False,95,4.2,4.19664,4.19664,14,54,455.0,Pound
-True,363,3.65,3.66633,3.66633,14,15,455.0,Euro
-True,65,4.0,4.02295,4.02295,14,18,455.0,Pound
-False,151,3.8,3.70807,3.70807,14,0,455.0,Dollar
-True,3710,3.0,2.92729,2.92729,14,24,455.0,Euro
-False,48,4.4,4.35465,4.35465,14,30,455.0,Pound
-False,3780,3.2,3.68273,3.68273,14,27,455.0,Pound
-True,2353,4.05,4.07053,4.07053,14,23,455.0,Pound
-False,602,4.0,3.96926,3.96926,14,20,455.0,Dollar
-True,1779,4.55,4.42445,4.42445,14,29,455.0,Dollar
-False,146,3.9,3.96486,3.96486,14,11,455.0,Dollar
-True,1189,4.2,4.16573,4.16573,14,25,455.0,Dollar
-True,126,3.7,3.70988,3.70988,14,15,455.0,Dollar
-False,38,3.35,3.51448,3.51448,14,17,455.0,Dollar
-False,1603,3.8,3.76176,3.76176,14,61,455.0,Euro
-False,83,3.45,3.29798,3.29798,14,23,455.0,Dollar
-True,337,3.9,3.77228,3.77228,14,30,455.0,Dollar
-False,1038,4.6,4.26708,4.26708,14,15,455.0,Euro
-False,276,2.05,2.13571,2.13571,14,6,455.0,Dollar
-False,59,4.45,4.50157,4.50157,14,15,455.0,Dollar
-False,82,3.95,3.89716,3.89716,14,124,468.0,Pound
-False,78,4.5,4.4746,4.4746,14,155,455.0,Dollar
-True,104,3.9,3.92653,3.92653,14,20,455.0,Euro
-True,2634,3.75,4.15918,4.15918,14,15,455.0,Pound
-False,1987,3.55,3.51401,3.51401,14,14,455.0,Pound
-False,2496,4.0,3.95459,3.95459,14,18,455.0,Pound
-True,1117,4.1,4.05595,4.05595,14,7,455.0,Euro
-False,1337,4.3,4.69792,4.69792,14,36,455.0,Dollar
-True,1686,3.96429,3.75292,3.75292,14,40,455.0,Euro
-False,44,3.95,3.76103,3.76103,14,44,455.0,Euro
-True,96,4.17857,4.12593,4.12593,15,0,455.0,Dollar
-True,629,4.15,4.25698,4.25698,13,42,455.0,Pound
-True,2091,2.7,2.5325,2.5325,13,8,455.0,Dollar
-True,49,4.4,4.38475,4.38475,13,14,455.0,Dollar
-True,65,4.5,4.39174,4.39174,13,10,455.0,Euro
-True,49,4.9,4.89384,4.89384,13,14,455.0,Dollar
-False,76,3.55,3.52936,3.52936,13,51,455.0,Pound
-False,92,3.9,3.56233,3.56233,13,21,455.0,Pound
-True,49,3.95,3.95432,3.95432,13,10,455.0,Euro
-False,76,3.7,3.55012,3.55012,13,9,455.0,Euro
-False,1062,4.2,4.05164,4.05164,13,14,455.0,Pound
-True,204,3.6,3.57755,3.57755,13,22,455.0,Pound
-False,1741,3.75,3.86572,3.86572,13,34,455.0,Pound
-False,1152,3.1,3.63278,3.63278,13,119,455.0,Euro
-False,94,4.42308,4.50624,4.50624,13,63,455.0,Euro
-False,1599,4.1,4.02181,4.02181,13,16,455.0,Dollar
-False,82,4.25,4.24206,4.24206,13,8,455.0,Pound
-False,1560,4.4,4.40638,4.40638,13,19,455.0,Dollar
-True,50,4.85,4.86665,4.86665,13,6,960.0,Dollar
-True,35,4.2,4.27659,4.27659,13,10,455.0,Dollar
-True,1568,4.2,4.19827,4.19827,13,9,455.0,Pound
-False,90,4.05,3.99567,3.99567,13,11,455.0,Dollar
-False,3358,4.1,4.14042,4.14042,13,30,455.0,Euro
-False,88,4.5,4.39438,4.39438,13,19,455.0,Pound
-False,96,4.9,4.8891,4.8891,13,24,455.0,Dollar
-False,216,4.2,4.16931,4.16931,13,52,455.0,Pound
-True,958,4.25,4.20948,4.20948,13,26,455.0,Pound
-True,1024,3.5,3.51123,3.51123,13,16,455.0,Euro
-False,1224,4.0,3.95597,3.95597,13,31,455.0,Euro
-True,1738,3.8,3.83432,3.83432,13,7,455.0,Euro
-True,49,4.3,4.36885,4.36885,13,13,455.0,Dollar
-True,7034,3.95,3.82027,3.82027,13,31,455.0,Pound
-True,57,3.6,3.40864,3.40864,13,6,455.0,Pound
-True,1443,4.05,3.53047,3.53047,13,16,455.0,Euro
-True,1004,4.2,3.97626,3.97626,13,16,455.0,Dollar
-False,420,4.85,4.91233,4.91233,13,19,455.0,Dollar
-False,44,4.35,4.41202,4.41202,13,10,455.0,Pound
-False,116,4.45,4.32239,4.32239,13,104,455.0,Euro
-True,2978,5.0,5.0,5.0,24,11,455.0,Euro
-True,490,4.26923,4.47506,4.47506,13,14,455.0,Pound
-True,76,3.65,3.80403,3.80403,13,7,455.0,Euro
-True,1059,4.2,4.16477,4.16477,13,12,455.0,Dollar
-True,63,3.85,3.85985,3.85985,13,9,455.0,Dollar
-True,2787,3.55,3.46013,3.46013,13,13,455.0,Euro
-True,135,4.5,4.48127,4.48127,13,20,455.0,Euro
-False,1211,3.55,3.58551,3.58551,13,0,455.0,Pound
-True,39,4.7,4.68885,4.68885,13,26,455.0,Euro
-True,22,3.9,3.9079,3.9079,13,9,455.0,Euro
-True,574,3.75,3.81565,3.81565,13,21,455.0,Dollar
-False,84,4.65385,4.71505,4.71505,13,50,455.0,Pound
-True,55,3.95,3.81172,3.81172,13,11,455.0,Pound
-True,1154,4.15,4.00956,4.00956,13,24,455.0,Dollar
-False,442,4.3,4.44678,4.44678,13,10,455.0,Pound
-False,36,4.15,4.01005,4.01005,13,19,455.0,Dollar
-True,716,4.15,4.20703,4.20703,13,27,455.0,Euro
-False,247,3.95,3.91829,3.91829,13,10,455.0,Pound
-True,1242,3.45,3.43545,3.43545,13,9,455.0,Dollar
-True,35,3.7,4.00886,4.00886,13,0,455.0,Pound
-True,37,4.46154,4.28778,4.28778,13,62,455.0,Pound
-False,3172,4.2,4.44072,4.44072,13,10,455.0,Euro
-False,3101,4.05,4.20407,4.20407,13,8,455.0,Euro
-True,1523,3.75,4.05836,4.05836,13,16,455.0,Euro
-False,1306,4.0,4.18043,4.18043,13,21,455.0,Dollar
-True,43,3.95,3.92349,3.92349,13,10,455.0,Pound
-True,1945,4.4,4.11904,4.11904,13,31,455.0,Pound
-True,1084,4.15,4.14659,4.14659,13,16,455.0,Dollar
-True,501,4.25,4.37631,4.37631,13,13,455.0,Pound
-False,6079,3.2,3.14359,3.14359,13,56,455.0,Euro
-True,24,3.8,3.84316,3.84316,13,7,455.0,Euro
-True,265,3.35,3.23173,3.23173,13,52,455.0,Dollar
-False,30,4.25,4.43854,4.43854,13,31,455.0,Euro
-True,1135,3.4,3.27869,3.27869,13,15,455.0,Pound
-True,87,3.75,3.79803,3.79803,13,13,455.0,Euro
-True,72,4.4,4.40476,4.40476,13,30,455.0,Dollar
-False,111,4.3,4.22686,4.22686,13,9,455.0,Pound
-True,4557,4.75,4.58358,4.58358,13,43,455.0,Dollar
-True,33,4.0,3.92956,3.92956,13,23,455.0,Dollar
-True,49,4.0,3.94235,3.94235,13,9,455.0,Euro
-False,223,4.45,4.3684,4.3684,13,38,455.0,Dollar
-False,57,3.3,3.41776,3.41776,13,28,455.0,Euro
-False,38,3.65,3.72103,3.72103,13,14,455.0,Euro
-True,58,3.6,3.57129,3.57129,13,0,455.0,Euro
-True,102,4.75,4.76802,4.76802,13,40,455.0,Pound
-False,223,3.7,3.60191,3.60191,13,0,455.0,Dollar
-True,51,3.95,3.72085,3.72085,13,39,455.0,Pound
-True,84,4.3,4.18434,4.18434,13,23,455.0,Euro
-True,1049,4.5,4.51257,4.51257,13,9,455.0,Euro
-True,163,4.61538,4.17242,4.17242,13,44,455.0,Dollar
-True,54,4.65,4.68512,4.68512,13,6,455.0,Dollar
-False,138,4.65,4.61396,4.61396,13,22,455.0,Dollar
-False,504,3.85,3.81905,3.81905,13,17,455.0,Pound
-True,1258,3.95,4.26924,4.26924,13,13,455.0,Dollar
-True,124,4.75,4.7272,4.7272,13,8,455.0,Euro
-True,1175,4.8,4.79676,4.79676,13,26,455.0,Pound
-False,1237,3.65,4.4032,4.4032,13,9,455.0,Pound
-True,1614,3.95,4.23444,4.23444,13,7,455.0,Dollar
-True,966,4.9,4.8805,4.8805,13,28,455.0,Euro
-True,69,3.85,3.63298,3.63298,13,31,455.0,Dollar
-False,111,3.15,3.17697,3.17697,13,9,455.0,Dollar
-True,1300,3.1,2.64121,2.64121,13,13,455.0,Dollar
-True,64,4.6,4.60036,4.60036,13,10,455.0,Pound
-True,6072,4.0,4.06575,4.06575,13,60,455.0,Pound
-True,42,4.2,4.20767,4.20767,13,21,455.0,Pound
-True,4013,3.75,4.11477,4.11477,13,51,455.0,Euro
-True,31,4.3,4.40014,4.40014,13,28,455.0,Dollar
-False,4181,3.91667,3.81305,3.81305,13,83,455.0,Dollar
-True,2097,4.45,4.45308,4.45308,13,27,455.0,Dollar
-False,768,3.9,3.87283,3.87283,14,165,455.0,Dollar
-False,90,4.2,4.33413,4.33413,13,38,455.0,Euro
-True,53,3.9,4.03051,4.03051,13,0,455.0,Pound
-False,34,3.45,3.63169,3.63169,13,40,455.0,Dollar
-True,33,4.05,4.16554,4.16554,13,8,455.0,Euro
-False,634,4.3,4.24762,4.24762,13,28,455.0,Pound
-False,1697,4.55,4.4782,4.4782,13,20,455.0,Dollar
-True,143,4.75,4.80176,4.80176,13,36,455.0,Euro
-True,1044,3.95,3.87206,3.87206,13,10,455.0,Euro
-False,2019,4.95,4.9064,4.9064,13,15,455.0,Pound
-False,49,4.2,4.10792,4.10792,13,14,455.0,Euro
-True,1259,4.6,4.49399,4.49399,13,23,455.0,Dollar
-False,179,3.85,3.77029,3.77029,13,28,455.0,Pound
-False,592,3.1,3.36913,3.36913,13,17,455.0,Dollar
-True,41,3.25,3.13383,3.13383,13,5,455.0,Pound
-False,112,4.15,4.16457,4.16457,13,5,455.0,Pound
-True,242,4.35,4.43932,4.43932,13,68,455.0,Euro
-True,51,3.35,3.31979,3.31979,13,39,455.0,Euro
-False,3595,4.0,3.78232,3.78232,13,52,455.0,Dollar
-True,7564,3.85,3.86233,3.86233,13,55,455.0,Euro
-False,54,4.30769,4.41061,4.41061,14,24,720.0,Pound
-True,580,4.69231,4.74312,4.74312,13,28,455.0,Pound
-True,47,4.80769,4.8323,4.8323,13,17,455.0,Dollar
-True,152,4.65,4.52816,4.52816,13,34,455.0,Pound
-True,79,4.65385,4.69209,4.69209,13,28,455.0,Euro
-True,103,4.55,4.61382,4.61382,13,13,700.0,Pound
-False,42,3.5,3.41878,3.41878,13,23,455.0,Pound
-True,2387,2.8,2.56224,2.56224,13,115,455.0,Pound
-False,460,4.7,4.65226,4.65226,13,43,455.0,Dollar
-True,543,3.45,3.39711,3.39711,13,15,455.0,Euro
-False,1801,3.75,3.98438,3.98438,13,70,455.0,Dollar
-True,85,3.8,3.93748,3.93748,13,18,455.0,Pound
-False,93,4.4,4.42311,4.42311,13,11,455.0,Dollar
-False,149,4.35,4.36304,4.36304,13,7,455.0,Pound
-False,78,3.7,3.68364,3.68364,13,36,455.0,Pound
-True,77,4.15,4.13274,4.13274,13,35,455.0,Euro
-True,65,3.7,3.70105,3.70105,13,181,455.0,Dollar
-False,38,4.8,4.77888,4.77888,13,28,455.0,Pound
-False,70,3.85,3.84247,3.84247,13,21,455.0,Pound
-False,1091,4.4,4.30416,4.30416,13,8,455.0,Pound
-False,1468,3.75,3.38099,3.38099,13,15,455.0,Dollar
-True,93,4.15,4.20693,4.20693,13,23,455.0,Pound
-True,2805,4.55,4.47125,4.47125,13,7,455.0,Pound
-True,12737,3.75,3.71438,3.71438,13,6,455.0,Dollar
-False,680,4.0,4.18531,4.18531,13,16,455.0,Euro
-True,8039,4.5,4.62781,4.62781,13,114,455.0,Dollar
-False,2921,4.5,4.45001,4.45001,13,40,455.0,Pound
-True,56,4.5,4.32082,4.32082,13,7,455.0,Pound
-False,626,3.95,3.87101,3.87101,12,34,455.0,Dollar
-False,34,3.85,3.96716,3.96716,12,5,455.0,Pound
-True,1277,4.65,4.61261,4.61261,12,22,455.0,Euro
-False,61,3.9,3.84434,3.84434,12,11,455.0,Pound
-True,206,4.05,3.96145,3.96145,12,74,455.0,Euro
-False,50,4.3,4.23286,4.23286,12,10,455.0,Pound
-True,996,3.95,3.79001,3.79001,12,18,455.0,Euro
-True,97,4.25,4.19875,4.19875,12,59,455.0,Dollar
-False,588,3.75,3.57653,3.57653,12,148,455.0,Dollar
-True,50,4.75,4.70167,4.70167,12,15,455.0,Pound
-False,541,4.4,4.41176,4.41176,12,21,455.0,Pound
-False,217,3.95,4.01246,4.01246,12,12,455.0,Dollar
-False,30,3.85,3.89383,3.89383,12,56,455.0,Euro
-True,40,4.6,4.61383,4.61383,12,10,455.0,Dollar
-False,1766,4.1,4.22702,4.22702,12,8,455.0,Dollar
-False,62,4.4,4.35566,4.35566,12,26,455.0,Dollar
-False,299,4.8,4.80297,4.80297,12,8,455.0,Dollar
-False,2340,3.85,3.76009,3.76009,12,6,455.0,Euro
-True,62,4.25,4.08173,4.08173,12,16,455.0,Dollar
-True,35,4.5,4.42379,4.42379,12,6,455.0,Euro
-False,647,2.95,2.74372,2.74372,12,0,455.0,Dollar
-True,2077,3.0,2.94999,2.94999,12,20,455.0,Dollar
-False,42,4.6,4.56306,4.56306,12,25,455.0,Euro
-True,29,4.25,4.39902,4.39902,12,10,700.0,Pound
-True,66,4.2,4.25311,4.25311,12,0,455.0,Dollar
-True,41,3.9,3.87074,3.87074,12,12,455.0,Euro
-False,41,3.0,2.894,2.894,12,7,455.0,Euro
-True,38,4.15,3.93506,3.93506,12,23,2400.0,Euro
-True,1370,3.9,4.33037,4.33037,12,5,455.0,Dollar
-False,1143,4.25,4.21775,4.21775,13,173,455.0,Euro
-True,79,3.9,3.82771,3.82771,12,22,455.0,Pound
-True,2107,4.1,4.16078,4.16078,12,30,455.0,Pound
-True,54,4.25,4.14715,4.14715,12,48,455.0,Pound
-False,86,4.7,4.70163,4.70163,12,29,455.0,Pound
-False,98,4.0,3.95196,3.95196,12,79,455.0,Dollar
-True,1740,3.55,3.71824,3.71824,12,26,700.0,Pound
-False,97,4.1,4.23722,4.23722,12,9,455.0,Pound
-True,361,4.35,4.33302,4.33302,12,25,455.0,Dollar
-False,2033,3.35,3.02456,3.02456,12,19,455.0,Dollar
-False,102,4.15,4.07451,4.07451,12,24,455.0,Euro
-True,1107,4.55,4.51708,4.51708,12,149,455.0,Euro
-True,2549,3.8,4.24211,4.24211,12,26,455.0,Pound
-True,80,3.65,3.67135,3.67135,12,7,455.0,Pound
-True,588,3.4,3.23843,3.23843,12,22,455.0,Dollar
-False,75,3.55,3.48552,3.48552,12,48,455.0,Pound
-False,2075,3.55,3.64146,3.64146,12,31,455.0,Dollar
-False,513,4.1,3.95064,3.95064,12,19,455.0,Pound
-True,647,3.65,3.29311,3.29311,12,6,455.0,Pound
-True,58,4.2,4.19869,4.19869,12,7,455.0,Euro
-False,73,4.55,4.64616,4.64616,12,36,455.0,Pound
-False,165,3.4,3.45628,3.45628,12,19,455.0,Euro
-False,31,4.0,3.87522,3.87522,12,13,455.0,Euro
-False,3144,3.95,4.19427,4.19427,12,67,455.0,Dollar
-True,55,4.9,4.82619,4.82619,12,0,3200.0,Dollar
-False,31,4.05,4.01137,4.01137,12,17,455.0,Pound
-True,660,3.65,3.55994,3.55994,12,27,455.0,Euro
-True,233,4.55,4.53595,4.53595,12,21,455.0,Dollar
-True,1002,4.65,4.60051,4.60051,12,53,455.0,Euro
-True,65,4.05,4.10673,4.10673,12,20,455.0,Dollar
-True,4539,3.5,3.75386,3.75386,12,25,455.0,Euro
-False,6113,4.6,4.57101,4.57101,12,26,455.0,Euro
-False,1289,4.5,4.79101,4.79101,12,10,455.0,Euro
-False,27,4.8,4.75983,4.75983,12,32,640.0,Euro
-True,65,4.25,4.33542,4.33542,12,32,455.0,Euro
-True,176,3.4,3.32266,3.32266,12,7,455.0,Dollar
-False,227,4.2,4.29008,4.29008,12,16,455.0,Dollar
-True,1029,3.65,3.82952,3.82952,12,12,455.0,Dollar
-False,127,3.85,3.8096,3.8096,12,35,455.0,Euro
-False,750,4.45,4.09778,4.09778,12,38,455.0,Pound
-True,30,3.85,3.8796,3.8796,12,9,455.0,Pound
-False,530,4.35,4.29389,4.29389,12,18,455.0,Euro
-False,75,3.75,3.74535,3.74535,12,20,455.0,Pound
-True,293,4.5,4.3725,4.3725,12,23,455.0,Euro
-True,1283,4.3,4.16406,4.16406,12,16,455.0,Pound
-True,58,4.6,4.62055,4.62055,12,34,455.0,Euro
-False,1486,4.45,4.51889,4.51889,12,28,455.0,Dollar
-False,80,3.7,3.14466,3.14466,12,53,480.0,Euro
-True,28,4.4,4.3575,4.3575,12,23,455.0,Dollar
-True,44,4.25,4.10302,4.10302,12,0,455.0,Dollar
-False,66,4.04167,4.04286,4.04286,12,0,455.0,Dollar
-False,3986,2.95833,2.5671,2.5671,12,17,455.0,Euro
-True,3043,4.35,4.42692,4.42692,12,45,455.0,Pound
-True,1304,3.4,3.20707,3.20707,12,12,455.0,Dollar
-False,79,4.2,4.17743,4.17743,12,14,455.0,Pound
-True,72,3.6,3.50377,3.50377,12,24,455.0,Dollar
-False,122,3.85,3.79906,3.79906,12,9,455.0,Euro
-True,165,3.85,3.67451,3.67451,12,28,455.0,Dollar
-False,1536,4.2,4.39744,4.39744,12,55,455.0,Pound
-True,49,3.35,3.3947,3.3947,12,16,455.0,Pound
-False,34,4.2,4.169,4.169,12,30,455.0,Euro
-False,2029,4.15,4.00975,4.00975,12,14,455.0,Dollar
-False,40,3.95,3.96958,3.96958,12,11,455.0,Dollar
-False,1049,3.95,4.076,4.076,12,15,455.0,Euro
-True,9464,4.3,4.15295,4.15295,12,24,455.0,Euro
-False,59,3.35,3.24225,3.24225,12,0,455.0,Dollar
-False,118,4.2,4.13924,4.13924,12,0,520.0,Dollar
-False,371,4.15,4.14773,4.14773,12,16,455.0,Euro
-False,112,4.7,4.62917,4.62917,12,73,455.0,Dollar
-False,488,4.35,4.27294,4.27294,12,25,455.0,Euro
-False,93,4.1,3.97453,3.97453,12,16,455.0,Euro
-True,31,4.5,4.31666,4.31666,12,25,455.0,Pound
-True,81,3.9,3.89827,3.89827,12,11,455.0,Dollar
-True,916,4.4,4.32721,4.32721,12,35,455.0,Dollar
-False,736,4.0,3.9011,3.9011,12,24,455.0,Pound
-False,2710,4.25,4.45555,4.45555,12,12,455.0,Euro
-False,50,4.05,4.0594,4.0594,12,15,455.0,Pound
-True,970,4.6,4.3852,4.3852,12,24,455.0,Pound
-True,37,4.1,4.09324,4.09324,12,24,455.0,Pound
-True,44,4.4,4.39751,4.39751,12,8,455.0,Euro
-True,1516,3.75,3.69124,3.69124,12,17,455.0,Dollar
-False,286,4.4,4.32129,4.32129,12,19,455.0,Dollar
-False,47,3.25,3.29249,3.29249,12,16,455.0,Pound
-True,39,4.1,4.11916,4.11916,12,27,455.0,Pound
-False,72,4.25,4.21651,4.21651,12,13,455.0,Dollar
-True,767,4.5,4.21031,4.21031,12,13,455.0,Euro
-False,85,3.6,3.59414,3.59414,12,19,455.0,Euro
-True,33,4.45,4.46405,4.46405,12,35,455.0,Euro
-True,38,3.5,3.45678,3.45678,12,24,455.0,Dollar
-False,63,3.6,3.6913,3.6913,12,24,455.0,Euro
-False,54,3.2,3.19688,3.19688,12,33,455.0,Dollar
-True,550,4.3,3.53003,3.53003,12,19,455.0,Pound
-True,114,4.1,4.1834,4.1834,12,0,455.0,Pound
-True,2767,3.75,3.57041,3.57041,12,17,455.0,Pound
-True,2092,4.4,4.6797,4.6797,12,48,455.0,Pound
-False,2383,3.7,3.44693,3.44693,12,10,455.0,Pound
-False,3848,3.41667,3.56776,3.56776,12,9,455.0,Dollar
-True,29,4.15,3.7931,3.7931,12,15,455.0,Pound
-True,44,4.75,4.77271,4.77271,12,9,455.0,Pound
-True,56,4.1,4.07729,4.07729,12,12,455.0,Dollar
-False,2447,3.9,3.88184,3.88184,12,21,455.0,Euro
-True,46,3.75,3.78074,3.78074,12,21,455.0,Pound
-False,65,4.77273,4.7977,4.7977,12,77,3200.0,Euro
-True,740,3.4,3.59748,3.59748,12,180,455.0,Pound
-True,56,3.7,3.84998,3.84998,12,53,455.0,Dollar
-False,3651,4.1,3.60603,3.60603,12,24,455.0,Euro
-False,88,4.5,4.6282,4.6282,12,21,455.0,Pound
-True,590,3.85,3.67142,3.67142,12,31,455.0,Pound
-False,836,3.05,2.99068,2.99068,12,5,455.0,Euro
-True,739,4.25,4.08074,4.08074,12,21,455.0,Dollar
-False,2218,3.65,3.52654,3.52654,12,22,455.0,Dollar
-False,648,4.45,4.35609,4.35609,12,26,455.0,Pound
-True,4619,4.1,4.05246,4.05246,12,12,455.0,Dollar
-True,1088,4.0,3.91853,3.91853,12,19,455.0,Euro
-False,4021,3.35,3.55193,3.55193,12,21,455.0,Pound
-False,61,4.0,4.00118,4.00118,12,42,455.0,Euro
-False,105,3.2,3.03757,3.03757,12,27,455.0,Pound
-False,49,4.4,4.35025,4.35025,12,10,455.0,Euro
-True,64,4.75,4.74198,4.74198,12,9,1680.0,Euro
-False,62,4.35,4.19712,4.19712,12,10,455.0,Euro
-False,993,3.95,4.19726,4.19726,12,6,455.0,Pound
-False,33,3.7,3.92942,3.92942,12,31,455.0,Euro
-False,904,3.9,3.8234,3.8234,12,21,455.0,Euro
-False,1266,3.95,4.24415,4.24415,12,16,455.0,Pound
-False,2072,4.05,3.89606,3.89606,12,8,455.0,Euro
-False,616,3.7,4.10183,4.10183,12,63,455.0,Pound
-True,63,4.4,4.44557,4.44557,12,24,455.0,Euro
-False,638,4.3,4.18456,4.18456,12,28,455.0,Dollar
-True,58,3.5,3.42971,3.42971,12,6,455.0,Pound
-True,35,3.91667,3.92982,3.92982,12,7,455.0,Pound
-True,59,4.75,4.75726,4.75726,12,14,455.0,Dollar
-False,898,4.3,4.08207,4.08207,12,18,455.0,Dollar
-False,1316,2.75,2.21485,2.21485,12,29,455.0,Euro
-False,112,4.25,4.1582,4.1582,12,50,455.0,Euro
-False,1092,3.3,3.10256,3.10256,12,30,455.0,Pound
-True,544,4.1,4.14656,4.14656,12,19,455.0,Pound
-False,63,2.85,2.77801,2.77801,12,0,455.0,Pound
-False,96,4.4,4.37135,4.37135,12,14,455.0,Dollar
-True,160,3.65,3.51111,3.51111,12,8,455.0,Euro
-False,9183,3.2,3.22473,3.22473,12,39,455.0,Euro
-False,214,4.4,4.30664,4.30664,12,109,455.0,Dollar
-False,335,2.75,2.87703,2.87703,12,21,455.0,Pound
-False,687,3.8,4.02892,4.02892,12,17,455.0,Dollar
-False,44,3.95,3.9079,3.9079,12,7,455.0,Dollar
-True,1144,3.75,3.73756,3.73756,12,19,455.0,Dollar
-False,2140,3.8,3.64477,3.64477,12,16,455.0,Pound
-True,60,4.35,4.52405,4.52405,12,9,455.0,Pound
-False,60,4.15,4.17525,4.17525,12,30,455.0,Euro
-True,37,4.35,4.27388,4.27388,12,28,455.0,Dollar
-False,1610,4.35,4.59958,4.59958,12,8,455.0,Euro
-False,1138,4.15,4.01325,4.01325,12,15,455.0,Pound
-False,76,4.45,4.37216,4.37216,12,240,455.0,Dollar
-True,1048,3.4,3.17117,3.17117,12,22,455.0,Pound
-False,133,3.8,4.02096,4.02096,12,26,455.0,Pound
-False,1095,4.7,4.63776,4.63776,12,55,455.0,Dollar
-False,71,4.2,4.42279,4.42279,12,16,455.0,Euro
-False,92,4.4,4.40897,4.40897,12,23,455.0,Pound
-False,55,4.2,4.14125,4.14125,12,17,455.0,Pound
-False,84,4.25,4.30401,4.30401,12,12,455.0,Pound
-True,40,4.25,4.25378,4.25378,12,29,455.0,Dollar
-True,92,4.7,4.68822,4.68822,12,57,455.0,Dollar
-False,2190,4.45,4.64267,4.64267,12,9,455.0,Pound
-False,52,3.6,3.67824,3.67824,12,88,455.0,Dollar
-False,2296,3.85,4.07447,4.07447,12,28,455.0,Pound
-False,1188,4.25,4.14233,4.14233,11,36,455.0,Euro
-False,74,3.75,3.82416,3.82416,11,23,455.0,Dollar
-True,1286,3.75,3.51436,3.51436,11,21,455.0,Euro
-False,620,4.15,4.24147,4.24147,11,40,455.0,Dollar
-True,29,3.7,3.73923,3.73923,11,10,455.0,Euro
-True,151,4.15,4.07694,4.07694,11,12,455.0,Euro
-True,323,4.7,4.80841,4.80841,11,54,455.0,Dollar
-False,32,4.45,4.34853,4.34853,11,11,455.0,Pound
-False,24,4.2,4.20086,4.20086,11,11,455.0,Pound
-True,1671,4.45,4.3806,4.3806,11,33,455.0,Pound
-True,1417,4.1,3.99671,3.99671,11,6,455.0,Dollar
-True,220,3.45,3.55505,3.55505,11,17,455.0,Pound
-False,3409,3.95,4.12651,4.12651,11,17,455.0,Euro
-False,5077,3.7,4.16015,4.16015,11,12,455.0,Pound
-False,83,4.1,3.91882,3.91882,11,23,455.0,Dollar
-False,715,4.15,4.36677,4.36677,11,9,455.0,Euro
-True,743,4.7,4.75184,4.75184,11,52,455.0,Pound
-True,43,4.5,4.41083,4.41083,11,52,455.0,Dollar
-True,86,3.65,3.75795,3.75795,11,24,455.0,Dollar
-False,39,4.15,4.14546,4.14546,11,14,455.0,Dollar
-True,48,3.75,3.73117,3.73117,11,8,455.0,Dollar
-False,1208,4.0,4.28623,4.28623,11,0,455.0,Dollar
-False,90,4.40909,4.41312,4.41312,11,133,455.0,Euro
-True,604,4.45,4.36425,4.36425,11,17,455.0,Pound
-True,641,3.65,3.71438,3.71438,11,22,455.0,Euro
-False,72,4.35,4.31621,4.31621,11,5,455.0,Euro
-False,410,4.0,4.42447,4.42447,12,13,455.0,Euro
-False,237,4.15,4.19113,4.19113,11,30,455.0,Euro
-False,614,4.55,4.6378,4.6378,11,9,455.0,Euro
-True,330,4.45,4.38906,4.38906,11,40,455.0,Euro
-True,1043,2.9,2.90401,2.90401,11,26,455.0,Euro
-True,1039,2.2,2.35863,2.35863,11,11,455.0,Euro
-False,1783,4.4,4.51446,4.51446,11,19,455.0,Euro
-False,68,4.05,4.1694,4.1694,11,9,455.0,Dollar
-True,80,4.5,4.17276,4.17276,11,34,455.0,Pound
-True,54,4.35,4.38169,4.38169,11,35,455.0,Dollar
-False,578,4.2,4.20354,4.20354,11,15,455.0,Dollar
-True,59,4.6,4.58763,4.58763,13,10,455.0,Pound
-False,52,3.6,3.58039,3.58039,11,7,455.0,Dollar
-True,35,4.5,4.31235,4.31235,11,12,455.0,Dollar
-True,547,3.7,3.80816,3.80816,11,19,455.0,Pound
-True,54,2.75,2.80897,2.80897,11,0,455.0,Pound
-False,190,4.75,4.72834,4.72834,11,43,455.0,Euro
-True,2140,4.25,4.1649,4.1649,11,5,455.0,Dollar
-True,89,3.7,3.70797,3.70797,11,12,455.0,Pound
-False,2176,4.65,4.71177,4.71177,11,50,455.0,Euro
-False,43,4.0,3.72052,3.72052,11,35,455.0,Pound
-False,50,4.55,4.56074,4.56074,11,5,455.0,Dollar
-False,1088,4.5,4.47393,4.47393,11,15,455.0,Dollar
-True,2478,4.5,4.36198,4.36198,11,85,700.0,Euro
-False,108,4.05,4.13233,4.13233,11,10,455.0,Euro
-True,103,4.0,3.97848,3.97848,11,10,455.0,Dollar
-True,2078,4.45,4.52411,4.52411,11,65,455.0,Pound
-False,356,4.35,4.46361,4.46361,11,20,455.0,Euro
-True,1132,4.4,4.33642,4.33642,11,81,455.0,Pound
-False,36,4.75,4.73259,4.73259,11,28,455.0,Dollar
-True,414,4.25,4.18635,4.18635,11,15,455.0,Pound
-False,778,4.3,4.31447,4.31447,11,25,455.0,Pound
-True,1239,3.85,3.91978,3.91978,11,30,455.0,Dollar
-False,42,3.45,3.4903,3.4903,11,28,455.0,Dollar
-True,329,4.4,4.35061,4.35061,11,15,455.0,Euro
-True,828,4.45,4.34883,4.34883,11,14,455.0,Pound
-True,49,4.0,3.82686,3.82686,11,29,455.0,Euro
-True,1092,3.55,3.05383,3.05383,11,20,700.0,Pound
-False,155,3.6,3.62602,3.62602,11,62,455.0,Pound
-False,161,4.05,3.76614,3.76614,13,21,455.0,Pound
-True,1034,3.7,3.84171,3.84171,11,13,455.0,Pound
-True,224,4.25,4.18661,4.18661,11,27,455.0,Euro
-True,66,3.8,3.91791,3.91791,11,63,455.0,Pound
-False,188,4.0,4.0437,4.0437,11,0,455.0,Dollar
-True,1182,4.3,4.26829,4.26829,11,29,455.0,Euro
-False,2724,4.1,4.5748,4.5748,11,40,455.0,Dollar
-False,1949,3.35,3.72354,3.72354,11,0,455.0,Euro
-True,75,4.4,4.29543,4.29543,11,16,455.0,Euro
-True,95,3.75,3.73148,3.73148,11,21,455.0,Euro
-True,180,4.8,4.78647,4.78647,11,10,720.0,Pound
-True,26,4.3,4.36419,4.36419,11,21,455.0,Dollar
-False,5865,4.2,4.29984,4.29984,11,21,455.0,Pound
-False,16,5.0,5.0,5.0,11,19,455.0,Euro
-False,53,4.35,4.37075,4.37075,11,10,455.0,Pound
-False,1382,3.75,3.85979,3.85979,11,11,455.0,Euro
-True,709,4.75,4.79229,4.79229,11,20,455.0,Pound
-True,46,4.2,4.19977,4.19977,11,17,455.0,Dollar
-True,96,4.7,4.74145,4.74145,11,10,455.0,Pound
-True,46,4.3,4.30583,4.30583,11,18,455.0,Euro
-True,74,4.7,4.79718,4.79718,11,19,455.0,Euro
-True,37,4.6,4.62166,4.62166,11,10,455.0,Dollar
-True,368,3.65,3.73266,3.73266,11,9,455.0,Pound
-False,35,4.85,4.76092,4.76092,11,5,455.0,Pound
-True,59,4.55,4.54683,4.54683,11,10,455.0,Euro
-True,1754,4.3,4.19638,4.19638,11,22,455.0,Pound
-False,49,3.2,3.05637,3.05637,11,13,455.0,Pound
-False,4805,3.25,3.48463,3.48463,11,30,2080.0,Dollar
-True,269,3.8,3.25895,3.25895,11,10,455.0,Pound
-False,3971,3.05,3.19257,3.19257,11,23,455.0,Euro
-False,65,3.9,4.05341,4.05341,11,17,455.0,Euro
-False,195,4.15,4.17779,4.17779,11,71,455.0,Euro
-True,242,4.6,4.47392,4.47392,11,38,455.0,Pound
-False,1114,4.45,4.4974,4.4974,11,9,455.0,Euro
-True,54,4.7,4.57513,4.57513,11,29,455.0,Dollar
-False,39,4.05,4.02904,4.02904,11,18,455.0,Pound
-False,72,4.75,4.71197,4.71197,11,16,455.0,Euro
-True,54,3.85,3.88023,3.88023,11,11,455.0,Pound
-True,51,3.75,3.65175,3.65175,11,38,455.0,Pound
-False,91,4.5,4.37937,4.37937,11,26,455.0,Dollar
-True,1034,4.45,4.56185,4.56185,11,8,455.0,Euro
-False,58,4.25,4.25295,4.25295,11,21,455.0,Pound
-False,46,3.35,3.37629,3.37629,11,26,455.0,Euro
-True,2766,2.6,3.04863,3.04863,11,19,455.0,Pound
-False,23,4.05,4.09154,4.09154,11,9,455.0,Dollar
-True,1424,4.2,4.24817,4.24817,11,33,455.0,Euro
-False,792,4.7,4.45974,4.45974,11,17,455.0,Euro
-False,36,4.2,4.1434,4.1434,11,5,455.0,Pound
-True,2041,3.95,3.97809,3.97809,11,17,455.0,Dollar
-False,28,4.55,4.44698,4.44698,11,16,455.0,Pound
-True,35,4.25,4.21142,4.21142,11,18,455.0,Dollar
-False,193,4.9,4.82234,4.82234,11,61,455.0,Euro
-False,1355,4.0,4.31412,4.31412,12,16,455.0,Dollar
-False,32,3.2,3.27465,3.27465,11,37,455.0,Euro
-True,1555,4.05,3.98905,3.98905,11,5,455.0,Pound
-False,59,4.0,3.98205,3.98205,11,11,455.0,Pound
-True,52,3.9,4.17135,4.17135,11,11,455.0,Euro
-True,80,4.1,4.01512,4.01512,11,23,455.0,Euro
-False,1028,4.0,3.88804,3.88804,11,5,455.0,Euro
-False,667,4.35,4.35881,4.35881,11,24,455.0,Dollar
-False,52,4.2,4.17038,4.17038,11,8,455.0,Dollar
-False,41,4.25,4.3205,4.3205,11,9,455.0,Dollar
-False,1039,4.75,4.53329,4.53329,11,25,455.0,Euro
-True,171,4.3,4.28165,4.28165,11,17,455.0,Pound
-False,862,4.3,4.2207,4.2207,11,18,455.0,Dollar
-False,85,4.2,4.05231,4.05231,11,10,455.0,Euro
-True,325,4.35,4.35294,4.35294,11,18,455.0,Euro
-True,96,3.7,3.63978,3.63978,11,15,455.0,Dollar
-True,64,3.7,3.75242,3.75242,11,15,455.0,Pound
-False,108,4.25,4.1175,4.1175,11,0,455.0,Dollar
-False,1343,2.7,1.89903,1.89903,11,7,455.0,Euro
-True,173,4.95,4.93166,4.93166,11,52,455.0,Euro
-True,248,4.45,4.38776,4.38776,11,17,455.0,Euro
-False,141,4.3,4.27383,4.27383,11,12,455.0,Pound
-False,450,4.0,3.91559,3.91559,11,17,455.0,Euro
-True,30,3.55,3.50079,3.50079,11,5,455.0,Pound
-True,1920,3.55,3.62733,3.62733,11,9,455.0,Dollar
-True,23,4.72727,4.69607,4.69607,11,28,455.0,Euro
-True,72,3.86364,3.80367,3.80367,11,33,455.0,Pound
-True,636,4.18182,4.34254,4.34254,11,23,455.0,Dollar
-False,1928,4.15,4.11903,4.11903,11,14,455.0,Pound
-True,1486,4.7,4.71641,4.71641,11,26,455.0,Euro
-True,987,4.6,4.81352,4.81352,11,13,455.0,Pound
-True,64,3.75,3.72383,3.72383,11,16,455.0,Pound
-True,433,4.2,4.21904,4.21904,11,12,455.0,Pound
-False,5050,3.4,2.8784,2.8784,11,10,455.0,Euro
-True,119,4.25,4.2076,4.2076,11,8,455.0,Dollar
-True,538,3.7,3.56805,3.56805,11,12,455.0,Pound
-True,68,4.5,4.69482,4.69482,11,49,455.0,Euro
-False,133,4.65,4.68187,4.68187,11,31,455.0,Euro
-False,580,3.85,4.03939,4.03939,11,27,720.0,Euro
-False,28,3.55,3.5442,3.5442,11,16,455.0,Euro
-False,1944,3.25,2.52548,2.52548,11,197,455.0,Euro
-True,35,4.2,4.19891,4.19891,11,7,455.0,Pound
-False,46,4.5,4.48868,4.48868,11,71,455.0,Euro
-True,3716,4.65,4.82525,4.82525,11,18,455.0,Euro
-True,137,3.5,3.44847,3.44847,11,0,455.0,Dollar
-False,22,5.0,5.0,5.0,11,8,455.0,Pound
-True,34,4.6,4.59322,4.59322,11,16,455.0,Dollar
-True,276,4.5,4.28141,4.28141,10,27,455.0,Pound
-True,40,3.8,3.63141,3.63141,10,14,455.0,Dollar
-False,1086,2.9,2.76441,2.76441,10,19,455.0,Pound
-True,164,4.4,4.4419,4.4419,10,27,455.0,Pound
-False,1537,3.65,3.85143,3.85143,10,89,455.0,Dollar
-True,2433,4.05,4.29321,4.29321,10,18,455.0,Euro
-False,47,4.5,4.48216,4.48216,10,16,455.0,Euro
-False,852,4.85,4.80928,4.80928,10,40,455.0,Dollar
-False,48,4.4,4.34541,4.34541,10,29,455.0,Pound
-False,2543,4.5,4.25616,4.25616,10,38,455.0,Euro
-True,29,3.85,3.83488,3.83488,10,11,455.0,Dollar
-True,63,4.35,4.26384,4.26384,10,7,455.0,Pound
-True,1005,4.2,4.00558,4.00558,10,29,455.0,Dollar
-True,351,3.75,3.66123,3.66123,10,7,455.0,Pound
-False,1052,3.4,3.43376,3.43376,10,48,455.0,Dollar
-False,1767,3.7,3.38269,3.38269,10,17,455.0,Dollar
-True,1013,2.9,3.01157,3.01157,10,20,455.0,Pound
-False,34,4.65,4.63941,4.63941,10,18,455.0,Pound
-True,530,3.65,3.61717,3.61717,10,5,455.0,Euro
-False,77,4.0,4.03124,4.03124,10,27,455.0,Pound
-False,5000,3.25,3.64818,3.64818,10,25,455.0,Euro
-False,61,3.35,2.9219,2.9219,10,0,455.0,Dollar
-False,726,3.3,3.26955,3.26955,10,19,455.0,Euro
-True,5228,3.5,3.45808,3.45808,10,112,455.0,Dollar
-False,147,4.65,4.61456,4.61456,10,55,455.0,Pound
-False,26,4.55,4.55226,4.55226,10,23,455.0,Euro
-True,56,4.55,4.36521,4.36521,10,12,455.0,Euro
-True,61,4.1,4.28044,4.28044,10,15,455.0,Dollar
-False,5601,4.25,4.38341,4.38341,10,0,700.0,Euro
-True,27,4.35,4.43494,4.43494,10,21,455.0,Euro
-True,1058,4.45,4.52666,4.52666,10,9,455.0,Dollar
-True,3777,4.4,4.34033,4.34033,10,10,455.0,Dollar
-True,41,3.35,3.21149,3.21149,10,11,455.0,Pound
-True,411,4.8,4.77205,4.77205,10,23,455.0,Pound
-True,1395,3.95,4.12724,4.12724,10,27,455.0,Dollar
-True,1539,3.8,3.45574,3.45574,10,68,455.0,Dollar
-False,1295,3.95,3.78244,3.78244,10,53,455.0,Euro
-True,1033,4.55,4.4626,4.4626,10,64,455.0,Euro
-True,576,3.8,3.71513,3.71513,10,16,455.0,Euro
-False,38,4.1,4.25492,4.25492,10,14,3200.0,Pound
-False,1064,4.45,4.42586,4.42586,10,21,455.0,Pound
-False,47,3.4,2.71577,2.71577,10,37,455.0,Euro
-True,2438,4.4,4.21947,4.21947,10,5,455.0,Pound
-False,1037,4.5,4.43014,4.43014,10,15,455.0,Pound
-True,417,4.4,4.267,4.267,10,36,455.0,Euro
-True,42,4.15,4.21383,4.21383,10,17,455.0,Pound
-False,559,4.0,3.74595,3.74595,10,22,455.0,Pound
-False,49,3.95,3.81232,3.81232,10,190,455.0,Pound
-True,546,3.95,3.4009,3.4009,10,67,455.0,Pound
-True,1000,4.1,4.11463,4.11463,10,7,468.0,Pound
-True,151,4.65,4.63177,4.63177,10,12,455.0,Pound
-True,4529,3.65,3.45845,3.45845,10,24,455.0,Euro
-False,230,4.2,4.3598,4.3598,10,36,455.0,Dollar
-True,90,4.45,4.41812,4.41812,10,57,455.0,Pound
-False,16,4.8,4.72915,4.72915,10,7,700.0,Pound
-False,7439,3.65,3.52121,3.52121,10,22,455.0,Euro
-False,1808,2.85,2.75955,2.75955,10,23,455.0,Euro
-True,679,4.7,4.78107,4.78107,10,22,455.0,Dollar
-False,58,4.3,4.31471,4.31471,10,65,455.0,Euro
-True,152,4.65,4.51243,4.51243,10,18,455.0,Dollar
-True,2592,3.65,3.49421,3.49421,10,31,455.0,Dollar
-True,822,4.05,3.98888,3.98888,10,13,455.0,Dollar
-False,3292,4.15,4.20407,4.20407,10,13,455.0,Dollar
-False,399,4.15,4.08303,4.08303,10,34,455.0,Dollar
-False,111,4.6,4.51537,4.51537,10,45,455.0,Dollar
-True,978,4.5,4.47326,4.47326,10,19,455.0,Euro
-True,45,4.45,4.32714,4.32714,10,17,455.0,Pound
-True,109,4.55,4.47325,4.47325,10,26,455.0,Euro
-True,107,4.75,4.69781,4.69781,10,27,455.0,Euro
-False,2499,3.45,3.95188,3.95188,10,0,455.0,Euro
-False,606,3.45,3.56836,3.56836,10,23,455.0,Pound
-False,57,3.9,3.76297,3.76297,10,8,455.0,Dollar
-False,87,3.75,3.73231,3.73231,10,33,455.0,Euro
-False,386,3.9,4.1705,4.1705,10,11,455.0,Dollar
-False,56,4.2,4.22698,4.22698,10,56,455.0,Dollar
-True,41,3.95,3.93099,3.93099,10,10,455.0,Euro
-False,425,4.5,4.19925,4.19925,10,19,455.0,Euro
-True,557,4.05,4.046,4.046,10,38,455.0,Pound
-True,81,3.75,3.83876,3.83876,10,0,455.0,Pound
-True,3625,4.3,4.54998,4.54998,10,22,455.0,Euro
-False,52,4.6,4.59554,4.59554,10,20,700.0,Euro
-True,41,4.25,4.10169,4.10169,10,9,455.0,Pound
-True,34,4.6,4.11323,4.11323,10,6,455.0,Euro
-True,86,4.15,4.06304,4.06304,10,28,455.0,Pound
-True,49,3.75,3.62246,3.62246,10,10,455.0,Dollar
-True,1266,3.6,3.78278,3.78278,10,23,455.0,Pound
-True,82,4.5,4.42826,4.42826,10,30,455.0,Pound
-True,6476,4.45,4.5494,4.5494,10,24,455.0,Euro
-True,24,3.85,3.82489,3.82489,10,7,455.0,Pound
-False,36,4.3,4.29273,4.29273,10,13,455.0,Pound
-True,521,3.45,3.391,3.391,10,11,455.0,Euro
-False,45,4.0,4.18982,4.18982,10,9,455.0,Euro
-True,24,4.7,4.68659,4.68659,10,17,3200.0,Euro
-True,62,3.95,3.91565,3.91565,10,36,455.0,Pound
-True,2306,4.0,4.28476,4.28476,10,11,455.0,Euro
-False,22,3.9,3.9253,3.9253,10,9,455.0,Pound
-True,36,4.0,3.99447,3.99447,10,35,455.0,Euro
-True,51,3.25,3.04953,3.04953,10,16,455.0,Dollar
-False,25,3.2,3.23954,3.23954,10,10,455.0,Pound
-False,2312,4.05,4.44464,4.44464,10,19,455.0,Euro
-False,16,4.35,4.32715,4.32715,10,0,455.0,Dollar
-True,74,4.7,4.63695,4.63695,10,20,455.0,Euro
-False,39,4.3,4.32227,4.32227,10,26,455.0,Dollar
-True,41,4.7,4.70733,4.70733,10,46,455.0,Pound
-False,43,4.6,4.43572,4.43572,10,51,455.0,Euro
-True,858,4.7,4.76671,4.76671,10,37,455.0,Euro
-True,1296,4.2,4.08675,4.08675,10,7,455.0,Pound
-False,60,3.75,3.49832,3.49832,10,22,455.0,Dollar
-True,2039,4.4,4.223,4.223,10,33,455.0,Euro
-True,928,4.1,3.89492,3.89492,10,28,455.0,Euro
-True,58,3.95,3.84187,3.84187,10,20,455.0,Dollar
-True,83,3.9,3.8569,3.8569,10,0,455.0,Dollar
-True,30,4.65,4.59446,4.59446,10,9,455.0,Euro
-True,74,4.2,4.04524,4.04524,10,14,455.0,Pound
-False,1297,4.15,3.93052,3.93052,10,28,455.0,Pound
-True,588,4.4,4.30002,4.30002,10,19,455.0,Pound
-False,1464,4.1,4.17331,4.17331,10,14,468.0,Dollar
-True,500,4.35,4.17565,4.17565,10,45,455.0,Dollar
-True,7690,3.9,4.18557,4.18557,10,23,455.0,Dollar
-True,26,4.75,4.70753,4.70753,10,20,455.0,Dollar
-True,2510,3.55,2.72078,2.72078,10,29,455.0,Euro
-True,3412,4.35,4.65095,4.65095,10,17,455.0,Pound
-False,42,4.2,4.25161,4.25161,10,47,455.0,Dollar
-True,38,4.15,3.82558,3.82558,10,31,455.0,Pound
-True,1504,4.9,4.93028,4.93028,10,19,455.0,Dollar
-True,1983,4.75,4.62049,4.62049,10,38,455.0,Pound
-False,453,3.0,3.21463,3.21463,10,27,455.0,Pound
-True,59,4.3,4.441,4.441,10,15,455.0,Pound
-True,57,4.45,4.37659,4.37659,10,34,455.0,Euro
-False,1802,4.15,4.13127,4.13127,10,0,455.0,Euro
-False,40,4.55,4.52886,4.52886,10,17,455.0,Pound
-True,1221,4.15,3.92465,3.92465,10,31,455.0,Euro
-True,314,3.9,3.9734,3.9734,10,5,455.0,Pound
-True,21,3.75,3.81655,3.81655,10,9,455.0,Pound
-True,2531,4.35,4.14436,4.14436,10,27,455.0,Pound
-True,963,4.4,4.23333,4.23333,10,34,455.0,Dollar
-True,159,3.7,3.83597,3.83597,10,20,455.0,Dollar
-False,105,3.65,3.51043,3.51043,10,49,455.0,Pound
-True,2324,4.1,3.7908,3.7908,10,44,455.0,Euro
-False,165,3.65,3.5381,3.5381,10,21,455.0,Euro
-True,1709,3.95,3.75663,3.75663,10,79,455.0,Euro
-True,782,4.05,4.1357,4.1357,10,6,455.0,Pound
-False,421,4.1,4.23951,4.23951,10,35,455.0,Pound
-True,2163,3.9,4.06696,4.06696,10,10,455.0,Euro
-False,132,3.4,3.29552,3.29552,10,0,455.0,Dollar
-False,4973,3.55,3.07111,3.07111,10,18,455.0,Euro
-False,75,4.65,4.66476,4.66476,10,25,455.0,Pound
-False,61,4.2,4.19989,4.19989,10,0,455.0,Euro
-True,83,3.35,3.4774,3.4774,10,0,455.0,Euro
-True,33,3.65,3.34821,3.34821,10,11,455.0,Pound
-False,27,3.8,3.77676,3.77676,10,29,455.0,Euro
-True,74,4.65,4.6728,4.6728,10,31,455.0,Dollar
-True,251,3.5,3.28753,3.28753,10,59,455.0,Pound
-True,168,3.3,3.63965,3.63965,10,36,455.0,Dollar
-True,995,4.25,3.80753,3.80753,10,25,455.0,Dollar
-False,110,3.85,3.73915,3.73915,10,44,455.0,Dollar
-False,79,4.4,4.43583,4.43583,10,30,455.0,Euro
-False,55,3.95,4.12211,4.12211,10,21,455.0,Euro
-False,45,4.1,4.06131,4.06131,10,31,455.0,Euro
-False,726,4.45,4.43011,4.43011,10,37,455.0,Euro
-True,1105,4.1,4.12516,4.12516,10,9,455.0,Pound
-False,1142,4.2,4.39733,4.39733,10,36,455.0,Euro
-True,45,3.9,3.74089,3.74089,10,14,455.0,Pound
-True,45,4.55,4.51065,4.51065,10,41,455.0,Pound
-True,2039,3.85,4.25355,4.25355,10,58,455.0,Dollar
-False,663,3.45,3.43103,3.43103,10,26,455.0,Dollar
-True,1584,4.45,4.75564,4.75564,10,11,455.0,Pound
-False,32,4.9,4.9159,4.9159,10,6,455.0,Dollar
-False,37,4.4,4.51947,4.51947,10,15,455.0,Dollar
-False,27,4.6,4.59793,4.59793,10,19,455.0,Dollar
-False,34,4.65,4.69005,4.69005,10,15,455.0,Euro
-False,114,4.75,4.75572,4.75572,10,10,455.0,Dollar
-False,139,4.65,4.6712,4.6712,11,54,455.0,Dollar
-False,3550,4.0,3.52901,3.52901,9,23,468.0,Dollar
-True,56,4.05556,3.98869,3.98869,9,31,455.0,Pound
-False,25,3.88889,3.80001,3.80001,9,8,455.0,Dollar
-False,511,4.38889,4.20956,4.20956,9,57,455.0,Euro
-True,65,4.22222,4.42615,4.42615,9,9,455.0,Pound
-True,34,4.66667,4.66629,4.66629,9,15,455.0,Dollar
-True,1588,4.16667,4.3223,4.3223,9,39,455.0,Pound
-False,1903,4.22222,4.37486,4.37486,9,23,455.0,Pound
-True,1698,4.16667,4.06777,4.06777,9,5,455.0,Pound
-True,1648,4.05556,4.52313,4.52313,9,13,468.0,Pound
-False,6250,3.88889,4.15955,4.15955,9,17,455.0,Dollar
-True,307,3.55556,3.09811,3.09811,9,10,455.0,Dollar
-False,52,4.27778,4.24545,4.24545,9,32,455.0,Dollar
-True,47,3.0,3.17521,3.17521,9,0,640.0,Euro
-True,1078,4.11111,3.97665,3.97665,9,62,455.0,Dollar
-True,92,4.66667,4.6649,4.6649,9,52,455.0,Dollar
-True,32,4.16667,4.1732,4.1732,9,17,455.0,Dollar
-True,31,4.5,4.27244,4.27244,9,14,455.0,Dollar
-True,1349,3.77778,3.88439,3.88439,9,25,455.0,Pound
-True,64,4.27778,4.24686,4.24686,9,10,455.0,Euro
-False,21,4.05556,3.9787,3.9787,9,8,455.0,Dollar
-True,2467,3.55556,3.86352,3.86352,9,47,455.0,Euro
-False,61,4.22222,4.29336,4.29336,9,37,455.0,Euro
-False,79,4.94444,4.93914,4.93914,9,12,455.0,Dollar
-False,17,4.88889,4.89388,4.89388,9,13,455.0,Pound
-True,62,4.61111,4.59179,4.59179,9,23,455.0,Pound
-False,342,4.05556,3.84841,3.84841,9,61,455.0,Euro
-True,71,4.72222,4.68038,4.68038,9,59,455.0,Pound
-False,260,4.5,4.3331,4.3331,9,61,455.0,Dollar
-True,68,3.11111,3.15465,3.15465,9,10,455.0,Pound
-False,58,4.72222,4.66808,4.66808,9,31,800.0,Dollar
-True,47,4.88889,4.85491,4.85491,9,36,455.0,Euro
-False,599,4.05556,4.07344,4.07344,9,42,455.0,Euro
-True,18,3.55556,3.52717,3.52717,9,9,455.0,Pound
-False,33,4.16667,4.35646,4.35646,9,8,455.0,Pound
-False,56,3.38889,3.47474,3.47474,9,8,455.0,Euro
-True,2597,4.44444,4.81759,4.81759,9,20,455.0,Dollar
-False,392,4.5,4.45765,4.45765,9,6,1600.0,Euro
-True,28,3.16667,3.50844,3.50844,9,28,455.0,Pound
-False,31,3.38889,3.23844,3.23844,9,72,455.0,Euro
-True,46,3.88889,3.85184,3.85184,9,8,455.0,Pound
-True,1416,4.38889,4.22837,4.22837,9,73,455.0,Dollar
-False,357,4.44444,4.03226,4.03226,9,32,455.0,Pound
-True,3665,4.05556,4.28139,4.28139,9,15,455.0,Euro
-True,30,4.44444,4.36051,4.36051,9,26,455.0,Pound
-False,46,4.61111,4.6511,4.6511,10,29,455.0,Euro
-True,68,4.44444,4.35322,4.35322,10,9,455.0,Dollar
-True,25,4.61111,4.52297,4.52297,9,25,455.0,Pound
-False,19,4.27778,4.36071,4.36071,9,13,455.0,Euro
-True,95,4.55556,4.4286,4.4286,9,33,455.0,Euro
-False,42,3.94444,3.83758,3.83758,9,32,455.0,Dollar
-True,152,3.94444,3.96933,3.96933,9,38,455.0,Dollar
-True,5298,4.05556,4.06875,4.06875,9,93,455.0,Euro
-True,92,3.88889,3.83849,3.83849,9,0,455.0,Pound
-True,38,3.33333,3.34333,3.34333,9,5,455.0,Dollar
-True,24,4.05556,4.25173,4.25173,9,0,800.0,Pound
-True,65,4.5,4.52626,4.52626,9,56,455.0,Euro
-False,38,4.88889,4.79649,4.79649,9,195,455.0,Pound
-False,89,4.44444,4.61722,4.61722,9,26,455.0,Pound
-True,1046,4.05556,3.80658,3.80658,9,40,455.0,Dollar
-False,280,4.0,3.71667,3.71667,9,11,455.0,Euro
-False,403,3.88889,3.74541,3.74541,9,9,455.0,Euro
-True,120,3.88889,3.73174,3.73174,9,22,455.0,Euro
-False,29,4.0,3.81321,3.81321,9,9,455.0,Euro
-True,87,4.22222,4.35673,4.35673,9,0,455.0,Pound
-True,1532,4.33333,4.16395,4.16395,9,10,700.0,Dollar
-True,78,4.55556,4.65784,4.65784,9,16,455.0,Dollar
-True,1127,4.66667,4.37583,4.37583,9,22,455.0,Dollar
-False,2109,4.83333,4.76475,4.76475,9,11,455.0,Dollar
-True,17,4.61111,4.58193,4.58193,9,6,455.0,Dollar
-False,75,4.16667,3.76117,3.76117,9,0,2400.0,Euro
-True,54,4.44444,4.49524,4.49524,10,20,455.0,Pound
-True,649,4.55556,4.36295,4.36295,9,72,455.0,Euro
-True,1325,4.38889,4.18284,4.18284,9,25,455.0,Pound
-False,47,2.5,1.99213,1.99213,9,0,455.0,Pound
-False,2669,4.33333,3.90163,3.90163,9,18,455.0,Euro
-False,75,4.61111,4.49097,4.49097,9,70,455.0,Euro
-True,54,3.38889,3.18989,3.18989,9,29,455.0,Pound
-True,1330,4.33333,4.07206,4.07206,9,55,455.0,Dollar
-True,43,4.0,3.98122,3.98122,9,18,455.0,Pound
-True,146,4.05556,3.9327,3.9327,9,24,455.0,Pound
-False,1729,3.83333,3.63925,3.63925,9,16,455.0,Dollar
-True,757,4.55556,4.67086,4.67086,9,16,455.0,Dollar
-False,34,4.27778,4.11532,4.11532,9,27,455.0,Dollar
-False,1194,3.77778,3.36632,3.36632,9,100,455.0,Euro
-True,46,3.77778,3.77564,3.77564,9,11,455.0,Euro
-True,24,4.33333,4.39788,4.39788,9,8,455.0,Pound
-False,422,4.44444,4.41995,4.41995,9,14,455.0,Pound
-True,43,3.83333,3.8498,3.8498,9,35,455.0,Dollar
-False,47,4.33333,4.34601,4.34601,9,17,2400.0,Euro
-True,3374,4.16667,3.81307,3.81307,9,20,455.0,Euro
-False,112,4.11111,4.25134,4.25134,9,14,455.0,Pound
-False,1771,3.5,2.98507,2.98507,9,22,455.0,Dollar
-True,60,4.55556,4.55169,4.55169,9,92,455.0,Euro
-True,32,4.22222,4.15523,4.15523,9,9,455.0,Euro
-False,34,3.66667,3.52409,3.52409,9,12,455.0,Pound
-True,42,4.61111,4.61046,4.61046,9,30,455.0,Euro
-True,41,3.44444,3.4493,3.4493,9,47,455.0,Euro
-True,345,4.55556,4.54106,4.54106,9,14,455.0,Euro
-False,82,3.94444,3.98449,3.98449,9,10,455.0,Dollar
-False,60,3.27778,3.31065,3.31065,9,13,800.0,Dollar
-True,46,3.77778,3.72883,3.72883,9,40,455.0,Euro
-True,46,4.44444,4.52922,4.52922,10,18,455.0,Euro
-True,4151,4.44444,4.4074,4.4074,9,26,455.0,Pound
-True,102,4.16667,4.15661,4.15661,9,43,455.0,Dollar
-True,100,3.94444,3.90259,3.90259,9,21,455.0,Dollar
-True,20,4.33333,4.38964,4.38964,9,12,455.0,Dollar
-False,88,4.88889,4.76785,4.76785,9,41,455.0,Dollar
-False,70,4.27778,4.323,4.323,9,9,455.0,Pound
-False,43,4.16667,4.02223,4.02223,9,19,455.0,Dollar
-True,2112,4.55556,4.38805,4.38805,9,11,455.0,Euro
-True,1187,4.77778,4.68055,4.68055,9,12,455.0,Euro
-False,572,4.27778,4.5449,4.5449,9,24,455.0,Euro
-False,307,4.44444,4.25734,4.25734,9,9,455.0,Dollar
-True,125,4.77778,4.69645,4.69645,9,44,455.0,Dollar
-True,1538,4.27778,4.33207,4.33207,9,121,455.0,Dollar
-False,22,4.55556,4.49848,4.49848,9,27,455.0,Euro
-False,23,4.5,4.6717,4.6717,9,6,455.0,Dollar
-False,1673,4.22222,4.14636,4.14636,9,105,455.0,Dollar
-True,88,4.44444,4.36364,4.36364,9,61,455.0,Dollar
-False,194,4.27778,4.24339,4.24339,9,15,455.0,Dollar
-True,40,4.22222,4.22129,4.22129,9,0,455.0,Euro
-True,1598,4.33333,4.50211,4.50211,9,36,468.0,Euro
-False,49,4.5,4.50674,4.50674,9,16,455.0,Euro
-True,452,4.16667,4.11953,4.11953,9,12,455.0,Pound
-False,48,4.33333,4.29176,4.29176,9,10,455.0,Dollar
-True,1784,4.05556,4.42621,4.42621,9,6,455.0,Dollar
-False,2174,4.16667,3.76621,3.76621,9,23,455.0,Pound
-False,533,4.77778,4.70144,4.70144,9,37,455.0,Pound
-False,197,4.11111,3.88566,3.88566,9,23,455.0,Pound
-False,71,4.44444,4.60367,4.60367,9,8,455.0,Euro
-False,1396,3.38889,2.89729,2.89729,9,8,455.0,Dollar
-True,34,3.5,3.56928,3.56928,9,10,455.0,Dollar
-False,702,4.44444,4.52368,4.52368,9,23,455.0,Euro
-True,61,4.16667,4.34213,4.34213,9,60,455.0,Dollar
-True,40,3.66667,3.57151,3.57151,9,9,455.0,Dollar
-True,3441,4.22222,4.34324,4.34324,9,23,455.0,Pound
-True,2407,3.61111,3.99667,3.99667,9,12,455.0,Dollar
-True,29,4.44444,4.4555,4.4555,9,16,455.0,Euro
-False,32,4.0,3.72842,3.72842,9,9,455.0,Pound
-False,777,4.44444,4.414,4.414,9,9,455.0,Dollar
-False,1903,4.11111,3.8374,3.8374,9,69,455.0,Dollar
-True,60,3.5,3.44091,3.44091,9,0,455.0,Pound
-True,6051,4.5,4.38662,4.38662,9,27,455.0,Pound
-True,1141,4.11111,4.12879,4.12879,9,30,455.0,Dollar
-False,29,4.22222,4.11575,4.11575,9,15,455.0,Pound
-False,15,4.44444,4.42814,4.42814,9,9,455.0,Euro
-False,65,4.94444,4.96419,4.96419,9,35,455.0,Euro
-True,64,4.0,3.92566,3.92566,9,5,455.0,Pound
-False,54,4.33333,4.26104,4.26104,9,44,455.0,Dollar
-True,52,4.44444,4.36475,4.36475,9,28,455.0,Dollar
-True,879,3.77778,3.74989,3.74989,9,0,455.0,Pound
-False,3348,3.5,3.24167,3.24167,9,26,455.0,Euro
-True,71,4.77778,4.71453,4.71453,9,12,455.0,Euro
-False,77,4.83333,4.85155,4.85155,10,37,455.0,Pound
-True,350,4.22222,4.65285,4.65285,9,7,455.0,Dollar
-False,49,3.88889,3.97415,3.97415,9,10,455.0,Pound
-False,31,4.5,4.45791,4.45791,9,9,455.0,Euro
-True,236,3.72222,3.76974,3.76974,9,7,455.0,Euro
-True,1092,4.61111,4.43231,4.43231,9,13,455.0,Pound
-False,1430,4.38889,4.23332,4.23332,9,8,455.0,Dollar
-False,1092,3.94444,4.25903,4.25903,9,5,455.0,Pound
-False,58,4.5,4.39475,4.39475,9,9,455.0,Dollar
-False,3523,4.11111,3.91595,3.91595,9,5,455.0,Euro
-False,98,4.33333,4.20288,4.20288,9,360,468.0,Euro
-True,329,4.72222,4.61324,4.61324,9,34,455.0,Pound
-False,27,4.55556,4.02112,4.02112,9,29,455.0,Pound
-True,24,4.16667,4.26048,4.26048,9,0,640.0,Euro
-False,4343,3.77778,3.80575,3.80575,9,12,455.0,Pound
-True,561,4.55556,4.55192,4.55192,9,23,455.0,Euro
-False,557,4.66667,4.46877,4.46877,9,19,455.0,Euro
-True,37,3.88889,3.94898,3.94898,9,12,455.0,Pound
-True,1017,4.16667,3.97439,3.97439,9,11,455.0,Pound
-False,64,4.77778,4.78169,4.78169,9,39,455.0,Euro
-False,54,4.72222,4.72803,4.72803,9,34,455.0,Euro
-True,832,3.88889,3.87231,3.87231,9,40,455.0,Euro
-True,277,4.77778,4.76781,4.76781,9,28,455.0,Pound
-True,114,3.75,3.76968,3.76968,8,17,455.0,Pound
-True,285,4.375,4.29344,4.29344,8,52,455.0,Pound
-True,1139,3.5,3.62117,3.62117,8,8,455.0,Euro
-False,59,4.0,4.27064,4.27064,8,25,455.0,Dollar
-False,1469,3.6875,3.63921,3.63921,8,22,455.0,Dollar
-False,604,4.5,4.54424,4.54424,8,22,455.0,Dollar
-False,43,3.1875,3.0137,3.0137,8,21,455.0,Euro
-True,377,4.625,4.37704,4.37704,8,23,455.0,Euro
-True,60,4.3125,4.06961,4.06961,8,14,1120.0,Euro
-True,2824,3.5,3.84921,3.84921,8,9,455.0,Dollar
-False,27,3.625,3.50991,3.50991,8,15,455.0,Pound
-False,433,4.25,4.3686,4.3686,8,6,455.0,Dollar
-False,62,4.125,4.12348,4.12348,8,13,455.0,Euro
-False,54,3.75,3.85183,3.85183,8,25,455.0,Pound
-True,40,3.9375,3.85143,3.85143,8,20,455.0,Dollar
-True,4096,4.3125,4.67078,4.67078,8,31,455.0,Pound
-True,878,3.8125,4.25209,4.25209,8,11,455.0,Euro
-False,31,3.875,4.23906,4.23906,8,16,455.0,Dollar
-False,53,4.6875,4.6875,4.6875,8,8,455.0,Euro
-False,123,3.9375,3.55332,3.55332,8,73,455.0,Dollar
-False,77,4.0,4.04234,4.04234,8,37,455.0,Euro
-False,38,4.8125,4.84425,4.84425,8,9,455.0,Dollar
-True,20,4.75,4.67938,4.67938,8,23,455.0,Pound
-False,84,4.5,4.39154,4.39154,8,15,455.0,Pound
-True,27,3.75,3.62335,3.62335,8,12,455.0,Euro
-False,35,3.75,3.74332,3.74332,8,0,455.0,Pound
-False,26,4.9375,4.93817,4.93817,8,0,3200.0,Dollar
-False,4479,3.3125,3.40142,3.40142,8,30,455.0,Dollar
-True,1533,4.5625,4.64125,4.64125,8,9,455.0,Pound
-True,880,4.0,4.09506,4.09506,8,18,455.0,Euro
-False,137,3.8125,3.96597,3.96597,8,14,455.0,Euro
-True,1479,4.3125,4.21452,4.21452,8,16,455.0,Euro
-False,76,3.9375,3.92086,3.92086,8,65,455.0,Dollar
-False,13,4.25,4.20791,4.20791,8,19,455.0,Euro
-False,50,3.8125,3.80055,3.80055,8,6,455.0,Euro
-False,2123,4.0,4.11027,4.11027,8,11,455.0,Dollar
-False,83,4.4375,4.29008,4.29008,8,6,455.0,Pound
-False,24,4.4375,4.37039,4.37039,8,10,455.0,Euro
-True,5310,3.8125,3.49666,3.49666,8,29,455.0,Pound
-True,1031,3.5625,3.31768,3.31768,8,12,455.0,Pound
-True,24,4.3125,4.34762,4.34762,8,10,455.0,Euro
-True,92,3.6875,3.69724,3.69724,8,19,455.0,Pound
-False,519,4.5625,4.50338,4.50338,8,14,455.0,Euro
-False,18,4.0,3.95315,3.95315,8,34,455.0,Euro
-True,24,4.4375,4.0167,4.0167,8,22,455.0,Dollar
-True,167,4.3125,4.31697,4.31697,8,83,455.0,Euro
-True,774,4.25,4.19447,4.19447,8,22,455.0,Pound
-False,25,4.875,4.82133,4.82133,8,10,455.0,Pound
-True,21,4.125,4.04237,4.04237,8,0,455.0,Dollar
-False,1194,4.375,4.45282,4.45282,8,10,700.0,Euro
-True,31,4.4375,4.33432,4.33432,8,20,1920.0,Euro
-True,846,4.625,4.60706,4.60706,8,13,455.0,Euro
-True,588,4.0,4.03262,4.03262,8,80,455.0,Pound
-True,622,3.6875,3.39679,3.39679,8,13,455.0,Euro
-False,1331,3.25,3.26645,3.26645,8,21,455.0,Dollar
-False,1806,3.875,4.46348,4.46348,8,19,455.0,Dollar
-True,65,4.3125,4.33785,4.33785,8,12,455.0,Pound
-True,3048,3.75,3.21716,3.21716,8,16,455.0,Pound
-True,3955,3.9375,3.98418,3.98418,8,10,455.0,Euro
-False,46,3.625,3.56646,3.56646,8,55,455.0,Euro
-False,988,3.0625,2.14414,2.14414,8,12,455.0,Euro
-True,21,4.3125,4.32735,4.32735,8,5,455.0,Pound
-False,2463,3.625,3.60156,3.60156,8,16,455.0,Dollar
-True,915,4.5625,4.85517,4.85517,8,28,455.0,Euro
-False,145,3.5625,3.42355,3.42355,8,11,455.0,Dollar
-True,31,4.4375,4.39803,4.39803,8,11,455.0,Euro
-False,66,3.6875,3.74217,3.74217,8,33,455.0,Euro
-False,2775,4.3125,4.45592,4.45592,8,26,455.0,Euro
-True,347,4.125,3.98466,3.98466,8,10,455.0,Pound
-False,565,4.375,4.28209,4.28209,8,29,455.0,Pound
-False,262,3.25,2.7728,2.7728,8,66,455.0,Euro
-False,28,4.0625,4.09155,4.09155,8,16,455.0,Dollar
-True,32,4.375,4.40204,4.40204,8,73,455.0,Pound
-True,43,4.25,4.26091,4.26091,8,16,455.0,Euro
-False,1025,4.375,4.51746,4.51746,8,13,455.0,Dollar
-False,32,3.3125,3.54669,3.54669,8,8,455.0,Pound
-False,1035,4.5,4.36125,4.36125,8,11,455.0,Dollar
-False,55,4.6875,4.56233,4.56233,8,18,455.0,Euro
-True,26,4.125,4.11566,4.11566,8,11,455.0,Pound
-True,828,4.625,4.57217,4.57217,8,5,455.0,Euro
-False,1081,4.375,3.87294,3.87294,8,40,455.0,Euro
-True,2453,4.0,3.93608,3.93608,8,18,455.0,Euro
-True,28,4.6875,4.59178,4.59178,8,19,455.0,Pound
-False,1075,4.375,4.24308,4.24308,8,33,455.0,Euro
-True,148,4.375,4.39553,4.39553,8,21,455.0,Euro
-True,553,4.5625,4.51674,4.51674,8,8,455.0,Pound
-False,26,4.125,4.14041,4.14041,8,19,455.0,Dollar
-False,27,5.0,5.0,5.0,8,18,455.0,Pound
-False,506,3.8125,3.77815,3.77815,8,30,455.0,Dollar
-True,2290,3.75,3.18936,3.18936,8,20,455.0,Euro
-True,31,4.0,4.06262,4.06262,8,7,1120.0,Dollar
-False,5554,2.8125,2.70472,2.70472,8,18,455.0,Pound
-True,1332,3.0625,2.70729,2.70729,8,7,455.0,Dollar
-True,322,3.75,3.54867,3.54867,8,17,455.0,Pound
-True,37,4.625,4.61305,4.61305,8,52,455.0,Euro
-True,156,4.625,4.66588,4.66588,8,33,455.0,Pound
-True,11,5.0,5.0,5.0,8,10,455.0,Euro
-False,38,4.3125,4.13435,4.13435,8,22,720.0,Pound
-True,31,4.75,4.67348,4.67348,8,22,455.0,Pound
-False,9172,4.8125,4.75461,4.75461,13,15,455.0,Dollar
-False,176,3.1875,3.34498,3.34498,8,18,455.0,Dollar
-True,770,4.3125,4.4809,4.4809,8,18,455.0,Pound
-False,52,3.75,3.45896,3.45896,8,23,455.0,Pound
-False,29,3.25,3.24325,3.24325,8,12,468.0,Dollar
-True,727,4.125,3.95702,3.95702,8,143,455.0,Dollar
-False,55,3.75,3.71285,3.71285,8,15,455.0,Pound
-True,47,3.8125,3.59866,3.59866,8,25,455.0,Euro
-False,41,4.3125,4.34342,4.34342,8,13,455.0,Dollar
-False,195,3.375,3.23229,3.23229,8,14,455.0,Euro
-False,578,4.4375,4.30489,4.30489,8,12,455.0,Pound
-False,55,4.4375,4.35102,4.35102,8,10,455.0,Pound
-True,114,4.875,4.83649,4.83649,8,67,455.0,Euro
-True,1023,3.0625,3.07725,3.07725,8,16,455.0,Pound
-False,2620,3.125,2.91068,2.91068,8,21,455.0,Euro
-False,35,4.0625,4.15674,4.15674,8,8,455.0,Pound
-True,50,4.5625,4.4329,4.4329,8,7,455.0,Dollar
-True,26,4.125,4.16673,4.16673,8,18,455.0,Dollar
-True,180,4.5625,4.57731,4.57731,8,63,455.0,Pound
-True,71,3.25,3.32553,3.32553,8,39,455.0,Euro
-False,1892,4.25,4.0055,4.0055,8,25,455.0,Dollar
-True,876,4.0625,4.43878,4.43878,8,11,455.0,Dollar
-False,27,4.4375,4.48831,4.48831,8,21,455.0,Dollar
-False,1807,3.9375,4.19723,4.19723,8,23,455.0,Dollar
-False,1135,4.875,4.80936,4.80936,8,40,455.0,Euro
-False,58,4.125,4.03868,4.03868,8,17,455.0,Dollar
-True,1220,4.1875,3.98906,3.98906,8,25,455.0,Euro
-False,22,4.125,4.16317,4.16317,8,13,455.0,Pound
-True,1159,3.4375,3.55215,3.55215,8,27,455.0,Dollar
-True,179,4.375,4.0283,4.0283,8,41,455.0,Euro
-True,2007,4.0625,4.02971,4.02971,8,5,455.0,Dollar
-True,1081,4.875,4.95314,4.95314,8,23,455.0,Pound
-True,646,4.375,4.35059,4.35059,8,120,455.0,Dollar
-False,940,4.1875,4.03735,4.03735,8,43,455.0,Euro
-True,913,3.25,2.97844,2.97844,8,8,455.0,Euro
-False,3421,3.5,3.39479,3.39479,8,19,455.0,Pound
-True,832,4.375,4.79747,4.79747,8,24,455.0,Euro
-True,1118,4.4375,4.45274,4.45274,8,32,455.0,Euro
-False,23,4.4375,4.32722,4.32722,8,27,455.0,Dollar
-False,59,4.1875,4.34931,4.34931,8,20,455.0,Pound
-False,38,4.0625,3.95351,3.95351,8,21,455.0,Euro
-True,162,3.8125,3.73429,3.73429,8,9,455.0,Pound
-False,89,3.8125,3.86884,3.86884,8,31,455.0,Euro
-False,34,4.5,4.40173,4.40173,8,17,455.0,Dollar
-False,767,3.9375,3.85704,3.85704,8,22,455.0,Dollar
-False,64,4.125,4.07134,4.07134,8,15,455.0,Euro
-True,1991,3.8125,3.81839,3.81839,8,15,455.0,Dollar
-True,39,4.0625,3.99836,3.99836,8,18,455.0,Dollar
-False,4237,3.6875,3.91314,3.91314,8,49,455.0,Dollar
-False,16,5.0,5.0,5.0,8,36,455.0,Dollar
-False,1290,4.6875,4.74888,4.74888,8,22,455.0,Euro
-False,674,4.3125,4.31027,4.31027,8,13,455.0,Pound
-True,91,3.9375,3.90142,3.90142,8,29,455.0,Pound
-False,35,4.625,4.55858,4.55858,8,17,455.0,Pound
-True,22,3.75,3.69787,3.69787,9,0,455.0,Euro
-False,26,4.1875,4.23986,4.23986,8,18,455.0,Dollar
-False,4842,4.1875,4.34111,4.34111,8,21,455.0,Pound
-True,18,4.4375,4.56402,4.56402,8,11,455.0,Euro
-False,2809,4.125,4.46369,4.46369,8,13,455.0,Euro
-True,23,3.375,3.4952,3.4952,8,12,455.0,Pound
-True,656,3.8125,3.72285,3.72285,8,48,455.0,Pound
-True,1298,4.125,4.14261,4.14261,8,5,455.0,Pound
-True,126,4.625,4.60086,4.60086,8,22,455.0,Euro
-True,55,4.875,4.83297,4.83297,14,85,455.0,Dollar
-False,38,4.125,4.11041,4.11041,8,12,455.0,Euro
-True,34,4.0625,3.99463,3.99463,8,13,455.0,Euro
-True,610,4.125,4.3247,4.3247,8,19,455.0,Dollar
-False,59,4.1875,4.1319,4.1319,8,28,455.0,Dollar
-True,22,3.6875,3.71568,3.71568,8,18,455.0,Pound
-False,37,3.6875,3.54308,3.54308,8,26,455.0,Pound
-True,1044,4.25,4.19173,4.19173,8,12,455.0,Dollar
-True,47,4.4375,4.35519,4.35519,8,16,455.0,Euro
-True,1589,3.9375,3.95592,3.95592,8,15,455.0,Pound
-False,41,3.5625,3.4804,3.4804,8,18,455.0,Pound
-True,49,3.75,3.83553,3.83553,8,81,455.0,Euro
-False,1195,4.5625,4.63,4.63,8,22,455.0,Pound
-False,217,4.4375,4.39683,4.39683,8,23,455.0,Pound
-False,20,4.625,4.63482,4.63482,8,10,455.0,Euro
-True,3117,4.0625,3.92144,3.92144,8,105,455.0,Dollar
-True,1722,3.9375,3.99808,3.99808,8,11,455.0,Euro
-False,318,3.6875,3.59887,3.59887,8,15,455.0,Euro
-True,2033,4.5625,4.55279,4.55279,8,13,455.0,Euro
-True,100,4.6875,4.72677,4.72677,8,9,455.0,Pound
-False,23,4.9375,4.88317,4.88317,8,47,455.0,Dollar
-False,39,4.5,4.36174,4.36174,8,62,455.0,Dollar
-True,1392,4.1875,4.36317,4.36317,8,6,455.0,Dollar
-False,41,3.8125,3.85688,3.85688,8,12,455.0,Pound
-False,659,4.3125,4.24553,4.24553,8,18,455.0,Pound
-False,41,4.4375,4.39737,4.39737,8,11,455.0,Euro
-False,32,4.1875,4.19208,4.19208,8,91,455.0,Euro
-False,17,3.5625,3.50775,3.50775,8,6,455.0,Euro
-False,62,3.625,3.61112,3.61112,8,0,455.0,Dollar
-False,1223,4.125,4.12078,4.12078,8,14,455.0,Euro
-True,19,4.1875,4.13498,4.13498,8,8,455.0,Dollar
-True,2332,4.375,4.44719,4.44719,8,19,455.0,Pound
-False,29,4.875,4.93631,4.93631,8,18,455.0,Pound
-True,15,5.0,5.0,5.0,8,10,455.0,Dollar
-False,2276,4.9375,4.87551,4.87551,8,19,455.0,Dollar
-False,45,3.75,3.76139,3.76139,8,5,455.0,Pound
-False,83,4.0,3.90875,3.90875,8,7,455.0,Dollar
-False,542,4.75,4.6488,4.6488,8,40,455.0,Dollar
-True,1909,4.5,4.47917,4.47917,8,25,455.0,Euro
-False,1707,4.0625,4.13938,4.13938,8,16,455.0,Euro
-False,71,4.125,4.01941,4.01941,8,6,455.0,Dollar
-False,72,3.8125,3.68233,3.68233,8,9,455.0,Pound
-False,588,4.625,4.43922,4.43922,8,11,455.0,Pound
-False,46,4.3125,4.33226,4.33226,8,12,455.0,Pound
-True,23,3.75,3.43227,3.43227,8,17,455.0,Euro
-True,344,4.8125,4.86151,4.86151,8,6,455.0,Dollar
-False,39,3.6875,3.55604,3.55604,8,17,455.0,Dollar
-False,38,4.625,4.61694,4.61694,8,12,455.0,Pound
-True,24,4.5,4.49284,4.49284,8,9,455.0,Pound
-True,56,4.6875,4.66692,4.66692,8,6,455.0,Euro
-False,1010,4.1875,4.05423,4.05423,8,19,455.0,Dollar
-True,1326,4.0,3.75723,3.75723,8,32,1200.0,Dollar
-False,50,4.0,3.88296,3.88296,8,0,455.0,Dollar
-False,17,4.0,3.86804,3.86804,8,23,455.0,Dollar
-False,21,4.8125,4.75487,4.75487,8,24,455.0,Dollar
-True,855,4.3125,4.41323,4.41323,8,12,455.0,Pound
-True,70,4.5,4.60803,4.60803,8,118,455.0,Pound
-False,79,4.8125,4.84607,4.84607,8,25,455.0,Dollar
-False,2455,4.0625,3.89131,3.89131,8,22,455.0,Euro
-True,47,3.8125,3.63466,3.63466,8,12,455.0,Euro
-True,1329,4.125,4.25799,4.25799,8,69,455.0,Pound
-False,50,4.375,4.40422,4.40422,8,12,455.0,Euro
-False,40,4.5625,4.549,4.549,8,9,455.0,Pound
-False,3479,4.25,4.31494,4.31494,8,55,455.0,Euro
-False,36,4.5,4.47405,4.47405,8,10,455.0,Pound
-True,35,3.6875,3.67255,3.67255,8,21,455.0,Pound
-True,138,4.42857,4.06918,4.06918,7,13,455.0,Euro
-True,1554,3.21429,3.11735,3.11735,7,18,455.0,Pound
-False,1835,4.28571,4.48469,4.48469,7,60,455.0,Euro
-True,33,4.42857,4.39622,4.39622,7,8,455.0,Euro
-False,16,4.07143,4.06045,4.06045,7,8,455.0,Dollar
-True,920,4.35714,4.23277,4.23277,7,23,455.0,Dollar
-False,88,3.78571,3.84633,3.84633,7,50,455.0,Dollar
-True,1245,4.0,3.7399,3.7399,7,7,455.0,Pound
-False,78,3.57143,3.62851,3.62851,7,26,455.0,Dollar
-True,489,4.5,4.55605,4.55605,7,10,455.0,Dollar
-False,53,4.21429,3.92771,3.92771,7,8,455.0,Pound
-True,432,4.5,4.46721,4.46721,7,14,455.0,Pound
-True,1317,3.64286,4.09814,4.09814,7,20,455.0,Euro
-False,392,4.42857,4.35166,4.35166,7,24,455.0,Pound
-True,1737,3.5,3.88286,3.88286,7,18,455.0,Euro
-False,11,4.85714,4.87112,4.87112,7,41,455.0,Pound
-True,1188,3.5,3.64123,3.64123,7,17,455.0,Pound
-False,879,3.64286,3.43326,3.43326,7,20,455.0,Euro
-True,27,4.0,3.98041,3.98041,7,10,455.0,Dollar
-False,45,3.07143,2.94794,2.94794,7,32,455.0,Pound
-True,36,3.71429,3.75249,3.75249,7,14,455.0,Euro
-False,50,2.85714,2.65089,2.65089,7,29,455.0,Euro
-True,21,3.78571,3.81198,3.81198,7,7,455.0,Dollar
-True,1107,3.92857,3.77308,3.77308,7,19,455.0,Dollar
-False,34,4.07143,4.12619,4.12619,7,25,455.0,Pound
-True,25,4.57143,4.57225,4.57225,7,17,455.0,Pound
-False,18,3.85714,3.7719,3.7719,7,10,455.0,Euro
-False,551,4.42857,4.45559,4.45559,7,35,455.0,Euro
-True,79,4.07143,4.06245,4.06245,7,132,455.0,Pound
-True,3489,3.78571,3.7938,3.7938,7,14,455.0,Euro
-False,6845,4.14286,4.37613,4.37613,7,11,455.0,Dollar
-True,19,5.0,5.0,5.0,7,14,455.0,Euro
-False,16,4.71429,4.55389,4.55389,7,61,455.0,Euro
-False,19,4.07143,3.9999,3.9999,7,45,455.0,Pound
-True,78,4.85714,4.8584,4.8584,8,5,455.0,Euro
-False,80,4.5,4.3745,4.3745,7,22,455.0,Euro
-False,332,4.78571,4.74165,4.74165,7,28,455.0,Dollar
-True,246,3.71429,3.73924,3.73924,7,26,455.0,Dollar
-False,228,4.78571,4.72629,4.72629,7,36,455.0,Dollar
-False,127,4.42857,4.63583,4.63583,7,7,455.0,Dollar
-False,1343,4.42857,4.47139,4.47139,7,18,455.0,Pound
-True,55,5.0,5.0,5.0,7,21,455.0,Dollar
-False,105,3.14286,2.5068,2.5068,7,15,455.0,Euro
-True,271,3.64286,3.55337,3.55337,7,17,455.0,Dollar
-False,1021,3.28571,3.4382,3.4382,7,35,455.0,Euro
-True,828,3.92857,3.81127,3.81127,7,56,455.0,Dollar
-False,549,4.85714,4.89828,4.89828,7,43,455.0,Euro
-False,28,4.0,3.98447,3.98447,7,100,455.0,Euro
-False,13,4.5,4.49416,4.49416,7,6,455.0,Pound
-False,50,4.14286,4.20868,4.20868,7,102,455.0,Euro
-True,3330,4.35714,4.25983,4.25983,7,25,455.0,Pound
-False,50,3.35714,3.23437,3.23437,7,6,455.0,Dollar
-False,72,4.35714,4.30317,4.30317,7,44,455.0,Pound
-True,28,4.42857,4.43993,4.43993,7,12,455.0,Dollar
-True,42,4.21429,4.10674,4.10674,7,17,455.0,Pound
-False,11,4.35714,3.72796,3.72796,7,60,455.0,Pound
-False,3706,3.07143,3.51492,3.51492,7,49,455.0,Pound
-False,2248,3.92857,4.11458,4.11458,7,20,455.0,Pound
-True,32,3.92857,3.94411,3.94411,7,10,455.0,Euro
-True,829,3.85714,3.17644,3.17644,7,8,455.0,Dollar
-True,1311,3.78571,3.90999,3.90999,7,15,455.0,Pound
-True,840,4.42857,4.53679,4.53679,7,35,455.0,Dollar
-True,21,3.92857,3.75376,3.75376,7,30,455.0,Dollar
-False,1524,3.57143,3.98558,3.98558,7,35,455.0,Euro
-False,2625,4.14286,4.61433,4.61433,7,10,455.0,Euro
-False,40,4.71429,4.7286,4.7286,7,52,455.0,Pound
-False,27,3.5,3.4592,3.4592,7,11,455.0,Euro
-True,69,4.35714,4.54477,4.54477,7,109,455.0,Dollar
-True,24,4.92857,4.93699,4.93699,7,45,455.0,Euro
-True,48,4.5,4.51904,4.51904,7,14,455.0,Pound
-False,96,2.64286,2.56392,2.56392,7,54,455.0,Pound
-True,65,3.92857,3.8353,3.8353,7,29,455.0,Pound
-False,1108,4.0,4.08165,4.08165,7,9,455.0,Dollar
-False,1055,4.5,4.85313,4.85313,7,29,455.0,Dollar
-False,1229,4.64286,4.57078,4.57078,7,7,455.0,Dollar
-False,22,3.85714,3.87884,3.87884,7,14,1440.0,Dollar
-True,44,4.64286,4.65888,4.65888,7,14,455.0,Pound
-False,43,4.85714,4.87947,4.87947,7,22,455.0,Pound
-True,1070,3.64286,3.20906,3.20906,7,19,455.0,Pound
-True,30,4.14286,4.127,4.127,7,13,455.0,Euro
-False,36,4.92857,4.92618,4.92618,7,28,455.0,Dollar
-False,1430,3.85714,3.21027,3.21027,7,16,455.0,Pound
-True,56,3.78571,3.88374,3.88374,7,18,455.0,Dollar
-True,698,3.71429,3.95173,3.95173,7,10,455.0,Pound
-True,136,4.28571,4.15953,4.15953,7,7,455.0,Euro
-False,34,4.35714,4.37467,4.37467,7,10,455.0,Pound
-False,27,5.0,5.0,5.0,7,21,455.0,Pound
-True,33,4.35714,4.23681,4.23681,7,9,455.0,Euro
-False,36,4.78571,4.76064,4.76064,7,7,455.0,Pound
-False,16,4.07143,4.09702,4.09702,7,19,455.0,Pound
-True,101,4.42857,4.40644,4.40644,7,32,455.0,Euro
-True,353,3.64286,3.72362,3.72362,7,7,455.0,Dollar
-False,22,4.57143,4.53005,4.53005,7,12,455.0,Euro
-False,26,4.57143,4.47774,4.47774,7,8,455.0,Euro
-True,59,3.07143,2.77802,2.77802,7,0,455.0,Dollar
-False,340,4.07143,4.02773,4.02773,7,25,455.0,Pound
-False,1131,4.71429,4.67625,4.67625,7,8,455.0,Pound
-True,728,4.21429,4.22349,4.22349,7,18,455.0,Euro
-False,1362,4.21429,4.31741,4.31741,7,171,455.0,Euro
-True,1727,3.78571,3.82444,3.82444,7,23,455.0,Euro
-True,529,3.92857,3.4348,3.4348,7,63,455.0,Pound
-False,212,4.0,4.64152,4.64152,7,34,455.0,Pound
-True,1718,4.21429,4.35765,4.35765,7,30,455.0,Euro
-False,920,4.85714,4.85515,4.85515,7,13,455.0,Pound
-False,46,3.78571,3.72932,3.72932,7,0,455.0,Euro
-False,2588,4.21429,4.14193,4.14193,7,25,455.0,Dollar
-True,1563,4.57143,4.48663,4.48663,7,22,455.0,Euro
-False,1795,3.85714,4.20011,4.20011,7,20,455.0,Dollar
-True,40,4.78571,4.75335,4.75335,7,0,455.0,Dollar
-True,81,4.57143,4.62812,4.62812,8,37,455.0,Dollar
-True,57,4.28571,4.15429,4.15429,8,39,455.0,Dollar
-True,25,4.85714,4.85792,4.85792,7,17,455.0,Pound
-True,72,3.78571,3.60972,3.60972,7,8,455.0,Euro
-False,42,3.85714,3.76282,3.76282,7,45,455.0,Euro
-True,20,4.07143,4.3803,4.3803,7,22,455.0,Pound
-False,782,4.0,4.27545,4.27545,7,15,455.0,Pound
-False,49,4.64286,4.659,4.659,7,15,455.0,Pound
-False,1801,3.92857,4.14496,4.14496,7,12,455.0,Euro
-False,601,4.14286,4.28745,4.28745,7,21,455.0,Dollar
-True,55,3.92857,3.98274,3.98274,7,10,455.0,Pound
-True,782,3.92857,4.36148,4.36148,7,24,455.0,Dollar
-False,66,4.28571,4.34898,4.34898,7,8,455.0,Pound
-True,448,4.42857,4.40724,4.40724,7,11,455.0,Euro
-False,2077,4.0,4.02735,4.02735,7,11,455.0,Dollar
-False,637,4.21429,4.3423,4.3423,7,16,455.0,Pound
-True,45,4.85714,4.81955,4.81955,8,52,455.0,Euro
-False,70,4.64286,4.59722,4.59722,7,8,455.0,Pound
-False,40,4.42857,4.45362,4.45362,7,18,455.0,Dollar
-False,483,4.78571,4.68865,4.68865,7,14,455.0,Pound
-True,40,4.42857,4.4116,4.4116,7,9,455.0,Pound
-False,240,4.64286,4.70284,4.70284,7,15,455.0,Euro
-False,1288,3.78571,3.85084,3.85084,7,23,455.0,Dollar
-False,54,4.42857,4.42993,4.42993,7,67,455.0,Euro
-True,49,4.14286,4.16621,4.16621,7,32,455.0,Pound
-False,949,4.28571,4.35465,4.35465,7,20,455.0,Euro
-False,13,4.57143,4.57719,4.57719,7,33,2400.0,Pound
-False,186,4.35714,4.28366,4.28366,7,10,455.0,Euro
-False,16,3.57143,3.47944,3.47944,7,8,455.0,Pound
-True,24,3.42857,3.39485,3.39485,7,71,455.0,Pound
-False,49,4.42857,4.46017,4.46017,7,30,455.0,Dollar
-True,2355,3.57143,4.00281,4.00281,7,6,468.0,Pound
-True,55,4.21429,4.26087,4.26087,7,0,455.0,Euro
-True,671,3.71429,3.96907,3.96907,7,14,455.0,Dollar
-True,1906,3.5,3.5852,3.5852,7,7,455.0,Dollar
-False,2065,4.5,4.69771,4.69771,7,19,455.0,Euro
-False,474,4.57143,4.73759,4.73759,7,18,455.0,Euro
-False,2352,3.78571,3.74549,3.74549,7,15,455.0,Euro
-True,67,4.85714,4.90771,4.90771,7,29,455.0,Dollar
-True,56,4.0,3.94732,3.94732,7,9,455.0,Euro
-True,145,4.35714,4.38607,4.38607,7,16,455.0,Euro
-False,67,4.64286,4.6771,4.6771,7,21,455.0,Pound
-False,21,4.5,4.45359,4.45359,7,6,455.0,Pound
-True,553,4.71429,4.73682,4.73682,7,29,455.0,Euro
-False,1504,4.21429,4.43327,4.43327,7,16,455.0,Euro
-False,81,3.14286,3.02418,3.02418,7,19,455.0,Euro
-True,3367,3.42857,3.28547,3.28547,7,18,455.0,Pound
-False,20,4.0,3.74469,3.74469,7,4,455.0,Euro
-False,56,3.21429,3.37383,3.37383,7,0,455.0,Dollar
-True,30,5.0,5.0,5.0,7,6,960.0,Dollar
-False,2428,3.5,3.57686,3.57686,7,8,455.0,Euro
-True,11,4.71429,4.77616,4.77616,7,11,1600.0,Euro
-True,3937,4.21429,4.72369,4.72369,7,39,455.0,Pound
-False,59,4.85714,4.86939,4.86939,8,32,455.0,Euro
-False,36,4.92857,4.91046,4.91046,7,27,455.0,Dollar
-False,26,5.0,5.0,5.0,7,19,455.0,Dollar
-True,28,4.21429,4.14199,4.14199,7,15,455.0,Dollar
-False,1264,3.21429,3.40861,3.40861,7,13,455.0,Euro
-True,19,5.0,5.0,5.0,7,27,455.0,Dollar
-False,5479,3.78571,3.09964,3.09964,7,22,455.0,Pound
-False,1053,3.78571,3.64943,3.64943,7,16,455.0,Pound
-False,40,3.71429,3.78732,3.78732,7,22,455.0,Euro
-False,15,4.85714,4.83117,4.83117,7,21,1520.0,Pound
-True,53,4.07143,4.21731,4.21731,7,10,455.0,Dollar
-False,973,2.35714,3.05967,3.05967,7,16,455.0,Pound
-True,75,4.57143,4.35229,4.35229,7,14,455.0,Euro
-True,270,4.21429,4.35544,4.35544,7,51,455.0,Pound
-True,71,4.07143,3.93079,3.93079,7,82,455.0,Dollar
-True,483,1.85714,1.68629,1.68629,7,5,455.0,Dollar
-False,50,4.64286,4.63468,4.63468,7,5,455.0,Euro
-False,22,3.57143,3.67805,3.67805,7,12,455.0,Dollar
-False,25,3.92857,4.04303,4.04303,7,6,455.0,Euro
-False,538,4.21429,3.84598,3.84598,7,20,455.0,Dollar
-False,689,3.64286,3.54581,3.54581,7,24,455.0,Euro
-False,29,3.5,3.63776,3.63776,7,25,455.0,Euro
-False,142,4.78571,4.64916,4.64916,7,15,455.0,Euro
-True,45,4.21429,4.26538,4.26538,7,39,455.0,Dollar
-True,101,4.64286,4.69239,4.69239,7,44,455.0,Pound
-False,38,3.71429,3.59311,3.59311,7,40,455.0,Pound
-True,1544,4.07143,3.96113,3.96113,7,9,455.0,Dollar
-False,45,4.14286,4.06426,4.06426,7,11,455.0,Euro
-True,23,3.35714,3.31374,3.31374,7,10,455.0,Dollar
-True,39,3.21429,3.33998,3.33998,7,9,455.0,Euro
-True,35,3.71429,3.53033,3.53033,7,31,2080.0,Dollar
-False,31,4.21429,4.1629,4.1629,7,10,455.0,Euro
-False,397,4.07143,3.98725,3.98725,7,23,455.0,Euro
-True,25,4.14286,4.31014,4.31014,7,7,455.0,Euro
-False,47,3.35714,3.11129,3.11129,7,32,455.0,Dollar
-True,2830,3.92857,4.44131,4.44131,7,26,455.0,Dollar
-False,35,4.21429,4.09595,4.09595,7,23,455.0,Dollar
-True,23,4.14286,3.88479,3.88479,7,33,455.0,Dollar
-True,90,3.64286,3.2393,3.2393,7,16,455.0,Pound
-False,461,3.85714,3.67015,3.67015,7,13,455.0,Dollar
-False,3353,3.42857,3.35529,3.35529,7,11,455.0,Euro
-False,42,4.14286,3.86085,3.86085,7,19,455.0,Euro
-True,314,3.71429,3.90842,3.90842,7,11,455.0,Pound
-True,1290,3.71429,3.90003,3.90003,7,20,455.0,Euro
-False,89,2.78571,2.62158,2.62158,7,17,455.0,Pound
-False,15,3.64286,3.62585,3.62585,7,6,455.0,Euro
-False,785,4.28571,4.46337,4.46337,7,25,455.0,Euro
-False,855,3.57143,3.87296,3.87296,7,11,455.0,Pound
-True,23,4.35714,4.37294,4.37294,7,12,455.0,Pound
-True,20,3.78571,3.67998,3.67998,7,23,455.0,Pound
-False,43,4.35714,4.31763,4.31763,7,9,455.0,Dollar
-True,19,4.07143,3.94812,3.94812,7,6,455.0,Dollar
-False,40,4.64286,4.68271,4.68271,7,33,455.0,Pound
-False,39,3.92857,3.85694,3.85694,7,9,455.0,Dollar
-False,28,4.42857,4.45846,4.45846,7,25,455.0,Dollar
-True,27,4.71429,4.49899,4.49899,7,11,455.0,Pound
-False,742,4.5,4.76292,4.76292,7,10,455.0,Dollar
-True,1455,4.57143,4.67059,4.67059,7,16,455.0,Euro
-True,41,4.42857,4.27141,4.27141,7,8,455.0,Dollar
-True,117,3.35714,2.98285,2.98285,7,14,455.0,Dollar
-False,1074,4.42857,4.43715,4.43715,7,45,455.0,Dollar
-True,97,4.71429,4.69827,4.69827,7,13,455.0,Dollar
-True,125,4.14286,4.14084,4.14084,7,37,455.0,Euro
-False,775,4.28571,4.3708,4.3708,7,12,455.0,Pound
-True,43,4.5,4.40614,4.40614,8,9,455.0,Euro
-False,58,3.5,3.44841,3.44841,7,6,455.0,Dollar
-False,6927,4.14286,3.73763,3.73763,7,18,455.0,Euro
-False,21,4.5,4.45311,4.45311,7,39,455.0,Euro
-False,665,4.21429,4.25601,4.25601,7,78,455.0,Euro
-False,53,3.57143,3.53838,3.53838,7,8,455.0,Dollar
-False,90,4.85714,4.81863,4.81863,7,40,468.0,Dollar
-True,25,3.42857,2.91799,2.91799,7,24,455.0,Euro
-True,31,3.14286,3.15809,3.15809,7,6,455.0,Euro
-True,61,4.21429,4.1646,4.1646,7,25,455.0,Pound
-True,67,2.78571,2.04316,2.04316,7,0,455.0,Dollar
-True,1184,3.57143,3.94183,3.94183,7,93,455.0,Euro
-True,1268,4.14286,3.84128,3.84128,7,12,455.0,Euro
-True,1011,4.35714,4.57906,4.57906,7,6,455.0,Dollar
-False,28,3.92857,3.8963,3.8963,7,0,455.0,Pound
-False,1690,3.92857,3.65527,3.65527,7,10,455.0,Dollar
-True,649,4.42857,4.38676,4.38676,7,32,455.0,Dollar
-False,38,4.42857,4.44712,4.44712,7,59,455.0,Pound
-True,60,4.64286,4.60991,4.60991,7,10,455.0,Pound
-True,21,4.71429,4.69477,4.69477,7,46,455.0,Pound
-True,26,4.71429,4.66287,4.66287,7,69,455.0,Pound
-False,1951,3.78571,3.72006,3.72006,7,10,455.0,Pound
-False,47,4.28571,4.27672,4.27672,7,28,455.0,Dollar
-False,603,4.28571,3.47221,3.47221,7,31,455.0,Dollar
-True,23,4.21429,4.35303,4.35303,7,48,1600.0,Euro
-True,15,5.0,5.0,5.0,7,35,1600.0,Dollar
-False,2939,4.0,3.83056,3.83056,7,12,455.0,Pound
-False,21,4.28571,4.19211,4.19211,7,21,455.0,Pound
-True,105,3.08333,3.69768,3.69768,6,15,455.0,Pound
-True,301,4.5,4.72224,4.72224,6,13,455.0,Pound
-True,82,4.0,3.75738,3.75738,6,18,455.0,Euro
-False,121,3.33333,3.19157,3.19157,6,111,455.0,Euro
-True,581,4.83333,4.80599,4.80599,6,6,455.0,Dollar
-False,670,4.25,4.67599,4.67599,6,27,455.0,Euro
-False,1016,4.41667,4.16208,4.16208,6,37,455.0,Euro
-False,17,4.16667,4.18474,4.18474,6,12,455.0,Euro
-False,168,4.75,4.62749,4.62749,6,12,455.0,Euro
-True,68,4.41667,4.43961,4.43961,6,15,455.0,Pound
-True,50,3.58333,3.51742,3.51742,6,27,455.0,Dollar
-True,47,4.0,3.97696,3.97696,6,7,455.0,Euro
-True,339,4.08333,4.25778,4.25778,6,24,455.0,Euro
-True,114,3.33333,2.52453,2.52453,6,11,455.0,Euro
-False,24,4.58333,4.67584,4.67584,6,10,455.0,Pound
-False,2012,3.5,3.22933,3.22933,6,11,455.0,Pound
-True,6309,3.91667,3.8194,3.8194,6,19,455.0,Euro
-True,13,3.75,3.89479,3.89479,6,6,455.0,Euro
-True,41,4.08333,4.24031,4.24031,6,30,455.0,Euro
-False,52,4.33333,4.34922,4.34922,6,0,455.0,Euro
-True,28,3.83333,3.66639,3.66639,6,13,455.0,Dollar
-True,918,4.08333,4.31672,4.31672,6,11,455.0,Euro
-False,1016,3.5,3.12873,3.12873,6,13,455.0,Dollar
-True,3886,3.58333,3.68015,3.68015,6,27,455.0,Dollar
-False,18,4.75,4.35838,4.35838,6,13,455.0,Pound
-False,40,4.66667,4.55342,4.55342,6,35,455.0,Euro
-True,88,4.41667,4.38282,4.38282,6,19,455.0,Pound
-True,109,4.5,4.36542,4.36542,6,14,455.0,Pound
-True,1152,3.0,3.45473,3.45473,6,7,455.0,Pound
-False,379,2.83333,3.38485,3.38485,6,9,455.0,Pound
-False,15,4.41667,4.40983,4.40983,6,10,455.0,Pound
-False,20,5.0,5.0,5.0,6,30,455.0,Pound
-False,60,4.83333,4.83072,4.83072,6,27,455.0,Euro
-False,1535,4.08333,4.14274,4.14274,6,15,455.0,Pound
-True,1209,4.08333,4.27362,4.27362,6,20,455.0,Dollar
-True,953,3.58333,3.979,3.979,6,16,455.0,Dollar
-True,40,3.91667,3.54546,3.54546,6,0,455.0,Dollar
-True,24,4.83333,4.8717,4.8717,6,13,455.0,Pound
-True,779,3.75,3.58573,3.58573,6,32,455.0,Dollar
-True,106,3.41667,3.05821,3.05821,6,15,455.0,Euro
-False,84,4.08333,4.11701,4.11701,6,20,455.0,Dollar
-False,620,4.41667,4.03413,4.03413,6,14,455.0,Euro
-True,45,3.33333,3.43723,3.43723,6,6,455.0,Dollar
-False,50,3.58333,3.4513,3.4513,6,0,455.0,Pound
-True,29,4.16667,4.13166,4.13166,6,6,455.0,Pound
-True,34,3.25,2.77622,2.77622,6,0,455.0,Euro
-True,25,4.25,4.32129,4.32129,6,36,455.0,Euro
-False,31,3.41667,3.32914,3.32914,6,36,455.0,Euro
-False,22,4.16667,4.16816,4.16816,6,41,455.0,Euro
-True,29,4.58333,4.52091,4.52091,6,32,1680.0,Pound
-False,46,4.41667,4.43754,4.43754,6,58,455.0,Pound
-False,36,4.25,4.19976,4.19976,6,54,455.0,Euro
-True,35,5.0,5.0,5.0,6,24,455.0,Dollar
-False,238,4.08333,4.08606,4.08606,6,33,455.0,Dollar
-False,374,3.58333,3.29718,3.29718,6,17,455.0,Dollar
-True,1020,4.16667,4.3507,4.3507,6,50,455.0,Pound
-True,31,4.5,4.52984,4.52984,6,17,800.0,Euro
-False,818,3.41667,3.235,3.235,6,16,455.0,Euro
-True,1073,4.41667,4.45447,4.45447,6,7,455.0,Dollar
-False,560,3.91667,3.79655,3.79655,6,13,455.0,Dollar
-True,797,4.5,4.30523,4.30523,6,19,455.0,Pound
-False,66,4.41667,4.21043,4.21043,6,29,455.0,Pound
-False,35,4.33333,4.36087,4.36087,6,17,455.0,Euro
-True,187,4.0,4.17078,4.17078,6,19,455.0,Pound
-True,36,4.0,3.17796,3.17796,6,14,455.0,Dollar
-False,45,4.25,4.3192,4.3192,6,16,700.0,Euro
-True,10,3.58333,3.32759,3.32759,6,11,455.0,Dollar
-True,180,4.25,4.36248,4.36248,6,45,455.0,Dollar
-False,38,2.83333,2.75019,2.75019,6,39,455.0,Pound
-True,27,4.5,4.5895,4.5895,6,9,700.0,Euro
-True,45,4.75,4.7524,4.7524,6,22,455.0,Euro
-True,19,4.41667,4.19783,4.19783,6,35,455.0,Dollar
-True,15,5.0,5.0,5.0,6,6,455.0,Pound
-True,14,4.75,4.75434,4.75434,6,11,455.0,Pound
-False,444,4.41667,4.23163,4.23163,6,20,455.0,Dollar
-True,319,4.08333,3.96766,3.96766,6,9,455.0,Pound
-True,113,4.16667,4.18554,4.18554,6,30,455.0,Dollar
-True,1253,3.5,3.37879,3.37879,6,30,455.0,Dollar
-True,2105,4.16667,4.00336,4.00336,6,11,455.0,Euro
-False,148,4.16667,4.07623,4.07623,6,15,455.0,Euro
-False,18,3.66667,3.67585,3.67585,6,19,455.0,Euro
-True,34,4.25,4.05106,4.05106,6,35,455.0,Dollar
-False,587,3.83333,3.83992,3.83992,6,11,455.0,Dollar
-False,9,4.91667,4.85534,4.85534,6,8,960.0,Pound
-True,676,4.16667,3.92141,3.92141,6,11,455.0,Euro
-False,8,3.41667,3.60799,3.60799,6,8,455.0,Euro
-True,30,2.41667,2.75663,2.75663,6,16,455.0,Pound
-True,32,4.33333,4.37926,4.37926,6,31,455.0,Pound
-True,45,4.66667,4.77371,4.77371,6,25,455.0,Euro
-False,956,4.5,4.4151,4.4151,6,33,455.0,Euro
-True,26,4.33333,4.26237,4.26237,6,60,455.0,Euro
-True,39,4.25,4.21759,4.21759,6,47,455.0,Dollar
-False,96,4.25,4.35475,4.35475,6,23,455.0,Dollar
-True,690,3.0,2.37079,2.37079,6,12,455.0,Dollar
-False,20,4.66667,4.60874,4.60874,6,27,455.0,Euro
-True,2033,4.5,4.54868,4.54868,6,23,455.0,Dollar
-True,18,4.16667,4.15193,4.15193,6,7,455.0,Euro
-False,58,4.5,4.64317,4.64317,6,0,455.0,Dollar
-True,25,3.91667,3.77622,3.77622,6,18,455.0,Pound
-False,611,1.91667,1.36363,1.36363,6,28,455.0,Euro
-True,28,4.5,4.49566,4.49566,6,7,455.0,Euro
-False,13,4.5,4.49779,4.49779,6,20,455.0,Euro
-True,27,4.25,4.38913,4.38913,6,18,700.0,Dollar
-True,987,4.33333,4.39796,4.39796,6,42,455.0,Dollar
-True,2081,3.91667,4.18855,4.18855,6,7,455.0,Dollar
-True,9,3.58333,4.2833,4.2833,6,10,455.0,Euro
-False,61,4.75,4.78874,4.78874,6,67,455.0,Dollar
-False,12,4.5,4.49054,4.49054,6,7,455.0,Pound
-False,51,3.66667,3.0576,3.0576,6,12,455.0,Dollar
-True,17,4.0,3.88183,3.88183,6,33,455.0,Pound
-True,496,3.83333,3.9678,3.9678,6,15,455.0,Euro
-False,21,4.41667,4.37695,4.37695,6,7,455.0,Dollar
-False,756,4.25,4.37396,4.37396,6,23,455.0,Dollar
-False,59,4.83333,4.91719,4.91719,6,15,3200.0,Pound
-False,630,4.0,3.95818,3.95818,6,78,455.0,Dollar
-False,75,4.41667,4.35217,4.35217,6,27,455.0,Euro
-False,751,4.58333,4.31151,4.31151,6,11,455.0,Euro
-False,46,4.58333,4.48747,4.48747,6,154,455.0,Dollar
-True,1505,4.83333,4.82904,4.82904,6,25,455.0,Euro
-False,45,3.91667,3.80335,3.80335,6,23,455.0,Pound
-True,2473,3.66667,3.56151,3.56151,6,61,455.0,Dollar
-False,20,4.75,4.73626,4.73626,6,13,455.0,Pound
-False,32,4.66667,4.68255,4.68255,6,9,455.0,Pound
-True,65,3.5,3.62459,3.62459,6,9,455.0,Euro
-False,1146,4.66667,4.61388,4.61388,6,7,455.0,Pound
-False,40,4.41667,4.25603,4.25603,6,37,480.0,Euro
-False,13,3.5,3.51124,3.51124,6,20,455.0,Pound
-False,2261,3.91667,3.64858,3.64858,6,12,455.0,Pound
-True,15,3.91667,3.99296,3.99296,6,9,455.0,Euro
-True,1428,4.0,3.66525,3.66525,6,61,455.0,Dollar
-False,17,4.25,4.21753,4.21753,6,16,455.0,Pound
-True,29,3.25,3.59534,3.59534,6,7,455.0,Dollar
-False,711,3.91667,4.25557,4.25557,6,10,455.0,Pound
-False,28,4.58333,4.37968,4.37968,6,27,455.0,Pound
-True,26,4.0,4.09505,4.09505,6,52,455.0,Euro
-True,1474,4.0,3.79053,3.79053,6,32,455.0,Dollar
-True,75,4.91667,4.92984,4.92984,6,26,455.0,Dollar
-True,61,4.66667,4.5065,4.5065,6,28,455.0,Dollar
-True,5814,3.66667,3.68958,3.68958,6,8,455.0,Euro
-True,42,4.91667,4.87225,4.87225,6,16,455.0,Dollar
-True,51,4.41667,4.48152,4.48152,6,265,455.0,Dollar
-False,28,4.83333,4.89128,4.89128,6,16,455.0,Pound
-False,61,4.75,4.6418,4.6418,6,313,455.0,Pound
-True,12,4.08333,4.06258,4.06258,6,6,455.0,Pound
-True,26,4.5,4.26542,4.26542,6,26,1440.0,Euro
-False,16,4.83333,4.59226,4.59226,6,8,455.0,Euro
-False,597,4.16667,4.20494,4.20494,7,33,455.0,Euro
-True,868,3.91667,3.63813,3.63813,6,9,455.0,Euro
-True,134,4.5,4.51676,4.51676,6,11,455.0,Dollar
-False,727,3.16667,3.83115,3.83115,6,10,455.0,Pound
-False,444,4.0,3.689,3.689,6,27,455.0,Dollar
-True,943,4.75,4.72377,4.72377,6,25,455.0,Dollar
-True,33,4.5,4.49293,4.49293,6,28,455.0,Pound
-False,894,4.75,4.7852,4.7852,6,11,455.0,Pound
-True,103,4.0,4.32127,4.32127,6,20,455.0,Euro
-False,1027,3.83333,4.37388,4.37388,6,14,455.0,Euro
-True,172,3.58333,3.2859,3.2859,6,13,455.0,Euro
-False,405,4.08333,3.68685,3.68685,6,36,455.0,Euro
-True,30,4.66667,4.59025,4.59025,6,40,455.0,Pound
-False,1930,4.75,4.85679,4.85679,6,11,455.0,Dollar
-False,16,4.75,4.60649,4.60649,6,24,455.0,Pound
-True,40,3.75,3.56123,3.56123,6,19,455.0,Pound
-True,97,4.0,3.98387,3.98387,6,43,455.0,Euro
-True,21,3.16667,4.17994,4.17994,6,7,455.0,Dollar
-False,14,3.25,3.19977,3.19977,6,7,455.0,Pound
-True,13,4.91667,4.95823,4.95823,6,5,455.0,Dollar
-True,85,3.5,3.54192,3.54192,6,0,455.0,Pound
-True,15,3.83333,3.81727,3.81727,6,14,455.0,Pound
-False,223,4.33333,4.29342,4.29342,6,7,455.0,Euro
-True,48,4.5,4.51017,4.51017,6,19,455.0,Dollar
-True,2318,4.08333,4.15933,4.15933,6,10,455.0,Euro
-False,2315,3.66667,4.1911,4.1911,6,8,455.0,Euro
-False,43,4.0,4.0384,4.0384,6,28,455.0,Pound
-False,1497,4.16667,4.07853,4.07853,6,69,455.0,Pound
-False,2700,3.41667,3.66489,3.66489,6,18,455.0,Dollar
-True,33,4.33333,4.40516,4.40516,6,9,455.0,Euro
-False,36,3.5,3.83761,3.83761,6,26,455.0,Euro
-False,1896,3.41667,3.60245,3.60245,6,37,455.0,Pound
-False,18,4.58333,4.4841,4.4841,6,15,455.0,Euro
-False,56,3.75,3.61845,3.61845,6,28,455.0,Dollar
-True,1760,4.6,4.59705,4.59705,6,17,455.0,Euro
-False,35,3.75,3.88901,3.88901,6,13,455.0,Dollar
-True,24,4.16667,4.03435,4.03435,6,54,455.0,Pound
-False,1303,3.91667,3.70397,3.70397,6,33,455.0,Euro
-False,55,4.58333,4.56688,4.56688,6,11,455.0,Euro
-False,1289,3.83333,3.98319,3.98319,6,21,455.0,Pound
-False,22,4.25,4.22411,4.22411,6,9,455.0,Pound
-True,758,4.33333,4.30979,4.30979,6,16,455.0,Dollar
-False,274,4.0,3.64087,3.64087,6,18,455.0,Dollar
-True,58,4.33333,4.51617,4.51617,6,17,455.0,Euro
-False,35,4.25,3.90241,3.90241,6,39,455.0,Pound
-True,73,4.16667,4.10357,4.10357,6,101,455.0,Dollar
-False,1762,2.91667,3.37403,3.37403,6,7,455.0,Dollar
-False,1200,4.75,4.59369,4.59369,6,15,455.0,Dollar
-True,303,3.83333,3.97094,3.97094,6,11,455.0,Euro
-False,2231,4.08333,3.92369,3.92369,6,21,455.0,Dollar
-True,15,3.75,3.614,3.614,6,12,455.0,Euro
-True,35,5.0,5.0,5.0,6,0,455.0,Dollar
-True,2477,4.91667,4.96092,4.96092,6,13,455.0,Dollar
-False,29,4.33333,4.27262,4.27262,6,62,455.0,Pound
-True,13,3.75,3.79864,3.79864,6,19,455.0,Euro
-False,3694,5.0,5.0,5.0,6,24,455.0,Dollar
-False,926,3.75,4.10754,4.10754,6,8,3200.0,Euro
-False,672,4.5,4.31906,4.31906,6,10,700.0,Dollar
-True,26,4.25,4.27654,4.27654,6,20,455.0,Euro
-True,18,4.33333,4.22868,4.22868,6,5,700.0,Euro
-True,10,4.75,4.7276,4.7276,6,15,455.0,Euro
-True,1914,3.5,3.31665,3.31665,6,0,455.0,Euro
-False,6417,2.5,2.87272,2.87272,6,39,455.0,Euro
-False,743,3.58333,3.88499,3.88499,6,16,455.0,Euro
-False,43,4.75,4.81182,4.81182,6,19,455.0,Euro
-False,17,3.66667,3.76199,3.76199,6,31,455.0,Dollar
-False,23,4.16667,3.88264,3.88264,6,6,455.0,Dollar
-True,498,4.0,4.07958,4.07958,6,14,455.0,Dollar
-False,611,3.33333,3.10284,3.10284,6,12,455.0,Dollar
-False,23,4.5,4.56444,4.56444,6,22,455.0,Pound
-True,2032,2.91667,2.08906,2.08906,6,8,455.0,Pound
-True,120,4.75,4.76741,4.76741,6,60,455.0,Pound
-False,2717,3.83333,3.59601,3.59601,6,17,455.0,Dollar
-True,25,4.33333,4.33371,4.33371,6,11,455.0,Dollar
-True,28,4.66667,4.58635,4.58635,6,13,455.0,Pound
-False,298,3.25,2.32541,2.32541,6,46,455.0,Euro
-False,21,4.5,4.68079,4.68079,6,58,468.0,Dollar
-False,31,4.83333,4.83391,4.83391,6,7,455.0,Euro
-False,14,3.66667,3.57544,3.57544,6,9,455.0,Euro
-False,1568,4.41667,4.01315,4.01315,6,51,455.0,Euro
-False,20,4.75,4.76392,4.76392,6,10,455.0,Pound
-True,219,4.08333,4.67422,4.67422,6,28,455.0,Euro
-False,1038,4.16667,3.7337,3.7337,6,5,455.0,Euro
-False,505,4.75,4.73569,4.73569,6,19,455.0,Pound
-False,1446,4.25,4.233,4.233,6,12,455.0,Euro
-True,229,3.75,2.98442,2.98442,6,18,455.0,Pound
-False,59,4.83333,4.82854,4.82854,6,25,455.0,Dollar
-True,44,4.41667,4.30135,4.30135,6,12,455.0,Euro
-True,666,4.58333,4.5851,4.5851,6,20,455.0,Euro
-False,120,4.58333,4.58419,4.58419,6,17,455.0,Pound
-True,34,3.91667,4.02809,4.02809,6,44,455.0,Euro
-False,25,4.58333,4.55053,4.55053,6,44,455.0,Euro
-False,21,4.75,4.68281,4.68281,6,11,455.0,Euro
-False,19,4.33333,4.10132,4.10132,6,34,455.0,Pound
-False,38,4.08333,4.12873,4.12873,6,14,455.0,Euro
-True,20,4.25,4.15801,4.15801,6,12,455.0,Euro
-False,33,4.08333,3.94132,3.94132,6,22,455.0,Pound
-True,1021,4.16667,4.64689,4.64689,6,10,455.0,Euro
-False,66,4.08333,4.02611,4.02611,6,0,455.0,Dollar
-True,2915,3.33333,3.37833,3.37833,6,22,455.0,Dollar
-False,21,3.16667,3.29077,3.29077,6,23,455.0,Euro
-False,3453,4.0,4.05771,4.05771,6,15,455.0,Euro
-False,40,4.33333,4.30415,4.30415,6,270,455.0,Dollar
-False,13,4.83333,4.75817,4.75817,6,12,455.0,Pound
-False,1878,4.66667,4.6406,4.6406,6,8,455.0,Pound
-False,28,4.2,4.13031,4.13031,5,13,455.0,Dollar
-False,110,5.0,5.0,5.0,5,24,455.0,Dollar
-False,752,2.9,2.94495,2.94495,5,56,455.0,Dollar
-False,1008,4.6,4.57143,4.57143,5,47,455.0,Dollar
-True,1621,4.0,4.12092,4.12092,5,19,455.0,Euro
-False,454,3.8,3.67956,3.67956,5,61,455.0,Euro
-False,167,3.9,3.70543,3.70543,5,34,455.0,Pound
-True,26,3.6,3.69225,3.69225,5,29,455.0,Pound
-True,37,3.1,2.48956,2.48956,5,14,455.0,Pound
-False,24,3.9,3.94722,3.94722,5,13,455.0,Pound
-False,30,4.0,3.91441,3.91441,5,15,455.0,Euro
-False,81,4.6,4.59927,4.59927,5,34,455.0,Pound
-False,14,3.9,3.89443,3.89443,5,6,455.0,Dollar
-False,11,4.0,3.88404,3.88404,5,10,455.0,Pound
-True,82,3.5,3.69045,3.69045,5,22,455.0,Pound
-True,13,3.7,3.78603,3.78603,5,8,455.0,Dollar
-False,28,4.3,4.27809,4.27809,5,11,455.0,Pound
-False,1194,3.5,3.41015,3.41015,5,14,455.0,Pound
-False,40,4.6,4.46473,4.46473,5,92,455.0,Dollar
-False,526,3.9,3.63543,3.63543,5,6,700.0,Dollar
-True,19,4.5,4.50233,4.50233,5,12,455.0,Euro
-False,62,3.3,3.30277,3.30277,5,27,455.0,Euro
-False,3486,4.3,4.41391,4.41391,5,0,455.0,Pound
-True,41,4.6,4.65281,4.65281,5,45,455.0,Dollar
-True,80,4.0,4.01613,4.01613,5,17,455.0,Dollar
-False,28,4.1,4.08061,4.08061,5,9,455.0,Euro
-False,42,3.6,3.61381,3.61381,6,9,455.0,Pound
-True,10,3.6,3.60643,3.60643,5,9,700.0,Dollar
-True,15,3.5,3.45506,3.45506,5,10,455.0,Pound
-False,31,4.7,4.74616,4.74616,5,38,455.0,Euro
-False,23,3.9,3.68809,3.68809,5,20,455.0,Euro
-True,49,4.4,4.14613,4.14613,5,0,455.0,Dollar
-True,1008,3.5,3.1901,3.1901,5,23,455.0,Euro
-False,13,3.4,3.42336,3.42336,5,7,1120.0,Dollar
-False,16,4.5,4.2477,4.2477,5,21,455.0,Dollar
-False,23,3.2,3.15871,3.15871,5,6,455.0,Euro
-False,29,4.6,4.46357,4.46357,5,23,455.0,Dollar
-False,15,4.6,4.39971,4.39971,5,19,455.0,Pound
-False,71,4.0,3.36258,3.36258,5,71,455.0,Dollar
-False,30,4.7,4.66515,4.66515,5,75,455.0,Euro
-True,15,3.9,4.08296,4.08296,5,42,455.0,Euro
-False,164,5.0,5.0,5.0,5,36,455.0,Pound
-False,30,4.1,4.00183,4.00183,5,5,455.0,Euro
-False,20,4.6,4.42093,4.42093,5,7,455.0,Dollar
-True,1590,3.2,3.24598,3.24598,5,0,455.0,Pound
-False,27,4.1,4.20428,4.20428,5,78,455.0,Dollar
-True,29,3.2,3.17549,3.17549,5,38,455.0,Pound
-False,8,4.0,4.03929,4.03929,5,13,455.0,Euro
-False,33,2.8,2.97735,2.97735,5,21,455.0,Dollar
-False,25,4.7,4.83686,4.83686,5,42,455.0,Dollar
-True,25,4.0,3.92125,3.92125,5,5,455.0,Dollar
-False,41,3.9,3.45975,3.45975,5,27,455.0,Euro
-True,51,3.9,4.13854,4.13854,5,43,455.0,Euro
-False,1584,3.3,3.42332,3.42332,5,10,455.0,Pound
-True,26,4.3,4.20053,4.20053,5,16,455.0,Euro
-False,39,4.7,4.60679,4.60679,5,0,455.0,Pound
-True,23,4.4,4.10171,4.10171,5,18,455.0,Dollar
-True,40,3.8,3.69214,3.69214,5,24,455.0,Euro
-False,1799,3.9,3.81203,3.81203,5,19,455.0,Pound
-True,1492,4.1,4.48165,4.48165,5,11,455.0,Pound
-True,41,4.0,4.391,4.391,5,13,455.0,Pound
-False,20,4.3,4.23422,4.23422,5,33,455.0,Dollar
-False,13,4.5,4.63238,4.63238,5,22,455.0,Dollar
-False,31,5.0,5.0,5.0,5,26,455.0,Dollar
-True,53,4.7,4.74,4.74,5,0,455.0,Dollar
-True,29,3.3,3.29837,3.29837,5,46,455.0,Pound
-True,19,4.9,4.92441,4.92441,5,13,455.0,Pound
-True,16,5.0,5.0,5.0,5,25,455.0,Euro
-False,953,4.0,4.38267,4.38267,5,5,455.0,Dollar
-False,1075,4.8,4.79225,4.79225,5,26,455.0,Dollar
-False,8,4.7,4.67848,4.67848,5,6,455.0,Pound
-False,6,5.0,5.0,5.0,5,9,455.0,Euro
-True,114,4.6,4.50442,4.50442,5,21,455.0,Pound
-False,40,4.6,4.78134,4.78134,5,8,455.0,Pound
-True,2013,4.3,4.18384,4.18384,5,15,455.0,Euro
-True,395,4.0,4.17598,4.17598,5,13,455.0,Euro
-False,47,3.8,3.87587,3.87587,5,8,455.0,Euro
-True,45,4.6,4.54718,4.54718,5,10,455.0,Euro
-True,789,4.1,4.44472,4.44472,5,33,455.0,Pound
-True,24,3.8,3.46397,3.46397,5,10,455.0,Euro
-True,785,4.2,4.08598,4.08598,5,21,455.0,Euro
-False,59,4.3,4.24214,4.24214,5,34,455.0,Euro
-False,14,4.0,3.99517,3.99517,5,6,455.0,Pound
-True,23,4.1,4.12663,4.12663,5,5,455.0,Pound
-True,51,4.1,4.19664,4.19664,5,0,455.0,Euro
-False,1272,4.1,4.0667,4.0667,5,26,455.0,Euro
-False,23,4.2,4.06378,4.06378,5,0,455.0,Euro
-False,34,4.7,4.64071,4.64071,5,14,455.0,Euro
-True,13,4.2,4.19724,4.19724,5,12,455.0,Pound
-True,1016,2.7,2.47884,2.47884,5,8,455.0,Dollar
-True,536,4.0,4.18053,4.18053,5,18,455.0,Pound
-False,25,3.3,3.18704,3.18704,5,7,455.0,Pound
-False,17,2.6,2.672,2.672,5,7,455.0,Euro
-False,27,3.7,3.49791,3.49791,5,14,455.0,Dollar
-False,20,4.2,4.1788,4.1788,5,9,455.0,Pound
-False,26,4.8,4.78182,4.78182,5,6,455.0,Dollar
-False,375,4.3,3.94003,3.94003,5,9,455.0,Pound
-True,28,4.9,4.87784,4.87784,5,15,455.0,Pound
-True,630,3.9,3.46539,3.46539,5,59,455.0,Dollar
-True,35,3.3,3.84215,3.84215,5,10,455.0,Dollar
-True,49,4.0,3.95592,3.95592,5,42,455.0,Dollar
-False,1764,3.8,3.77162,3.77162,5,37,455.0,Pound
-False,18,4.1,4.75675,4.75675,5,5,455.0,Euro
-True,28,4.5,4.82523,4.82523,5,8,455.0,Euro
-True,32,3.6,3.74187,3.74187,5,23,455.0,Pound
-False,2447,4.3,4.55086,4.55086,5,30,455.0,Euro
-False,383,3.5,3.59444,3.59444,5,18,455.0,Euro
-False,29,3.8,3.63059,3.63059,5,11,455.0,Euro
-True,25,3.7,3.72048,3.72048,5,54,455.0,Euro
-False,26,5.0,5.0,5.0,5,44,455.0,Dollar
-True,22,4.6,4.59428,4.59428,5,11,455.0,Pound
-True,37,4.8,4.78741,4.78741,5,7,455.0,Dollar
-True,24,4.2,4.37659,4.37659,5,20,455.0,Euro
-False,31,4.2,4.18609,4.18609,5,15,455.0,Dollar
-False,37,4.5,4.43235,4.43235,5,7,455.0,Pound
-True,56,2.7,2.41219,2.41219,5,10,455.0,Euro
-True,10,3.7,4.23121,4.23121,5,7,455.0,Dollar
-False,20,4.2,4.06845,4.06845,5,22,455.0,Pound
-True,1618,4.8,4.69439,4.69439,5,15,455.0,Dollar
-True,352,3.9,3.65551,3.65551,5,12,455.0,Pound
-True,27,4.3,4.12291,4.12291,5,11,455.0,Euro
-False,448,4.6,4.20262,4.20262,5,26,455.0,Euro
-True,12,3.5,3.50615,3.50615,5,10,455.0,Pound
-False,1021,4.0,4.02979,4.02979,5,22,455.0,Euro
-True,34,4.4,4.42824,4.42824,5,17,455.0,Pound
-False,4735,4.2,4.11751,4.11751,5,8,455.0,Dollar
-False,24,4.5,4.47555,4.47555,5,25,455.0,Pound
-True,1005,3.7,3.81708,3.81708,5,11,455.0,Pound
-False,23,4.3,4.03407,4.03407,5,35,455.0,Dollar
-False,28,3.7,3.79821,3.79821,5,8,455.0,Dollar
-False,351,3.9,3.69602,3.69602,5,13,455.0,Euro
-False,75,3.4,3.32754,3.32754,5,11,455.0,Dollar
-True,21,4.1,3.97392,3.97392,5,10,455.0,Dollar
-False,851,4.6,4.39748,4.39748,5,33,455.0,Euro
-True,513,4.1,4.16392,4.16392,5,24,455.0,Dollar
-False,47,4.5,4.68685,4.68685,5,19,455.0,Dollar
-True,31,3.4,3.42956,3.42956,5,9,455.0,Dollar
-True,29,3.6,3.60944,3.60944,5,67,455.0,Dollar
-True,17,4.3,4.25186,4.25186,5,19,455.0,Pound
-True,1007,4.4,4.72427,4.72427,5,36,455.0,Pound
-False,8,2.4,2.44616,2.44616,5,21,455.0,Euro
-False,898,4.5,4.88427,4.88427,5,5,455.0,Pound
-False,2883,4.2,4.32225,4.32225,5,25,455.0,Pound
-False,1753,3.1,3.33246,3.33246,5,32,455.0,Pound
-True,334,4.8,4.73137,4.73137,5,11,455.0,Euro
-True,23,4.1,4.16419,4.16419,5,18,455.0,Pound
-False,36,3.3,2.88077,2.88077,5,15,455.0,Pound
-True,975,3.5,3.6961,3.6961,5,20,455.0,Dollar
-True,38,4.5,4.44795,4.44795,5,110,455.0,Pound
-False,439,4.0,3.84585,3.84585,5,37,455.0,Pound
-True,26,4.5,4.47385,4.47385,6,15,1520.0,Dollar
-True,9,5.0,5.0,5.0,5,83,455.0,Dollar
-False,1921,4.5,4.75897,4.75897,5,9,480.0,Euro
-True,1340,3.9,3.73097,3.73097,5,41,455.0,Pound
-False,86,1.8,2.17141,2.17141,5,5,455.0,Euro
-False,1131,3.8,3.86948,3.86948,5,20,455.0,Dollar
-False,649,3.7,3.3997,3.3997,5,11,455.0,Euro
-False,1854,2.9,3.42281,3.42281,5,90,455.0,Pound
-False,32,4.0,3.95181,3.95181,5,12,455.0,Pound
-True,44,4.0,3.94829,3.94829,5,20,455.0,Euro
-True,445,4.4,4.44454,4.44454,5,49,455.0,Pound
-True,320,4.6,4.30694,4.30694,5,11,455.0,Dollar
-False,280,4.1,3.85133,3.85133,5,13,455.0,Euro
-True,791,4.1,4.02738,4.02738,5,61,455.0,Pound
-False,20,4.2,4.34534,4.34534,5,35,455.0,Dollar
-False,56,4.5,4.50799,4.50799,5,19,455.0,Pound
-False,957,4.4,4.06799,4.06799,5,12,455.0,Euro
-False,53,4.0,3.89058,3.89058,5,21,455.0,Euro
-True,3330,4.2,3.99389,3.99389,5,49,455.0,Dollar
-False,866,4.2,4.36282,4.36282,5,11,455.0,Euro
-True,46,4.4,4.33784,4.33784,5,15,455.0,Pound
-True,1768,4.6,4.35875,4.35875,5,8,455.0,Pound
-False,18,4.0,3.8609,3.8609,5,12,455.0,Dollar
-False,20,5.0,5.0,5.0,5,21,455.0,Euro
-False,22,3.5,3.51026,3.51026,5,12,455.0,Dollar
-True,34,3.9,3.92147,3.92147,8,17,1600.0,Dollar
-False,131,3.5,3.68408,3.68408,5,0,455.0,Pound
-True,19,4.6,4.58096,4.58096,5,9,455.0,Dollar
-True,517,4.5,4.30305,4.30305,5,12,455.0,Pound
-False,1512,3.9,3.74182,3.74182,5,9,455.0,Euro
-False,154,4.5,4.20347,4.20347,5,18,455.0,Dollar
-False,721,4.3,4.22103,4.22103,5,10,455.0,Dollar
-False,23,4.3,4.14929,4.14929,5,27,455.0,Euro
-True,25,5.0,5.0,5.0,5,60,455.0,Pound
-False,718,4.7,4.8023,4.8023,5,18,455.0,Pound
-True,20,4.4,4.43415,4.43415,5,17,455.0,Euro
-False,34,4.7,4.76945,4.76945,5,47,455.0,Dollar
-True,119,4.3,4.21116,4.21116,5,207,455.0,Euro
-False,47,4.3,4.68853,4.68853,5,32,455.0,Dollar
-True,1553,3.9,3.91547,3.91547,5,5,455.0,Euro
-False,861,3.8,3.75186,3.75186,5,15,468.0,Euro
-True,3015,4.3,4.21867,4.21867,5,45,455.0,Pound
-True,111,5.0,5.0,5.0,5,7,455.0,Euro
-False,18,3.8,3.77518,3.77518,5,79,455.0,Dollar
-False,1241,4.2,4.05445,4.05445,5,28,455.0,Pound
-True,14,4.7,4.64015,4.64015,5,10,455.0,Euro
-False,27,4.7,4.6724,4.6724,5,40,455.0,Dollar
-True,82,3.3,3.28304,3.28304,5,24,455.0,Dollar
-False,45,3.8,3.69637,3.69637,5,11,455.0,Dollar
-False,59,4.4,4.16772,4.16772,5,24,455.0,Euro
-False,36,4.0,4.16342,4.16342,5,39,455.0,Dollar
-True,28,4.3,4.39794,4.39794,5,10,455.0,Pound
-True,18,3.6,3.77498,3.77498,5,7,455.0,Pound
-True,13,3.2,2.84963,2.84963,5,19,455.0,Dollar
-True,22,4.0,3.42431,3.42431,5,26,455.0,Euro
-False,614,3.9,3.88425,3.88425,5,5,455.0,Euro
-True,25,3.9,3.74116,3.74116,5,9,455.0,Pound
-True,589,4.0,4.34745,4.34745,5,8,455.0,Dollar
-False,41,4.3,4.35573,4.35573,5,28,455.0,Euro
-False,58,4.6,4.57887,4.57887,5,15,455.0,Dollar
-False,25,4.1,4.31521,4.31521,5,11,455.0,Dollar
-False,14,3.3,3.55948,3.55948,5,10,455.0,Euro
-False,649,4.4,4.3379,4.3379,5,78,455.0,Dollar
-False,1022,4.8,4.66382,4.66382,5,32,455.0,Pound
-False,28,4.2,4.19751,4.19751,5,9,455.0,Dollar
-False,20,3.9,3.87941,3.87941,5,6,455.0,Dollar
-False,799,4.6,4.49135,4.49135,5,11,455.0,Euro
-False,325,4.2,4.15795,4.15795,5,14,455.0,Euro
-True,626,3.7,3.56059,3.56059,5,22,455.0,Dollar
-False,171,4.4,4.11266,4.11266,5,54,455.0,Pound
-False,935,4.4,3.90439,3.90439,5,12,455.0,Pound
-False,1996,3.6,3.48188,3.48188,5,12,455.0,Euro
-True,23,4.0,3.92896,3.92896,5,13,455.0,Pound
-False,353,4.8,4.5367,4.5367,5,22,455.0,Euro
-False,21,4.9,4.89214,4.89214,5,32,455.0,Dollar
-True,1830,4.0,4.28679,4.28679,5,32,455.0,Euro
-False,102,3.1,3.06473,3.06473,5,41,455.0,Pound
-True,15,3.8,3.80228,3.80228,5,17,455.0,Dollar
-False,23,4.2,4.29334,4.29334,5,15,455.0,Dollar
-True,473,3.2,3.25016,3.25016,5,12,455.0,Dollar
-True,636,4.9,4.91171,4.91171,5,7,455.0,Pound
-True,533,4.7,4.71871,4.71871,5,10,455.0,Dollar
-True,43,4.6,4.53103,4.53103,5,19,455.0,Euro
-True,16,3.9,3.87938,3.87938,5,25,455.0,Dollar
-False,2061,3.7,4.01322,4.01322,5,16,455.0,Euro
-True,24,4.3,4.26539,4.26539,5,20,455.0,Dollar
-True,82,4.7,4.73521,4.73521,6,51,455.0,Pound
-False,11,4.0,4.36647,4.36647,5,16,455.0,Pound
-False,24,3.9,3.9977,3.9977,5,16,455.0,Dollar
-False,40,4.1,3.75101,3.75101,5,10,455.0,Dollar
-False,27,3.5,3.50415,3.50415,5,16,455.0,Pound
-True,1002,4.2,4.12669,4.12669,5,12,455.0,Dollar
-False,34,4.7,4.73117,4.73117,5,9,455.0,Euro
-True,1003,4.1,4.45154,4.45154,5,8,455.0,Pound
-True,12,4.4,3.90572,3.90572,5,43,455.0,Pound
-True,64,5.0,5.0,5.0,5,59,800.0,Dollar
-False,58,4.6,4.78622,4.78622,5,9,455.0,Euro
-True,11,4.6,4.58987,4.58987,5,13,455.0,Dollar
-True,1424,4.1,3.71012,3.71012,5,29,455.0,Pound
-True,22,4.0,3.98473,3.98473,5,10,455.0,Pound
-True,41,4.9,4.91369,4.91369,5,26,455.0,Pound
-False,20,4.1,4.02559,4.02559,5,12,480.0,Pound
-False,24,4.7,4.5073,4.5073,5,10,455.0,Pound
-True,831,4.0,3.83168,3.83168,5,8,455.0,Euro
-False,26,2.5,2.73651,2.73651,5,0,455.0,Dollar
-False,11,4.4,4.35523,4.35523,5,10,455.0,Euro
-False,32,4.4,4.31082,4.31082,5,16,455.0,Dollar
-True,1290,4.6,4.58665,4.58665,5,30,455.0,Euro
-False,40,3.4,3.43307,3.43307,5,41,455.0,Euro
-False,226,3.9,3.91376,3.91376,5,21,455.0,Euro
-True,22,4.3,4.12669,4.12669,5,12,455.0,Pound
-False,21,3.9,3.8357,3.8357,5,15,455.0,Euro
-False,38,4.7,4.77164,4.77164,5,15,455.0,Dollar
-True,12,4.4,4.49532,4.49532,5,6,455.0,Pound
-False,569,4.6,4.66811,4.66811,5,16,455.0,Pound
-True,27,4.2,4.27762,4.27762,5,27,2800.0,Euro
-True,17,4.7,4.76467,4.76467,5,24,455.0,Dollar
-False,20,4.2,4.20331,4.20331,5,11,455.0,Pound
-True,20,4.8,4.79622,4.79622,5,8,3200.0,Dollar
-True,31,4.5,4.48459,4.48459,5,10,455.0,Pound
-False,33,4.8,4.65953,4.65953,5,55,455.0,Dollar
-False,31,4.8,4.82019,4.82019,5,25,455.0,Dollar
-False,9,3.1,3.10161,3.10161,5,11,455.0,Pound
-True,15,4.5,4.57726,4.57726,5,61,455.0,Euro
-False,77,4.7,4.80757,4.80757,5,66,455.0,Euro
-True,22,4.5,4.48792,4.48792,5,6,455.0,Euro
-True,14,4.5,4.48239,4.48239,5,5,3200.0,Dollar
-True,17,4.5,4.47191,4.47191,5,10,455.0,Dollar
-True,14,4.8,4.98336,4.98336,5,26,455.0,Dollar
-False,52,4.4,4.33699,4.33699,5,79,455.0,Euro
-False,28,4.2,4.16579,4.16579,5,30,455.0,Euro
-False,26,4.3,4.29707,4.29707,5,0,455.0,Dollar
-True,8,5.0,5.0,5.0,5,17,455.0,Dollar
-True,1075,3.5,3.81203,3.81203,5,30,455.0,Euro
-True,72,3.75,3.73431,3.73431,4,13,455.0,Pound
-True,1009,3.5,3.73175,3.73175,4,138,455.0,Euro
-True,56,5.0,5.0,5.0,4,11,455.0,Pound
-True,1158,4.0,3.84416,3.84416,4,63,455.0,Pound
-False,36,3.125,3.21664,3.21664,4,11,455.0,Dollar
-False,32,4.75,4.74131,4.74131,4,59,455.0,Dollar
-True,540,4.0,3.11504,3.11504,4,18,455.0,Dollar
-False,22,4.0,4.24058,4.24058,4,43,455.0,Dollar
-True,56,4.0,4.12461,4.12461,4,43,455.0,Pound
-False,11,3.5,3.50875,3.50875,4,17,455.0,Dollar
-True,10,2.25,2.45894,2.45894,4,11,455.0,Pound
-True,25,3.75,4.12156,4.12156,4,5,455.0,Dollar
-True,8,2.625,2.61847,2.61847,4,5,455.0,Dollar
-True,14,3.0,2.95668,2.95668,4,18,455.0,Dollar
-True,318,3.75,3.02953,3.02953,4,10,455.0,Euro
-False,17,3.0,2.90514,2.90514,4,9,455.0,Pound
-False,21,4.375,4.17623,4.17623,4,8,455.0,Pound
-False,13,4.0,3.50866,3.50866,4,7,455.0,Pound
-True,60,4.625,4.67889,4.67889,4,21,455.0,Pound
-False,83,2.75,2.74373,2.74373,4,38,455.0,Pound
-True,29,4.75,4.9274,4.9274,4,15,455.0,Pound
-False,21,4.25,4.23787,4.23787,4,0,455.0,Pound
-True,8,4.0,4.06851,4.06851,4,16,455.0,Dollar
-True,26,3.875,3.90052,3.90052,4,9,455.0,Dollar
-True,14,3.625,3.30085,3.30085,4,36,455.0,Dollar
-True,12,5.0,5.0,5.0,4,11,455.0,Dollar
-False,21,5.0,5.0,5.0,4,45,455.0,Dollar
-True,14,4.375,4.47719,4.47719,4,21,1440.0,Euro
-False,15,4.375,4.37446,4.37446,4,9,455.0,Pound
-False,41,4.0,4.03051,4.03051,4,66,455.0,Dollar
-False,47,4.75,4.82912,4.82912,4,74,455.0,Dollar
-False,26,4.25,3.90762,3.90762,5,19,455.0,Euro
-True,821,4.0,4.5153,4.5153,4,69,455.0,Pound
-False,16,4.125,4.28485,4.28485,4,9,455.0,Pound
-True,14,5.0,5.0,5.0,4,16,455.0,Dollar
-True,11,5.0,5.0,5.0,4,10,455.0,Pound
-False,3911,4.375,4.46771,4.46771,5,19,455.0,Euro
-False,15,4.75,4.79422,4.79422,4,22,455.0,Dollar
-True,235,3.625,2.90943,2.90943,4,17,455.0,Pound
-False,446,3.75,3.99604,3.99604,4,12,455.0,Pound
-False,149,4.5,4.1564,4.1564,4,8,455.0,Dollar
-True,79,4.125,4.14076,4.14076,4,22,455.0,Dollar
-True,10,4.125,4.00066,4.00066,4,8,455.0,Euro
-True,42,3.125,2.51594,2.51594,4,78,455.0,Dollar
-True,1126,3.75,3.63388,3.63388,4,18,455.0,Euro
-False,15,3.75,3.91965,3.91965,4,15,455.0,Euro
-False,47,4.375,4.48527,4.48527,4,13,800.0,Dollar
-True,1727,3.5,3.55987,3.55987,4,45,455.0,Euro
-False,544,4.5,4.5219,4.5219,4,13,455.0,Pound
-True,513,4.0,3.51377,3.51377,4,11,455.0,Pound
-False,288,4.875,4.84741,4.84741,4,10,455.0,Dollar
-True,14,4.25,4.20176,4.20176,4,10,455.0,Pound
-True,44,3.75,3.56347,3.56347,4,17,455.0,Dollar
-False,50,4.375,4.3378,4.3378,4,11,455.0,Pound
-False,28,4.375,4.47476,4.47476,4,0,455.0,Dollar
-True,18,4.0,3.97736,3.97736,4,13,455.0,Pound
-True,1032,4.5,4.5941,4.5941,4,43,455.0,Dollar
-False,26,4.25,3.81646,3.81646,4,7,455.0,Dollar
-False,24,3.875,3.8335,3.8335,4,44,455.0,Pound
-False,20,3.25,3.10441,3.10441,4,5,455.0,Dollar
-False,26,4.0,4.15102,4.15102,4,0,455.0,Dollar
-True,14,3.75,3.6006,3.6006,4,16,455.0,Dollar
-True,29,5.0,5.0,5.0,4,16,455.0,Pound
-True,11,3.375,3.46694,3.46694,4,26,455.0,Dollar
-True,25,4.625,4.5822,4.5822,4,5,455.0,Dollar
-True,23,4.0,4.20583,4.20583,4,0,455.0,Euro
-True,1267,4.5,4.67446,4.67446,4,27,455.0,Euro
-False,8,4.375,4.39973,4.39973,4,11,455.0,Pound
-True,25,3.125,3.15897,3.15897,4,6,455.0,Pound
-False,870,4.625,4.50312,4.50312,4,58,455.0,Euro
-True,9,5.0,5.0,5.0,6,45,455.0,Euro
-True,797,3.75,3.44086,3.44086,4,20,455.0,Euro
-True,33,3.25,3.21174,3.21174,4,22,455.0,Dollar
-True,1248,4.125,4.4617,4.4617,4,0,455.0,Euro
-False,35,4.0,4.10855,4.10855,4,43,455.0,Dollar
-True,16,4.5,4.52358,4.52358,4,18,455.0,Euro
-False,20,3.375,3.35,3.35,4,20,455.0,Pound
-True,23,4.0,3.97938,3.97938,4,62,455.0,Dollar
-False,27,4.75,4.70258,4.70258,4,13,455.0,Dollar
-False,15,5.0,5.0,5.0,4,10,455.0,Dollar
-False,9,4.25,4.25809,4.25809,4,16,455.0,Euro
-True,13,4.75,4.75971,4.75971,4,12,720.0,Pound
-False,23,4.375,4.48962,4.48962,4,5,455.0,Pound
-True,15,4.375,4.36977,4.36977,4,60,455.0,Dollar
-True,1010,5.0,5.0,5.0,4,5,455.0,Pound
-True,63,4.5,4.4682,4.4682,4,31,455.0,Euro
-False,374,3.375,3.36278,3.36278,4,23,455.0,Pound
-True,65,5.0,5.0,5.0,4,12,455.0,Dollar
-False,181,4.25,4.54647,4.54647,4,23,455.0,Dollar
-True,17,4.375,4.3317,4.3317,4,16,455.0,Euro
-False,972,4.625,4.60765,4.60765,4,29,455.0,Euro
-False,13,3.0,3.1608,3.1608,4,6,455.0,Dollar
-False,40,3.75,3.55416,3.55416,4,25,455.0,Dollar
-False,1008,4.5,4.66453,4.66453,4,12,455.0,Dollar
-True,15,3.25,3.36104,3.36104,4,6,455.0,Pound
-True,1593,4.0,4.21451,4.21451,4,5,455.0,Euro
-False,36,3.0,3.00349,3.00349,5,14,455.0,Pound
-False,34,3.875,4.47471,4.47471,4,6,455.0,Euro
-True,25,3.625,4.25302,4.25302,4,54,455.0,Euro
-True,32,4.25,3.6873,3.6873,4,11,455.0,Dollar
-False,1127,4.125,3.70228,3.70228,4,23,455.0,Euro
-True,3442,2.875,2.95963,2.95963,4,49,455.0,Pound
-False,1005,3.75,4.04978,4.04978,4,11,800.0,Euro
-True,40,4.875,4.8617,4.8617,4,9,455.0,Euro
-True,17,4.5,4.4726,4.4726,4,12,455.0,Pound
-False,533,4.5,4.39348,4.39348,4,17,455.0,Pound
-True,34,4.25,4.08805,4.08805,4,26,455.0,Euro
-False,7,3.375,3.52168,3.52168,4,7,455.0,Dollar
-False,28,3.75,3.4817,3.4817,4,35,455.0,Pound
-True,21,4.375,4.4226,4.4226,4,14,455.0,Dollar
-True,27,3.125,2.72681,2.72681,4,0,455.0,Pound
-False,937,3.875,4.00639,4.00639,4,20,455.0,Dollar
-False,33,3.0,2.67224,2.67224,4,0,455.0,Pound
-False,1453,2.25,1.85539,1.85539,4,0,455.0,Pound
-True,1515,4.0,4.01044,4.01044,4,67,455.0,Pound
-True,12,4.125,3.64224,3.64224,4,0,455.0,Dollar
-True,11,4.75,4.70161,4.70161,4,6,455.0,Pound
-False,59,2.875,2.18068,2.18068,4,35,640.0,Dollar
-False,22,4.75,4.75172,4.75172,4,28,455.0,Pound
-True,27,4.25,4.16247,4.16247,4,38,455.0,Pound
-False,14,3.5,3.28638,3.28638,4,18,455.0,Dollar
-True,10,3.875,3.94426,3.94426,4,10,455.0,Pound
-True,57,5.0,5.0,5.0,4,8,455.0,Pound
-False,2168,4.375,4.52543,4.52543,4,37,455.0,Dollar
-True,612,3.25,2.92695,2.92695,4,10,455.0,Pound
-True,26,4.5,4.41661,4.41661,4,78,455.0,Euro
-False,18,4.5,4.56177,4.56177,4,17,455.0,Euro
-False,13,4.5,4.46393,4.46393,4,13,455.0,Dollar
-True,813,4.0,4.32564,4.32564,4,30,455.0,Dollar
-True,29,5.0,5.0,5.0,7,38,455.0,Pound
-False,484,5.0,5.0,5.0,4,37,455.0,Pound
-False,24,4.75,4.71948,4.71948,4,16,455.0,Dollar
-True,9,3.75,3.81009,3.81009,4,9,455.0,Pound
-False,28,5.0,5.0,5.0,4,43,455.0,Euro
-True,12,4.875,4.86372,4.86372,4,15,455.0,Dollar
-False,600,4.625,4.6576,4.6576,4,11,455.0,Dollar
-False,15,5.0,5.0,5.0,4,13,455.0,Pound
-False,17,4.25,4.31741,4.31741,4,15,455.0,Dollar
-False,425,2.875,2.94948,2.94948,4,25,455.0,Euro
-True,74,4.625,4.33158,4.33158,4,18,455.0,Dollar
-False,710,4.25,4.34226,4.34226,4,24,455.0,Pound
-True,1043,3.25,2.52677,2.52677,4,53,455.0,Euro
-False,57,4.75,4.72622,4.72622,4,11,455.0,Pound
-True,10,3.75,3.60656,3.60656,4,33,455.0,Euro
-True,151,4.625,4.34086,4.34086,4,27,455.0,Dollar
-False,33,3.875,4.05839,4.05839,4,5,700.0,Pound
-True,26,3.75,3.81141,3.81141,4,92,455.0,Dollar
-True,675,3.75,3.54313,3.54313,4,24,455.0,Euro
-True,30,4.0,3.87343,3.87343,4,8,455.0,Euro
-False,68,4.25,3.85096,3.85096,4,35,455.0,Dollar
-True,70,4.375,4.2115,4.2115,4,22,455.0,Dollar
-True,44,4.125,4.13204,4.13204,4,8,455.0,Pound
-False,651,3.125,3.52033,3.52033,4,22,455.0,Euro
-True,1700,4.25,4.03417,4.03417,4,12,455.0,Dollar
-False,1288,4.25,3.35029,3.35029,4,31,455.0,Dollar
-True,999,3.5,3.50857,3.50857,4,8,455.0,Dollar
-False,7,5.0,5.0,5.0,4,46,455.0,Dollar
-False,16,3.625,3.66911,3.66911,4,7,455.0,Euro
-False,207,4.25,4.34066,4.34066,4,12,455.0,Dollar
-False,22,4.375,4.35468,4.35468,4,29,455.0,Pound
-False,18,4.5,4.31316,4.31316,4,5,455.0,Dollar
-False,49,4.5,4.3849,4.3849,4,66,455.0,Euro
-False,46,3.75,3.22405,3.22405,4,14,455.0,Pound
-True,27,4.875,4.90781,4.90781,4,24,455.0,Euro
-False,12,4.75,4.69434,4.69434,4,19,2000.0,Dollar
-True,26,4.25,4.28619,4.28619,4,7,455.0,Pound
-True,48,4.375,4.3556,4.3556,4,20,455.0,Euro
-False,12,3.875,3.8756,3.8756,4,5,455.0,Euro
-False,31,4.875,4.84797,4.84797,4,5,455.0,Pound
-False,21,2.625,2.47641,2.47641,4,8,455.0,Euro
-False,660,4.5,4.48211,4.48211,4,25,455.0,Pound
-True,1024,3.375,3.21112,3.21112,4,16,455.0,Pound
-False,1501,2.625,2.61162,2.61162,4,6,455.0,Pound
-False,23,2.0,1.51139,1.51139,4,15,455.0,Dollar
-True,11,4.625,4.62412,4.62412,4,7,455.0,Pound
-False,23,4.875,4.86425,4.86425,4,14,455.0,Euro
-False,14,3.875,3.83588,3.83588,4,13,455.0,Pound
-False,34,5.0,5.0,5.0,4,68,455.0,Pound
-False,24,4.125,4.15213,4.15213,4,30,455.0,Euro
-True,1441,4.75,4.88016,4.88016,4,23,455.0,Pound
-False,1181,3.375,3.02224,3.02224,4,21,455.0,Dollar
-True,640,4.75,4.7532,4.7532,4,49,455.0,Pound
-False,30,2.375,2.10139,2.10139,4,16,455.0,Dollar
-False,23,4.0,3.96926,3.96926,4,9,455.0,Dollar
-True,15,4.25,3.91518,3.91518,4,41,455.0,Euro
-False,23,4.0,3.87975,3.87975,4,18,455.0,Pound
-False,198,4.0,4.0783,4.0783,4,8,455.0,Pound
-True,37,2.875,2.84106,2.84106,4,10,455.0,Euro
-False,453,4.625,4.66216,4.66216,4,11,455.0,Euro
-True,19,4.75,4.70927,4.70927,4,37,455.0,Euro
-True,3861,4.75,4.69269,4.69269,4,14,455.0,Pound
-False,38,4.125,4.17801,4.17801,4,10,455.0,Dollar
-False,20,4.875,4.87189,4.87189,4,11,455.0,Pound
-True,556,4.25,4.39974,4.39974,4,27,455.0,Euro
-False,633,3.375,3.35727,3.35727,4,13,455.0,Dollar
-True,30,4.375,4.29341,4.29341,4,45,455.0,Euro
-True,35,4.375,4.15859,4.15859,4,21,455.0,Euro
-True,66,4.125,3.90196,3.90196,4,14,455.0,Pound
-True,26,3.875,3.96569,3.96569,4,17,455.0,Pound
-False,12,3.125,3.40701,3.40701,4,8,455.0,Pound
-True,23,4.75,4.81686,4.81686,4,10,455.0,Dollar
-False,45,4.875,4.88945,4.88945,4,17,455.0,Dollar
-True,19,5.0,5.0,5.0,4,26,468.0,Dollar
-False,6,3.125,3.26579,3.26579,4,32,455.0,Dollar
-False,13,3.5,3.70487,3.70487,4,14,455.0,Dollar
-False,313,4.875,4.92985,4.92985,4,30,455.0,Euro
-True,886,4.25,4.22392,4.22392,4,6,455.0,Dollar
-False,7,4.0,4.00005,4.00005,5,8,455.0,Euro
-True,207,3.625,3.24536,3.24536,4,11,455.0,Pound
-True,10,5.0,5.0,5.0,4,17,455.0,Euro
-False,10,5.0,5.0,5.0,4,35,455.0,Dollar
-False,10,2.75,2.80788,2.80788,4,23,455.0,Dollar
-True,1028,5.0,5.0,5.0,4,24,455.0,Euro
-True,211,3.0,2.43072,2.43072,4,15,455.0,Dollar
-False,2341,3.625,3.27221,3.27221,4,27,455.0,Dollar
-False,181,3.75,3.53107,3.53107,4,63,455.0,Pound
-False,18,4.0,4.4627,4.4627,4,7,455.0,Dollar
-True,17,4.125,4.09327,4.09327,4,10,455.0,Euro
-True,980,4.125,4.62657,4.62657,4,20,455.0,Euro
-True,69,3.375,3.4326,3.4326,4,14,455.0,Euro
-True,30,4.125,4.00358,4.00358,4,24,455.0,Dollar
-False,6,4.125,4.12816,4.12816,4,14,455.0,Euro
-True,36,4.125,4.10345,4.10345,4,15,455.0,Dollar
-True,75,4.625,4.50243,4.50243,4,15,3200.0,Pound
-True,26,4.125,4.16944,4.16944,4,20,455.0,Pound
-True,1055,5.0,5.0,5.0,4,17,455.0,Dollar
-True,79,4.375,4.34679,4.34679,4,16,455.0,Dollar
-True,16,3.25,2.81497,2.81497,4,16,455.0,Euro
-False,18,3.875,3.75303,3.75303,4,16,455.0,Pound
-False,23,2.0,1.91086,1.91086,4,16,455.0,Euro
-False,17,3.25,3.25838,3.25838,4,17,455.0,Euro
-True,28,3.875,4.62682,4.62682,4,10,455.0,Dollar
-False,23,3.5,3.5744,3.5744,4,16,455.0,Dollar
-False,21,4.75,4.67364,4.67364,4,64,455.0,Dollar
-False,1543,3.5,3.13896,3.13896,4,87,455.0,Dollar
-True,1006,3.375,3.15581,3.15581,4,33,455.0,Dollar
-False,25,4.0,3.80992,3.80992,5,17,455.0,Pound
-True,14,2.75,3.35167,3.35167,4,13,455.0,Dollar
-False,130,4.0,3.79714,3.79714,4,14,455.0,Euro
-True,12,4.75,4.83491,4.83491,4,15,455.0,Pound
-True,30,4.5,4.01095,4.01095,4,15,455.0,Pound
-True,735,3.375,3.46638,3.46638,4,17,455.0,Euro
-True,8,4.0,3.13317,3.13317,4,7,455.0,Pound
-False,28,4.5,4.44737,4.44737,4,0,455.0,Pound
-False,17,4.25,4.37001,4.37001,4,13,455.0,Euro
-True,12,4.25,4.20545,4.20545,4,16,455.0,Dollar
-True,37,3.625,3.09971,3.09971,4,47,455.0,Euro
-True,11,3.625,3.52003,3.52003,4,8,455.0,Dollar
-True,49,3.625,4.35133,4.35133,4,29,455.0,Euro
-False,2782,4.75,4.46975,4.46975,4,14,455.0,Dollar
-True,804,3.875,3.29294,3.29294,4,74,455.0,Pound
-True,58,3.625,3.52521,3.52521,4,49,455.0,Euro
-True,417,4.375,4.45175,4.45175,4,15,455.0,Euro
-True,9,4.875,4.9055,4.9055,4,12,455.0,Euro
-True,2172,3.0,2.5573,2.5573,4,22,455.0,Pound
-True,4,4.5,4.51928,4.51928,4,26,455.0,Pound
-False,18,5.0,5.0,5.0,4,11,455.0,Dollar
-False,10,4.875,4.86954,4.86954,4,13,455.0,Euro
-False,75,4.625,4.53425,4.53425,4,24,455.0,Euro
-True,68,4.375,3.93683,3.93683,4,60,455.0,Euro
-False,29,4.0,4.21251,4.21251,4,36,455.0,Pound
-False,9,3.5,3.52447,3.52447,4,53,455.0,Euro
-False,2540,4.5,4.62574,4.62574,4,30,455.0,Euro
-False,9,4.25,4.26367,4.26367,4,16,455.0,Pound
-False,487,3.875,4.48404,4.48404,4,17,455.0,Pound
-False,1864,3.375,3.42958,3.42958,4,12,455.0,Euro
-False,5,5.0,5.0,5.0,4,6,455.0,Pound
-False,8,3.75,3.70791,3.70791,4,11,455.0,Dollar
-True,375,2.25,2.10604,2.10604,4,14,455.0,Pound
-True,45,3.75,3.81345,3.81345,4,42,455.0,Euro
-False,15,3.75,3.85648,3.85648,4,29,455.0,Dollar
-False,72,4.0,4.17416,4.17416,4,68,455.0,Euro
-True,23,3.875,3.99319,3.99319,4,25,455.0,Euro
-False,88,4.5,4.40577,4.40577,4,15,455.0,Dollar
-True,81,4.125,4.17785,4.17785,4,151,455.0,Euro
-True,12,3.375,3.49986,3.49986,4,9,455.0,Pound
-True,95,4.625,4.48837,4.48837,4,20,455.0,Euro
-True,10,3.5,3.02507,3.02507,4,0,640.0,Dollar
-False,9,4.375,4.40633,4.40633,4,48,455.0,Dollar
-True,13,3.375,3.60551,3.60551,4,15,455.0,Pound
-False,19,4.75,4.69983,4.69983,4,13,455.0,Pound
-False,19,4.0,4.08524,4.08524,4,7,455.0,Dollar
-False,310,4.875,4.7577,4.7577,4,28,455.0,Dollar
-True,193,4.375,4.34402,4.34402,4,37,455.0,Dollar
-False,10,4.125,3.95878,3.95878,4,9,455.0,Euro
-False,37,4.5,4.48685,4.48685,4,23,455.0,Euro
-True,25,4.75,4.73631,4.73631,4,28,455.0,Pound
-True,37,4.0,4.14212,4.14212,4,25,455.0,Dollar
-True,391,2.5,1.48962,1.48962,4,20,700.0,Dollar
-False,18,4.375,4.38662,4.38662,4,22,455.0,Euro
-False,12,3.5,3.72847,3.72847,4,13,455.0,Pound
-True,27,3.125,3.38827,3.38827,4,7,455.0,Euro
-False,632,4.25,4.21042,4.21042,4,78,455.0,Euro
-False,147,4.875,4.83916,4.83916,4,7,455.0,Pound
-False,23,4.75,4.6824,4.6824,4,31,455.0,Euro
-False,19,3.375,3.45045,3.45045,4,12,455.0,Euro
-False,1108,3.25,2.62374,2.62374,4,30,455.0,Pound
-True,11,4.625,4.60995,4.60995,4,8,700.0,Pound
-True,16,4.0,3.99753,3.99753,4,70,455.0,Dollar
-False,781,4.125,4.23782,4.23782,4,13,455.0,Pound
-False,18,4.125,4.10342,4.10342,4,0,455.0,Pound
-True,789,3.5,3.73962,3.73962,4,8,455.0,Euro
-False,31,3.5,3.08774,3.08774,6,0,455.0,Pound
-False,12,4.625,4.65696,4.65696,4,8,455.0,Pound
-True,15,3.75,3.44617,3.44617,4,11,455.0,Dollar
-False,10,4.375,4.37214,4.37214,4,23,455.0,Euro
-False,123,4.625,4.28967,4.28967,4,11,455.0,Pound
-True,1310,4.375,4.4895,4.4895,4,28,455.0,Euro
-True,20,4.5,4.56424,4.56424,4,20,455.0,Pound
-True,15,4.25,4.21293,4.21293,4,0,455.0,Pound
-False,13,4.875,4.90841,4.90841,4,13,455.0,Euro
-True,191,4.5,4.50311,4.50311,4,72,455.0,Dollar
-False,375,4.0,3.92559,3.92559,4,44,455.0,Dollar
-True,17,4.625,4.73106,4.73106,4,18,455.0,Euro
-True,1109,3.125,2.69092,2.69092,4,14,455.0,Pound
-False,255,4.0,3.88024,3.88024,3,16,455.0,Pound
-True,27,4.5,4.41477,4.41477,3,26,455.0,Euro
-True,7,4.5,4.16,4.16,3,8,455.0,Pound
-False,8,4.33333,4.35204,4.35204,3,10,455.0,Dollar
-True,24,4.0,4.06283,4.06283,3,44,455.0,Dollar
-True,33,2.33333,2.2569,2.2569,3,16,455.0,Dollar
-True,34,4.5,4.37877,4.37877,3,5,455.0,Dollar
-False,26,4.16667,4.20392,4.20392,3,27,455.0,Pound
-False,25,5.0,5.0,5.0,3,19,455.0,Dollar
-True,7,3.33333,3.06198,3.06198,3,25,455.0,Pound
-False,63,4.83333,4.77575,4.77575,3,36,455.0,Pound
-False,12,4.66667,4.68589,4.68589,3,25,455.0,Dollar
-False,12,4.16667,4.19498,4.19498,3,25,455.0,Dollar
-False,18,5.0,5.0,5.0,3,27,455.0,Euro
-True,53,3.16667,3.18048,3.18048,3,33,455.0,Euro
-False,19,3.5,3.48028,3.48028,3,21,455.0,Euro
-False,51,3.66667,3.83422,3.83422,3,71,455.0,Euro
-True,970,4.33333,4.33058,4.33058,3,16,455.0,Pound
-False,136,5.0,5.0,5.0,3,55,455.0,Pound
-True,12,3.83333,3.82313,3.82313,3,6,455.0,Euro
-False,21,4.66667,4.62325,4.62325,3,14,455.0,Euro
-True,11,3.33333,3.29097,3.29097,3,14,455.0,Euro
-True,68,3.5,3.27448,3.27448,3,14,455.0,Euro
-False,14,3.66667,3.66457,3.66457,3,33,455.0,Euro
-False,19,4.33333,4.29259,4.29259,3,6,455.0,Euro
-False,11,3.83333,3.81333,3.81333,3,29,455.0,Euro
-False,583,4.66667,4.60008,4.60008,3,14,455.0,Dollar
-True,6310,4.0,3.9635,3.9635,3,55,455.0,Euro
-False,8,4.5,4.46837,4.46837,3,27,455.0,Pound
-False,202,3.66667,3.72648,3.72648,3,24,455.0,Dollar
-False,25,4.16667,4.24068,4.24068,3,62,455.0,Dollar
-True,11,4.5,4.50505,4.50505,3,17,455.0,Dollar
-True,768,4.16667,4.12076,4.12076,3,22,455.0,Pound
-True,50,2.83333,2.39713,2.39713,3,0,455.0,Euro
-True,10,4.16667,4.16295,4.16295,3,17,455.0,Euro
-False,13,4.16667,4.20303,4.20303,3,15,455.0,Pound
-False,31,4.0,3.9745,3.9745,3,27,640.0,Dollar
-False,8,4.0,4.1119,4.1119,3,23,700.0,Euro
-False,931,4.0,4.10188,4.10188,3,10,455.0,Dollar
-False,87,4.66667,4.57402,4.57402,3,86,455.0,Euro
-False,27,5.0,5.0,5.0,4,15,455.0,Pound
-True,8,4.16667,4.18858,4.18858,3,18,455.0,Dollar
-True,31,5.0,5.0,5.0,3,5,455.0,Pound
-False,12,4.83333,4.76368,4.76368,3,5,455.0,Pound
-False,14,5.0,5.0,5.0,3,35,455.0,Euro
-False,17,2.83333,3.24803,3.24803,3,13,455.0,Euro
-True,17,2.0,2.03989,2.03989,3,15,455.0,Pound
-True,9,3.66667,4.60363,4.60363,3,10,455.0,Dollar
-True,36,3.5,3.59184,3.59184,3,74,455.0,Euro
-False,6,4.5,4.5161,4.5161,3,19,455.0,Dollar
-False,502,5.0,5.0,5.0,3,6,455.0,Euro
-True,414,4.83333,4.83271,4.83271,3,12,455.0,Pound
-False,4836,3.33333,3.31193,3.31193,3,11,455.0,Euro
-True,61,4.5,4.39497,4.39497,5,44,455.0,Euro
-False,14,4.0,3.7403,3.7403,3,10,455.0,Pound
-True,6,4.16667,4.11038,4.11038,3,26,455.0,Euro
-False,103,2.33333,1.80663,1.80663,3,17,455.0,Euro
-True,311,4.66667,4.68967,4.68967,3,18,455.0,Pound
-True,175,2.33333,1.23494,1.23494,3,52,455.0,Pound
-True,130,3.5,3.43944,3.43944,3,8,455.0,Dollar
-True,53,3.66667,3.70554,3.70554,3,19,455.0,Euro
-False,1120,4.5,4.48914,4.48914,3,22,455.0,Pound
-True,33,4.33333,4.26262,4.26262,3,197,455.0,Dollar
-False,30,3.83333,3.05618,3.05618,3,70,455.0,Euro
-True,11,4.66667,4.6323,4.6323,3,76,455.0,Dollar
-False,6,4.5,4.61735,4.61735,3,37,455.0,Pound
-False,5,4.66667,4.70082,4.70082,3,66,455.0,Euro
-True,39,4.16667,4.36481,4.36481,3,23,455.0,Euro
-True,54,3.5,3.03073,3.03073,3,0,455.0,Pound
-True,1593,3.66667,3.86322,3.86322,3,28,455.0,Euro
-True,20,4.5,4.54859,4.54859,3,17,455.0,Pound
-False,340,4.33333,4.47984,4.47984,3,23,455.0,Dollar
-True,1130,4.66667,4.63867,4.63867,3,15,455.0,Dollar
-True,16,3.66667,3.59718,3.59718,3,8,455.0,Euro
-True,12,3.33333,3.2716,3.2716,3,9,455.0,Dollar
-True,36,3.83333,3.88299,3.88299,3,23,455.0,Euro
-False,32,4.16667,4.07336,4.07336,3,214,3200.0,Pound
-True,222,4.33333,4.07862,4.07862,3,12,455.0,Dollar
-False,20,3.83333,3.65211,3.65211,3,7,455.0,Pound
-False,16,3.33333,3.66176,3.66176,3,8,455.0,Pound
-False,33,4.16667,4.38415,4.38415,3,20,455.0,Pound
-True,22,3.83333,3.92316,3.92316,3,21,455.0,Dollar
-False,15,2.5,2.49425,2.49425,3,9,700.0,Pound
-True,18,2.83333,2.83051,2.83051,3,9,455.0,Euro
-True,15,4.5,4.28113,4.28113,3,21,455.0,Dollar
-True,23,4.16667,4.35721,4.35721,3,13,455.0,Dollar
-False,983,4.83333,4.95586,4.95586,3,34,455.0,Dollar
-False,5,4.0,3.58018,3.58018,3,5,455.0,Pound
-False,22,3.83333,3.82559,3.82559,3,72,455.0,Pound
-True,5,4.33333,4.3838,4.3838,3,19,455.0,Euro
-True,10,4.5,4.10864,4.10864,3,12,455.0,Euro
-False,28,3.33333,3.27991,3.27991,3,9,455.0,Pound
-False,1053,2.5,2.09998,2.09998,3,17,455.0,Dollar
-True,20,3.66667,3.68769,3.68769,3,35,455.0,Pound
-True,7,2.66667,2.66715,2.66715,3,15,455.0,Pound
-True,21,3.83333,3.73446,3.73446,3,12,455.0,Dollar
-True,11,4.5,4.53339,4.53339,3,21,455.0,Pound
-False,35,5.0,5.0,5.0,3,23,455.0,Dollar
-True,7,4.83333,4.83705,4.83705,3,26,455.0,Pound
-False,13,4.5,4.52585,4.52585,3,27,455.0,Pound
-True,412,4.33333,4.56203,4.56203,3,28,455.0,Euro
-True,17,4.33333,4.34025,4.34025,3,0,455.0,Pound
-False,93,4.5,4.49961,4.49961,3,29,455.0,Euro
-True,557,3.66667,3.2872,3.2872,3,5,455.0,Dollar
-True,11,5.0,5.0,5.0,3,116,455.0,Euro
-False,10,4.5,4.59459,4.59459,3,8,455.0,Euro
-False,4150,4.33333,4.6008,4.6008,3,12,455.0,Pound
-False,6,5.0,5.0,5.0,3,20,455.0,Dollar
-False,118,4.83333,4.93331,4.93331,3,17,455.0,Pound
-True,31,3.83333,3.76258,3.76258,3,22,455.0,Pound
-True,80,4.16667,3.92926,3.92926,3,19,455.0,Pound
-True,40,5.0,5.0,5.0,3,15,455.0,Pound
-False,11,3.66667,3.6576,3.6576,3,22,455.0,Euro
-False,544,3.66667,4.36858,4.36858,3,43,455.0,Pound
-False,96,4.5,4.28719,4.28719,3,58,455.0,Euro
-False,18,4.5,4.4162,4.4162,3,17,455.0,Pound
-False,17,4.0,3.99655,3.99655,3,29,455.0,Pound
-False,7,1.66667,1.90323,1.90323,3,6,455.0,Euro
-True,66,5.0,5.0,5.0,3,31,455.0,Dollar
-True,15,2.33333,2.27765,2.27765,3,10,455.0,Pound
-True,1816,3.83333,4.28506,4.28506,3,21,455.0,Dollar
-True,1150,4.16667,4.26625,4.26625,3,11,455.0,Dollar
-False,41,4.83333,4.82398,4.82398,3,7,455.0,Dollar
-False,24,4.5,4.50041,4.50041,3,33,455.0,Euro
-False,7,4.83333,4.8249,4.8249,3,12,455.0,Pound
-False,23,4.33333,3.97397,3.97397,3,57,455.0,Dollar
-False,28,4.16667,4.0641,4.0641,3,0,455.0,Euro
-True,30,4.0,4.08132,4.08132,3,62,455.0,Dollar
-False,13,3.83333,3.60673,3.60673,3,20,455.0,Pound
-False,28,3.0,3.08333,3.08333,3,0,455.0,Pound
-True,19,3.83333,3.82375,3.82375,3,9,455.0,Euro
-True,13,4.16667,4.23214,4.23214,3,19,455.0,Dollar
-True,15,5.0,5.0,5.0,3,10,455.0,Euro
-True,21,4.83333,4.74666,4.74666,3,12,455.0,Pound
-True,6,3.83333,4.19906,4.19906,3,12,455.0,Dollar
-True,2556,3.66667,3.9902,3.9902,3,14,455.0,Dollar
-False,37,3.5,3.54751,3.54751,3,16,455.0,Dollar
-True,1447,2.5,2.06837,2.06837,3,18,455.0,Pound
-False,9,2.0,2.09584,2.09584,3,7,455.0,Euro
-False,23,4.33333,4.37297,4.37297,3,7,455.0,Euro
-True,29,4.5,4.5114,4.5114,3,28,455.0,Euro
-False,281,4.83333,4.80665,4.80665,3,80,455.0,Dollar
-False,2606,4.0,3.33752,3.33752,3,34,455.0,Dollar
-False,7,3.83333,3.70449,3.70449,3,13,455.0,Pound
-False,2256,3.5,3.92902,3.92902,3,12,455.0,Dollar
-False,28,3.83333,3.83743,3.83743,3,23,455.0,Pound
-True,6,4.83333,4.84938,4.84938,3,6,455.0,Euro
-False,10,2.33333,2.26772,2.26772,3,6,455.0,Euro
-False,48,3.16667,3.38101,3.38101,3,10,455.0,Pound
-False,18,4.0,3.92873,3.92873,3,0,455.0,Dollar
-True,1223,3.5,3.34757,3.34757,3,17,455.0,Pound
-False,16,3.83333,3.87884,3.87884,3,24,455.0,Pound
-True,10,3.66667,3.66281,3.66281,3,20,455.0,Euro
-True,8,4.83333,4.81719,4.81719,3,16,455.0,Dollar
-False,15,4.33333,4.21095,4.21095,3,28,455.0,Pound
-False,14,3.33333,3.07094,3.07094,3,18,455.0,Dollar
-False,1049,4.5,4.32356,4.32356,3,11,455.0,Euro
-False,547,5.0,5.0,5.0,3,12,455.0,Pound
-False,81,4.16667,4.17074,4.17074,3,45,455.0,Pound
-True,24,2.66667,2.75134,2.75134,3,10,455.0,Dollar
-True,6,4.5,4.48511,4.48511,3,56,455.0,Dollar
-False,29,3.5,3.10651,3.10651,3,0,455.0,Pound
-False,15,3.83333,3.85844,3.85844,3,11,455.0,Euro
-False,13,4.33333,4.38507,4.38507,3,8,455.0,Euro
-False,24,4.66667,4.66034,4.66034,3,35,455.0,Pound
-False,1582,4.0,3.81315,3.81315,3,12,455.0,Pound
-False,9,3.33333,3.43178,3.43178,3,11,455.0,Euro
-True,382,5.0,5.0,5.0,3,13,455.0,Dollar
-False,39,4.0,4.0499,4.0499,3,24,455.0,Pound
-False,10,4.16667,4.2052,4.2052,3,6,455.0,Pound
-True,1007,2.66667,2.10952,2.10952,3,40,455.0,Euro
-True,6,3.33333,3.21133,3.21133,3,8,455.0,Euro
-False,30,4.0,3.66165,3.66165,3,0,455.0,Dollar
-False,28,3.5,3.51522,3.51522,3,34,455.0,Pound
-False,963,4.5,4.34025,4.34025,3,5,455.0,Euro
-False,12,4.83333,4.82719,4.82719,3,13,455.0,Dollar
-True,10,4.33333,4.31779,4.31779,3,7,455.0,Euro
-True,63,5.0,5.0,5.0,3,5,455.0,Pound
-False,12,3.83333,3.82606,3.82606,3,5,455.0,Dollar
-False,25,3.16667,2.84437,2.84437,3,24,455.0,Dollar
-True,35,4.16667,4.1879,4.1879,3,42,455.0,Dollar
-False,15,3.66667,3.72142,3.72142,3,0,455.0,Euro
-True,3,5.0,5.0,5.0,3,34,455.0,Euro
-False,9,5.0,5.0,5.0,3,8,455.0,Dollar
-True,882,3.0,2.65222,2.65222,3,11,455.0,Dollar
-False,3042,4.83333,4.91006,4.91006,3,25,455.0,Pound
-True,4,4.33333,3.81115,3.81115,3,17,455.0,Pound
-True,6183,3.5,3.48836,3.48836,3,27,455.0,Dollar
-True,23,1.66667,1.63001,1.63001,3,13,455.0,Euro
-True,3,3.5,3.08148,3.08148,3,16,455.0,Pound
-True,11,3.5,3.50986,3.50986,3,26,455.0,Pound
-False,5,4.66667,4.63377,4.63377,3,8,455.0,Dollar
-True,13,3.0,2.89183,2.89183,3,37,455.0,Pound
-False,7,5.0,5.0,5.0,3,12,455.0,Euro
-False,13,4.16667,4.2615,4.2615,3,7,455.0,Pound
-False,5,3.5,3.72397,3.72397,3,9,455.0,Dollar
-False,30,4.83333,4.92803,4.92803,3,12,455.0,Pound
-False,240,4.66667,4.66965,4.66965,3,5,455.0,Pound
-False,964,3.5,3.4002,3.4002,3,35,455.0,Euro
-True,780,3.5,3.49241,3.49241,3,11,455.0,Pound
-False,501,3.83333,2.59828,2.59828,3,17,455.0,Pound
-False,22,4.5,4.09046,4.09046,3,12,455.0,Euro
-False,622,3.66667,3.55651,3.55651,3,78,455.0,Dollar
-True,29,4.0,3.87725,3.87725,3,16,455.0,Pound
-False,724,3.0,1.93635,1.93635,3,38,455.0,Euro
-False,786,4.66667,4.64235,4.64235,3,23,455.0,Dollar
-False,18,4.83333,4.8104,4.8104,3,15,455.0,Dollar
-False,190,4.0,3.93788,3.93788,3,37,455.0,Euro
-True,8,5.0,5.0,5.0,3,49,455.0,Dollar
-False,862,4.5,4.40372,4.40372,3,7,455.0,Pound
-True,10,4.16667,4.03799,4.03799,3,21,455.0,Dollar
-True,22,4.33333,4.27632,4.27632,3,10,455.0,Pound
-True,14,3.66667,3.50224,3.50224,3,13,455.0,Pound
-True,151,4.83333,4.82906,4.82906,3,16,455.0,Pound
-True,14,4.33333,4.41675,4.41675,3,12,455.0,Dollar
-True,1143,2.83333,3.3039,3.3039,3,22,455.0,Dollar
-True,10,4.83333,4.86237,4.86237,3,25,455.0,Euro
-True,21,3.83333,3.56705,3.56705,3,5,455.0,Pound
-True,11,1.0,1.0,1.0,3,20,1200.0,Pound
-True,16,3.66667,3.2978,3.2978,3,9,455.0,Euro
-True,6,3.83333,3.96168,3.96168,3,6,455.0,Pound
-False,6,5.0,5.0,5.0,3,25,455.0,Pound
-False,30,3.66667,3.66316,3.66316,3,0,455.0,Pound
-False,9,4.33333,3.96468,3.96468,3,5,455.0,Dollar
-True,7,4.66667,4.51567,4.51567,3,6,455.0,Pound
-False,7,4.0,4.1764,4.1764,3,70,455.0,Pound
-False,10,2.66667,2.85141,2.85141,3,8,455.0,Pound
-False,16,5.0,5.0,5.0,4,13,455.0,Dollar
-False,162,2.0,1.82965,1.82965,3,11,455.0,Euro
-True,11,4.0,3.93085,3.93085,3,8,455.0,Euro
-False,9,4.33333,4.37592,4.37592,3,10,455.0,Dollar
-True,14,4.16667,4.21957,4.21957,3,8,455.0,Dollar
-False,4,4.16667,4.19849,4.19849,3,9,455.0,Euro
-False,101,4.66667,4.64329,4.64329,3,9,455.0,Euro
-True,371,4.83333,4.86128,4.86128,3,19,455.0,Euro
-True,1780,3.83333,3.42176,3.42176,3,23,455.0,Dollar
-False,5,4.16667,4.28804,4.28804,3,13,455.0,Dollar
-True,3,5.0,5.0,5.0,3,20,455.0,Pound
-True,6,4.83333,4.81654,4.81654,3,25,455.0,Euro
-True,13,4.5,4.46144,4.46144,3,14,455.0,Pound
-True,9,4.83333,4.81737,4.81737,3,26,455.0,Euro
-True,3289,2.66667,2.58002,2.58002,3,18,455.0,Pound
-False,550,4.0,4.2496,4.2496,3,6,455.0,Dollar
-True,96,3.33333,2.87283,2.87283,3,0,455.0,Euro
-False,24,4.83333,4.6877,4.6877,3,25,455.0,Euro
-True,9,4.66667,4.63755,4.63755,3,7,455.0,Euro
-True,74,4.5,4.52676,4.52676,3,46,960.0,Euro
-False,44,4.0,4.08035,4.08035,3,13,455.0,Pound
-True,43,3.5,3.58698,3.58698,3,11,455.0,Dollar
-True,250,4.33333,4.34874,4.34874,3,17,455.0,Pound
-False,372,4.66667,4.73505,4.73505,3,44,455.0,Dollar
-True,20,4.5,4.31763,4.31763,3,27,455.0,Euro
-False,18,4.0,3.90774,3.90774,3,13,455.0,Pound
-False,12,4.16667,4.16332,4.16332,3,18,455.0,Dollar
-False,90,4.83333,4.89238,4.89238,3,31,455.0,Euro
-False,16,4.33333,4.07945,4.07945,3,54,455.0,Pound
-True,10,4.5,4.54052,4.54052,3,10,455.0,Dollar
-False,32,4.0,4.22017,4.22017,3,18,455.0,Pound
-True,899,3.16667,2.94206,2.94206,3,13,455.0,Dollar
-False,12,2.16667,2.41886,2.41886,3,12,455.0,Pound
-False,12,2.66667,2.91897,2.91897,3,12,455.0,Pound
-False,29,4.16667,4.17866,4.17866,3,30,455.0,Pound
-True,28,4.83333,4.87521,4.87521,3,42,455.0,Pound
-True,18,4.83333,4.82995,4.82995,3,11,455.0,Pound
-False,21,3.83333,3.48249,3.48249,3,10,455.0,Dollar
-True,26,3.83333,4.61748,4.61748,3,17,455.0,Dollar
-True,20,4.16667,4.5282,4.5282,3,25,455.0,Euro
-False,30,4.5,4.33421,4.33421,3,69,455.0,Euro
-False,27,4.16667,4.14601,4.14601,3,6,455.0,Euro
-True,15,3.16667,3.673,3.673,3,0,455.0,Pound
-True,16,4.33333,4.22042,4.22042,3,59,455.0,Pound
-True,60,5.0,5.0,5.0,3,18,455.0,Dollar
-True,11,4.33333,4.60479,4.60479,3,5,455.0,Pound
-True,116,4.66667,4.63019,4.63019,3,46,455.0,Euro
-False,14,3.66667,4.67611,4.67611,3,10,455.0,Dollar
-False,275,5.0,5.0,5.0,3,7,455.0,Dollar
-False,13,4.5,4.56275,4.56275,3,17,455.0,Pound
-False,19,4.33333,4.49935,4.49935,3,12,455.0,Dollar
-False,1129,3.5,3.4352,3.4352,3,35,455.0,Pound
-True,9,2.16667,2.16014,2.16014,3,26,455.0,Euro
-True,1017,4.16667,3.88844,3.88844,3,5,455.0,Euro
-True,1716,3.66667,3.52632,3.52632,3,7,455.0,Euro
-True,14,5.0,5.0,5.0,3,5,455.0,Pound
-True,110481,4.42734,4.43113,4.43113,20613,97,455.0,Dollar
-True,65759,4.54934,4.53125,4.53125,20538,37,455.0,Pound
-False,35528,3.82857,3.86513,3.86513,15719,123,455.0,Pound
-False,42080,3.61321,3.76274,3.76274,12109,87,455.0,Euro
-True,40145,4.43291,4.4312,4.4312,8476,71,455.0,Pound
-False,29703,4.5,4.50282,4.50282,4201,27,455.0,Dollar
-True,13898,1.65,1.82614,1.82614,4048,22,455.0,Pound
-False,15715,4.39457,4.40441,4.40441,3566,86,481.0,Pound
-False,24677,4.42126,4.35514,4.35514,3158,32,455.0,Euro
-False,14864,4.22061,4.12986,4.12986,2896,45,488.0,Dollar
-True,17713,4.39583,4.38228,4.38228,2488,636,468.0,Pound
-True,16131,4.40273,4.35318,4.35318,2430,72,455.0,Dollar
-True,19323,4.41798,4.36966,4.36966,2411,131,455.0,Euro
-True,20372,4.49686,4.46504,4.46504,2399,123,455.0,Pound
-False,49882,4.54327,4.53819,4.53819,2120,74,455.0,Pound
-False,13922,4.50966,4.53386,4.53386,2114,30,455.0,Dollar
-False,9292,4.38,4.33453,4.33453,2059,89,455.0,Euro
-True,19607,4.51389,4.45429,4.45429,1793,160,455.0,Dollar
-True,33093,4.37048,4.322,4.322,1761,167,455.0,Pound
-True,6616,4.27425,4.27192,4.27192,1534,58,552.0,Pound
-False,5568,4.72453,4.75703,4.75703,1452,43,455.0,Euro
-False,6424,3.65,3.77331,3.77331,1404,32,455.0,Pound
-False,5574,4.06478,4.00721,4.00721,1259,84,481.0,Euro
-False,15469,4.45192,4.43139,4.43139,1249,115,481.0,Pound
-True,4649,4.48815,4.53793,4.53793,1249,22,455.0,Dollar
-True,5288,4.36042,4.35591,4.35591,1233,47,494.0,Dollar
-False,5826,4.52632,4.5449,4.5449,1224,63,455.0,Dollar
-False,59852,4.42397,4.38314,4.38314,1056,124,455.0,Euro
-False,3317,4.48815,4.4913,4.4913,1029,70,468.0,Pound
-True,4100,4.50649,4.6036,4.6036,953,20,455.0,Euro
-False,6783,4.03226,4.00602,4.00602,843,34,455.0,Euro
-False,3128,4.47391,4.47948,4.47948,816,80,455.0,Euro
-True,7085,4.3022,4.32282,4.32282,807,63,455.0,Euro
-True,3273,4.27647,4.25814,4.25814,800,52,455.0,Dollar
-True,3746,3.94937,3.92227,3.92227,754,23,455.0,Euro
-False,4228,4.23611,4.20959,4.20959,724,84,455.0,Pound
-True,45746,4.31818,4.60499,4.60499,718,109,455.0,Pound
-False,3484,4.62319,4.61425,4.61425,687,26,455.0,Pound
-True,3430,4.78571,4.81586,4.81586,682,27,455.0,Pound
-True,4402,4.34211,4.31121,4.31121,679,59,468.0,Pound
-False,2008,4.67816,4.33264,4.33264,655,57,494.0,Dollar
-True,3584,4.65753,4.35698,4.35698,650,43,455.0,Dollar
-False,18718,4.17647,4.22793,4.22793,643,19,455.0,Pound
-True,35573,4.16154,4.15529,4.15529,631,29,455.0,Euro
-True,6129,4.55319,4.56345,4.56345,614,326,455.0,Euro
-False,3531,4.64651,4.65541,4.65541,617,39,455.0,Dollar
-True,3280,4.67857,4.63529,4.63529,603,79,455.0,Pound
-True,3569,3.63636,3.89769,3.89769,574,44,455.0,Euro
-False,3957,4.44304,4.49689,4.49689,572,75,455.0,Pound
-True,30211,4.30426,4.28141,4.28141,567,212,455.0,Pound
-False,3772,4.27632,4.24053,4.24053,566,10,488.0,Pound
-False,4471,4.26458,4.27802,4.27802,565,58,455.0,Pound
-False,3980,4.42105,4.31924,4.31924,564,18,455.0,Euro
-False,30595,4.41129,4.35961,4.35961,536,139,455.0,Dollar
-True,3163,4.42,4.41648,4.41648,533,34,455.0,Dollar
-False,14167,4.704,4.69045,4.69045,526,71,455.0,Pound
-True,9135,4.625,4.62063,4.62063,524,44,455.0,Dollar
-True,2387,4.23485,4.20616,4.20616,521,58,455.0,Pound
-False,4134,4.50917,4.50718,4.50718,498,41,455.0,Pound
-True,1833,4.17763,4.00492,4.00492,490,83,455.0,Euro
-False,4094,4.33333,4.32925,4.32925,480,63,455.0,Euro
-True,4799,4.46154,4.42733,4.42733,470,55,455.0,Euro
-False,1732,4.30469,4.27983,4.27983,461,107,455.0,Dollar
-True,1826,4.06053,4.07333,4.07333,459,99,455.0,Dollar
-True,2300,4.53279,4.52018,4.52018,446,9,468.0,Euro
-False,2190,4.12791,3.94628,3.94628,441,84,455.0,Euro
-False,29361,4.36207,4.33929,4.33929,431,26,455.0,Pound
-False,1812,3.55,3.5182,3.5182,410,20,455.0,Pound
-False,5918,4.25806,4.31103,4.31103,410,50,468.0,Pound
-True,7315,4.19828,3.99693,3.99693,407,40,455.0,Dollar
-False,1914,4.13208,4.10649,4.10649,400,36,488.0,Pound
-False,4821,4.4,4.40243,4.40243,396,17,455.0,Euro
-True,1369,4.74419,4.31684,4.31684,389,28,455.0,Pound
-True,2505,4.37234,4.36677,4.36677,380,61,455.0,Dollar
-False,2254,4.76471,4.56611,4.56611,377,68,455.0,Dollar
-True,1569,4.15,4.09105,4.09105,360,53,455.0,Pound
-True,2705,4.49111,4.48177,4.48177,362,80,455.0,Pound
-True,4407,4.125,4.13282,4.13282,355,66,455.0,Euro
-False,2391,4.38043,4.21433,4.21433,342,59,455.0,Dollar
-True,43459,3.85526,3.93681,3.93681,342,11,455.0,Dollar
-True,1095,3.97872,3.907,3.907,339,61,455.0,Dollar
-True,1345,4.33333,4.33397,4.33397,338,22,455.0,Euro
-False,3255,4.53804,4.55202,4.55202,337,383,455.0,Dollar
-True,2941,4.35,4.13787,4.13787,333,18,455.0,Pound
-False,2094,4.3,4.27281,4.27281,328,80,455.0,Euro
-True,4119,4.30769,4.31858,4.31858,326,48,455.0,Euro
-True,7062,4.1,4.12543,4.12543,320,40,455.0,Euro
-True,1785,4.59211,4.19776,4.19776,320,25,455.0,Euro
-False,1824,3.98148,4.00663,4.00663,316,35,455.0,Euro
-False,1212,4.31944,4.31998,4.31998,314,17,455.0,Dollar
-False,936,3.25,3.27428,3.27428,302,5,455.0,Dollar
-False,2180,3.88235,4.01221,4.01221,300,21,455.0,Euro
-False,1303,4.5303,4.52553,4.52553,294,96,455.0,Dollar
-True,924,4.55785,4.54318,4.54318,286,24,455.0,Euro
-False,1715,4.32979,4.36646,4.36646,286,75,462.0,Pound
-True,2107,4.16667,4.25548,4.25548,285,72,455.0,Pound
-False,1253,4.60526,4.63054,4.63054,283,25,455.0,Pound
-False,883,4.22789,4.18041,4.18041,280,23,455.0,Pound
-False,3463,4.25833,4.31675,4.31675,278,117,455.0,Euro
-True,3500,4.54762,4.5385,4.5385,273,114,455.0,Pound
-True,4755,4.3,4.25813,4.25813,272,19,455.0,Pound
-False,3663,4.64516,4.61849,4.61849,272,11,455.0,Pound
-False,1884,4.32857,4.3298,4.3298,264,31,455.0,Dollar
-False,30853,4.45139,4.53158,4.53158,258,386,455.0,Euro
-False,1542,4.05,4.21282,4.21282,256,11,455.0,Euro
-True,9549,4.45,4.68147,4.68147,253,55,455.0,Euro
-True,1665,4.35,4.34091,4.34091,248,17,455.0,Pound
-False,1794,4.42,4.40223,4.40223,244,57,455.0,Euro
-True,3108,4.59589,4.58349,4.58349,244,35,481.0,Pound
-False,1177,3.55,3.60552,3.60552,239,34,455.0,Euro
-True,2728,4.47087,4.45442,4.45442,239,84,455.0,Pound
-False,1035,4.61842,4.61998,4.61998,238,25,455.0,Pound
-False,1138,4.30189,4.25991,4.25991,238,10,455.0,Dollar
-False,803,4.52041,4.49936,4.49936,237,99,2640.0,Dollar
-False,1693,4.5,4.52122,4.52122,235,21,455.0,Euro
-False,929,4.91667,4.88932,4.88932,226,16,455.0,Euro
-False,1173,4.57692,4.56211,4.56211,226,57,455.0,Euro
-False,823,4.01087,4.05995,4.05995,225,11,455.0,Pound
-False,1498,4.09091,4.02671,4.02671,223,66,455.0,Euro
-False,1907,4.35,4.17488,4.17488,224,62,455.0,Pound
-True,834,4.7069,4.69332,4.69332,223,16,455.0,Pound
-True,12524,4.05,3.92497,3.92497,218,19,455.0,Euro
-False,3087,4.75,4.80175,4.80175,218,157,462.0,Euro
-True,3058,4.13924,4.09562,4.09562,216,11,455.0,Euro
-False,2472,4.14545,4.11537,4.11537,214,101,455.0,Euro
-True,9296,4.12667,4.26987,4.26987,214,34,455.0,Dollar
-True,2094,4.125,4.10134,4.10134,212,37,455.0,Pound
-True,1857,4.28571,4.29575,4.29575,211,34,455.0,Euro
-False,14434,4.06667,4.0353,4.0353,210,63,455.0,Dollar
-False,12421,3.92439,3.95752,3.95752,205,15,455.0,Pound
-True,865,4.37324,4.39247,4.39247,204,22,455.0,Dollar
-True,1773,4.75123,4.74566,4.74566,207,38,455.0,Dollar
-True,1027,4.36207,4.38866,4.38866,204,188,455.0,Pound
-True,873,3.8,3.81352,3.81352,198,69,455.0,Pound
-True,4161,4.52174,4.51063,4.51063,196,79,455.0,Euro
-True,2005,3.85,3.74424,3.74424,194,33,455.0,Euro
-True,3637,4.0,4.1467,4.1467,191,19,455.0,Dollar
-False,1846,4.35,4.24817,4.24817,190,37,455.0,Euro
-False,763,4.3375,4.30351,4.30351,190,91,2800.0,Euro
-True,2243,4.81429,4.78057,4.78057,189,45,455.0,Euro
-False,687,4.25,4.24463,4.24463,189,30,455.0,Euro
-False,13850,4.19712,4.23888,4.23888,182,22,455.0,Dollar
-True,1446,4.17105,4.16394,4.16394,181,22,455.0,Dollar
-True,1863,4.19118,4.31876,4.31876,174,7,455.0,Pound
-True,819,4.19492,4.21031,4.21031,174,61,455.0,Pound
-True,1022,4.22183,4.23413,4.23413,174,74,455.0,Dollar
-True,15024,3.25,2.81457,2.81457,169,19,455.0,Pound
-True,1747,4.32258,4.31728,4.31728,168,89,455.0,Euro
-False,710,4.57692,4.55988,4.55988,167,81,462.0,Euro
-True,8348,4.13636,3.77517,3.77517,166,13,455.0,Dollar
-False,628,4.46032,4.43197,4.43197,164,22,455.0,Dollar
-True,3552,4.58511,4.42448,4.42448,161,61,481.0,Pound
-False,11406,3.35,3.91376,3.91376,160,37,455.0,Euro
-True,1213,4.45312,4.29078,4.29078,158,61,455.0,Pound
-False,15085,4.19048,4.16429,4.16429,156,17,455.0,Pound
-True,722,3.25,3.33156,3.33156,155,28,455.0,Pound
-False,10405,3.75,4.18712,4.18712,154,14,455.0,Dollar
-True,24012,3.45,3.65585,3.65585,153,21,455.0,Dollar
-True,4963,3.35,3.02863,3.02863,152,8,455.0,Pound
-False,1090,4.22222,4.24088,4.24088,152,36,462.0,Pound
-True,1891,4.40625,4.42278,4.42278,151,57,455.0,Euro
-True,913,4.52778,4.36507,4.36507,149,14,481.0,Pound
-False,1399,4.45,4.5769,4.5769,148,157,455.0,Dollar
-True,11693,4.09507,3.96322,3.96322,147,35,455.0,Pound
-True,3481,4.2,4.12414,4.12414,145,24,455.0,Dollar
-False,7667,4.55,4.63011,4.63011,144,14,455.0,Pound
-True,1042,4.59615,4.42865,4.42865,142,64,455.0,Pound
-True,314,4.25,4.24644,4.24644,141,10,455.0,Euro
-True,412,3.9,4.23943,4.23943,140,13,481.0,Pound
-True,1035,3.7,3.59522,3.59522,137,13,455.0,Dollar
-True,432,4.07407,4.07779,4.07779,137,41,455.0,Dollar
-False,4821,4.15789,4.27567,4.27567,137,14,455.0,Euro
-False,4710,4.45,4.45853,4.45853,136,37,455.0,Pound
-True,2278,3.8,3.84403,3.84403,136,20,455.0,Pound
-False,1124,4.5,4.11612,4.11612,135,57,455.0,Dollar
-False,1038,4.35,4.35426,4.35426,135,56,455.0,Dollar
-True,478,4.08333,4.05957,4.05957,134,13,455.0,Dollar
-True,2019,4.6068,4.59027,4.59027,135,186,455.0,Euro
-True,2848,3.8,3.80322,3.80322,133,51,462.0,Euro
-False,2533,3.9,4.14524,4.14524,131,8,455.0,Dollar
-False,2259,4.19767,4.09036,4.09036,130,7,455.0,Euro
-False,3393,4.0,3.94355,3.94355,130,12,455.0,Pound
-True,586,3.85,3.94934,3.94934,126,75,455.0,Euro
-False,2598,4.50649,4.49902,4.49902,125,304,455.0,Euro
-False,21733,3.7,3.76764,3.76764,122,22,455.0,Dollar
-True,693,4.45455,4.4865,4.4865,121,32,455.0,Euro
-True,1811,4.59722,4.58466,4.58466,121,18,455.0,Pound
-False,516,4.35,4.30575,4.30575,119,15,455.0,Dollar
-False,661,4.41176,4.1488,4.1488,119,11,455.0,Dollar
-False,1126,4.5,4.20616,4.20616,118,84,462.0,Euro
-True,1787,4.46154,4.47227,4.47227,117,13,455.0,Dollar
-True,696,4.0,4.06362,4.06362,117,16,455.0,Pound
-True,2028,4.15625,3.78534,3.78534,116,95,455.0,Dollar
-False,5622,4.08333,3.9461,3.9461,114,16,455.0,Euro
-True,11707,4.30909,4.27291,4.27291,117,13,455.0,Pound
-True,345,4.55,4.56172,4.56172,113,5,700.0,Euro
-True,654,4.3,4.24538,4.24538,113,27,3200.0,Euro
-False,14081,3.91667,3.71626,3.71626,116,43,455.0,Dollar
-True,14308,3.86111,3.88534,3.88534,111,9,455.0,Pound
-False,2230,4.04268,3.97131,3.97131,109,13,455.0,Dollar
-True,443,4.45556,4.45862,4.45862,111,59,455.0,Euro
-True,817,4.22727,4.18681,4.18681,108,36,455.0,Euro
-False,4804,3.26923,3.27226,3.27226,109,41,455.0,Euro
-True,3466,4.47917,4.43334,4.43334,108,43,455.0,Dollar
-True,576,3.7,3.86213,3.86213,106,37,455.0,Dollar
-False,1040,3.97059,3.87628,3.87628,105,59,468.0,Euro
-False,727,4.15,4.14377,4.14377,105,71,455.0,Euro
-True,12100,4.05319,4.17912,4.17912,107,15,455.0,Pound
-True,3998,4.45,4.45524,4.45524,105,76,455.0,Euro
-False,534,4.66,4.65381,4.65381,105,15,455.0,Dollar
-False,5015,4.5,4.43276,4.43276,104,12,455.0,Pound
-False,8817,4.15,4.17218,4.17218,103,37,455.0,Dollar
-False,22867,4.30556,4.40903,4.40903,102,27,455.0,Dollar
-True,450,4.9,4.73799,4.73799,102,27,455.0,Euro
-False,4891,4.5,4.55359,4.55359,101,16,455.0,Pound
-False,9200,4.2,4.30874,4.30874,100,24,455.0,Pound
-True,11629,3.95,3.66546,3.66546,98,51,455.0,Dollar
-True,433,4.6,4.58032,4.58032,99,59,455.0,Dollar
-True,9131,4.5,4.42415,4.42415,98,22,455.0,Euro
-False,9571,4.14189,4.21405,4.21405,96,22,455.0,Dollar
-False,10446,4.35,4.44463,4.44463,95,25,455.0,Pound
-False,3189,4.46,4.2818,4.2818,95,54,455.0,Euro
-True,1406,4.55,4.49741,4.49741,94,107,455.0,Dollar
-False,19990,4.25926,4.46681,4.46681,93,149,455.0,Pound
-True,4101,3.65,3.42014,3.42014,91,46,455.0,Dollar
-True,514,4.4,4.25999,4.25999,91,71,455.0,Euro
-True,12239,4.2234,4.2521,4.2521,91,8,455.0,Euro
-False,4965,4.14286,4.03156,4.03156,90,87,455.0,Pound
-False,274,4.37879,4.47231,4.47231,90,14,455.0,Dollar
-False,4171,3.71429,3.58625,3.58625,90,6,455.0,Pound
-False,284,4.3,4.24719,4.24719,90,12,455.0,Pound
-False,414,3.85,3.63176,3.63176,90,69,455.0,Euro
-False,321,4.15,4.16976,4.16976,88,12,455.0,Dollar
-True,362,4.35,4.33408,4.33408,87,10,455.0,Euro
-True,17636,4.31667,4.33301,4.33301,87,65,455.0,Pound
-False,5991,4.10345,3.98217,3.98217,88,35,455.0,Dollar
-True,383,2.85,2.79828,2.79828,87,7,455.0,Pound
-False,12408,4.27778,4.23703,4.23703,87,81,455.0,Euro
-True,3507,4.34783,4.30168,4.30168,85,125,455.0,Euro
-True,2802,4.7,4.70635,4.70635,85,29,455.0,Euro
-False,3199,4.25,4.26598,4.26598,84,40,455.0,Euro
-False,455,4.36842,4.35401,4.35401,84,20,455.0,Dollar
-True,1562,4.15,4.1356,4.1356,84,12,455.0,Dollar
-False,612,4.0,3.89239,3.89239,84,33,455.0,Pound
-False,2225,4.1,4.07347,4.07347,84,57,455.0,Euro
-False,1563,4.33951,4.15426,4.15426,84,81,455.0,Dollar
-False,24579,3.88889,4.05945,4.05945,82,129,455.0,Dollar
-False,316,4.75,4.4382,4.4382,82,14,455.0,Euro
-False,7665,4.6087,4.57441,4.57441,81,20,2400.0,Pound
-False,3435,3.95,4.19819,4.19819,80,9,455.0,Dollar
-True,553,3.45,3.37903,3.37903,79,19,455.0,Dollar
-True,231,4.59375,4.55493,4.55493,79,56,3200.0,Pound
-False,986,4.35,4.25724,4.25724,78,121,455.0,Euro
-True,250,4.38333,4.38467,4.38467,77,25,3200.0,Dollar
-True,1045,4.36842,4.15839,4.15839,77,61,455.0,Pound
-True,3007,4.5,4.53533,4.53533,78,23,2400.0,Euro
-False,15013,4.20833,4.13313,4.13313,76,10,455.0,Euro
-False,4007,4.1,4.13747,4.13747,76,5,455.0,Dollar
-False,205,3.6,3.38353,3.38353,75,14,455.0,Dollar
-True,385,4.25,4.15094,4.15094,76,75,455.0,Euro
-False,707,4.46429,4.33136,4.33136,73,60,455.0,Dollar
-False,756,4.2,4.12625,4.12625,73,12,455.0,Euro
-True,1537,4.1,4.1218,4.1218,73,48,455.0,Euro
-False,328,3.91667,4.01168,4.01168,72,25,455.0,Dollar
-False,626,4.05,3.98217,3.98217,72,57,455.0,Euro
-True,248,4.175,4.16587,4.16587,71,75,455.0,Pound
-False,445,4.15,4.15774,4.15774,71,40,455.0,Pound
-False,3189,4.25,4.181,4.181,69,56,455.0,Euro
-True,436,3.75,3.64797,3.64797,69,21,455.0,Pound
-True,4817,4.55,4.42448,4.42448,69,122,455.0,Dollar
-False,477,4.1,4.03158,4.03158,69,184,455.0,Dollar
-True,264,4.17308,4.1798,4.1798,68,24,455.0,Euro
-True,322,4.36,4.29338,4.29338,69,27,455.0,Euro
-True,1663,4.85,4.87217,4.87217,67,23,455.0,Dollar
-False,2148,4.75,4.73937,4.73937,67,9,455.0,Pound
-True,3201,4.7,4.62845,4.62845,67,19,1600.0,Pound
-True,6901,4.06818,4.07215,4.07215,67,156,455.0,Pound
-True,12347,3.69355,3.76065,3.76065,66,24,455.0,Dollar
-False,9062,3.8,3.75038,3.75038,66,32,455.0,Euro
-True,812,4.55,4.49319,4.49319,66,75,455.0,Dollar
-True,4056,3.6,3.47859,3.47859,66,28,455.0,Euro
-True,2226,4.13636,3.89924,3.89924,66,87,455.0,Euro
-False,573,4.3,4.27605,4.27605,66,59,455.0,Euro
-True,2311,4.0,4.39354,4.39354,65,12,455.0,Euro
-True,7952,3.6,3.62654,3.62654,64,89,455.0,Dollar
-False,9595,4.1,4.13567,4.13567,64,18,455.0,Pound
-True,302,4.4,4.31515,4.31515,64,188,455.0,Dollar
-True,6461,4.5,4.43694,4.43694,64,77,455.0,Dollar
-False,165,4.41803,4.37791,4.37791,67,16,455.0,Euro
-False,1202,2.9,2.90524,2.90524,64,6,455.0,Pound
-True,4088,4.45455,4.45021,4.45021,65,167,455.0,Dollar
-True,385,3.45,3.3779,3.3779,63,37,455.0,Dollar
-False,214,4.6,4.58543,4.58543,63,93,455.0,Dollar
-False,1234,4.78571,4.75781,4.75781,63,37,455.0,Pound
-False,11595,3.6,3.15926,3.15926,62,34,455.0,Dollar
-False,267,3.78125,3.78146,3.78146,62,94,455.0,Euro
-False,793,4.57143,4.6451,4.6451,62,9,455.0,Pound
-False,1297,4.4,4.41531,4.41531,62,79,455.0,Euro
-False,542,3.7,3.45782,3.45782,61,42,455.0,Dollar
-False,1583,4.5,4.46906,4.46906,61,87,455.0,Dollar
-True,384,4.0,4.00988,4.00988,61,50,455.0,Pound
-True,7491,3.65,3.84449,3.84449,60,113,455.0,Euro
-True,466,4.5,4.6297,4.6297,60,24,455.0,Euro
-False,3638,4.2,4.36432,4.36432,60,34,455.0,Euro
-False,543,4.25,3.51424,3.51424,60,37,455.0,Pound
-True,17385,3.96667,4.07122,4.07122,59,93,455.0,Dollar
-True,2062,3.95,3.96438,3.96438,59,15,455.0,Pound
-True,158,3.91667,3.9983,3.9983,59,140,455.0,Euro
-False,175,4.03333,4.03576,4.03576,58,30,455.0,Pound
-False,11032,4.2,4.17498,4.17498,58,25,455.0,Euro
-False,225,3.95,3.86408,3.86408,58,43,455.0,Dollar
-False,2264,4.5,4.46594,4.46594,58,45,455.0,Pound
-False,204,4.5,4.48496,4.48496,58,107,3200.0,Euro
-True,265,4.8,4.84687,4.84687,57,10,455.0,Euro
-False,232,4.2,4.20712,4.20712,57,32,455.0,Euro
-True,5884,3.8,3.51619,3.51619,57,22,455.0,Pound
-False,17365,3.90179,3.72163,3.72163,56,23,455.0,Dollar
-False,1286,4.58824,4.63695,4.63695,57,18,455.0,Euro
-False,1696,3.1,3.08613,3.08613,56,6,455.0,Euro
-False,198,4.65,4.61128,4.61128,56,23,455.0,Dollar
-True,2320,4.75,4.73037,4.73037,55,47,455.0,Euro
-False,4092,4.35,4.36127,4.36127,55,35,455.0,Pound
-False,2351,4.85,4.80998,4.80998,55,26,455.0,Pound
-True,114,4.2,4.28152,4.28152,54,57,455.0,Dollar
-True,3272,4.7,4.7584,4.7584,54,15,455.0,Dollar
-False,12417,3.45,3.3725,3.3725,54,38,455.0,Pound
-True,6203,3.65,3.6926,3.6926,54,68,455.0,Dollar
-True,1354,4.3,4.34568,4.34568,54,115,455.0,Dollar
-True,4431,4.31132,4.39086,4.39086,53,14,455.0,Dollar
-True,2089,2.8,3.03441,3.03441,52,51,455.0,Euro
-True,2014,4.05,4.1023,4.1023,49,35,455.0,Dollar
-False,197,4.05,3.96949,3.96949,49,10,455.0,Pound
-False,646,4.4,3.94977,3.94977,49,10,455.0,Euro
-False,286,3.95,4.05226,4.05226,49,48,481.0,Pound
-False,4410,4.05,4.23699,4.23699,49,8,455.0,Dollar
-True,3285,3.4,3.01271,3.01271,49,66,455.0,Pound
-False,2112,4.15,4.09779,4.09779,48,16,455.0,Euro
-True,3908,4.54545,4.49709,4.49709,48,29,455.0,Euro
-False,3382,4.45,4.49607,4.49607,48,231,455.0,Pound
-True,368,4.5,4.50268,4.50268,48,35,455.0,Pound
-True,2926,4.05,3.77282,3.77282,48,29,455.0,Pound
-True,191,3.75,3.73573,3.73573,49,18,455.0,Euro
-False,4218,3.40625,3.10458,3.10458,47,15,455.0,Dollar
-True,254,4.09375,4.10873,4.10873,47,54,455.0,Euro
-False,415,4.5,4.55227,4.55227,47,49,468.0,Euro
-False,240,3.35,3.33348,3.33348,47,53,468.0,Euro
-False,131,3.65,3.68477,3.68477,47,21,455.0,Pound
-True,450,4.05,3.97205,3.97205,47,87,455.0,Euro
-False,195,3.7,3.79015,3.79015,47,37,455.0,Euro
-True,205,3.65,3.61897,3.61897,46,44,455.0,Euro
-True,206,4.43478,4.44964,4.44964,46,49,455.0,Dollar
-False,219,4.5,4.49928,4.49928,47,149,455.0,Dollar
-False,279,3.65,3.55283,3.55283,46,19,455.0,Pound
-False,503,4.15,4.17732,4.17732,46,18,455.0,Pound
-True,7445,4.65789,4.47924,4.47924,45,20,800.0,Pound
-False,256,4.5,4.49756,4.49756,45,64,455.0,Euro
-True,4724,4.4,3.94247,3.94247,45,30,1600.0,Dollar
-True,185,3.6,3.74025,3.74025,45,43,455.0,Dollar
-True,228,4.5,4.51293,4.51293,44,25,455.0,Dollar
-True,2580,3.85,3.85991,3.85991,44,42,455.0,Pound
-False,127,4.7,4.67316,4.67316,44,6,455.0,Pound
-False,1092,4.3,4.24905,4.24905,44,55,455.0,Euro
-True,1510,4.25,4.12287,4.12287,44,44,455.0,Pound
-False,145,4.30952,4.39646,4.39646,43,24,455.0,Euro
-True,4253,4.09259,4.26677,4.26677,43,11,455.0,Dollar
-True,5478,3.7,3.76882,3.76882,43,47,455.0,Euro
-False,6226,4.12791,4.33169,4.33169,43,14,455.0,Pound
-True,1673,4.45,4.44229,4.44229,43,208,455.0,Dollar
-True,1320,4.0,3.98967,3.98967,43,22,455.0,Euro
-True,13307,4.33333,4.55999,4.55999,43,27,455.0,Dollar
-True,3157,4.0,4.23413,4.23413,42,61,455.0,Euro
-False,711,3.0,2.99428,2.99428,42,38,455.0,Pound
-False,235,4.5,4.50129,4.50129,42,31,455.0,Euro
-True,7902,2.75,2.55273,2.55273,42,10,455.0,Pound
-False,5161,4.14286,4.25419,4.25419,42,17,455.0,Dollar
-False,181,4.15,4.14321,4.14321,42,38,455.0,Dollar
-False,316,3.9878,3.95725,3.95725,41,46,455.0,Pound
-True,157,4.5,4.51825,4.51825,41,24,455.0,Euro
-True,152,4.7,4.72221,4.72221,41,33,455.0,Euro
-False,3249,4.1,4.26983,4.26983,41,30,455.0,Euro
-False,813,4.5,4.55107,4.55107,41,78,455.0,Euro
-True,199,3.45,3.69749,3.69749,41,46,455.0,Euro
-True,4265,4.1625,4.43174,4.43174,40,12,455.0,Dollar
-True,2257,4.2,4.40396,4.40396,40,5,455.0,Euro
-True,5539,3.4,3.837,3.837,40,9,455.0,Dollar
-True,613,3.83333,3.88895,3.88895,40,7,455.0,Dollar
-False,282,4.2,4.18845,4.18845,39,21,455.0,Pound
-False,1080,4.05,4.03714,4.03714,39,9,455.0,Pound
-False,6284,3.85,4.02577,4.02577,39,63,455.0,Pound
-False,217,4.05,4.34557,4.34557,39,10,455.0,Pound
-False,4918,4.46154,4.6008,4.6008,38,23,455.0,Euro
-False,15764,4.13462,3.9689,3.9689,38,31,455.0,Dollar
-True,1375,3.75,3.68475,3.68475,38,16,455.0,Euro
-False,1565,3.5,3.60717,3.60717,38,13,455.0,Dollar
-False,140,3.85,4.08759,4.08759,38,11,455.0,Euro
-True,293,3.5,3.53432,3.53432,38,0,455.0,Pound
-False,100,4.2,4.1568,4.1568,38,13,455.0,Pound
-False,1230,3.75,3.61822,3.61822,38,15,455.0,Dollar
-False,277,4.25,4.24395,4.24395,37,23,455.0,Euro
-False,14624,4.07692,4.04344,4.04344,37,149,455.0,Pound
-False,115,4.34091,4.33922,4.33922,37,191,455.0,Pound
-True,291,4.4,4.44695,4.44695,37,25,455.0,Pound
-False,6120,4.5,4.63495,4.63495,37,14,455.0,Pound
-False,1951,4.26923,4.32686,4.32686,37,101,455.0,Dollar
-True,9648,3.93056,3.89366,3.89366,36,189,455.0,Euro
-False,10571,4.05,3.7392,3.7392,36,108,455.0,Pound
-False,5712,3.2,2.52021,2.52021,36,37,455.0,Dollar
-True,112,4.3,4.2937,4.2937,36,27,455.0,Pound
-False,211,4.55,4.53824,4.53824,35,10,455.0,Dollar
-False,141,4.15,4.13576,4.13576,35,15,700.0,Euro
-True,304,4.70833,4.66846,4.66846,35,17,455.0,Euro
-True,1581,4.15,4.15537,4.15537,35,10,455.0,Pound
-False,194,3.15,3.13,3.13,35,24,455.0,Dollar
-True,4167,4.0,3.95876,3.95876,35,13,455.0,Euro
-True,76,4.02941,4.02868,4.02868,35,8,455.0,Pound
-True,1230,3.5,3.48478,3.48478,35,23,455.0,Euro
-True,232,3.8,3.73956,3.73956,34,26,455.0,Euro
-False,68,4.51471,4.46611,4.46611,35,13,455.0,Dollar
-False,9429,3.75,4.23654,4.23654,34,8,455.0,Euro
-True,2341,4.2,4.24397,4.24397,34,12,455.0,Euro
-False,1038,4.35,4.34357,4.34357,34,40,455.0,Dollar
-False,228,4.17742,4.32688,4.32688,34,17,455.0,Dollar
-False,139,4.8125,4.78291,4.78291,34,204,455.0,Pound
-False,201,4.63636,4.59111,4.59111,33,54,455.0,Dollar
-True,3274,3.95,4.03107,4.03107,33,20,455.0,Pound
-False,141,4.15,4.20892,4.20892,33,160,455.0,Pound
-False,90,4.72727,4.7451,4.7451,33,17,2000.0,Euro
-True,512,3.35,3.24064,3.24064,33,18,455.0,Pound
-True,1434,4.0,3.71435,3.71435,33,22,455.0,Dollar
-False,2522,3.95,3.37502,3.37502,33,11,455.0,Pound
-True,81,4.1875,4.31044,4.31044,33,54,455.0,Pound
-False,779,4.5,4.47918,4.47918,33,19,455.0,Dollar
-True,96,3.7,3.63834,3.63834,32,18,455.0,Euro
-False,460,4.64062,4.62267,4.62267,33,74,455.0,Dollar
-False,111,4.5,4.48686,4.48686,32,44,455.0,Pound
-True,6539,4.6,4.57851,4.57851,32,40,455.0,Euro
-True,186,4.25,4.40165,4.40165,32,20,455.0,Pound
-False,6206,3.3,2.94105,2.94105,32,13,455.0,Dollar
-True,1106,4.15,4.25644,4.25644,31,176,455.0,Dollar
-False,1234,4.6,4.68104,4.68104,31,8,455.0,Dollar
-False,140,4.45,4.36852,4.36852,31,30,455.0,Pound
-False,98,3.6,3.69489,3.69489,31,13,455.0,Pound
-False,137,4.65,4.65261,4.65261,31,43,455.0,Dollar
-True,1857,4.15,4.13264,4.13264,31,97,455.0,Dollar
-False,1008,4.05,4.03884,4.03884,31,7,455.0,Euro
-False,1034,3.05,3.00731,3.00731,31,81,455.0,Pound
-True,152,4.55,4.58172,4.58172,30,39,455.0,Euro
-False,2191,4.2,4.25773,4.25773,30,13,455.0,Dollar
-True,229,4.45,4.45733,4.45733,30,18,455.0,Pound
-True,808,4.2,4.22928,4.22928,30,186,455.0,Pound
-True,11901,4.5,4.47903,4.47903,30,28,455.0,Euro
-False,199,4.3,4.35811,4.35811,29,6,455.0,Pound
-False,193,4.2,4.51147,4.51147,29,18,455.0,Dollar
-False,805,4.1,4.11325,4.11325,29,6,455.0,Dollar
-False,214,2.9,2.90146,2.90146,29,42,455.0,Pound
-False,103,4.3,4.2632,4.2632,29,9,455.0,Euro
-True,126,4.91667,4.91183,4.91183,29,54,455.0,Euro
-False,917,4.4,4.3552,4.3552,29,17,455.0,Dollar
-False,105,3.5,3.52897,3.52897,29,23,455.0,Pound
-False,839,3.8,3.56021,3.56021,29,29,455.0,Dollar
-False,208,4.66667,4.6486,4.6486,30,16,455.0,Dollar
-False,1432,4.45,4.48318,4.48318,29,9,455.0,Euro
-False,741,4.3,4.16346,4.16346,29,54,455.0,Pound
-True,83,4.19231,4.20073,4.20073,29,32,455.0,Euro
-True,151,3.75,3.73089,3.73089,29,7,455.0,Euro
-False,783,4.27273,4.26049,4.26049,29,20,455.0,Euro
-False,1124,3.0,2.95285,2.95285,29,50,455.0,Pound
-True,1805,4.35,4.37582,4.37582,29,20,455.0,Euro
-True,3715,4.6,4.48814,4.48814,29,31,455.0,Euro
-False,531,4.4,4.32857,4.32857,28,181,455.0,Dollar
-False,153,4.53333,4.58245,4.58245,28,24,455.0,Euro
-True,124,3.95,3.86292,3.86292,28,39,455.0,Pound
-True,170,3.6,3.7252,3.7252,29,21,455.0,Euro
-True,183,2.75,2.87113,2.87113,28,84,455.0,Euro
-False,2245,3.5,3.66269,3.66269,28,8,455.0,Pound
-True,100,4.0,4.10388,4.10388,28,45,455.0,Pound
-False,3794,3.95,4.2978,4.2978,28,8,455.0,Pound
-False,332,3.8,3.69599,3.69599,27,70,455.0,Pound
-True,196,4.5,4.42849,4.42849,27,9,455.0,Dollar
-True,107,3.7,3.50284,3.50284,27,14,455.0,Euro
-False,147,3.0,3.12802,3.12802,27,20,455.0,Pound
-True,143,4.65,4.67002,4.67002,27,21,455.0,Euro
-False,154,4.1,4.11995,4.11995,27,45,455.0,Euro
-True,583,4.3,4.25608,4.25608,27,48,455.0,Dollar
-False,177,4.3,4.25613,4.25613,27,25,455.0,Dollar
-False,5310,4.42593,4.49075,4.49075,27,34,455.0,Pound
-False,904,4.55,4.50829,4.50829,27,12,455.0,Euro
-True,146,3.7,3.69983,3.69983,27,6,455.0,Dollar
-True,70,3.55,3.71016,3.71016,26,10,455.0,Euro
-False,855,4.1,4.134,4.134,26,20,455.0,Dollar
-True,1538,4.2,4.22001,4.22001,26,53,455.0,Dollar
-True,355,3.85,3.81762,3.81762,25,53,455.0,Dollar
-False,358,3.75,3.65977,3.65977,25,30,455.0,Euro
-False,104,4.25,4.22009,4.22009,25,26,455.0,Dollar
-True,2945,4.05,4.30302,4.30302,25,34,455.0,Euro
-False,842,3.8,3.78837,3.78837,25,18,640.0,Pound
-False,3335,4.4,4.37921,4.37921,25,15,455.0,Dollar
-False,95,4.55882,4.58073,4.58073,25,54,455.0,Pound
-True,119,3.9,3.87018,3.87018,25,40,455.0,Pound
-False,114,4.25,4.29361,4.29361,25,9,455.0,Euro
-True,66,4.10714,4.12359,4.12359,25,24,520.0,Pound
-True,2738,3.9,3.8414,3.8414,25,39,455.0,Euro
-False,1053,4.5,4.51158,4.51158,25,9,455.0,Pound
-True,142,4.7,4.73281,4.73281,24,13,455.0,Pound
-True,90,4.3,4.07208,4.07208,24,37,3200.0,Dollar
-False,989,4.65,4.63916,4.63916,24,33,455.0,Euro
-False,91,3.7,3.61195,3.61195,24,44,455.0,Pound
-False,3469,4.5,4.33541,4.33541,24,14,455.0,Euro
-False,2017,4.4,4.30397,4.30397,24,22,455.0,Dollar
-True,5008,4.05,4.18828,4.18828,24,28,455.0,Dollar
-False,3021,3.85,4.25098,4.25098,24,47,455.0,Dollar
-False,6671,3.3,3.31548,3.31548,24,8,455.0,Dollar
-False,7021,4.2,4.18301,4.18301,24,26,455.0,Pound
-False,916,4.15,4.10015,4.10015,25,17,455.0,Pound
-True,139,4.6,4.31573,4.31573,24,31,455.0,Dollar
-True,306,4.1,3.97105,3.97105,24,43,455.0,Dollar
-False,15601,4.53571,4.65874,4.65874,24,72,455.0,Dollar
-False,886,4.4,4.37469,4.37469,24,33,700.0,Pound
-True,1228,4.35,4.49188,4.49188,24,9,455.0,Euro
-False,94,3.65,3.68241,3.68241,23,23,455.0,Pound
-False,531,3.95,3.52201,3.52201,23,20,455.0,Euro
-False,13560,3.95,4.29407,4.29407,23,184,455.0,Dollar
-False,2321,4.05,3.9206,3.9206,23,24,455.0,Pound
-True,107,3.95,3.84314,3.84314,23,13,455.0,Pound
-False,2086,4.35,4.21587,4.21587,23,38,455.0,Dollar
-True,569,4.7,4.66713,4.66713,23,23,455.0,Euro
-False,108,4.45652,4.47708,4.47708,24,33,455.0,Dollar
-False,13152,4.2,4.00758,4.00758,23,169,455.0,Dollar
-True,897,4.3,4.25214,4.25214,23,37,455.0,Pound
-True,156,3.55,3.56818,3.56818,23,21,700.0,Dollar
-True,88,4.35,4.4525,4.4525,24,86,2240.0,Dollar
-False,2962,3.8,3.93606,3.93606,23,39,455.0,Dollar
-False,1064,4.25,4.45213,4.45213,23,16,455.0,Pound
-True,370,4.75,4.73728,4.73728,23,7,455.0,Dollar
-True,8736,4.5,4.59382,4.59382,22,36,455.0,Euro
-False,226,4.1,3.92076,3.92076,22,21,455.0,Pound
-True,203,3.95,3.80837,3.80837,22,10,455.0,Dollar
-False,846,4.45,4.44945,4.44945,22,159,455.0,Dollar
-False,65,4.28571,4.30264,4.30264,22,16,455.0,Dollar
-True,109,4.4,4.42223,4.42223,22,16,455.0,Dollar
-True,1614,3.35,2.90595,2.90595,22,55,455.0,Euro
-False,94,4.55,4.53748,4.53748,22,15,455.0,Dollar
-False,827,3.7,3.79008,3.79008,22,5,455.0,Dollar
-False,1693,4.1,4.09236,4.09236,22,20,455.0,Dollar
-True,123,4.8,4.81165,4.81165,21,33,455.0,Pound
-True,174,3.95,3.99477,3.99477,21,14,455.0,Dollar
-True,103,4.15,4.14482,4.14482,21,14,455.0,Pound
-True,95,3.25,2.98507,2.98507,21,14,455.0,Dollar
-True,109,4.3,4.26308,4.26308,21,17,700.0,Dollar
-False,281,3.3,3.2239,3.2239,21,7,455.0,Dollar
-True,59,4.1,3.8469,3.8469,21,32,455.0,Euro
-True,66,5.0,5.0,5.0,21,80,455.0,Dollar
-False,2561,3.15,2.42101,2.42101,21,6,455.0,Pound
-True,1797,4.1,4.10345,4.10345,21,20,455.0,Pound
-False,436,3.55,3.55936,3.55936,21,14,455.0,Pound
-True,1400,3.55,3.60673,3.60673,21,10,455.0,Euro
-True,1160,3.9,3.53042,3.53042,21,23,455.0,Dollar
-False,1091,4.2,4.12418,4.12418,20,14,455.0,Euro
-False,7419,4.25,4.20941,4.20941,20,13,455.0,Pound
-True,162,4.8,4.81494,4.81494,20,24,455.0,Pound
-False,133,4.3,4.23099,4.23099,20,64,455.0,Dollar
-True,713,4.40909,4.15802,4.15802,20,10,455.0,Dollar
-False,2308,4.3,4.41237,4.41237,20,10,455.0,Pound
-True,83,4.45,4.42908,4.42908,20,10,455.0,Dollar
-False,337,4.225,4.19485,4.19485,20,46,455.0,Pound
-False,143,4.5,4.53546,4.53546,20,49,455.0,Dollar
-False,1437,3.55,3.54681,3.54681,20,7,455.0,Dollar
-False,344,4.35,4.29564,4.29564,20,15,455.0,Pound
-True,3766,3.4,3.36224,3.36224,20,25,455.0,Euro
-True,131,4.25,4.23548,4.23548,20,14,455.0,Dollar
-False,211,4.15,4.29459,4.29459,20,15,455.0,Euro
-False,3069,3.8,3.81849,3.81849,20,26,455.0,Dollar
-True,4219,4.35,4.29178,4.29178,20,110,455.0,Euro
-True,58,4.65,4.66887,4.66887,20,27,455.0,Euro
-False,2298,3.95,4.21007,4.21007,19,27,455.0,Pound
-False,378,2.6,2.6643,2.6643,19,19,455.0,Euro
-False,1143,3.8,3.80344,3.80344,19,23,455.0,Dollar
-True,72,3.85,3.87373,3.87373,19,32,455.0,Euro
-True,1117,3.55,3.33799,3.33799,19,20,455.0,Pound
-True,138,3.95,3.93106,3.93106,19,29,455.0,Dollar
-True,100,4.4,4.39433,4.39433,19,43,455.0,Dollar
-False,921,4.05,3.79971,3.79971,19,44,455.0,Pound
-True,95,3.05,2.97019,2.97019,19,16,455.0,Euro
-False,459,4.05,3.92654,3.92654,19,14,455.0,Euro
-True,1340,2.75,2.40058,2.40058,19,6,455.0,Pound
-True,1040,3.6,3.6515,3.6515,19,7,455.0,Dollar
-False,106,4.84211,4.83012,4.83012,21,9,455.0,Dollar
-True,1171,4.4,4.43235,4.43235,19,9,455.0,Pound
-True,3967,4.55,4.47713,4.47713,19,29,455.0,Pound
-True,3463,4.25,4.55409,4.55409,19,17,455.0,Dollar
-False,2198,3.9,4.2574,4.2574,19,19,455.0,Pound
-False,87,4.35,4.24288,4.24288,19,27,455.0,Pound
-True,161,4.05,4.04984,4.04984,18,57,455.0,Pound
-True,1570,3.7,3.58193,3.58193,18,7,455.0,Dollar
-True,1163,4.0,4.12369,4.12369,18,12,455.0,Pound
-True,102,3.7,3.64052,3.64052,18,187,455.0,Dollar
-False,112,4.5,4.51769,4.51769,18,52,455.0,Euro
-False,1155,4.35,4.29983,4.29983,18,23,455.0,Euro
-True,62,3.9375,3.96854,3.96854,18,25,455.0,Pound
-False,264,4.1,4.06642,4.06642,18,30,455.0,Euro
-True,107,4.4,4.4473,4.4473,18,21,455.0,Pound
-False,66,4.5,4.50266,4.50266,18,13,455.0,Pound
-False,65,4.35,4.37227,4.37227,18,50,455.0,Euro
-False,1406,3.85,3.95203,3.95203,18,6,455.0,Euro
-False,140,4.45,4.48187,4.48187,18,37,455.0,Euro
-True,239,3.85,3.61462,3.61462,18,58,455.0,Pound
-False,91,4.45,4.40893,4.40893,18,15,455.0,Euro
-True,775,4.6,4.67294,4.67294,18,20,455.0,Pound
-True,72,4.5,4.47087,4.47087,18,58,455.0,Dollar
-False,42,4.5,4.47802,4.47802,18,6,455.0,Euro
-False,2603,4.65,4.61138,4.61138,18,13,455.0,Pound
-False,69,3.1,2.92784,2.92784,18,40,455.0,Pound
-False,60,4.4,4.447,4.447,17,26,455.0,Euro
-True,100,4.35,4.36373,4.36373,17,45,455.0,Pound
-False,89,4.91176,4.93481,4.93481,17,56,455.0,Dollar
-True,53,4.25,4.04838,4.04838,17,22,455.0,Euro
-False,1192,4.5,4.29659,4.29659,17,6,455.0,Euro
-True,111,4.0,3.99317,3.99317,17,0,455.0,Pound
-True,69,4.3,4.25877,4.25877,17,82,455.0,Dollar
-True,136,4.55,4.61459,4.61459,17,33,1600.0,Euro
-True,2499,2.75,2.77911,2.77911,17,22,455.0,Dollar
-True,63,4.31818,4.32078,4.32078,17,68,455.0,Pound
-True,484,4.85,4.89629,4.89629,17,20,455.0,Pound
-True,53,4.6,4.59535,4.59535,17,12,455.0,Pound
-False,123,4.0,4.03811,4.03811,17,12,455.0,Euro
-False,86,3.75,3.55751,3.55751,17,17,455.0,Euro
-False,1548,3.9,3.8212,3.8212,17,11,455.0,Euro
-True,904,4.55882,4.43606,4.43606,17,22,455.0,Euro
-True,3196,4.17647,3.97079,3.97079,17,79,455.0,Euro
-True,60,3.95,4.0885,4.0885,17,22,455.0,Dollar
-False,64,4.15,4.18741,4.18741,16,11,455.0,Euro
-False,73,4.2,4.08304,4.08304,16,33,455.0,Pound
-False,289,4.25,4.07463,4.07463,16,0,455.0,Dollar
-False,55,3.3,3.58596,3.58596,16,26,455.0,Pound
-True,42,4.8,4.7821,4.7821,16,40,1760.0,Euro
-False,123,3.65,3.65325,3.65325,16,7,455.0,Dollar
-False,1562,3.45,3.11397,3.11397,16,5,455.0,Dollar
-True,3022,3.7,3.35699,3.35699,16,28,455.0,Euro
-False,1879,4.65,4.5282,4.5282,16,23,455.0,Dollar
-True,86,3.25,3.19079,3.19079,16,30,455.0,Dollar
-False,2691,4.1,4.17146,4.17146,16,29,455.0,Dollar
-True,93,4.55,4.45783,4.45783,16,23,455.0,Pound
-True,53,3.95,4.00056,4.00056,16,13,455.0,Euro
-True,77,2.55,2.55055,2.55055,16,12,455.0,Euro
-True,144,3.95,3.81431,3.81431,16,6,455.0,Euro
-True,152,3.9,3.94302,3.94302,16,21,455.0,Euro
-False,324,3.6,3.58463,3.58463,16,49,455.0,Dollar
-True,67,3.2,3.54109,3.54109,16,56,455.0,Dollar
-False,135,3.85,3.69424,3.69424,16,21,455.0,Dollar
-True,2095,4.23333,4.34763,4.34763,15,22,455.0,Euro
-True,1009,4.4,4.4392,4.4392,15,22,455.0,Dollar
-False,319,4.5,4.46083,4.46083,15,33,455.0,Euro
-False,51,4.76667,4.86583,4.86583,16,10,455.0,Pound
-True,40,4.1,4.11345,4.11345,15,8,455.0,Euro
-False,110,4.25,4.33729,4.33729,15,30,3200.0,Pound
-True,64,4.5,4.51844,4.51844,16,8,455.0,Pound
-False,862,4.73333,4.69949,4.69949,15,13,455.0,Dollar
-True,200,4.1,4.16814,4.16814,15,7,455.0,Pound
-False,38,5.0,5.0,5.0,15,19,455.0,Euro
-True,751,4.6,4.41769,4.41769,15,25,455.0,Euro
-True,2034,4.5,4.24358,4.24358,15,12,455.0,Pound
-True,105,4.53333,4.50303,4.50303,15,35,455.0,Euro
-True,2722,3.85,3.66854,3.66854,15,11,455.0,Euro
-True,128,4.4,4.37521,4.37521,15,6,455.0,Euro
-False,798,4.35,4.33242,4.33242,15,15,455.0,Dollar
-True,406,4.7,4.81396,4.81396,15,12,455.0,Pound
-False,28,3.9,3.70097,3.70097,15,12,455.0,Pound
-False,1554,3.9,3.67265,3.67265,14,159,455.0,Dollar
-False,633,3.3,3.16067,3.16067,14,31,455.0,Dollar
-False,1091,3.95,4.10285,4.10285,14,16,455.0,Euro
-False,49,4.15,3.86632,3.86632,14,27,455.0,Pound
-False,1190,4.32143,4.2223,4.2223,14,22,455.0,Dollar
-False,1555,4.15,4.00373,4.00373,14,36,455.0,Euro
-False,254,3.35,3.42197,3.42197,14,17,455.0,Dollar
-False,76,4.05,4.02345,4.02345,14,26,455.0,Euro
-False,507,4.10714,4.19139,4.19139,14,71,455.0,Dollar
-True,101,3.8,3.92042,3.92042,14,0,455.0,Dollar
-False,64,3.95,3.8883,3.8883,14,5,455.0,Euro
-True,42,4.4,4.37201,4.37201,14,21,455.0,Dollar
-False,1228,3.8,3.97781,3.97781,14,11,455.0,Pound
-True,136,4.1,3.9733,3.9733,14,8,455.0,Euro
-False,554,3.85,3.54368,3.54368,14,15,455.0,Dollar
-True,1606,3.92857,4.17235,4.17235,14,8,455.0,Dollar
-False,794,4.71429,4.82193,4.82193,14,36,455.0,Euro
-False,757,4.5,4.47939,4.47939,13,25,455.0,Euro
-True,91,4.3,4.30099,4.30099,13,18,455.0,Pound
-False,63,3.8,3.95878,3.95878,13,17,455.0,Dollar
-True,79,4.5,4.43985,4.43985,13,26,455.0,Euro
-False,4185,2.5,2.5643,2.5643,13,11,468.0,Dollar
-False,1596,4.4,4.48897,4.48897,13,7,455.0,Pound
-True,31,3.95,3.77146,3.77146,13,19,455.0,Pound
-True,96,4.30769,4.261,4.261,13,44,455.0,Pound
-False,1326,3.4,3.82445,3.82445,13,15,455.0,Euro
-False,529,3.9,3.08328,3.08328,13,13,455.0,Pound
-False,97,4.05,3.96872,3.96872,13,40,455.0,Pound
-True,39,4.96154,4.95967,4.95967,14,53,455.0,Euro
-True,2709,4.0,4.22253,4.22253,13,13,455.0,Euro
-True,3710,2.8,2.82315,2.82315,13,48,455.0,Pound
-False,329,3.6,4.00234,4.00234,13,0,455.0,Euro
-True,100,3.35,3.62894,3.62894,13,12,455.0,Euro
-True,33,4.57692,4.42549,4.42549,13,11,455.0,Pound
-True,644,3.75,3.6804,3.6804,13,41,455.0,Euro
-False,55,4.0,3.80517,3.80517,13,31,455.0,Pound
-False,1206,4.65,4.66365,4.66365,14,101,455.0,Dollar
-True,1673,3.9,4.02849,4.02849,13,32,455.0,Pound
-False,287,3.75,3.75101,3.75101,13,24,455.0,Dollar
-False,2270,4.15,4.27296,4.27296,12,15,455.0,Pound
-False,2027,3.65,3.48853,3.48853,12,43,455.0,Euro
-True,674,4.0,3.96518,3.96518,12,24,455.0,Pound
-True,649,4.25,4.34159,4.34159,12,9,455.0,Dollar
-False,55,4.7,4.90564,4.90564,13,25,455.0,Pound
-True,4906,3.3,3.43342,3.43342,12,16,455.0,Dollar
-False,81,3.65,3.5021,3.5021,12,0,455.0,Euro
-True,4598,3.55,3.2483,3.2483,12,12,455.0,Euro
-False,41,3.55,3.40093,3.40093,12,5,455.0,Dollar
-True,968,4.5,4.31248,4.31248,12,14,455.0,Dollar
-False,102,4.1,4.10427,4.10427,12,10,455.0,Euro
-False,3937,4.5,4.5507,4.5507,12,39,455.0,Euro
-False,125,3.1,3.22334,3.22334,12,12,455.0,Pound
-True,85,3.35,3.57988,3.57988,12,7,960.0,Dollar
-True,78,4.0,3.87612,3.87612,12,28,455.0,Dollar
-True,1534,4.5,4.40096,4.40096,12,17,455.0,Pound
-False,79,4.1,4.17584,4.17584,12,20,455.0,Dollar
-True,61,4.8,4.78071,4.78071,12,25,455.0,Euro
-True,83,4.83333,4.73362,4.73362,12,57,455.0,Pound
-True,335,4.5,4.46401,4.46401,12,36,455.0,Euro
-True,1051,4.65,4.57956,4.57956,12,17,700.0,Dollar
-True,288,4.8,4.85841,4.85841,12,58,455.0,Euro
-False,1193,4.8,4.76734,4.76734,12,21,455.0,Dollar
-True,1114,4.4,4.28875,4.28875,12,10,455.0,Dollar
-False,7492,3.15,3.17404,3.17404,12,13,455.0,Euro
-False,52,4.55,4.50324,4.50324,12,72,455.0,Pound
-False,68,4.55,4.50917,4.50917,12,36,455.0,Euro
-False,45,4.25,4.23634,4.23634,12,58,700.0,Euro
-True,65,4.68182,4.67631,4.67631,11,40,455.0,Pound
-True,1256,4.05,4.00516,4.00516,11,45,455.0,Dollar
-True,889,3.65,4.29435,4.29435,11,11,455.0,Pound
-True,3191,3.1,3.03036,3.03036,11,25,455.0,Euro
-False,67,4.3,4.35044,4.35044,11,45,455.0,Euro
-True,66,4.45,4.40246,4.40246,11,32,455.0,Pound
-False,536,4.63636,4.687,4.687,11,55,455.0,Euro
-True,147,3.7,3.36074,3.36074,11,0,455.0,Dollar
-False,713,3.9,3.1199,3.1199,11,15,455.0,Euro
-True,1102,4.1,4.14834,4.14834,11,7,455.0,Dollar
-True,43,4.2,3.72775,3.72775,11,26,455.0,Pound
-True,29,4.8,4.83676,4.83676,11,15,455.0,Dollar
-True,288,3.1,3.29456,3.29456,11,6,455.0,Euro
-False,1201,4.05,3.92075,3.92075,11,8,455.0,Dollar
-False,30,4.85,4.78124,4.78124,11,22,455.0,Pound
-True,40,3.55,3.78524,3.78524,11,12,455.0,Euro
-True,45,3.9,3.69393,3.69393,11,14,455.0,Pound
-False,72,4.05,4.20499,4.20499,11,5,455.0,Euro
-False,2403,3.8,4.00939,4.00939,11,14,455.0,Pound
-True,54,4.55,4.55033,4.55033,11,11,700.0,Euro
-False,67,4.45,4.31081,4.31081,11,49,455.0,Pound
-True,155,4.5,4.4864,4.4864,11,9,455.0,Dollar
-True,2025,3.75,3.40589,3.40589,11,30,455.0,Dollar
-True,34,3.7,3.66305,3.66305,10,25,455.0,Dollar
-True,103,3.9,3.89699,3.89699,10,18,455.0,Dollar
-True,115,4.25,4.21256,4.21256,10,19,455.0,Dollar
-False,1867,4.4,4.24299,4.24299,10,20,455.0,Pound
-True,457,4.35,4.35995,4.35995,10,26,455.0,Pound
-False,51,4.55,4.48128,4.48128,10,15,455.0,Dollar
-True,94,4.15,4.16397,4.16397,10,89,455.0,Euro
-True,37,2.9,3.06509,3.06509,10,39,455.0,Pound
-False,21,2.75,2.65927,2.65927,10,10,455.0,Euro
-False,42,4.2,4.2225,4.2225,10,18,455.0,Dollar
-False,253,4.25,4.19678,4.19678,10,6,455.0,Euro
-False,39,4.3,4.2224,4.2224,10,35,455.0,Euro
-False,63,3.7,3.73543,3.73543,10,30,1440.0,Euro
-True,40,4.9,4.89795,4.89795,10,5,455.0,Dollar
-False,578,4.3,4.35898,4.35898,10,15,455.0,Dollar
-True,4538,3.7,3.58383,3.58383,10,90,455.0,Euro
-True,613,3.25,3.22505,3.22505,10,9,455.0,Dollar
-False,40,4.25,4.18428,4.18428,10,5,455.0,Euro
-False,46,4.5,4.46382,4.46382,10,13,455.0,Pound
-True,40,4.7,4.61548,4.61548,10,42,455.0,Dollar
-False,15,3.95,4.23945,4.23945,10,7,455.0,Dollar
-True,126,4.35,4.37313,4.37313,10,6,455.0,Euro
-True,1443,4.95,4.95822,4.95822,10,74,455.0,Dollar
-False,478,4.2,4.20468,4.20468,10,22,455.0,Dollar
-False,490,5.0,5.0,5.0,10,16,455.0,Euro
-False,28,3.55,3.56205,3.56205,10,38,455.0,Euro
-True,1680,2.7,2.98311,2.98311,10,8,455.0,Pound
-True,42,4.25,4.34987,4.34987,10,78,455.0,Dollar
-True,234,3.85,3.70378,3.70378,10,12,455.0,Pound
-False,55,4.6,4.57971,4.57971,10,16,455.0,Euro
-False,34,4.0,3.92996,3.92996,10,25,455.0,Euro
-True,59,4.55,4.47277,4.47277,10,25,455.0,Pound
-True,705,4.38889,4.41094,4.41094,10,29,455.0,Euro
-False,1031,4.2,4.19912,4.19912,10,72,455.0,Dollar
-False,49,4.55,4.55889,4.55889,10,63,455.0,Euro
-False,6684,4.5,4.57451,4.57451,11,20,455.0,Euro
-False,26,4.35,4.3899,4.3899,10,32,455.0,Dollar
-True,1688,3.6,3.64144,3.64144,10,5,455.0,Dollar
-True,1276,4.1,4.02252,4.02252,10,16,455.0,Euro
-True,2745,4.55,4.41971,4.41971,10,79,455.0,Dollar
-False,22,3.65,3.86828,3.86828,10,12,455.0,Pound
-False,704,4.55,4.59596,4.59596,10,17,455.0,Dollar
-False,77,4.95,4.95908,4.95908,10,138,455.0,Pound
-False,47,4.65,4.56849,4.56849,10,19,455.0,Euro
-False,136,4.1,4.09551,4.09551,10,0,455.0,Euro
-False,2547,4.35,4.39638,4.39638,10,9,455.0,Pound
-False,99,3.8,3.31265,3.31265,10,8,455.0,Dollar
-False,108,3.45,3.04126,3.04126,10,25,455.0,Pound
-False,1942,4.25,4.16368,4.16368,10,21,455.0,Pound
-True,520,4.05556,3.64209,3.64209,9,15,455.0,Euro
-False,29,3.77778,3.70258,3.70258,9,53,455.0,Pound
-False,59,4.22222,4.15427,4.15427,9,20,455.0,Euro
-False,3586,4.55556,4.68987,4.68987,9,70,455.0,Euro
-False,1324,3.72222,3.92509,3.92509,9,51,455.0,Dollar
-True,41,4.66667,4.60661,4.60661,9,17,700.0,Pound
-True,638,4.27778,4.17759,4.17759,9,37,455.0,Pound
-True,41,3.88889,3.81859,3.81859,9,20,455.0,Pound
-True,45,4.5,4.51916,4.51916,9,41,455.0,Dollar
-False,38,4.5,4.5516,4.5516,9,13,455.0,Pound
-True,133,4.72222,4.7105,4.7105,9,15,455.0,Euro
-False,61,4.27778,4.3052,4.3052,9,17,455.0,Dollar
-False,1332,4.38889,4.36821,4.36821,9,34,455.0,Dollar
-True,26,4.44444,4.0432,4.0432,9,18,480.0,Pound
-True,27,4.22222,3.72,3.72,9,68,455.0,Euro
-True,181,4.11111,3.94732,3.94732,9,40,455.0,Dollar
-True,283,4.33333,4.15613,4.15613,9,26,455.0,Pound
-False,24,4.66667,4.59407,4.59407,9,34,455.0,Dollar
-False,36,4.66667,4.66114,4.66114,9,103,1600.0,Dollar
-False,42,4.66667,4.83746,4.83746,9,55,455.0,Euro
-False,42,4.16667,4.12187,4.12187,9,25,455.0,Pound
-False,560,4.38889,4.33392,4.33392,9,12,455.0,Dollar
-True,691,3.38889,3.50043,3.50043,9,25,455.0,Pound
-False,24,4.0,4.08592,4.08592,9,28,455.0,Pound
-False,1545,4.55556,4.78815,4.78815,9,10,455.0,Dollar
-True,1001,4.27778,4.44731,4.44731,9,15,455.0,Pound
-True,2259,4.27778,4.51077,4.51077,10,35,455.0,Euro
-True,55,3.83333,3.76932,3.76932,9,9,455.0,Pound
-True,111,3.94444,3.97205,3.97205,9,7,455.0,Pound
-True,84,4.5,4.54064,4.54064,9,19,455.0,Dollar
-True,37,4.94444,4.88841,4.88841,9,22,455.0,Euro
-True,23,3.83333,3.80905,3.80905,9,75,455.0,Euro
-True,21,4.33333,3.74258,3.74258,9,31,455.0,Dollar
-False,79,4.16667,4.07607,4.07607,9,18,455.0,Euro
-False,105,4.72222,4.73874,4.73874,9,10,455.0,Dollar
-True,64,3.55556,3.76173,3.76173,9,34,455.0,Dollar
-False,708,3.72222,3.12061,3.12061,9,17,455.0,Pound
-False,1278,4.66667,4.50591,4.50591,9,9,455.0,Euro
-True,973,3.55556,3.60065,3.60065,9,21,455.0,Dollar
-False,1123,4.16667,4.1,4.1,9,42,455.0,Dollar
-False,1860,4.0,4.22382,4.22382,9,14,455.0,Pound
-False,23,4.6875,4.60034,4.60034,8,26,455.0,Pound
-False,29,4.25,4.09287,4.09287,8,7,455.0,Pound
-False,62,3.6875,3.72792,3.72792,8,36,455.0,Dollar
-False,72,4.75,4.78243,4.78243,8,23,455.0,Euro
-True,49,4.375,4.2779,4.2779,8,39,455.0,Euro
-True,40,3.6875,3.39625,3.39625,8,0,455.0,Euro
-True,18,3.9375,3.15562,3.15562,8,8,3200.0,Dollar
-True,1371,4.0,3.56034,3.56034,8,36,455.0,Euro
-True,15,4.75,4.7961,4.7961,8,10,455.0,Pound
-True,1683,4.375,4.73498,4.73498,8,11,455.0,Euro
-True,32,4.6875,4.68632,4.68632,8,44,455.0,Pound
-False,39,4.625,4.57307,4.57307,8,12,455.0,Pound
-True,46,3.5,4.00387,4.00387,8,16,455.0,Euro
-False,1156,4.5,4.55888,4.55888,8,105,455.0,Pound
-True,761,3.375,3.20247,3.20247,8,5,455.0,Euro
-True,41,4.8125,4.9068,4.9068,8,88,3200.0,Euro
-False,132,3.9375,3.95966,3.95966,8,36,455.0,Pound
-True,12658,4.5,4.45921,4.45921,8,148,455.0,Dollar
-True,21,4.75,4.68364,4.68364,8,27,455.0,Pound
-True,48,3.75,3.70518,3.70518,8,25,455.0,Dollar
-True,92,4.1875,4.3378,4.3378,8,31,455.0,Dollar
-False,29,3.875,3.87513,3.87513,8,18,455.0,Euro
-True,31,4.625,4.63079,4.63079,8,21,455.0,Pound
-True,79,3.8125,3.80555,3.80555,8,0,455.0,Dollar
-False,68,4.25,4.30629,4.30629,8,14,455.0,Dollar
-False,76,3.75,3.73526,3.73526,8,0,455.0,Pound
-True,33,3.625,3.705,3.705,8,21,455.0,Pound
-False,154,4.75,4.70156,4.70156,8,68,455.0,Pound
-True,844,3.8125,3.38634,3.38634,8,7,455.0,Pound
-True,1096,4.75,4.79973,4.79973,8,42,455.0,Pound
-False,66,4.0625,4.13294,4.13294,8,14,455.0,Euro
-False,55,3.5,3.23204,3.23204,7,6,455.0,Dollar
-False,21,4.14286,4.06581,4.06581,7,9,455.0,Dollar
-False,36,3.78571,3.62458,3.62458,7,10,640.0,Dollar
-False,467,4.21429,4.04282,4.04282,7,101,455.0,Pound
-True,426,3.85714,3.94942,3.94942,7,12,455.0,Pound
-True,712,4.28571,4.26351,4.26351,7,18,455.0,Dollar
-False,90,3.07143,3.03173,3.03173,7,54,455.0,Pound
-True,924,4.35714,4.40502,4.40502,7,18,455.0,Dollar
-True,16,4.28571,4.26038,4.26038,7,20,455.0,Pound
-True,44,4.14286,3.98804,3.98804,7,0,480.0,Pound
-True,1199,4.07143,4.05661,4.05661,7,16,455.0,Pound
-False,40,4.57143,4.48854,4.48854,7,16,455.0,Pound
-True,30,4.35714,4.39593,4.39593,7,95,455.0,Dollar
-True,2435,3.42857,3.73034,3.73034,7,12,455.0,Pound
-True,19,4.5,4.52734,4.52734,7,19,455.0,Euro
-True,20,4.42857,4.41038,4.41038,7,29,455.0,Euro
-False,518,4.42857,4.38742,4.38742,7,7,455.0,Euro
-False,23,4.5,4.46518,4.46518,7,14,455.0,Euro
-False,263,3.78571,3.46736,3.46736,7,40,455.0,Pound
-False,28,4.64286,4.6197,4.6197,7,33,455.0,Pound
-True,55,3.5,3.69706,3.69706,7,17,455.0,Euro
-False,51,4.35714,4.42964,4.42964,7,5,455.0,Euro
-False,23,3.92857,4.00477,4.00477,7,12,455.0,Euro
-True,64,3.57143,3.41189,3.41189,7,8,455.0,Dollar
-True,96,4.14286,4.02359,4.02359,8,72,455.0,Pound
-True,48,3.28571,3.39472,3.39472,7,48,455.0,Pound
-False,33,2.71429,2.83498,2.83498,7,18,455.0,Dollar
-True,38,3.78571,3.59524,3.59524,7,13,455.0,Pound
-True,41,3.92857,3.92102,3.92102,7,41,455.0,Pound
-False,47,3.57143,3.58486,3.58486,7,19,455.0,Dollar
-True,12,4.71429,4.70108,4.70108,7,11,455.0,Dollar
-True,29,4.57143,4.5719,4.5719,7,22,455.0,Pound
-False,9,5.0,5.0,5.0,7,39,455.0,Euro
-True,5160,3.64286,3.68837,3.68837,8,44,455.0,Euro
-False,33,2.78571,2.71866,2.71866,7,7,455.0,Pound
-False,42,4.57143,4.44758,4.44758,7,25,455.0,Dollar
-False,47,5.0,5.0,5.0,7,20,455.0,Euro
-False,19,3.64286,3.78009,3.78009,7,40,2960.0,Euro
-True,54,4.14286,4.02786,4.02786,7,52,455.0,Euro
-False,751,4.14286,4.21432,4.21432,7,15,455.0,Euro
-True,527,4.28571,4.00587,4.00587,7,25,455.0,Pound
-True,36,4.41667,4.3241,4.3241,6,11,455.0,Dollar
-True,21,3.66667,3.63247,3.63247,6,35,455.0,Pound
-False,13,4.0,3.87965,3.87965,6,10,455.0,Dollar
-True,647,4.08333,4.22253,4.22253,6,20,455.0,Dollar
-True,860,2.75,3.34079,3.34079,6,16,455.0,Euro
-False,25,3.83333,3.85887,3.85887,6,17,455.0,Dollar
-False,338,3.25,2.89046,2.89046,6,72,455.0,Euro
-True,212,5.0,5.0,5.0,6,6,455.0,Euro
-True,1077,3.5,3.44609,3.44609,6,24,455.0,Euro
-False,23,4.33333,4.34897,4.34897,6,50,455.0,Euro
-True,27,3.25,3.09291,3.09291,6,0,455.0,Pound
-False,302,3.91667,4.33887,4.33887,6,41,455.0,Dollar
-True,40,4.33333,4.33067,4.33067,6,19,455.0,Euro
-True,14,3.58333,3.27962,3.27962,6,18,455.0,Dollar
-False,37,4.0,3.97199,3.97199,6,7,455.0,Pound
-True,1032,3.0,3.36697,3.36697,6,35,455.0,Pound
-False,838,2.16667,1.35133,1.35133,6,15,455.0,Pound
-False,21,5.0,5.0,5.0,6,57,455.0,Pound
-False,132,4.41667,4.35287,4.35287,6,11,455.0,Pound
-True,26,4.0,3.87322,3.87322,6,10,455.0,Pound
-False,987,3.66667,3.667,3.667,6,22,455.0,Euro
-False,38,4.16667,4.26129,4.26129,6,23,455.0,Pound
-False,443,4.0,4.00746,4.00746,6,13,455.0,Pound
-True,232,4.5,4.36499,4.36499,6,68,455.0,Pound
-False,22,4.25,4.43013,4.43013,6,29,455.0,Dollar
-True,33,4.75,4.78771,4.78771,7,19,455.0,Dollar
-True,26,3.5,3.18423,3.18423,6,23,455.0,Dollar
-True,43,4.66667,4.69334,4.69334,6,21,455.0,Pound
-False,36,5.0,5.0,5.0,6,33,455.0,Pound
-True,30,4.5,4.59413,4.59413,6,40,455.0,Dollar
-True,667,4.08333,4.05176,4.05176,6,10,455.0,Pound
-True,22,4.5,4.47295,4.47295,6,29,455.0,Pound
-False,1209,4.33333,4.06257,4.06257,6,48,455.0,Dollar
-False,22,4.5,4.53265,4.53265,6,39,455.0,Pound
-False,19,3.66667,4.07843,4.07843,6,6,455.0,Euro
-True,142,3.58333,3.58243,3.58243,6,32,455.0,Euro
-False,22,4.25,4.0547,4.0547,6,11,455.0,Pound
-True,89,4.41667,4.27597,4.27597,6,33,455.0,Dollar
-False,25,4.83333,4.84979,4.84979,6,11,455.0,Dollar
-True,1153,4.08333,3.72411,3.72411,6,17,455.0,Dollar
-True,64,3.41667,3.44502,3.44502,6,8,455.0,Pound
-False,56,4.08333,4.07598,4.07598,6,11,455.0,Dollar
-False,12,3.33333,3.3141,3.3141,6,10,455.0,Euro
-False,27,3.41667,3.43195,3.43195,6,14,455.0,Euro
-False,37,4.75,4.76191,4.76191,6,15,455.0,Euro
-True,1012,4.08333,4.27631,4.27631,6,14,455.0,Euro
-False,33,3.91667,3.82744,3.82744,6,19,455.0,Pound
-True,752,4.4,4.38282,4.38282,6,19,455.0,Dollar
-False,14,4.41667,4.39354,4.39354,6,10,455.0,Pound
-True,44,4.5,4.47274,4.47274,6,7,455.0,Dollar
-False,141,3.91667,3.69408,3.69408,6,50,455.0,Dollar
-True,1016,4.08333,4.26585,4.26585,6,8,455.0,Dollar
-True,17,1.91667,1.98663,1.98663,6,9,455.0,Euro
-False,28,4.66667,4.57438,4.57438,6,31,455.0,Euro
-True,35,3.83333,3.78536,3.78536,6,17,455.0,Pound
-True,41,4.0,3.52269,3.52269,6,5,455.0,Pound
-True,357,4.0,4.01488,4.01488,6,26,455.0,Pound
-False,398,3.33333,3.46884,3.46884,6,11,455.0,Pound
-False,8,1.66667,1.77701,1.77701,6,0,455.0,Dollar
-True,19,3.58333,3.46121,3.46121,6,5,455.0,Euro
-True,36,4.5,4.40726,4.40726,6,43,455.0,Dollar
-True,1001,4.1,4.07793,4.07793,5,11,455.0,Pound
-False,27,4.2,3.9454,3.9454,5,33,455.0,Euro
-True,46,4.7,4.5161,4.5161,5,6,455.0,Euro
-True,520,4.3,4.25661,4.25661,6,5,455.0,Dollar
-False,40,4.3,4.18657,4.18657,5,29,455.0,Euro
-True,43,4.6,4.579,4.579,5,64,455.0,Euro
-False,53,3.3,3.16046,3.16046,5,26,455.0,Euro
-True,31,3.8,3.78619,3.78619,5,20,455.0,Pound
-False,1103,3.7,3.85819,3.85819,5,21,455.0,Euro
-False,37,2.3,2.31593,2.31593,5,9,455.0,Dollar
-True,33,4.2,4.22303,4.22303,5,75,455.0,Pound
-True,40,3.7,3.57644,3.57644,5,18,455.0,Euro
-False,26,3.4,3.39275,3.39275,5,10,455.0,Pound
-True,36,4.7,4.71174,4.71174,5,12,455.0,Euro
-False,14,3.3,3.51445,3.51445,5,7,455.0,Dollar
-True,14,4.8,4.79463,4.79463,5,12,455.0,Dollar
-True,20,4.8,4.76294,4.76294,5,17,455.0,Pound
-False,18,4.6,4.58458,4.58458,5,9,455.0,Pound
-False,1431,3.2,3.09166,3.09166,5,6,800.0,Euro
-False,27,5.0,5.0,5.0,5,15,455.0,Pound
-False,833,3.9,4.06826,4.06826,5,9,455.0,Pound
-True,948,3.8,3.70513,3.70513,5,8,455.0,Pound
-True,28,3.9,3.90492,3.90492,5,15,455.0,Dollar
-False,361,5.0,5.0,5.0,5,49,455.0,Dollar
-False,30,4.6,4.6396,4.6396,5,7,455.0,Euro
-True,562,3.7,3.66643,3.66643,5,15,455.0,Euro
-False,13,3.4,3.36498,3.36498,5,9,455.0,Pound
-True,7,4.6,4.60728,4.60728,5,9,455.0,Pound
-True,50,4.7,4.58486,4.58486,5,61,481.0,Dollar
-True,21,3.8,3.93041,3.93041,5,6,455.0,Pound
-False,16,3.2,3.57078,3.57078,5,35,455.0,Euro
-True,9,2.0,2.23671,2.23671,5,17,455.0,Dollar
-True,1288,4.5,4.60258,4.60258,5,11,455.0,Pound
-False,14,4.1,4.07875,4.07875,5,20,455.0,Dollar
-True,17,3.7,3.73063,3.73063,5,60,455.0,Pound
-False,777,2.9,2.79359,2.79359,5,15,455.0,Dollar
-True,33,3.4,3.11149,3.11149,5,39,455.0,Pound
-False,33,4.3,4.41463,4.41463,5,19,455.0,Euro
-True,1461,3.5,3.13363,3.13363,5,15,455.0,Pound
-False,596,3.8,3.79112,3.79112,5,14,468.0,Pound
-False,1162,3.3,3.26966,3.26966,5,41,455.0,Pound
-True,44,5.0,5.0,5.0,6,27,455.0,Dollar
-True,28,4.4,4.33377,4.33377,5,14,455.0,Euro
-True,21,4.2,4.21227,4.21227,5,23,455.0,Dollar
-False,11,4.8,4.76703,4.76703,5,26,455.0,Pound
-True,27,3.5,3.5462,3.5462,5,9,455.0,Euro
-False,143,4.8,4.80164,4.80164,5,34,455.0,Euro
-False,214,2.6,2.52437,2.52437,5,8,455.0,Dollar
-False,41,3.6,3.90727,3.90727,5,32,455.0,Dollar
-False,48,4.4,4.83441,4.83441,5,15,455.0,Pound
-False,29,4.3,4.28124,4.28124,5,9,455.0,Dollar
-True,22,2.8,2.50613,2.50613,6,0,455.0,Euro
-True,21,4.7,4.69361,4.69361,5,56,455.0,Pound
-False,35,4.8,4.76667,4.76667,5,8,455.0,Pound
-True,183,3.8,3.73117,3.73117,5,5,455.0,Euro
-False,683,4.6,4.57277,4.57277,5,24,455.0,Dollar
-False,1383,3.9,3.78818,3.78818,5,12,455.0,Euro
-False,12,4.5,4.55672,4.55672,5,7,455.0,Pound
-True,57,4.4,4.33506,4.33506,5,7,455.0,Euro
-True,481,4.0,4.05579,4.05579,5,0,455.0,Pound
-True,46,3.8,3.84578,3.84578,5,19,455.0,Pound
-False,34,2.8,2.99068,2.99068,5,43,455.0,Dollar
-False,572,4.6,4.64351,4.64351,5,24,455.0,Dollar
-True,13,3.5,3.46527,3.46527,4,8,455.0,Dollar
-False,28,3.25,3.20318,3.20318,4,17,455.0,Pound
-True,30,4.625,4.63126,4.63126,4,9,455.0,Euro
-False,36,3.75,4.49193,4.49193,4,0,455.0,Dollar
-False,33,4.125,4.18623,4.18623,4,27,455.0,Dollar
-False,26,4.5,4.54461,4.54461,4,18,455.0,Pound
-False,31,4.625,4.61985,4.61985,4,10,455.0,Pound
-True,1345,4.5,4.50779,4.50779,4,43,455.0,Euro
-True,1836,2.875,3.03947,3.03947,4,14,455.0,Euro
-False,33,4.0,3.65027,3.65027,4,18,455.0,Pound
-True,19,4.125,4.7023,4.7023,4,11,455.0,Dollar
-True,18,5.0,5.0,5.0,5,68,455.0,Pound
-False,52,3.75,4.02979,4.02979,4,16,455.0,Dollar
-False,14,3.5,3.51058,3.51058,4,38,455.0,Dollar
-True,16,4.0,3.69633,3.69633,4,26,455.0,Pound
-True,15,4.125,3.97428,3.97428,4,24,455.0,Dollar
-True,25,4.375,4.39245,4.39245,4,38,455.0,Euro
-True,34,4.875,4.96438,4.96438,4,51,455.0,Dollar
-True,1024,4.125,4.05162,4.05162,4,53,455.0,Dollar
-True,535,4.625,4.52194,4.52194,4,10,455.0,Euro
-True,39,4.875,4.90653,4.90653,4,25,455.0,Pound
-True,29,3.75,3.50511,3.50511,4,9,455.0,Dollar
-True,14,3.5,3.63937,3.63937,4,21,1600.0,Dollar
-True,19,4.75,4.73134,4.73134,4,18,455.0,Dollar
-True,22,4.25,4.1429,4.1429,4,0,455.0,Pound
-True,162,4.75,4.62467,4.62467,4,7,455.0,Pound
-True,52,4.625,4.68964,4.68964,4,34,455.0,Dollar
-True,515,4.625,4.49893,4.49893,4,8,455.0,Pound
-True,286,4.5,4.5,4.5,4,31,455.0,Euro
-True,768,4.25,3.8189,3.8189,4,10,455.0,Dollar
-True,11,3.625,3.42648,3.42648,4,26,455.0,Dollar
-False,21,2.875,2.88382,2.88382,4,13,1440.0,Pound
-False,24,3.75,3.74866,3.74866,4,37,455.0,Euro
-True,24,4.5,4.34419,4.34419,4,14,455.0,Euro
-False,16,4.25,3.97911,3.97911,4,23,455.0,Pound
-False,22,4.25,4.22481,4.22481,4,11,455.0,Euro
-True,11,4.625,4.65248,4.65248,4,12,455.0,Euro
-True,1223,4.125,3.99069,3.99069,4,16,455.0,Euro
-False,37,3.875,3.78003,3.78003,4,22,455.0,Pound
-True,737,3.75,4.56355,4.56355,4,20,455.0,Pound
-True,38,4.5,4.28196,4.28196,4,14,455.0,Euro
-True,1195,3.625,3.81959,3.81959,4,0,455.0,Euro
-False,8,4.375,4.49684,4.49684,4,21,455.0,Pound
-True,440,3.125,3.15152,3.15152,4,16,455.0,Euro
-True,633,4.375,4.29127,4.29127,4,23,455.0,Pound
-True,890,3.75,3.82202,3.82202,4,15,455.0,Dollar
-False,404,2.375,2.59974,2.59974,4,18,455.0,Dollar
-False,19,4.875,4.85894,4.85894,4,21,455.0,Euro
-True,679,3.25,3.25575,3.25575,4,9,455.0,Pound
-False,137,4.875,4.85763,4.85763,4,178,455.0,Dollar
-True,64,3.375,3.34921,3.34921,4,0,455.0,Euro
-True,14,4.0,4.03329,4.03329,4,15,455.0,Pound
-False,12,4.0,4.06818,4.06818,4,17,455.0,Dollar
-False,1469,3.875,4.3106,4.3106,4,8,455.0,Dollar
-True,32,4.75,4.88246,4.88246,4,5,455.0,Euro
-True,6,4.875,4.86226,4.86226,4,22,455.0,Euro
-True,29,4.5,4.41097,4.41097,4,13,455.0,Pound
-False,1511,3.875,4.35145,4.35145,4,26,455.0,Dollar
-True,1027,4.25,4.60909,4.60909,4,40,455.0,Dollar
-True,56,4.375,4.23424,4.23424,4,5,455.0,Pound
-True,1006,4.25,4.1282,4.1282,4,41,455.0,Pound
-False,2001,2.875,2.57497,2.57497,4,17,455.0,Euro
-False,291,4.125,3.81964,3.81964,4,25,455.0,Dollar
-True,84,4.0,3.86864,3.86864,3,21,455.0,Euro
-False,963,3.0,2.78019,2.78019,3,27,455.0,Dollar
-True,14,3.83333,3.9636,3.9636,3,14,455.0,Dollar
-True,4,3.5,3.31256,3.31256,3,5,455.0,Euro
-False,209,3.66667,3.64305,3.64305,3,15,455.0,Euro
-True,4,5.0,5.0,5.0,3,38,455.0,Dollar
-False,1999,3.66667,3.88288,3.88288,3,40,455.0,Euro
-False,9,4.0,4.24564,4.24564,3,12,455.0,Pound
-False,28,5.0,5.0,5.0,3,25,455.0,Pound
-True,1034,3.66667,4.28588,4.28588,3,15,455.0,Pound
-False,20,4.83333,4.89381,4.89381,3,0,455.0,Pound
-True,25,4.83333,4.77821,4.77821,4,14,455.0,Euro
-True,181,4.5,4.47193,4.47193,3,30,455.0,Dollar
-False,12,3.5,3.07993,3.07993,3,10,455.0,Dollar
-True,11,4.33333,4.39213,4.39213,3,11,455.0,Dollar
-True,389,4.0,3.92857,3.92857,3,12,455.0,Pound
-True,1933,4.83333,4.9,4.9,3,11,455.0,Euro
-False,1075,3.66667,4.01932,4.01932,3,5,455.0,Dollar
-False,22,4.66667,4.87703,4.87703,3,33,455.0,Pound
-True,11,4.83333,4.8239,4.8239,3,6,455.0,Euro
-True,12,4.16667,3.42499,3.42499,3,8,455.0,Pound
-True,32,4.0,4.12161,4.12161,3,26,455.0,Euro
-True,13,3.83333,3.85393,3.85393,3,14,455.0,Dollar
-False,123,5.0,5.0,5.0,3,13,455.0,Euro
-True,18,3.33333,3.42683,3.42683,3,18,455.0,Euro
-False,3564,4.0,3.85569,3.85569,3,36,455.0,Pound
-False,11,4.33333,4.37842,4.37842,3,9,455.0,Euro
-False,665,3.0,3.75496,3.75496,3,9,455.0,Dollar
-False,87,4.33333,3.93812,3.93812,3,0,455.0,Pound
-False,780,3.0,3.93226,3.93226,3,16,455.0,Pound
-True,15,3.66667,3.64417,3.64417,3,16,455.0,Dollar
-False,43,4.33333,4.1821,4.1821,3,5,455.0,Pound
-True,10,4.0,3.79547,3.79547,3,9,455.0,Euro
-False,12,3.66667,3.47227,3.47227,3,38,455.0,Dollar
-False,141,4.33333,4.06494,4.06494,3,10,455.0,Pound
-False,29,3.5,3.31255,3.31255,3,0,455.0,Dollar
-False,8,5.0,5.0,5.0,3,25,455.0,Euro
-True,11,4.33333,3.9437,3.9437,3,6,455.0,Pound
-False,27,2.33333,2.72043,2.72043,3,0,455.0,Dollar
-False,5,5.0,5.0,5.0,3,9,700.0,Euro
-True,9,3.33333,3.03658,3.03658,3,53,455.0,Dollar
-False,21,4.16667,3.60935,3.60935,3,17,455.0,Dollar
-True,57,3.83333,3.93916,3.93916,3,18,455.0,Dollar
-False,9,3.0,3.08088,3.08088,3,11,455.0,Dollar
-True,26,4.33333,4.26137,4.26137,3,45,455.0,Euro
-False,7,4.5,4.06128,4.06128,3,22,455.0,Dollar
-False,22,4.66667,4.71493,4.71493,3,59,455.0,Pound
-False,6,4.0,4.00447,4.00447,3,11,455.0,Dollar
-True,15,4.83333,4.82916,4.82916,3,10,455.0,Euro
-False,753,3.5,3.93208,3.93208,3,20,455.0,Euro
-False,513,3.0,3.41811,3.41811,3,25,455.0,Euro
-True,32,5.0,5.0,5.0,3,14,455.0,Pound
-True,34,4.33333,4.342,4.342,3,23,455.0,Dollar
-False,31,3.66667,4.36689,4.36689,3,13,800.0,Euro
-True,11,3.5,3.98302,3.98302,3,10,455.0,Pound
-True,7,4.16667,4.11357,4.11357,3,8,455.0,Euro
-False,6,4.66667,4.63498,4.63498,3,8,455.0,Euro
-True,7,3.33333,3.33879,3.33879,3,13,455.0,Euro
-True,14,4.33333,4.28045,4.28045,3,13,455.0,Dollar
-False,14,4.16667,4.01879,4.01879,3,83,455.0,Pound
-True,9,4.16667,4.15187,4.15187,3,17,455.0,Euro
-False,76,3.83333,3.9127,3.9127,3,0,455.0,Pound
-False,12,4.16667,4.18527,4.18527,3,76,455.0,Euro
-False,18,4.66667,4.60203,4.60203,3,15,455.0,Dollar
-True,26,2.66667,2.64398,2.64398,3,6,455.0,Euro
-True,76,4.0,4.0,4.0,3,21,455.0,Pound
-True,131,4.66667,4.3682,4.3682,3,14,455.0,Euro
-False,838,1.0,1.0,1.0,3,18,455.0,Pound
-True,23,1.75,1.85714,1.85714,2,0,455.0,Euro
-True,2,3.5,3.5,3.5,2,10,455.0,Euro
-True,9,4.0,4.375,4.375,2,17,455.0,Dollar
-True,12,3.0,2.51943,2.51943,2,7,455.0,Dollar
-True,11,4.25,4.20588,4.20588,2,25,455.0,Pound
-False,3,4.25,4.38117,4.38117,2,11,455.0,Pound
-False,8,3.0,1.47059,1.47059,2,37,700.0,Pound
-True,9,5.0,5.0,5.0,2,5,455.0,Dollar
-False,17,3.0,3.04839,3.04839,2,0,800.0,Euro
-False,57,4.25,4.05645,4.05645,2,0,455.0,Pound
-False,17,3.5,3.5,3.5,2,10,455.0,Euro
-False,400,4.0,3.37037,3.37037,2,9,455.0,Euro
-True,5,4.5,4.42553,4.42553,2,8,455.0,Euro
-True,3,3.5,3.5,3.5,2,12,455.0,Euro
-True,10,4.25,4.2649,4.2649,2,41,455.0,Euro
-True,7,3.0,2.88235,2.88235,2,0,455.0,Dollar
-False,269,3.5,3.06087,3.06087,2,48,455.0,Pound
-True,6,4.75,4.73034,4.73034,2,57,455.0,Dollar
-True,5,5.0,5.0,5.0,2,17,455.0,Dollar
-False,1818,3.25,2.59854,2.59854,2,16,455.0,Euro
-True,13,3.5,3.52028,3.52028,2,49,455.0,Pound
-True,9,4.0,4.0,4.0,2,10,455.0,Euro
-False,208,4.5,4.52688,4.52688,2,10,455.0,Dollar
-True,3,3.0,3.0,3.0,2,44,455.0,Dollar
-True,34,4.75,4.77778,4.77778,2,0,455.0,Euro
-False,381,4.5,4.65625,4.65625,2,23,455.0,Pound
-True,13,5.0,5.0,5.0,2,15,455.0,Dollar
-True,2056,4.0,4.0,4.0,2,31,455.0,Euro
-True,2,2.25,2.23318,2.23318,2,14,455.0,Dollar
-False,15,3.5,3.56637,3.56637,2,0,455.0,Pound
-False,2,4.75,4.73566,4.73566,2,31,455.0,Euro
-True,11,3.75,3.3742,3.3742,2,10,455.0,Pound
-False,855,3.25,3.09295,3.09295,2,23,455.0,Pound
-False,271,4.25,4.275,4.275,2,14,455.0,Euro
-False,266,5.0,5.0,5.0,2,22,455.0,Dollar
-False,20,5.0,5.0,5.0,2,42,455.0,Pound
-True,7,5.0,5.0,5.0,2,8,455.0,Euro
-True,10,4.0,3.9813,3.9813,2,8,455.0,Pound
-True,8,3.25,3.12121,3.12121,2,32,455.0,Pound
-True,648,4.25,4.40625,4.40625,2,57,455.0,Pound
-True,8,4.25,4.19915,4.19915,2,18,455.0,Pound
-False,111,4.0,3.96067,3.96067,2,10,455.0,Dollar
-False,1010,3.75,3.71,3.71,2,9,455.0,Euro
-False,38,5.0,5.0,5.0,2,0,455.0,Dollar
-True,17,4.5,4.5,4.5,2,8,455.0,Dollar
-True,11,4.5,4.5211,4.5211,2,26,455.0,Euro
-False,23,4.5,4.48908,4.48908,2,13,455.0,Euro
-False,6,4.0,4.26677,4.26677,2,9,455.0,Pound
-False,28,5.0,5.0,5.0,2,36,455.0,Dollar
-True,17,5.0,5.0,5.0,2,20,455.0,Pound
-False,3,3.0,2.82332,2.82332,2,16,455.0,Dollar
-True,11,3.5,3.75564,3.75564,2,8,455.0,Euro
-True,778,4.75,4.79121,4.79121,2,41,455.0,Euro
-True,1912,2.5,1.76471,1.76471,2,0,455.0,Dollar
-True,18,4.75,4.7931,4.7931,2,0,455.0,Euro
-True,7,5.0,5.0,5.0,2,12,480.0,Pound
-True,1901,2.75,2.50735,2.50735,2,28,455.0,Dollar
-True,14,4.75,4.80664,4.80664,2,10,455.0,Pound
-False,7,5.0,5.0,5.0,2,11,720.0,Pound
-False,17,4.5,4.51724,4.51724,2,17,455.0,Dollar
-False,3378,3.5,4.45098,4.45098,2,39,455.0,Pound
-True,5,2.75,3.05882,3.05882,2,11,455.0,Pound
-True,6,5.0,5.0,5.0,2,45,455.0,Pound
-True,17,4.0,3.94333,3.94333,2,25,455.0,Pound
-True,7,3.5,3.06867,3.06867,2,29,455.0,Dollar
-True,10,4.25,4.24749,4.24749,2,9,455.0,Dollar
-False,2700,4.5,4.19565,4.19565,2,148,455.0,Pound
-False,9,2.5,2.5,2.5,2,24,455.0,Euro
-False,14,4.0,3.9375,3.9375,2,132,455.0,Euro
-True,11,2.5,2.49451,2.49451,2,12,455.0,Dollar
-False,25,5.0,5.0,5.0,2,20,455.0,Pound
-True,18,3.0,2.98485,2.98485,2,8,455.0,Dollar
-True,3,2.75,2.78229,2.78229,2,10,455.0,Dollar
-False,30,4.25,4.2623,4.2623,2,10,2640.0,Euro
-True,22,3.5,3.75829,3.75829,2,130,560.0,Dollar
-False,13,5.0,5.0,5.0,2,44,700.0,Dollar
-True,1013,3.5,3.5,3.5,2,23,455.0,Euro
-True,11,4.0,3.5,3.5,2,0,455.0,Pound
-True,17,4.25,4.30189,4.30189,2,9,455.0,Dollar
-False,7,3.5,3.46457,3.46457,2,7,455.0,Dollar
-False,1005,4.25,4.24849,4.24849,2,6,455.0,Pound
-True,12,4.5,4.5,4.5,2,10,455.0,Euro
-False,2,5.0,5.0,5.0,2,18,455.0,Pound
-True,313,4.5,4.4898,4.4898,2,5,455.0,Dollar
-False,9,3.0,2.88925,2.88925,2,16,455.0,Pound
-False,7,3.25,3.26103,3.26103,3,11,455.0,Dollar
-True,22,4.0,3.98611,3.98611,2,36,455.0,Pound
-False,14,3.5,3.56544,3.56544,2,30,455.0,Euro
-False,14,3.75,3.66321,3.66321,2,18,455.0,Euro
-True,19,4.5,4.5,4.5,2,41,455.0,Dollar
-True,17,4.0,3.11765,3.11765,3,0,455.0,Euro
-True,22,3.75,3.14103,3.14103,2,18,455.0,Euro
-False,11,2.75,2.69558,2.69558,2,9,455.0,Euro
-False,59,5.0,5.0,5.0,2,27,455.0,Pound
-True,24,3.0,3.00314,3.00314,2,13,455.0,Dollar
-True,34,4.75,4.80029,4.80029,2,27,455.0,Dollar
-False,10,3.5,3.48432,3.48432,2,37,455.0,Dollar
-True,920,5.0,5.0,5.0,2,50,455.0,Pound
-True,23,5.0,5.0,5.0,2,11,455.0,Euro
-False,12,4.25,3.94335,3.94335,2,33,455.0,Euro
-True,9,5.0,5.0,5.0,2,8,455.0,Pound
-False,11,4.0,4.0,4.0,2,82,455.0,Dollar
-True,6,4.0,4.0,4.0,2,23,455.0,Dollar
-True,8,5.0,5.0,5.0,2,19,455.0,Dollar
-False,29,4.75,4.65075,4.65075,2,7,455.0,Euro
-True,15,4.0,4.0036,4.0036,2,11,455.0,Pound
-True,6,5.0,5.0,5.0,2,16,455.0,Pound
-False,5,4.5,4.4306,4.4306,2,7,455.0,Dollar
-False,15,4.5,4.43561,4.43561,2,48,455.0,Euro
-False,7,3.25,3.23054,3.23054,2,7,455.0,Euro
-True,1432,4.0,4.0,4.0,2,24,455.0,Dollar
-True,17,3.25,3.28846,3.28846,2,18,455.0,Euro
-True,22,5.0,5.0,5.0,2,14,455.0,Pound
-False,4,3.75,3.725,3.725,2,0,455.0,Pound
-True,11,4.5,4.57143,4.57143,2,9,455.0,Pound
-True,19,4.75,4.85366,4.85366,2,0,455.0,Dollar
-False,344,4.5,4.73684,4.73684,2,7,455.0,Pound
-False,7,3.5,3.20722,3.20722,2,12,455.0,Euro
-True,3262,4.5,4.7033,4.7033,2,42,455.0,Euro
-False,8,3.0,3.57391,3.57391,2,6,455.0,Euro
-False,10,4.75,4.7352,4.7352,2,16,455.0,Dollar
-False,10,5.0,5.0,5.0,2,16,455.0,Euro
-False,9,3.25,3.25832,3.25832,2,8,455.0,Euro
-True,1291,4.0,4.0,4.0,2,13,455.0,Dollar
-True,7,5.0,5.0,5.0,2,34,455.0,Euro
-True,8,5.0,5.0,5.0,2,41,455.0,Dollar
-True,32,5.0,5.0,5.0,2,5,455.0,Dollar
-False,1364,2.75,1.38954,1.38954,2,14,455.0,Euro
-True,8,3.5,3.4878,3.4878,2,7,455.0,Pound
-True,13,3.5,3.16256,3.16256,2,8,455.0,Euro
-False,765,2.0,2.54472,2.54472,2,19,455.0,Euro
-False,18,4.5,4.49327,4.49327,2,12,455.0,Euro
-True,9,4.75,4.625,4.625,2,0,455.0,Pound
-False,5,5.0,5.0,5.0,2,0,455.0,Euro
-True,15,4.5,4.5,4.5,2,8,455.0,Dollar
-True,1376,4.25,4.07372,4.07372,2,13,455.0,Pound
-True,21,2.75,2.7636,2.7636,2,10,455.0,Dollar
-True,13,4.5,4.5,4.5,2,18,455.0,Dollar
-True,36,3.0,3.0,3.0,1,0,455.0,Dollar
-False,1462,2.0,2.0,2.0,1,21,455.0,Dollar
-False,1084,3.0,3.0,3.0,1,17,455.0,Euro
-False,8,4.5,4.5,4.5,1,19,455.0,Pound
-False,19,5.0,5.0,5.0,1,8,455.0,Dollar
-False,24,4.0,4.0,4.0,1,37,455.0,Euro
-False,4,5.0,5.0,5.0,1,17,455.0,Euro
-True,6,5.0,5.0,5.0,1,22,455.0,Pound
-True,4,5.0,5.0,5.0,1,11,455.0,Dollar
-False,7,5.0,5.0,5.0,1,214,455.0,Pound
-False,7,3.5,3.5,3.5,1,67,455.0,Dollar
-False,5,5.0,5.0,5.0,1,16,455.0,Euro
-True,765,4.0,4.0,4.0,1,18,455.0,Dollar
-False,5,1.0,1.0,1.0,1,6,455.0,Dollar
-True,18,4.5,4.5,4.5,1,0,455.0,Pound
-False,16,1.0,1.0,1.0,1,27,455.0,Euro
-False,2031,2.5,2.5,2.5,1,151,455.0,Euro
-False,3,5.0,5.0,5.0,1,5,455.0,Euro
-False,2,3.5,3.5,3.5,1,12,455.0,Euro
-True,3,5.0,5.0,5.0,1,0,455.0,Euro
-True,5,4.0,4.0,4.0,1,5,455.0,Dollar
-False,2,3.0,3.0,3.0,1,7,455.0,Euro
-False,2,5.0,5.0,5.0,1,6,455.0,Dollar
-False,580,4.0,4.0,4.0,1,6,455.0,Dollar
-False,7,4.0,4.0,4.0,1,7,1520.0,Euro
-True,12,2.5,2.5,2.5,1,40,455.0,Pound
-True,62,2.0,2.0,2.0,1,27,455.0,Euro
-True,12,4.0,4.0,4.0,1,66,455.0,Pound
-False,161,4.5,4.5,4.5,1,11,455.0,Pound
-True,1130,4.5,4.5,4.5,1,8,455.0,Euro
-True,0,3.0,3.0,3.0,1,12,455.0,Euro
-False,7,5.0,5.0,5.0,1,13,455.0,Pound
-True,89,4.0,4.0,4.0,1,6,455.0,Pound
-False,1,5.0,5.0,5.0,1,18,455.0,Euro
-True,135,1.0,1.0,1.0,1,11,455.0,Dollar
-False,3,4.5,4.5,4.5,1,8,455.0,Dollar
-False,4,4.0,4.0,4.0,1,6,455.0,Euro
-False,3,4.0,4.0,4.0,1,7,455.0,Dollar
-True,5173,5.0,5.0,5.0,1,34,455.0,Euro
-True,8,5.0,5.0,5.0,1,7,455.0,Pound
-False,7,5.0,5.0,5.0,1,23,455.0,Pound
-True,27,4.5,4.5,4.5,1,65,455.0,Dollar
-True,9,0.5,0.5,0.5,1,15,455.0,Euro
-True,8,4.0,4.0,4.0,1,6,455.0,Euro
-False,7,4.0,4.0,4.0,1,34,455.0,Pound
-True,1409,4.5,4.5,4.5,1,30,455.0,Pound
-False,11,5.0,5.0,5.0,1,5,455.0,Dollar
-True,15,4.5,4.5,4.5,1,60,455.0,Pound
-False,39,3.5,3.5,3.5,1,5,455.0,Pound
-True,22,4.5,4.5,4.5,1,0,455.0,Pound
-True,54,5.0,5.0,5.0,1,0,455.0,Euro
-False,8,1.0,1.0,1.0,1,15,455.0,Dollar
-False,3,5.0,5.0,5.0,1,9,455.0,Pound
-True,1,3.0,3.0,3.0,1,24,455.0,Euro
-True,650,5.0,5.0,5.0,1,18,455.0,Dollar
-True,14,3.5,3.5,3.5,1,15,455.0,Pound
-False,22,4.0,4.0,4.0,1,23,455.0,Euro
-False,834,3.5,3.5,3.5,1,10,455.0,Dollar
-False,709,4.0,4.0,4.0,1,8,455.0,Euro
-True,4809,1.5,1.5,1.5,1,31,455.0,Pound
-False,113,5.0,5.0,5.0,1,5,455.0,Euro
-True,1,3.5,3.5,3.5,1,15,700.0,Euro
-True,6,5.0,5.0,5.0,1,20,455.0,Pound
-True,5,5.0,5.0,5.0,1,44,455.0,Euro
-True,31,5.0,5.0,5.0,1,29,455.0,Euro
-True,2,3.5,3.5,3.5,1,6,455.0,Dollar
-True,13,4.0,4.0,4.0,1,15,455.0,Dollar
-False,8,4.5,4.5,4.5,1,5,455.0,Pound
-True,4,2.0,2.0,2.0,1,9,455.0,Pound
-False,3,5.0,5.0,5.0,1,16,455.0,Euro
-True,366,3.0,3.0,3.0,1,69,455.0,Pound
-False,21,5.0,5.0,5.0,1,90,455.0,Pound
-True,1,5.0,5.0,5.0,1,11,455.0,Pound
-True,8,4.0,4.0,4.0,1,9,455.0,Euro
-False,5,4.5,4.5,4.5,1,13,455.0,Pound
-True,6,5.0,5.0,5.0,1,15,455.0,Euro
-False,5,4.0,4.0,4.0,1,14,455.0,Euro
-False,4,1.5,1.5,1.5,1,6,455.0,Dollar
-False,15,4.0,4.0,4.0,1,34,455.0,Euro
-False,6,4.0,4.0,4.0,1,6,480.0,Pound
-False,5198,5.0,5.0,5.0,1,54,455.0,Euro
-True,2,1.0,1.0,1.0,1,5,455.0,Pound
-True,337,3.5,3.5,3.5,1,10,455.0,Dollar
-False,2,3.0,3.0,3.0,1,5,455.0,Euro
-False,14,2.0,2.0,2.0,1,11,455.0,Dollar
-True,73,5.0,5.0,5.0,1,66,455.0,Euro
-False,7,3.5,3.5,3.5,1,11,455.0,Pound
-False,20,0.5,0.5,0.5,1,26,455.0,Pound
-False,10,4.0,4.0,4.0,1,9,455.0,Dollar
-True,9,4.0,4.0,4.0,1,15,455.0,Euro
-False,10,4.0,4.0,4.0,1,13,455.0,Pound
-True,214,3.0,3.0,3.0,1,5,455.0,Pound
-True,25,5.0,5.0,5.0,1,28,455.0,Dollar
-False,15,3.0,3.0,3.0,1,22,455.0,Dollar
-True,377,2.0,2.0,2.0,1,27,455.0,Euro
-True,12,3.5,3.5,3.5,1,17,455.0,Pound
-False,17,5.0,5.0,5.0,1,34,455.0,Euro
-True,13,3.0,3.0,3.0,1,16,455.0,Pound
-False,1862,3.5,3.5,3.5,1,47,455.0,Dollar
-False,15,1.0,1.0,1.0,1,12,455.0,Pound
-True,10,3.0,3.0,3.0,1,295,455.0,Pound
-False,5,3.5,3.5,3.5,1,7,455.0,Dollar
-True,26,5.0,5.0,5.0,1,0,455.0,Euro
-False,6,5.0,5.0,5.0,1,29,455.0,Pound
-True,2,1.0,1.0,1.0,1,15,700.0,Dollar
-False,4,1.0,1.0,1.0,1,18,455.0,Dollar
-True,14,5.0,5.0,5.0,1,55,455.0,Euro
-False,36,1.0,1.0,1.0,1,62,455.0,Dollar
-False,19,1.5,1.5,1.5,1,197,455.0,Euro
-False,11,5.0,5.0,5.0,1,11,455.0,Dollar
-False,4,4.5,4.5,4.5,1,12,455.0,Dollar
-False,1,4.0,4.0,4.0,1,19,455.0,Euro
-False,9,5.0,5.0,5.0,1,18,455.0,Pound
-False,14,3.5,3.5,3.5,1,0,455.0,Dollar
-True,2,4.0,4.0,4.0,1,20,700.0,Dollar
-True,181,5.0,5.0,5.0,1,16,455.0,Euro
-False,182,1.0,1.0,1.0,1,56,455.0,Pound
-False,8,3.0,3.0,3.0,1,16,455.0,Pound
-True,30,4.0,4.0,4.0,1,0,480.0,Pound
-True,15,5.0,5.0,5.0,1,16,455.0,Pound
-False,9,3.5,3.5,3.5,1,0,455.0,Dollar
-True,8,4.5,4.5,4.5,1,10,455.0,Euro
-False,2,5.0,5.0,5.0,1,12,455.0,Euro
-False,6,2.0,2.0,2.0,1,6,455.0,Dollar
-True,5,4.5,4.5,4.5,1,51,455.0,Euro
-True,11,3.0,3.0,3.0,1,13,455.0,Euro
-True,29,1.0,1.0,1.0,1,11,455.0,Euro
-True,2,5.0,5.0,5.0,1,11,455.0,Dollar
-True,11,5.0,5.0,5.0,1,15,455.0,Dollar
-False,9,4.0,4.0,4.0,1,28,455.0,Euro
-True,249,4.5,4.5,4.5,1,27,455.0,Dollar
-False,6,3.5,3.5,3.5,1,16,455.0,Pound
-True,525,3.0,3.0,3.0,1,54,455.0,Euro
-False,660,4.0,4.0,4.0,1,10,455.0,Pound
-False,535,1.0,1.0,1.0,1,0,455.0,Pound
-True,14,5.0,5.0,5.0,1,19,455.0,Dollar
-True,43,3.0,3.0,3.0,1,28,455.0,Euro
-True,19,5.0,5.0,5.0,1,21,455.0,Dollar
-True,4,5.0,5.0,5.0,1,12,455.0,Euro
-False,1,5.0,5.0,5.0,1,42,455.0,Dollar
-True,5,4.0,4.0,4.0,1,5,455.0,Euro
-False,26,1.0,1.0,1.0,1,62,455.0,Euro
-False,2,1.0,1.0,1.0,1,7,455.0,Euro
-True,139,3.0,3.0,3.0,1,6,455.0,Pound
-True,5,2.5,2.5,2.5,1,12,455.0,Dollar
-True,13,2.0,2.0,2.0,1,8,455.0,Pound
-True,5,5.0,5.0,5.0,1,5,455.0,Pound
-True,36,1.0,1.0,1.0,1,8,455.0,Euro
-False,2,2.5,2.5,2.5,1,7,455.0,Pound
-False,25,4.5,4.5,4.5,1,40,455.0,Dollar
-True,13,5.0,5.0,5.0,1,19,455.0,Dollar
-False,489,3.5,3.5,3.5,1,11,455.0,Dollar
-False,23,4.5,4.5,4.5,1,17,455.0,Dollar
-False,5,5.0,5.0,5.0,1,0,455.0,Euro
-False,12,2.5,2.5,2.5,1,7,455.0,Euro
-True,3,4.0,4.0,4.0,1,11,455.0,Pound
-True,3,4.0,4.0,4.0,1,20,455.0,Pound
-False,11,5.0,5.0,5.0,1,37,455.0,Euro
-True,3,5.0,5.0,5.0,1,23,800.0,Euro
-False,14,5.0,5.0,5.0,1,28,455.0,Pound
-True,7,1.5,1.5,1.5,1,0,455.0,Euro
-False,5,3.5,3.5,3.5,1,9,455.0,Euro
-False,1,5.0,5.0,5.0,1,11,455.0,Dollar
-False,5,1.0,1.0,1.0,1,7,455.0,Pound
-True,2,3.0,3.0,3.0,1,5,455.0,Pound
-True,1,5.0,5.0,5.0,1,60,455.0,Pound
-False,3,5.0,5.0,5.0,1,13,455.0,Dollar
-False,5,5.0,5.0,5.0,1,44,455.0,Euro
-False,6,1.0,1.0,1.0,1,0,455.0,Euro
-True,4,3.0,3.0,3.0,1,8,455.0,Pound
-True,3,4.0,4.0,4.0,1,33,455.0,Pound
-False,26,3.5,3.5,3.5,1,23,455.0,Pound
-True,26,4.0,4.0,4.0,1,18,455.0,Euro
-True,4,5.0,5.0,5.0,1,17,455.0,Euro
-False,177,4.0,4.0,4.0,1,6,455.0,Dollar
-True,8,1.0,1.0,1.0,1,8,455.0,Pound
-True,15,4.5,4.5,4.5,1,0,455.0,Dollar
-False,7,5.0,5.0,5.0,1,9,455.0,Dollar
-True,18,2.5,2.5,2.5,1,21,455.0,Pound
-False,14,5.0,5.0,5.0,1,67,455.0,Dollar
-False,13,5.0,5.0,5.0,1,8,455.0,Euro
-False,6,3.5,3.5,3.5,1,8,455.0,Dollar
-True,7,3.0,3.0,3.0,1,12,455.0,Dollar
-False,13,5.0,5.0,5.0,1,12,455.0,Pound
-False,5,0.0,0.0,0.0,0,18,455.0,Pound
-False,3,0.0,0.0,0.0,0,39,455.0,Pound
-False,11,0.0,0.0,0.0,0,0,455.0,Dollar
-False,17,0.0,0.0,0.0,0,0,455.0,Pound
-False,1,0.0,0.0,0.0,0,12,455.0,Euro
-False,1,0.0,0.0,0.0,0,14,455.0,Euro
-False,0,0.0,0.0,0.0,0,19,455.0,Dollar
-True,5,0.0,0.0,0.0,0,33,455.0,Dollar
-False,1,0.0,0.0,0.0,0,6,455.0,Euro
-False,158,0.0,0.0,0.0,0,5,455.0,Euro
-False,757,0.0,0.0,0.0,0,19,455.0,Euro
-False,0,0.0,0.0,0.0,0,19,455.0,Euro
-True,1,0.0,0.0,0.0,0,9,455.0,Dollar
-True,0,0.0,0.0,0.0,0,7,455.0,Euro
-True,44,0.0,0.0,0.0,0,7,455.0,Euro
-True,293,0.0,0.0,0.0,0,5,455.0,Dollar
-False,0,0.0,0.0,0.0,0,5,2000.0,Dollar
-False,1,0.0,0.0,0.0,0,12,455.0,Dollar
-False,3,0.0,0.0,0.0,0,13,455.0,Euro
-True,3,0.0,0.0,0.0,0,12,455.0,Euro
-False,1,0.0,0.0,0.0,0,13,455.0,Pound
-True,1,0.0,0.0,0.0,0,5,455.0,Pound
-False,3,0.0,0.0,0.0,0,30,455.0,Dollar
-False,2,0.0,0.0,0.0,0,73,455.0,Pound
-False,9,0.0,0.0,0.0,0,102,455.0,Euro
-False,9,0.0,0.0,0.0,0,12,455.0,Pound
-True,4,0.0,0.0,0.0,0,11,455.0,Euro
-False,2,0.0,0.0,0.0,0,14,455.0,Euro
-True,1,0.0,0.0,0.0,0,39,455.0,Pound
-False,2,0.0,0.0,0.0,0,8,455.0,Dollar
-False,1,0.0,0.0,0.0,0,10,455.0,Dollar
-True,1,0.0,0.0,0.0,0,0,455.0,Pound
-True,18,0.0,0.0,0.0,0,23,455.0,Pound
-False,3,0.0,0.0,0.0,0,19,455.0,Pound
-True,1,0.0,0.0,0.0,0,21,455.0,Dollar
-False,0,0.0,0.0,0.0,0,8,455.0,Dollar
-False,2,0.0,0.0,0.0,0,0,480.0,Dollar
-True,26,0.0,0.0,0.0,0,197,455.0,Euro
-False,365,0.0,0.0,0.0,0,26,455.0,Dollar
-True,17,0.0,0.0,0.0,0,10,455.0,Pound
-True,0,0.0,0.0,0.0,0,10,455.0,Euro
-False,1,0.0,0.0,0.0,0,12,455.0,Euro
-False,1,0.0,0.0,0.0,0,8,455.0,Dollar
-False,4,0.0,0.0,0.0,0,12,455.0,Pound
-True,29,0.0,0.0,0.0,0,20,455.0,Pound
-True,3,0.0,0.0,0.0,0,21,455.0,Dollar
-True,1,0.0,0.0,0.0,0,16,455.0,Dollar
-True,0,0.0,0.0,0.0,0,8,455.0,Dollar
-True,1,0.0,0.0,0.0,0,29,455.0,Euro
-False,1,0.0,0.0,0.0,0,8,455.0,Euro
-True,8,0.0,0.0,0.0,0,9,455.0,Pound
-True,1,0.0,0.0,0.0,0,5,455.0,Dollar
-True,2,0.0,0.0,0.0,0,0,455.0,Pound
-False,2,0.0,0.0,0.0,0,16,455.0,Pound
-False,17,0.0,0.0,0.0,0,7,455.0,Pound
-True,11,0.0,0.0,0.0,0,13,455.0,Dollar
-True,0,0.0,0.0,0.0,0,19,455.0,Pound
-True,0,0.0,0.0,0.0,0,8,455.0,Pound
-False,1,0.0,0.0,0.0,0,5,455.0,Pound
-True,0,0.0,0.0,0.0,0,0,455.0,Dollar
-False,10,0.0,0.0,0.0,0,0,455.0,Pound
-True,618,0.0,0.0,0.0,0,31,455.0,Dollar
-False,0,0.0,0.0,0.0,0,44,455.0,Dollar
-True,0,0.0,0.0,0.0,0,10,455.0,Dollar
-False,10,0.0,0.0,0.0,0,0,455.0,Pound
-False,4,0.0,0.0,0.0,0,0,455.0,Dollar
-False,15,0.0,0.0,0.0,0,144,455.0,Pound
-False,4,0.0,0.0,0.0,0,16,455.0,Euro
-True,2,0.0,0.0,0.0,0,6,455.0,Pound
-False,0,0.0,0.0,0.0,0,5,455.0,Pound
-True,3,0.0,0.0,0.0,0,6,455.0,Dollar
-False,26,0.0,0.0,0.0,0,38,455.0,Pound
-False,4,0.0,0.0,0.0,0,5,455.0,Dollar
-False,512,0.0,0.0,0.0,0,15,455.0,Euro
-True,3,0.0,0.0,0.0,0,10,455.0,Euro
-True,0,0.0,0.0,0.0,0,11,455.0,Pound
-True,1,0.0,0.0,0.0,0,15,455.0,Dollar
-False,9,0.0,0.0,0.0,0,12,455.0,Pound
-False,8,0.0,0.0,0.0,0,14,455.0,Pound
-False,2,0.0,0.0,0.0,0,15,455.0,Euro
-True,545,0.0,0.0,0.0,0,10,455.0,Pound
-True,0,0.0,0.0,0.0,0,5,455.0,Dollar
-False,5,0.0,0.0,0.0,0,9,455.0,Euro
-False,2,0.0,0.0,0.0,0,12,455.0,Dollar
-True,37,0.0,0.0,0.0,0,10,455.0,Dollar
-False,22,0.0,0.0,0.0,0,6,455.0,Pound
-True,25,0.0,0.0,0.0,0,14,455.0,Pound
-False,8,0.0,0.0,0.0,0,43,455.0,Euro
-True,12,0.0,0.0,0.0,0,9,455.0,Dollar
-True,1,0.0,0.0,0.0,0,42,455.0,Pound
-False,1,0.0,0.0,0.0,0,40,455.0,Dollar
-True,1,0.0,0.0,0.0,0,0,455.0,Euro
-False,0,0.0,0.0,0.0,0,25,455.0,Euro
-True,6,0.0,0.0,0.0,0,34,455.0,Euro
-True,0,0.0,0.0,0.0,0,58,455.0,Euro
-True,0,0.0,0.0,0.0,0,0,455.0,Euro
-False,0,0.0,0.0,0.0,0,0,455.0,Dollar
-False,45,0.0,0.0,0.0,0,11,455.0,Euro
-True,0,0.0,0.0,0.0,0,10,455.0,Euro
-False,2,0.0,0.0,0.0,0,20,455.0,Euro
-False,1,0.0,0.0,0.0,0,14,455.0,Pound
-False,5,4.0,4.0,4.0,1,56,455.0,Pound
-True,26,0.0,0.0,0.0,0,61,455.0,Euro
-True,1,0.0,0.0,0.0,0,9,455.0,Pound
-True,0,0.0,0.0,0.0,0,8,455.0,Dollar
-True,0,0.0,0.0,0.0,0,6,455.0,Dollar
-False,4,0.0,0.0,0.0,0,28,455.0,Euro
-False,6,5.0,5.0,5.0,2,11,455.0,Pound
-False,2,0.0,0.0,0.0,0,14,455.0,Dollar
-True,2,0.0,0.0,0.0,0,9,455.0,Euro
-True,2475,0.0,0.0,0.0,0,19,455.0,Euro
-True,0,0.0,0.0,0.0,0,5,455.0,Pound
-True,0,0.0,0.0,0.0,0,0,455.0,Pound
-True,101,0.0,0.0,0.0,0,34,455.0,Dollar
-False,1,0.0,0.0,0.0,0,7,455.0,Dollar
-False,1,0.0,0.0,0.0,0,0,455.0,Pound
-False,0,0.0,0.0,0.0,0,10,455.0,Euro
-False,4,0.0,0.0,0.0,0,7,455.0,Pound
-False,2,0.0,0.0,0.0,0,6,455.0,Pound
-False,3,0.0,0.0,0.0,0,8,455.0,Pound
-True,7,0.0,0.0,0.0,0,100,455.0,Dollar
-True,1,0.0,0.0,0.0,0,5,455.0,Pound
-True,2,0.0,0.0,0.0,0,19,455.0,Pound
-False,3,0.0,0.0,0.0,0,35,455.0,Pound
-False,0,0.0,0.0,0.0,0,7,455.0,Pound
-True,3,0.0,0.0,0.0,0,8,455.0,Euro
-True,13,0.0,0.0,0.0,0,14,455.0,Dollar
-True,1,0.0,0.0,0.0,0,9,455.0,Euro
-False,3,0.0,0.0,0.0,0,13,455.0,Euro
-True,720,0.0,0.0,0.0,0,18,455.0,Euro
-False,870,0.0,0.0,0.0,0,5,455.0,Pound
-False,1,0.0,0.0,0.0,0,17,455.0,Pound
-False,7,0.0,0.0,0.0,0,11,455.0,Euro
-True,14,0.0,0.0,0.0,0,7,455.0,Euro
-True,5,0.0,0.0,0.0,0,31,700.0,Dollar
-False,3,0.0,0.0,0.0,0,12,455.0,Pound
-True,0,0.0,0.0,0.0,0,5,455.0,Dollar
-False,0,0.0,0.0,0.0,0,10,455.0,Dollar
-True,1,0.0,0.0,0.0,0,16,455.0,Euro
-False,5,0.0,0.0,0.0,0,31,455.0,Euro
-False,1031,0.0,0.0,0.0,0,29,455.0,Euro
-True,5,0.0,0.0,0.0,0,11,455.0,Euro
-False,7,0.0,0.0,0.0,0,10,455.0,Dollar
-False,4,0.0,0.0,0.0,0,6,455.0,Pound
-True,3,0.0,0.0,0.0,0,28,455.0,Pound
-True,0,0.0,0.0,0.0,0,4,455.0,Pound
-True,0,0.0,0.0,0.0,0,5,455.0,Euro
-False,0,0.0,0.0,0.0,0,28,455.0,Dollar
-True,6,0.0,0.0,0.0,0,25,455.0,Dollar
-True,0,0.0,0.0,0.0,0,16,455.0,Euro
-False,5,0.0,0.0,0.0,0,8,455.0,Euro
-True,0,0.0,0.0,0.0,0,0,455.0,Pound
-True,0,0.0,0.0,0.0,0,38,455.0,Euro
-False,4,0.0,0.0,0.0,0,11,455.0,Pound
-False,1,0.0,0.0,0.0,0,6,455.0,Euro
-False,6,0.0,0.0,0.0,0,22,455.0,Pound
-True,0,0.0,0.0,0.0,0,5,455.0,Pound
-False,7,0.0,0.0,0.0,0,23,455.0,Euro
-False,2,0.0,0.0,0.0,0,20,455.0,Pound
-True,9,0.0,0.0,0.0,0,14,455.0,Dollar
-True,3,0.0,0.0,0.0,0,37,455.0,Dollar
-False,0,0.0,0.0,0.0,0,31,455.0,Pound
-True,1,0.0,0.0,0.0,0,11,455.0,Pound
-False,0,0.0,0.0,0.0,0,9,455.0,Euro
-True,0,0.0,0.0,0.0,0,108,455.0,Pound
-False,4,0.0,0.0,0.0,0,0,455.0,Pound
-True,3,0.0,0.0,0.0,0,13,455.0,Pound
-True,3,0.0,0.0,0.0,0,11,455.0,Pound
-False,1,0.0,0.0,0.0,0,6,455.0,Dollar
-False,1,0.0,0.0,0.0,0,5,455.0,Euro
-False,6,0.0,0.0,0.0,0,12,455.0,Pound
-True,8,0.0,0.0,0.0,0,21,455.0,Dollar
-True,4,0.0,0.0,0.0,0,17,455.0,Euro
-False,6,0.0,0.0,0.0,0,8,455.0,Pound
-True,2,0.0,0.0,0.0,0,15,455.0,Dollar
-False,2,0.0,0.0,0.0,0,11,455.0,Dollar
-False,3,0.0,0.0,0.0,0,25,455.0,Pound
-False,0,0.0,0.0,0.0,0,7,1600.0,Dollar
-False,0,0.0,0.0,0.0,0,10,455.0,Dollar
-True,2,0.0,0.0,0.0,0,10,455.0,Pound
-True,1,0.0,0.0,0.0,0,9,700.0,Euro
-True,0,0.0,0.0,0.0,0,10,455.0,Pound
-True,3,0.0,0.0,0.0,0,8,455.0,Euro
-False,5,0.0,0.0,0.0,0,7,455.0,Euro
-False,0,0.0,0.0,0.0,0,0,455.0,Dollar
-False,22,0.0,0.0,0.0,0,181,455.0,Euro
-True,3,0.0,0.0,0.0,0,5,455.0,Dollar
-False,724,0.0,0.0,0.0,0,17,455.0,Pound
-False,3,0.0,0.0,0.0,0,16,455.0,Pound
-True,2,0.0,0.0,0.0,0,61,455.0,Pound
-False,2,0.0,0.0,0.0,0,50,455.0,Dollar
-True,2,0.0,0.0,0.0,0,38,455.0,Euro
-True,3,0.0,0.0,0.0,0,5,455.0,Pound
-True,0,0.0,0.0,0.0,0,0,455.0,Pound
-False,1275,0.0,0.0,0.0,0,56,455.0,Pound
-False,1,0.0,0.0,0.0,0,6,455.0,Pound
-False,1,0.0,0.0,0.0,0,9,455.0,Euro
-False,5,0.0,0.0,0.0,0,9,455.0,Pound
-True,0,0.0,0.0,0.0,0,17,455.0,Euro
-False,4,0.0,0.0,0.0,0,76,455.0,Euro
-True,23,0.0,0.0,0.0,0,15,455.0,Pound
-False,2,0.0,0.0,0.0,0,7,455.0,Euro
-False,229,0.0,0.0,0.0,0,16,455.0,Dollar
-True,5,0.0,0.0,0.0,0,5,455.0,Pound
-True,1,0.0,0.0,0.0,0,5,455.0,Dollar
-False,1,0.0,0.0,0.0,0,7,455.0,Dollar
-True,8,0.0,0.0,0.0,0,61,455.0,Euro
-False,1,0.0,0.0,0.0,0,11,455.0,Dollar
-True,2,0.0,0.0,0.0,0,8,455.0,Dollar
-False,4,0.0,0.0,0.0,0,16,455.0,Pound
-False,0,0.0,0.0,0.0,0,11,455.0,Pound
-False,1,0.0,0.0,0.0,0,10,1600.0,Euro
-False,1,0.0,0.0,0.0,0,0,455.0,Euro
-False,0,0.0,0.0,0.0,0,11,455.0,Euro
-True,0,0.0,0.0,0.0,0,5,455.0,Pound
-True,0,0.0,0.0,0.0,0,23,455.0,Pound
-False,0,0.0,0.0,0.0,0,70,455.0,Euro
-False,1,0.0,0.0,0.0,0,31,455.0,Dollar
-False,5,0.0,0.0,0.0,0,25,455.0,Euro
-True,1,0.0,0.0,0.0,0,10,455.0,Pound
-True,2,0.0,0.0,0.0,0,7,455.0,Dollar
-False,1,0.0,0.0,0.0,0,5,455.0,Dollar
-False,22,0.0,0.0,0.0,0,7,455.0,Dollar
-True,0,0.0,0.0,0.0,0,0,455.0,Euro
-True,0,0.0,0.0,0.0,0,0,455.0,Dollar
-True,2,0.0,0.0,0.0,0,34,455.0,Dollar
-True,1,0.0,0.0,0.0,0,5,455.0,Euro
-True,5,0.0,0.0,0.0,0,81,455.0,Dollar
-False,4,0.0,0.0,0.0,0,52,455.0,Euro
-False,2,0.0,0.0,0.0,0,9,455.0,Pound
-False,13,0.0,0.0,0.0,0,8,455.0,Euro
-True,0,0.0,0.0,0.0,0,32,455.0,Dollar
-False,1,0.0,0.0,0.0,0,39,455.0,Dollar
-False,5,0.0,0.0,0.0,0,5,455.0,Euro
-True,6,0.0,0.0,0.0,0,10,455.0,Dollar
-True,1,0.0,0.0,0.0,0,11,455.0,Euro
-False,3,0.0,0.0,0.0,0,23,455.0,Dollar
-False,0,0.0,0.0,0.0,0,11,455.0,Pound
-True,1,0.0,0.0,0.0,0,10,455.0,Euro
-True,2,0.0,0.0,0.0,0,25,455.0,Dollar
-True,6,0.0,0.0,0.0,0,17,455.0,Euro
-True,4910,0.0,0.0,0.0,0,144,455.0,Pound
-True,1,0.0,0.0,0.0,0,6,1040.0,Pound
-True,3,0.0,0.0,0.0,0,15,455.0,Dollar
-False,2,0.0,0.0,0.0,0,8,455.0,Pound
-False,5,0.0,0.0,0.0,0,20,455.0,Pound
-True,10,0.0,0.0,0.0,0,13,455.0,Euro
-True,0,0.0,0.0,0.0,0,6,455.0,Pound
-False,1,0.0,0.0,0.0,0,17,700.0,Euro
-False,1,0.0,0.0,0.0,0,9,455.0,Pound
-False,5,0.0,0.0,0.0,0,7,455.0,Pound
-False,7,0.0,0.0,0.0,0,9,455.0,Pound
-True,7,0.0,0.0,0.0,0,61,455.0,Dollar
-False,3,0.0,0.0,0.0,0,19,455.0,Euro
-True,4,0.0,0.0,0.0,0,56,455.0,Dollar
-False,2,0.0,0.0,0.0,0,8,700.0,Dollar
-False,11,0.0,0.0,0.0,0,0,455.0,Dollar
-False,1,0.0,0.0,0.0,0,14,455.0,Dollar
-True,0,0.0,0.0,0.0,0,0,455.0,Dollar
-False,3,0.0,0.0,0.0,0,5,455.0,Euro
-True,2,0.0,0.0,0.0,0,9,455.0,Dollar
-True,5,0.0,0.0,0.0,0,0,455.0,Pound
-True,0,0.0,0.0,0.0,0,14,455.0,Pound
-True,389,0.0,0.0,0.0,0,5,455.0,Pound
-True,0,0.0,0.0,0.0,0,6,455.0,Pound
-False,4,0.0,0.0,0.0,0,6,455.0,Euro
-True,2,0.0,0.0,0.0,0,8,455.0,Euro
-False,0,0.0,0.0,0.0,0,32,455.0,Pound
-False,137,0.0,0.0,0.0,0,13,455.0,Dollar
-False,1,0.0,0.0,0.0,0,34,455.0,Dollar
-False,1,0.0,0.0,0.0,0,9,455.0,Pound
-True,1,0.0,0.0,0.0,0,9,455.0,Dollar
-True,4,0.0,0.0,0.0,0,0,455.0,Pound
-False,0,0.0,0.0,0.0,0,20,455.0,Pound
-True,0,0.0,0.0,0.0,0,34,455.0,Pound
-False,0,0.0,0.0,0.0,0,5,455.0,Dollar
-True,10,0.0,0.0,0.0,0,7,455.0,Euro
-False,154,0.0,0.0,0.0,0,38,455.0,Euro
-False,0,0.0,0.0,0.0,0,12,2880.0,Dollar
-True,8,0.0,0.0,0.0,0,102,455.0,Pound
-False,0,0.0,0.0,0.0,0,7,455.0,Pound
-False,0,0.0,0.0,0.0,0,15,455.0,Dollar
-True,7,0.0,0.0,0.0,0,13,455.0,Pound
-False,2,0.0,0.0,0.0,0,11,455.0,Pound
-False,0,0.0,0.0,0.0,0,47,455.0,Euro
-False,0,0.0,0.0,0.0,0,40,455.0,Pound
-False,0,0.0,0.0,0.0,0,18,455.0,Dollar
-False,0,0.0,0.0,0.0,0,28,1600.0,Euro
-False,0,0.0,0.0,0.0,0,32,455.0,Pound
-False,10,0.0,0.0,0.0,0,18,455.0,Pound
-False,306,0.0,0.0,0.0,0,5,455.0,Pound
-True,4,0.0,0.0,0.0,0,9,455.0,Euro
-False,489,0.0,0.0,0.0,0,16,455.0,Pound
-True,2,0.0,0.0,0.0,0,10,455.0,Pound
-True,2,0.0,0.0,0.0,0,8,455.0,Euro
-True,0,0.0,0.0,0.0,0,8,455.0,Dollar
-True,14,0.0,0.0,0.0,0,25,455.0,Dollar
-False,0,0.0,0.0,0.0,0,9,455.0,Dollar
-False,2,0.0,0.0,0.0,0,6,455.0,Pound
-False,3,0.0,0.0,0.0,0,5,455.0,Euro
-False,0,0.0,0.0,0.0,0,5,455.0,Euro
-False,1,0.0,0.0,0.0,0,7,455.0,Euro
-True,1,0.0,0.0,0.0,0,10,560.0,Euro
-False,0,0.0,0.0,0.0,0,65,455.0,Pound
-True,15,0.0,0.0,0.0,0,0,455.0,Pound
-False,13,0.0,0.0,0.0,0,102,455.0,Dollar
-True,0,0.0,0.0,0.0,0,5,455.0,Pound
-True,0,0.0,0.0,0.0,0,20,960.0,Dollar
-True,1,0.0,0.0,0.0,0,25,455.0,Dollar
-True,1,0.0,0.0,0.0,0,0,455.0,Euro
-False,0,0.0,0.0,0.0,0,12,455.0,Euro
-False,0,0.0,0.0,0.0,0,11,455.0,Euro
-True,9,0.0,0.0,0.0,0,25,455.0,Dollar
-False,2,0.0,0.0,0.0,0,10,455.0,Pound
-False,0,0.0,0.0,0.0,0,10,455.0,Dollar
-True,1,0.0,0.0,0.0,0,23,455.0,Pound
-True,5,0.0,0.0,0.0,0,7,455.0,Euro
-False,0,0.0,0.0,0.0,0,15,455.0,Euro
-True,146,0.0,0.0,0.0,0,5,455.0,Dollar
-True,0,0.0,0.0,0.0,0,12,455.0,Dollar
-True,4,0.0,0.0,0.0,0,17,455.0,Dollar
-True,0,0.0,0.0,0.0,0,66,455.0,Pound
-False,0,0.0,0.0,0.0,0,20,455.0,Pound
-True,2,0.0,0.0,0.0,0,454,455.0,Euro
-True,0,0.0,0.0,0.0,0,5,455.0,Dollar
-True,0,0.0,0.0,0.0,0,6,455.0,Pound
-True,6,0.0,0.0,0.0,0,0,455.0,Euro
-True,5,0.0,0.0,0.0,0,18,455.0,Dollar
-True,2,0.0,0.0,0.0,0,6,455.0,Dollar
-True,4,0.0,0.0,0.0,0,28,455.0,Pound
-False,592,0.0,0.0,0.0,0,12,455.0,Dollar
-True,1,0.0,0.0,0.0,0,12,455.0,Euro
-True,3,0.0,0.0,0.0,0,52,455.0,Euro
-True,9,0.0,0.0,0.0,0,11,455.0,Euro
-False,3521,0.0,0.0,0.0,0,24,455.0,Dollar
-True,1,0.0,0.0,0.0,0,11,455.0,Dollar
-True,1,0.0,0.0,0.0,0,21,455.0,Dollar
-False,11,0.0,0.0,0.0,0,23,455.0,Euro
-True,1,0.0,0.0,0.0,0,12,455.0,Euro
-True,3,0.0,0.0,0.0,0,45,455.0,Pound
-False,2,0.0,0.0,0.0,0,0,455.0,Euro
-True,1,0.0,0.0,0.0,0,36,455.0,Pound
-True,1,0.0,0.0,0.0,0,12,455.0,Euro
-True,2,0.0,0.0,0.0,0,9,455.0,Pound
-False,0,0.0,0.0,0.0,0,15,455.0,Euro
-False,295,0.0,0.0,0.0,0,16,455.0,Pound
-False,7,0.0,0.0,0.0,0,10,455.0,Euro
-True,346,0.0,0.0,0.0,0,11,455.0,Pound
-True,1,0.0,0.0,0.0,0,6,455.0,Pound
-False,397,0.0,0.0,0.0,0,23,455.0,Dollar
-False,0,0.0,0.0,0.0,0,0,455.0,Euro
-False,2,0.0,0.0,0.0,0,17,455.0,Pound
-True,464,0.0,0.0,0.0,0,27,455.0,Euro
-False,22947,4.66913,4.66759,4.66759,6413,129,455.0,Dollar
-False,23731,4.57774,4.56428,4.56428,6368,48,455.0,Euro
-False,14318,4.66531,4.66821,4.66821,5329,37,455.0,Pound
-True,14436,4.67377,4.68149,4.68149,4554,59,455.0,Pound
-False,9372,4.50475,4.51351,4.51351,3340,42,455.0,Pound
-True,12179,4.69635,4.67697,4.67697,3224,33,455.0,Euro
-False,9721,4.68299,4.67966,4.67966,2983,62,455.0,Dollar
-False,6486,4.43443,4.45765,4.45765,2183,49,455.0,Dollar
-False,13359,3.88462,3.86512,3.86512,2141,14,455.0,Dollar
-False,7502,4.62027,4.61334,4.61334,1842,109,455.0,Dollar
-True,6185,4.53514,4.5365,4.5365,1790,97,455.0,Dollar
-False,4955,4.42414,4.41962,4.41962,1416,201,455.0,Dollar
-True,4855,4.59714,4.58767,4.58767,1340,43,455.0,Dollar
-False,3864,4.67347,4.65234,4.65234,1238,36,455.0,Pound
-False,12493,4.23529,4.12235,4.12235,1137,8,455.0,Dollar
-True,3635,4.61557,4.60556,4.60556,1033,76,2160.0,Euro
-False,5505,4.3615,4.38754,4.38754,1029,45,455.0,Pound
-False,2640,4.68613,4.69384,4.69384,1018,12,455.0,Dollar
-False,2569,4.19935,4.21054,4.21054,997,67,3200.0,Dollar
-False,4744,3.94444,3.98121,3.98121,993,14,455.0,Pound
-False,2689,4.57235,4.58957,4.58957,942,27,455.0,Euro
-True,3817,4.60504,4.62575,4.62575,895,53,455.0,Euro
-True,2830,4.6773,4.66512,4.66512,899,83,455.0,Euro
-True,2734,4.57558,4.58796,4.58796,886,18,455.0,Euro
-False,2777,4.23333,4.23152,4.23152,784,70,455.0,Pound
-True,2918,4.54114,4.53378,4.53378,781,30,455.0,Dollar
-True,4432,4.29167,4.28939,4.28939,775,53,455.0,Pound
-False,2318,4.28632,4.30858,4.30858,768,28,455.0,Euro
-False,3148,4.17045,4.17994,4.17994,755,50,455.0,Euro
-True,1980,4.37847,4.37546,4.37546,751,26,455.0,Pound
-True,1094,4.58483,4.57455,4.57455,716,40,700.0,Euro
-False,1771,4.67486,4.6865,4.6865,716,11,455.0,Euro
-False,3172,4.5493,4.55196,4.55196,711,59,455.0,Euro
-False,2810,4.72727,4.73143,4.73143,696,49,455.0,Dollar
-False,4435,4.14754,4.26866,4.26866,696,55,455.0,Pound
-True,19657,4.34722,4.44309,4.44309,665,19,455.0,Dollar
-True,16804,4.03846,4.14592,4.14592,623,36,455.0,Euro
-True,3732,4.2554,4.27367,4.27367,618,36,455.0,Pound
-False,5410,4.70513,4.68402,4.68402,600,51,455.0,Pound
-False,1994,4.2375,4.17568,4.17568,595,61,455.0,Euro
-False,2267,4.63235,4.61211,4.61211,562,39,455.0,Euro
-True,2203,4.40083,4.44311,4.44311,561,184,455.0,Dollar
-True,2850,4.3484,4.36834,4.36834,551,70,455.0,Pound
-True,9453,4.05,4.21769,4.21769,542,33,455.0,Pound
-True,2139,4.20732,4.25556,4.25556,512,39,455.0,Pound
-False,2356,4.58442,4.55499,4.55499,483,71,455.0,Pound
-False,1262,4.75105,4.74676,4.74676,484,20,455.0,Euro
-True,2470,4.58333,4.65996,4.65996,473,32,455.0,Pound
-True,1552,4.45496,4.44444,4.44444,472,92,455.0,Dollar
-True,6260,4.44118,4.38839,4.38839,454,18,455.0,Dollar
-False,1651,4.26087,4.26508,4.26508,443,51,455.0,Pound
-True,1829,4.5,4.52319,4.52319,435,16,455.0,Pound
-False,1445,4.43269,4.42894,4.42894,415,50,455.0,Pound
-False,1972,4.53889,4.50728,4.50728,415,39,455.0,Dollar
-False,1502,4.53659,4.52241,4.52241,407,49,455.0,Euro
-False,2603,4.45312,4.36747,4.36747,407,37,455.0,Euro
-False,2675,4.21569,4.22424,4.22424,401,45,455.0,Dollar
-True,844,4.43421,4.39164,4.39164,374,49,3200.0,Dollar
-False,1058,4.39167,4.43723,4.43723,369,34,455.0,Euro
-True,1499,4.51754,4.52979,4.52979,365,14,455.0,Dollar
-True,6718,3.78125,3.61347,3.61347,364,23,455.0,Dollar
-False,1792,4.29412,4.24628,4.24628,361,21,455.0,Pound
-False,1031,4.41176,4.31002,4.31002,355,37,1200.0,Dollar
-False,2292,4.08333,4.0598,4.0598,347,30,455.0,Euro
-False,2129,4.29474,4.34602,4.34602,343,41,455.0,Euro
-True,5522,3.58696,3.72794,3.72794,341,34,455.0,Dollar
-False,1365,4.5,4.51859,4.51859,338,19,455.0,Pound
-False,1651,4.37838,4.42729,4.42729,331,40,455.0,Euro
-True,11014,4.02326,4.14024,4.14024,318,21,455.0,Dollar
-False,729,4.40476,4.43761,4.43761,313,20,455.0,Pound
-False,1268,4.2,4.27305,4.27305,300,16,455.0,Pound
-False,1535,4.42797,4.4193,4.4193,297,47,455.0,Euro
-False,1861,3.94737,3.90384,3.90384,290,96,455.0,Pound
-True,1083,4.0,3.95073,3.95073,281,18,455.0,Euro
-False,1034,4.01852,4.02685,4.02685,276,30,455.0,Euro
-False,911,4.51667,4.54542,4.54542,272,13,455.0,Euro
-False,1034,3.95312,4.02727,4.02727,267,20,455.0,Euro
-True,1560,4.30435,4.29167,4.29167,267,47,455.0,Pound
-True,1195,4.51724,4.4527,4.4527,257,17,455.0,Pound
-True,1099,4.69277,4.66137,4.66137,253,67,455.0,Dollar
-True,1008,4.53431,4.57349,4.57349,252,11,455.0,Pound
-True,967,4.67241,4.66403,4.66403,251,26,455.0,Pound
-False,6244,3.55,3.23487,3.23487,249,54,455.0,Pound
-True,3806,3.15,3.20773,3.20773,247,23,455.0,Pound
-False,8769,3.45,3.40185,3.40185,246,47,455.0,Pound
-False,1755,4.32,4.33666,4.33666,244,56,455.0,Euro
-True,688,4.23684,4.13198,4.13198,243,85,2160.0,Euro
-False,1350,3.75,3.70662,3.70662,241,40,455.0,Euro
-False,812,4.56667,4.58874,4.58874,232,20,455.0,Pound
-False,814,4.43333,4.42205,4.42205,230,36,455.0,Pound
-False,1101,4.2234,4.17568,4.17568,229,29,455.0,Pound
-True,1048,4.39474,4.45109,4.45109,229,21,455.0,Pound
-False,3549,3.71875,3.68085,3.68085,226,26,455.0,Dollar
-False,2212,4.49286,4.5008,4.5008,225,35,455.0,Dollar
-False,889,4.1,4.09685,4.09685,225,32,455.0,Euro
-True,1190,4.11538,4.11406,4.11406,225,43,455.0,Dollar
-False,833,4.55,4.5397,4.5397,224,21,455.0,Euro
-True,1193,4.61765,4.59861,4.59861,217,50,455.0,Dollar
-True,939,4.66667,4.62239,4.62239,216,72,455.0,Pound
-True,1105,4.54878,4.56573,4.56573,212,20,455.0,Pound
-False,4333,4.04348,4.08655,4.08655,209,18,468.0,Dollar
-False,596,4.19444,4.11553,4.11553,202,30,455.0,Pound
-False,6119,4.35,4.30888,4.30888,199,7,455.0,Dollar
-True,840,4.61538,4.58363,4.58363,197,30,455.0,Euro
-False,993,4.5,4.52178,4.52178,197,34,455.0,Dollar
-True,475,4.35,4.41781,4.41781,190,29,455.0,Euro
-False,716,3.8,3.47923,3.47923,188,48,455.0,Euro
-True,724,4.2381,4.32423,4.32423,187,27,455.0,Pound
-True,964,4.41176,4.39311,4.39311,186,28,455.0,Pound
-True,842,4.39241,4.40086,4.40086,186,48,455.0,Dollar
-True,1069,4.5625,4.5534,4.5534,185,27,455.0,Dollar
-True,583,4.56329,4.58332,4.58332,183,45,455.0,Dollar
-True,8392,4.45745,4.45383,4.45383,179,57,455.0,Euro
-False,734,4.5,4.53496,4.53496,179,38,455.0,Dollar
-False,597,4.47443,4.49273,4.49273,177,40,700.0,Pound
-False,964,4.54167,4.55747,4.55747,173,16,455.0,Pound
-True,627,4.28788,4.26859,4.26859,173,223,2560.0,Dollar
-True,963,4.11111,4.12302,4.12302,173,32,455.0,Euro
-True,556,4.21429,4.24356,4.24356,173,50,455.0,Euro
-False,3757,3.5625,3.38601,3.38601,172,39,455.0,Euro
-True,571,4.16667,4.13377,4.13377,171,31,455.0,Euro
-True,390,3.8125,3.79653,3.79653,169,14,455.0,Dollar
-False,516,4.69048,4.63954,4.63954,168,78,455.0,Dollar
-False,2262,4.07143,4.12338,4.12338,168,35,455.0,Pound
-False,599,4.60484,4.60277,4.60277,163,47,455.0,Dollar
-True,841,3.85714,3.66205,3.66205,160,33,455.0,Euro
-False,600,3.96667,3.92444,3.92444,158,86,455.0,Dollar
-False,407,4.55714,4.6353,4.6353,153,15,455.0,Dollar
-False,595,4.4125,4.44646,4.44646,152,67,455.0,Pound
-True,520,4.04839,4.13952,4.13952,151,83,720.0,Euro
-True,1044,4.2,4.37009,4.37009,150,36,455.0,Dollar
-False,831,4.09524,4.10025,4.10025,148,25,455.0,Euro
-True,2057,3.85,4.02563,4.02563,147,33,455.0,Euro
-True,554,4.60714,4.64716,4.64716,146,327,455.0,Pound
-False,878,4.36364,4.38216,4.38216,142,33,455.0,Pound
-False,449,4.45,4.56124,4.56124,142,21,455.0,Dollar
-False,658,4.5,4.47443,4.47443,142,11,455.0,Pound
-True,367,4.25,4.30366,4.30366,139,80,455.0,Pound
-True,1309,4.48611,4.50097,4.50097,139,30,455.0,Dollar
-False,712,4.0,4.00282,4.00282,138,28,455.0,Euro
-True,505,4.58824,4.55648,4.55648,137,14,455.0,Euro
-False,1116,4.39474,4.44132,4.44132,137,9,455.0,Dollar
-False,403,4.44737,4.44711,4.44711,137,59,455.0,Pound
-True,1070,4.54082,4.58429,4.58429,138,33,455.0,Dollar
-False,739,3.95,3.9105,3.9105,135,44,455.0,Euro
-False,1305,4.31818,4.31391,4.31391,135,51,455.0,Dollar
-True,400,4.23529,4.29834,4.29834,133,59,455.0,Dollar
-True,540,4.25,4.21007,4.21007,133,36,455.0,Dollar
-False,956,4.42857,4.42627,4.42627,133,71,455.0,Euro
-False,607,3.7,3.91652,3.91652,132,32,455.0,Euro
-False,504,4.33333,4.30811,4.30811,131,23,3200.0,Pound
-True,283,4.1,4.10727,4.10727,130,16,455.0,Dollar
-True,620,4.46667,4.53044,4.53044,129,11,455.0,Pound
-False,1208,3.6,3.46798,3.46798,128,9,455.0,Dollar
-True,873,4.3,4.32542,4.32542,128,50,455.0,Euro
-False,1275,3.65,3.71179,3.71179,127,53,455.0,Pound
-True,674,3.25,3.4529,3.4529,126,15,455.0,Euro
-False,338,3.89394,4.09072,4.09072,125,60,455.0,Euro
-False,345,4.25,4.20897,4.20897,122,29,455.0,Dollar
-False,897,4.09524,4.06447,4.06447,122,43,455.0,Pound
-True,901,4.26,4.34582,4.34582,122,30,455.0,Pound
-True,372,4.28378,4.30291,4.30291,122,37,455.0,Pound
-True,2345,4.35,4.52929,4.52929,121,11,468.0,Pound
-True,5016,3.55,3.49537,3.49537,119,21,455.0,Pound
-False,1100,4.25,4.1073,4.1073,118,17,455.0,Pound
-True,2389,4.3,4.24521,4.24521,116,23,455.0,Pound
-True,666,4.27451,4.31924,4.31924,115,32,455.0,Pound
-False,379,4.66438,4.649,4.649,113,37,455.0,Dollar
-True,438,3.92857,3.96857,3.96857,112,13,455.0,Pound
-True,672,3.9,3.85663,3.85663,111,100,455.0,Dollar
-True,670,4.52273,4.47248,4.47248,109,25,455.0,Dollar
-False,759,3.97059,3.62914,3.62914,108,65,455.0,Euro
-True,419,4.11765,4.01707,4.01707,107,36,455.0,Dollar
-False,505,4.4,4.46604,4.46604,107,41,455.0,Euro
-False,324,4.13333,4.23507,4.23507,107,13,880.0,Pound
-True,319,3.78571,3.85084,3.85084,107,7,455.0,Pound
-False,348,4.1,4.14807,4.14807,105,20,455.0,Euro
-True,535,3.75,3.77939,3.77939,105,50,455.0,Dollar
-False,369,3.95455,4.18403,4.18403,105,37,455.0,Euro
-True,513,3.91667,3.97343,3.97343,104,143,462.0,Euro
-False,3556,3.77083,3.8221,3.8221,104,21,455.0,Dollar
-False,294,4.23529,4.20207,4.20207,102,14,455.0,Pound
-True,311,4.0,3.90795,3.90795,101,63,455.0,Dollar
-True,344,4.55263,4.53719,4.53719,101,53,3200.0,Pound
-False,364,4.43478,4.43526,4.43526,101,15,455.0,Pound
-False,554,4.1,4.09899,4.09899,100,24,455.0,Euro
-False,1117,4.32143,4.42856,4.42856,100,41,455.0,Euro
-False,570,4.625,4.53411,4.53411,100,65,455.0,Euro
-True,331,4.5,4.43218,4.43218,99,15,455.0,Euro
-False,515,4.6,4.61486,4.61486,99,15,455.0,Dollar
-True,609,4.42105,4.42924,4.42924,99,33,455.0,Dollar
-False,314,4.44737,4.44706,4.44706,98,31,455.0,Dollar
-False,430,3.5,3.54715,3.54715,97,20,455.0,Dollar
-False,285,4.40625,4.37665,4.37665,97,10,455.0,Dollar
-True,409,4.61538,4.68213,4.68213,97,96,455.0,Dollar
-False,470,4.5,4.53519,4.53519,94,16,455.0,Euro
-False,656,4.09091,4.08542,4.08542,94,17,455.0,Dollar
-False,398,4.33333,4.28971,4.28971,94,11,640.0,Dollar
-False,1096,4.08333,4.07082,4.07082,93,38,455.0,Euro
-True,760,4.47059,4.46277,4.46277,92,96,455.0,Dollar
-True,707,3.8,3.77818,3.77818,92,28,455.0,Dollar
-False,311,4.35,4.29676,4.29676,92,19,455.0,Euro
-True,554,4.45,4.45318,4.45318,91,16,455.0,Dollar
-False,274,4.19048,4.20206,4.20206,90,18,455.0,Dollar
-False,271,5.0,5.0,5.0,90,27,455.0,Dollar
-False,431,3.6,3.70259,3.70259,89,24,455.0,Euro
-False,533,4.3,4.3076,4.3076,88,46,455.0,Euro
-True,281,4.48,4.40578,4.40578,87,31,455.0,Pound
-True,361,4.0,4.0243,4.0243,86,170,455.0,Pound
-True,233,4.15,4.01592,4.01592,86,25,455.0,Euro
-True,482,4.30435,4.2856,4.2856,85,112,455.0,Euro
-False,1792,4.4,4.50888,4.50888,86,83,455.0,Pound
-False,361,3.71429,3.65731,3.65731,84,18,455.0,Dollar
-False,337,3.97619,4.11965,4.11965,84,50,455.0,Euro
-False,192,4.35,4.33052,4.33052,82,26,455.0,Pound
-True,743,3.2,3.21789,3.21789,82,30,455.0,Euro
-True,501,4.86066,4.82514,4.82514,81,66,455.0,Pound
-False,680,3.55,3.49727,3.49727,79,20,455.0,Euro
-True,220,4.2,4.21688,4.21688,79,36,455.0,Pound
-True,311,3.85,3.77031,3.77031,79,71,455.0,Dollar
-True,284,4.05,4.12318,4.12318,79,49,455.0,Pound
-False,1740,4.5,4.49148,4.49148,78,22,455.0,Euro
-False,412,4.31667,4.27641,4.27641,78,83,455.0,Dollar
-True,368,4.52597,4.50604,4.50604,80,13,1600.0,Dollar
-True,299,3.95238,3.93766,3.93766,76,70,455.0,Dollar
-False,226,4.45,4.3998,4.3998,74,10,3200.0,Euro
-False,445,4.4,4.39157,4.39157,74,11,455.0,Dollar
-True,781,3.65,3.55159,3.55159,72,16,455.0,Euro
-True,328,4.15,4.03845,4.03845,71,32,455.0,Dollar
-True,575,3.95,3.90542,3.90542,71,18,455.0,Pound
-False,373,3.85294,3.87542,3.87542,71,27,455.0,Dollar
-False,638,4.5,4.48132,4.48132,70,21,455.0,Pound
-True,398,4.45833,4.42734,4.42734,69,51,455.0,Pound
-True,296,4.15,4.25295,4.25295,69,14,455.0,Dollar
-False,208,3.55,3.3908,3.3908,69,29,455.0,Dollar
-True,369,4.7,4.71104,4.71104,67,14,455.0,Euro
-False,203,3.3,3.41775,3.41775,66,11,455.0,Euro
-True,1009,3.95,3.69725,3.69725,66,39,455.0,Euro
-True,248,3.55,3.59864,3.59864,65,15,455.0,Pound
-True,503,4.3,4.328,4.328,65,54,455.0,Euro
-True,375,4.5,4.47681,4.47681,65,36,455.0,Dollar
-True,320,3.8,4.06621,4.06621,65,22,455.0,Pound
-False,265,3.9,3.95984,3.95984,65,77,455.0,Dollar
-True,245,4.55,4.55844,4.55844,64,69,474.0,Dollar
-False,174,4.55556,4.56246,4.56246,64,23,455.0,Pound
-False,308,4.1,4.08901,4.08901,63,10,455.0,Pound
-False,874,4.55,4.4894,4.4894,63,29,455.0,Pound
-False,407,4.39286,4.31165,4.31165,63,39,455.0,Pound
-True,278,4.6,4.5903,4.5903,63,90,3040.0,Dollar
-True,529,4.05,3.91044,3.91044,62,43,455.0,Euro
-False,378,4.1,3.83566,3.83566,62,112,455.0,Pound
-False,6213,3.7,4.06775,4.06775,61,13,455.0,Euro
-False,165,4.35,4.35368,4.35368,61,38,455.0,Euro
-True,306,4.35,4.30944,4.30944,61,42,455.0,Dollar
-True,394,4.9,4.91805,4.91805,61,13,455.0,Dollar
-False,1007,4.45,4.42586,4.42586,60,21,455.0,Euro
-False,171,4.375,4.3736,4.3736,60,24,455.0,Dollar
-False,406,4.45,4.53731,4.53731,60,24,455.0,Euro
-True,2201,4.38983,4.41393,4.41393,60,35,455.0,Euro
-False,301,4.35,4.13664,4.13664,60,21,455.0,Pound
-True,183,4.4,4.45298,4.45298,59,5,560.0,Dollar
-True,180,4.28947,4.28485,4.28485,59,29,455.0,Euro
-True,228,4.6,4.5616,4.5616,59,26,455.0,Euro
-True,532,4.15,4.16668,4.16668,59,31,455.0,Pound
-False,160,4.07692,3.96904,3.96904,59,27,455.0,Dollar
-False,354,3.31818,3.27315,3.27315,58,80,455.0,Pound
-False,221,3.9,3.96211,3.96211,58,28,455.0,Dollar
-False,1089,4.41667,4.40286,4.40286,58,9,455.0,Euro
-True,299,4.05,3.72097,3.72097,58,22,455.0,Pound
-True,440,3.65,3.56049,3.56049,58,17,455.0,Euro
-True,582,4.05,4.02195,4.02195,58,23,455.0,Pound
-True,209,3.78571,3.65766,3.65766,58,39,455.0,Euro
-True,185,4.3,4.21529,4.21529,57,111,455.0,Dollar
-True,218,4.15,4.12178,4.12178,57,46,455.0,Dollar
-True,178,4.48214,4.45297,4.45297,56,23,640.0,Pound
-True,2449,2.7,2.0428,2.0428,56,47,455.0,Euro
-False,284,3.9,3.97374,3.97374,56,15,455.0,Euro
-True,458,4.59375,4.62661,4.62661,55,16,480.0,Pound
-False,610,3.8,3.96599,3.96599,55,52,455.0,Dollar
-False,372,4.5,4.46236,4.46236,55,37,455.0,Pound
-False,180,4.5625,4.50036,4.50036,54,23,455.0,Pound
-False,411,4.88889,4.86944,4.86944,55,52,455.0,Pound
-False,405,3.4,3.42993,3.42993,54,29,455.0,Dollar
-True,156,4.61765,4.55284,4.55284,54,37,455.0,Dollar
-True,165,3.61111,3.36917,3.36917,53,43,455.0,Dollar
-True,416,4.0,3.96598,3.96598,53,55,455.0,Euro
-True,224,4.2,4.15679,4.15679,52,27,455.0,Pound
-False,121,3.9,3.92914,3.92914,51,35,455.0,Pound
-False,920,3.7,3.69555,3.69555,51,8,455.0,Pound
-False,932,4.34211,4.49558,4.49558,51,14,455.0,Dollar
-False,179,4.54,4.46597,4.46597,50,31,455.0,Dollar
-False,122,3.95,3.93431,3.93431,50,9,455.0,Euro
-False,1118,3.95,3.85874,3.85874,50,32,455.0,Pound
-False,448,4.62245,4.55671,4.55671,50,51,455.0,Dollar
-True,414,4.53061,4.49478,4.49478,49,58,455.0,Euro
-False,151,4.62903,4.63427,4.63427,49,16,455.0,Euro
-False,258,4.5,4.49196,4.49196,50,74,455.0,Euro
-True,196,3.9,3.82752,3.82752,48,26,455.0,Dollar
-False,159,4.7,4.68826,4.68826,48,19,455.0,Pound
-True,148,4.15,4.13065,4.13065,48,19,455.0,Dollar
-False,198,4.4,4.40858,4.40858,48,86,455.0,Pound
-False,348,3.8,3.90528,3.90528,48,25,455.0,Dollar
-False,522,3.45,3.44862,3.44862,47,14,455.0,Pound
-False,359,4.5,4.53483,4.53483,47,20,455.0,Pound
-True,247,4.1,4.10886,4.10886,47,15,455.0,Dollar
-False,251,4.2,4.7442,4.7442,47,82,455.0,Pound
-False,171,4.2,4.37516,4.37516,46,15,455.0,Pound
-True,1521,4.6,4.68833,4.68833,45,5,455.0,Dollar
-True,1245,4.75,4.76837,4.76837,45,9,455.0,Euro
-True,125,3.55,3.54472,3.54472,45,27,455.0,Euro
-True,117,3.65,3.71938,3.71938,45,34,455.0,Pound
-False,289,4.5,4.4289,4.4289,45,69,455.0,Dollar
-True,147,4.3,4.1216,4.1216,45,16,455.0,Euro
-False,277,4.83333,4.82608,4.82608,44,76,455.0,Euro
-True,556,4.54167,4.79213,4.79213,44,11,455.0,Dollar
-False,313,4.6,4.63315,4.63315,44,25,455.0,Dollar
-True,237,3.75,3.69544,3.69544,43,18,455.0,Dollar
-True,206,4.05,4.02196,4.02196,43,92,455.0,Pound
-False,137,4.75862,4.81295,4.81295,43,41,455.0,Pound
-False,292,4.15,4.3192,4.3192,42,60,455.0,Pound
-False,213,4.75,4.72885,4.72885,42,16,455.0,Dollar
-False,280,3.9,3.90514,3.90514,42,12,640.0,Dollar
-False,330,3.9,3.98231,3.98231,42,16,455.0,Pound
-False,218,4.31944,4.28765,4.28765,41,86,455.0,Pound
-False,148,4.78049,4.7829,4.7829,41,24,455.0,Euro
-True,125,4.95455,4.96283,4.96283,41,33,455.0,Dollar
-False,263,4.69737,4.66728,4.66728,44,41,455.0,Euro
-True,408,4.45,4.52327,4.52327,41,38,455.0,Dollar
-True,624,3.45,3.34056,3.34056,41,27,455.0,Euro
-False,333,3.6,3.64983,3.64983,41,14,455.0,Euro
-True,183,3.55,3.54414,3.54414,41,15,455.0,Pound
-True,353,4.1,4.1022,4.1022,41,16,455.0,Euro
-False,94,4.33333,4.3173,4.3173,40,5,2240.0,Dollar
-False,11512,4.3,4.26211,4.26211,40,6,455.0,Dollar
-False,76,4.48718,4.47216,4.47216,40,47,455.0,Euro
-False,143,3.8,3.79164,3.79164,39,59,455.0,Dollar
-False,231,4.1,4.08858,4.08858,39,29,455.0,Pound
-True,1107,4.0,3.7462,3.7462,39,11,455.0,Pound
-False,108,4.7,4.70078,4.70078,40,41,455.0,Dollar
-False,247,4.90909,4.89197,4.89197,39,24,455.0,Pound
-True,220,4.3,4.3044,4.3044,39,43,455.0,Euro
-False,3619,4.39474,4.46048,4.46048,44,8,455.0,Pound
-False,3354,3.94737,3.89299,3.89299,38,16,455.0,Euro
-True,131,4.0,3.96122,3.96122,38,25,455.0,Dollar
-False,128,4.05,4.09218,4.09218,37,26,455.0,Dollar
-False,203,4.53125,4.51107,4.51107,37,55,455.0,Dollar
-False,1182,3.75,3.5811,3.5811,37,18,455.0,Pound
-True,132,4.6,4.59159,4.59159,37,12,960.0,Euro
-False,117,4.3,4.25585,4.25585,37,24,455.0,Dollar
-False,427,4.4,4.42493,4.42493,37,45,455.0,Euro
-True,304,4.78378,4.75266,4.75266,37,73,455.0,Pound
-True,95,4.20833,4.105,4.105,37,55,455.0,Euro
-False,325,4.2,4.1875,4.1875,37,20,455.0,Dollar
-False,1256,4.25,3.96126,3.96126,37,80,455.0,Dollar
-False,194,3.6,3.66981,3.66981,36,13,455.0,Pound
-True,147,3.6,3.58761,3.58761,36,30,455.0,Pound
-False,822,3.8,3.71294,3.71294,36,14,455.0,Euro
-False,281,4.05,4.19555,4.19555,35,37,455.0,Pound
-False,206,4.7,4.6879,4.6879,35,42,455.0,Dollar
-True,123,4.70833,4.71992,4.71992,35,50,455.0,Dollar
-True,103,4.15,4.11207,4.11207,34,17,455.0,Dollar
-True,228,4.15,4.22254,4.22254,34,11,455.0,Euro
-True,315,3.85,3.85202,3.85202,34,28,455.0,Dollar
-True,96,4.5,4.4841,4.4841,34,23,455.0,Pound
-False,86,4.35,4.40197,4.40197,34,14,455.0,Dollar
-True,163,4.25,4.27899,4.27899,34,41,455.0,Pound
-True,182,4.55,4.5208,4.5208,34,19,455.0,Euro
-False,235,3.95,3.83304,3.83304,34,37,455.0,Euro
-False,322,4.875,4.84695,4.84695,34,106,455.0,Dollar
-False,5228,4.05,4.12105,4.12105,34,27,455.0,Euro
-False,382,4.65,4.65811,4.65811,33,32,455.0,Dollar
-True,108,4.15909,4.0924,4.0924,33,38,455.0,Dollar
-False,224,4.0,3.94188,3.94188,33,14,455.0,Dollar
-False,173,3.45,3.31605,3.31605,33,13,455.0,Euro
-False,368,4.6,4.62283,4.62283,33,12,455.0,Dollar
-True,238,4.04167,4.0241,4.0241,33,59,455.0,Dollar
-False,130,4.25,4.55759,4.55759,33,160,455.0,Pound
-True,223,4.45,4.39796,4.39796,33,52,455.0,Dollar
-True,299,3.65,3.59124,3.59124,33,27,455.0,Euro
-True,1569,4.2,4.04881,4.04881,33,5,455.0,Euro
-True,106,4.33333,4.25832,4.25832,33,8,1200.0,Pound
-False,150,3.27273,3.14325,3.14325,33,11,455.0,Pound
-False,446,4.4,4.34559,4.34559,32,22,455.0,Dollar
-False,135,4.75,4.76013,4.76013,32,45,455.0,Euro
-True,151,4.3,4.11469,4.11469,32,18,455.0,Pound
-False,469,4.3,4.3643,4.3643,32,63,455.0,Euro
-True,555,4.19643,4.23933,4.23933,32,25,455.0,Pound
-False,65,4.0,4.00284,4.00284,31,47,455.0,Pound
-True,1210,3.45,3.27303,3.27303,31,12,455.0,Euro
-True,1000,4.55,4.47251,4.47251,31,35,455.0,Euro
-False,113,4.2,4.15056,4.15056,32,262,455.0,Dollar
-True,125,3.85,3.78608,3.78608,31,11,455.0,Euro
-True,128,4.75,4.83178,4.83178,30,56,455.0,Pound
-False,523,4.15,4.26823,4.26823,30,17,455.0,Dollar
-False,139,4.75,4.76442,4.76442,30,25,455.0,Dollar
-False,130,4.11111,3.92691,3.92691,30,14,455.0,Dollar
-False,155,4.2,4.19563,4.19563,30,12,455.0,Pound
-False,76,4.05,4.2164,4.2164,30,6,455.0,Euro
-True,159,4.1,4.1459,4.1459,29,56,455.0,Euro
-False,320,3.95,3.93423,3.93423,29,16,455.0,Euro
-False,306,4.66667,4.59051,4.59051,29,8,455.0,Dollar
-False,84,3.6,3.6232,3.6232,29,22,455.0,Pound
-False,79,4.05,3.943,3.943,28,42,455.0,Dollar
-True,965,3.45,3.39315,3.39315,28,21,455.0,Dollar
-False,112,4.84211,4.78834,4.78834,28,8,700.0,Euro
-True,118,3.9,3.48218,3.48218,28,22,3200.0,Euro
-False,735,3.85,3.65473,3.65473,28,27,455.0,Pound
-True,117,4.70588,4.70565,4.70565,28,12,455.0,Dollar
-False,97,4.61538,4.59979,4.59979,28,10,455.0,Pound
-False,307,4.87037,4.84666,4.84666,27,43,455.0,Dollar
-False,796,4.53704,4.53474,4.53474,27,21,455.0,Pound
-True,112,4.5,4.4836,4.4836,27,27,455.0,Pound
-False,98,4.51852,4.36685,4.36685,27,29,455.0,Dollar
-True,71,3.55,3.46208,3.46208,27,5,455.0,Pound
-True,74,3.85,3.82701,3.82701,27,15,455.0,Dollar
-True,63,4.41667,4.49747,4.49747,26,45,455.0,Euro
-False,223,3.6,3.6197,3.6197,26,93,455.0,Dollar
-True,254,4.64286,4.62637,4.62637,26,63,455.0,Euro
-True,178,3.95,4.18735,4.18735,26,33,455.0,Pound
-False,3903,4.28846,4.21047,4.21047,35,18,455.0,Pound
-True,687,4.55,4.70297,4.70297,26,10,455.0,Pound
-False,119,4.35,4.4304,4.4304,26,15,455.0,Dollar
-False,251,4.5,4.51189,4.51189,26,51,455.0,Dollar
-False,101,4.7,4.64453,4.64453,26,130,800.0,Dollar
-True,341,3.75,3.75673,3.75673,25,21,455.0,Pound
-True,96,3.8,3.86471,3.86471,25,18,455.0,Euro
-False,95,3.6,3.50505,3.50505,25,12,455.0,Pound
-True,76,3.6,3.86112,3.86112,25,9,455.0,Euro
-False,626,4.3,4.14109,4.14109,25,15,455.0,Euro
-False,131,4.0,4.02418,4.02418,24,31,455.0,Dollar
-False,86,3.85,3.87428,3.87428,24,9,455.0,Euro
-False,99,2.9,2.73803,2.73803,24,15,455.0,Euro
-True,129,4.35,4.45602,4.45602,24,26,455.0,Pound
-False,123,3.75,3.36965,3.36965,24,18,455.0,Dollar
-False,562,4.1,4.08693,4.08693,24,22,455.0,Euro
-False,131,4.63636,4.71594,4.71594,24,19,455.0,Dollar
-True,233,4.45238,4.46581,4.46581,24,66,455.0,Pound
-False,99,3.75,3.7873,3.7873,24,89,455.0,Dollar
-False,148,3.55,3.57715,3.57715,24,21,455.0,Pound
-False,156,4.6,4.60014,4.60014,24,9,455.0,Pound
-True,77,4.6,4.64474,4.64474,24,36,1040.0,Dollar
-False,468,4.25,4.30723,4.30723,24,11,455.0,Euro
-True,113,4.35,4.4517,4.4517,24,19,455.0,Euro
-True,84,3.8,4.05367,4.05367,23,14,455.0,Dollar
-False,111,4.1,4.15133,4.15133,23,9,455.0,Euro
-False,100,3.7,3.70361,3.70361,23,9,455.0,Pound
-False,72,3.9,3.88147,3.88147,23,22,455.0,Pound
-False,310,3.88889,3.95588,3.95588,23,49,455.0,Pound
-True,3431,4.52174,4.39962,4.39962,28,6,455.0,Pound
-True,70,3.5,3.52614,3.52614,23,22,455.0,Pound
-False,97,3.9,3.84466,3.84466,22,5,455.0,Dollar
-True,102,4.6,4.59304,4.59304,22,10,455.0,Euro
-False,94,4.25,4.31881,4.31881,22,34,455.0,Pound
-False,215,4.2,4.20957,4.20957,22,55,455.0,Dollar
-False,224,3.95,4.11168,4.11168,22,50,455.0,Euro
-True,55,3.45,3.32818,3.32818,22,25,3200.0,Pound
-False,60,4.54167,4.50943,4.50943,23,5,455.0,Pound
-True,109,4.85,4.85887,4.85887,22,16,455.0,Pound
-True,63,4.2,4.2585,4.2585,22,21,455.0,Dollar
-True,91,4.59524,4.53863,4.53863,22,29,455.0,Dollar
-False,88,4.5,4.60068,4.60068,22,39,455.0,Euro
-False,56,3.95,3.98696,3.98696,22,17,455.0,Pound
-True,135,4.04545,4.06409,4.06409,23,107,455.0,Euro
-True,113,2.95,2.89383,2.89383,22,21,455.0,Pound
-True,79,3.3,3.24354,3.24354,22,24,455.0,Pound
-False,95,4.2,4.22575,4.22575,21,10,455.0,Pound
-False,71,3.95,3.95385,3.95385,21,28,455.0,Pound
-True,148,3.7,3.7143,3.7143,21,16,455.0,Dollar
-False,609,3.85,4.1033,4.1033,21,6,455.0,Euro
-False,83,4.8,4.78804,4.78804,21,15,455.0,Dollar
-True,53,4.23333,4.22953,4.22953,21,13,455.0,Pound
-False,65,3.8,3.82395,3.82395,21,18,455.0,Dollar
-False,73,4.2,4.08578,4.08578,21,23,455.0,Euro
-True,106,3.75,3.46392,3.46392,21,9,455.0,Pound
-False,59,4.8,4.85079,4.85079,21,6,455.0,Dollar
-False,69,3.05,3.06304,3.06304,20,9,455.0,Euro
-False,106,4.8,4.78475,4.78475,20,160,455.0,Dollar
-True,92,3.85,3.8444,3.8444,20,18,455.0,Euro
-False,156,3.85,3.86165,3.86165,20,32,455.0,Euro
-False,70,3.85,3.83798,3.83798,20,15,455.0,Pound
-False,57,3.6,3.6097,3.6097,20,14,455.0,Pound
-False,69,4.65,4.65586,4.65586,21,14,455.0,Dollar
-False,83,3.63636,3.60533,3.60533,20,28,455.0,Dollar
-True,100,4.3,4.34328,4.34328,20,16,455.0,Pound
-True,99,3.55,3.49593,3.49593,20,13,455.0,Pound
-True,42,3.8,3.85741,3.85741,20,15,455.0,Dollar
-False,78,4.55263,4.62149,4.62149,19,61,455.0,Euro
-True,71,3.65,3.79879,3.79879,19,14,455.0,Dollar
-False,46,4.20833,4.20583,4.20583,19,59,455.0,Euro
-False,173,3.95,3.90499,3.90499,19,75,455.0,Dollar
-False,170,4.76316,4.7715,4.7715,19,38,455.0,Pound
-True,73,4.4,4.38705,4.38705,19,14,455.0,Euro
-False,85,3.0,2.90589,2.90589,19,11,455.0,Dollar
-False,75,4.1,4.17318,4.17318,19,32,455.0,Dollar
-False,68,4.2,4.20279,4.20279,19,5,455.0,Pound
-False,71,3.55,3.84056,3.84056,19,6,455.0,Euro
-True,62,3.55,3.53875,3.53875,19,27,455.0,Euro
-False,182,4.52632,4.57412,4.57412,19,36,455.0,Dollar
-True,50,2.5,2.45557,2.45557,19,10,455.0,Pound
-False,69,4.3,4.31485,4.31485,19,85,455.0,Pound
-True,51,4.5,4.52028,4.52028,18,14,455.0,Dollar
-True,55,4.03846,4.02414,4.02414,18,25,455.0,Pound
-False,138,3.95,3.83833,3.83833,18,15,455.0,Dollar
-True,257,4.63889,4.66547,4.66547,20,25,455.0,Euro
-True,57,4.47222,4.51039,4.51039,18,58,455.0,Pound
-True,72,4.21875,4.19498,4.19498,18,76,455.0,Dollar
-False,71,3.75,3.8119,3.8119,18,45,455.0,Euro
-True,144,4.0,3.9162,3.9162,18,6,1040.0,Euro
-True,240,4.3,4.33095,4.33095,18,24,455.0,Euro
-False,45,4.8,4.78535,4.78535,18,40,1360.0,Euro
-True,716,3.75,4.17878,4.17878,17,10,455.0,Dollar
-False,406,3.31818,3.47467,3.47467,17,10,455.0,Dollar
-True,113,3.65,3.60452,3.60452,17,5,455.0,Dollar
-False,353,4.15,4.36302,4.36302,17,85,455.0,Euro
-False,52,3.4,3.38496,3.38496,17,7,455.0,Euro
-True,38,4.05,3.97207,3.97207,17,7,3200.0,Dollar
-True,42,4.625,4.3713,4.3713,17,22,455.0,Pound
-True,85,4.35294,4.35171,4.35171,17,77,455.0,Pound
-False,162,3.4,3.38125,3.38125,17,10,455.0,Pound
-True,105,4.33333,4.3291,4.3291,17,34,455.0,Pound
-True,441,3.75,3.3395,3.3395,17,130,455.0,Euro
-True,95,4.6,4.48225,4.48225,17,43,455.0,Euro
-True,187,3.4,3.26726,3.26726,17,17,455.0,Euro
-False,47,4.2,4.17935,4.17935,17,32,455.0,Dollar
-False,60,4.78571,4.7251,4.7251,17,45,455.0,Pound
-True,181,3.95,4.0295,4.0295,17,42,455.0,Pound
-False,196,4.15,4.16092,4.16092,17,17,455.0,Dollar
-False,51,3.5,3.52034,3.52034,17,28,455.0,Dollar
-True,42,3.95,3.9767,3.9767,17,10,455.0,Dollar
-False,192,4.2,3.95054,3.95054,17,22,455.0,Dollar
-False,44,4.5,4.49542,4.49542,17,30,455.0,Euro
-False,399,4.2,4.1432,4.1432,17,61,455.0,Pound
-False,60,2.6,2.49837,2.49837,16,6,455.0,Euro
-True,99,4.3,4.19712,4.19712,16,102,455.0,Euro
-True,52,3.8,3.71328,3.71328,16,5,455.0,Pound
-True,483,4.3,4.25606,4.25606,16,27,2400.0,Dollar
-True,34,4.1,4.04638,4.04638,16,6,455.0,Dollar
-False,54,4.72727,4.77366,4.77366,16,12,455.0,Euro
-True,55,4.5,4.48996,4.48996,16,15,455.0,Dollar
-True,60,3.9,3.90008,3.90008,16,10,455.0,Pound
-True,1468,3.6,3.46876,3.46876,16,5,455.0,Euro
-True,341,3.35,3.53415,3.53415,16,66,455.0,Euro
-False,92,4.65,4.59929,4.59929,15,21,455.0,Euro
-False,47,4.0,3.9292,3.9292,15,18,455.0,Pound
-True,33,3.9,3.92225,3.92225,15,22,455.0,Pound
-True,66,4.1,4.01853,4.01853,15,16,455.0,Pound
-True,63,4.3,4.32294,4.32294,15,6,455.0,Pound
-False,72,4.05,4.07725,4.07725,15,61,455.0,Pound
-False,54,4.05,4.02335,4.02335,15,17,455.0,Pound
-True,73,4.25,4.07132,4.07132,15,27,455.0,Euro
-True,60,3.85,3.84111,3.84111,15,15,455.0,Pound
-True,99,4.45,4.44193,4.44193,15,25,455.0,Euro
-True,195,4.1,4.09493,4.09493,15,15,455.0,Dollar
-False,62,3.1,3.36515,3.36515,15,13,455.0,Pound
-True,105,4.25,4.31834,4.31834,15,31,455.0,Dollar
-False,92,4.35,4.35711,4.35711,15,24,455.0,Pound
-True,429,4.35,4.14644,4.14644,15,6,455.0,Dollar
-False,74,4.55,4.55579,4.55579,15,16,455.0,Dollar
-False,450,4.85,4.89253,4.89253,15,220,455.0,Pound
-True,249,4.05,4.24627,4.24627,15,8,455.0,Euro
-False,69,4.4,4.41413,4.41413,15,15,1440.0,Dollar
-False,92,3.65,3.70119,3.70119,14,32,455.0,Euro
-False,71,1.75,1.80633,1.80633,14,17,455.0,Dollar
-True,58,4.3,4.33658,4.33658,14,27,455.0,Euro
-False,71,3.65,3.75936,3.75936,14,17,455.0,Pound
-False,64,3.8,3.82527,3.82527,14,27,455.0,Euro
-True,69,4.35,4.30105,4.30105,14,33,455.0,Euro
-True,23,4.45,4.40646,4.40646,14,6,3200.0,Pound
-False,49,4.45,4.46344,4.46344,14,22,455.0,Pound
-True,101,4.35,4.25357,4.25357,14,7,640.0,Dollar
-False,84,2.95,2.98984,2.98984,14,25,455.0,Dollar
-False,104,3.25,3.07712,3.07712,14,12,455.0,Pound
-True,56,3.55,3.43157,3.43157,14,8,455.0,Euro
-False,83,4.3,4.36761,4.36761,14,29,455.0,Dollar
-False,72,4.05,4.02746,4.02746,14,23,455.0,Euro
-False,75,4.7,4.72376,4.72376,14,12,455.0,Euro
-False,49,4.4,4.39932,4.39932,14,38,455.0,Euro
-True,83,4.4,4.33731,4.33731,14,23,455.0,Pound
-True,84,4.75,4.75115,4.75115,14,13,455.0,Dollar
-True,64,4.9,4.91542,4.91542,14,14,455.0,Euro
-False,323,4.5,4.41342,4.41342,14,7,455.0,Euro
-True,36,4.75,4.71507,4.71507,13,14,455.0,Dollar
-False,52,4.0,3.90997,3.90997,13,14,455.0,Euro
-False,65,3.25,3.62112,3.62112,13,69,455.0,Euro
-True,33,4.85,4.83983,4.83983,13,11,455.0,Dollar
-True,50,4.35,4.31563,4.31563,13,22,455.0,Dollar
-True,102,4.1,4.0511,4.0511,13,19,455.0,Euro
-True,75,3.3,3.30925,3.30925,13,31,455.0,Pound
-True,252,3.45,2.8211,2.8211,13,25,455.0,Euro
-False,23,4.35,4.36903,4.36903,13,16,455.0,Pound
-False,30,4.65,4.64823,4.64823,13,10,455.0,Euro
-False,60,4.40909,4.43533,4.43533,13,39,455.0,Euro
-False,74,4.05,3.98023,3.98023,13,13,455.0,Dollar
-True,133,4.73077,4.65756,4.65756,13,109,455.0,Dollar
-False,347,4.15,3.96182,3.96182,13,10,455.0,Euro
-True,433,4.2,4.24213,4.24213,13,6,455.0,Dollar
-False,35,4.0,4.37817,4.37817,13,12,455.0,Pound
-False,35,4.25,4.52558,4.52558,13,28,455.0,Euro
-False,193,4.4,4.4588,4.4588,12,478,455.0,Dollar
-True,79,4.9,4.90196,4.90196,12,14,455.0,Dollar
-True,159,4.1,4.09647,4.09647,12,28,455.0,Dollar
-False,62,3.9,3.86839,3.86839,12,20,455.0,Pound
-False,397,2.9,2.7973,2.7973,12,11,455.0,Euro
-True,30,3.2,3.09603,3.09603,12,9,455.0,Euro
-False,13,5.0,5.0,5.0,12,6,700.0,Pound
-True,43,3.5,3.57304,3.57304,12,49,455.0,Euro
-False,79,4.6,4.54981,4.54981,12,193,488.0,Dollar
-False,126,3.55,3.45789,3.45789,12,12,455.0,Euro
-True,60,4.25,4.24464,4.24464,12,15,455.0,Euro
-True,31,4.9,4.90101,4.90101,12,37,1120.0,Dollar
-True,545,4.25,4.30481,4.30481,12,61,455.0,Euro
-True,72,2.95,2.76029,2.76029,12,33,455.0,Pound
-True,36,4.95833,4.94078,4.94078,12,129,455.0,Euro
-False,83,3.6,3.56627,3.56627,12,9,455.0,Euro
-False,66,4.7,4.73606,4.73606,12,7,455.0,Dollar
-True,33,4.15,4.18088,4.18088,12,20,455.0,Euro
-True,75,4.85,4.84323,4.84323,12,13,455.0,Euro
-False,79,3.25,3.23049,3.23049,12,8,455.0,Euro
-True,43,3.6,3.59955,3.59955,12,8,455.0,Pound
-True,39,4.4,4.43763,4.43763,12,5,455.0,Pound
-False,56,3.85,3.70184,3.70184,12,48,455.0,Pound
-True,66,3.9,3.71832,3.71832,12,17,455.0,Dollar
-False,208,4.65,4.77173,4.77173,12,8,455.0,Dollar
-False,89,4.05,4.07003,4.07003,12,33,455.0,Euro
-False,47,5.0,5.0,5.0,11,25,455.0,Dollar
-True,56,4.55,4.49148,4.49148,11,9,640.0,Pound
-True,157,4.0,3.8472,3.8472,11,27,455.0,Pound
-False,35,3.15,3.29111,3.29111,11,27,455.0,Euro
-False,91,3.8,3.82198,3.82198,11,25,455.0,Dollar
-False,408,3.27273,3.40348,3.40348,11,6,455.0,Dollar
-False,159,4.0,3.99887,3.99887,11,51,455.0,Pound
-True,35,4.25,4.05653,4.05653,11,19,455.0,Pound
-False,61,4.05,3.8178,3.8178,11,14,455.0,Dollar
-False,46,4.75,4.7282,4.7282,11,36,455.0,Pound
-True,63,4.2,4.06555,4.06555,11,18,455.0,Pound
-True,79,3.6,3.63575,3.63575,11,6,455.0,Dollar
-True,74,4.95455,4.96033,4.96033,11,62,455.0,Pound
-True,45,3.75,3.68338,3.68338,11,11,640.0,Pound
-False,42,4.1,4.06359,4.06359,11,36,455.0,Dollar
-False,41,4.4,4.46555,4.46555,11,21,455.0,Dollar
-False,90,3.95,3.68941,3.68941,11,15,455.0,Pound
-True,85,3.95,3.99804,3.99804,11,13,455.0,Dollar
-True,94,4.25,4.25502,4.25502,11,29,455.0,Euro
-True,22,3.55,3.54574,3.54574,11,9,455.0,Euro
-False,61,4.55,4.48718,4.48718,11,6,455.0,Euro
-True,45,4.85,4.83033,4.83033,11,12,1200.0,Euro
-False,132,3.7,3.71853,3.71853,11,9,455.0,Pound
-False,40,3.8,3.8955,3.8955,11,7,455.0,Pound
-True,38,4.6,4.58547,4.58547,10,17,455.0,Euro
-False,68,4.5,4.51733,4.51733,10,22,455.0,Dollar
-True,21,3.85,3.77602,3.77602,10,22,3200.0,Euro
-False,75,4.1,4.10081,4.10081,10,59,455.0,Dollar
-False,28,4.45,4.11558,4.11558,10,9,455.0,Dollar
-False,518,4.1,4.26186,4.26186,10,18,455.0,Pound
-False,76,4.5,4.77562,4.77562,10,16,455.0,Dollar
-True,49,4.2,4.21667,4.21667,10,10,455.0,Dollar
-False,34,4.35,4.13491,4.13491,10,34,455.0,Euro
-False,57,3.25,3.40704,3.40704,10,29,455.0,Euro
-False,249,4.25,4.25055,4.25055,10,25,455.0,Euro
-False,787,3.8,4.15887,4.15887,10,8,455.0,Euro
-True,33,4.22222,4.21423,4.21423,10,28,455.0,Euro
-True,44,3.85,3.7091,3.7091,10,6,455.0,Dollar
-False,239,3.5,3.66899,3.66899,10,27,455.0,Dollar
-False,50,4.75,4.68054,4.68054,10,66,455.0,Dollar
-False,29,4.35,4.37588,4.37588,10,16,455.0,Pound
-False,61,4.2,4.2001,4.2001,10,28,455.0,Euro
-True,22,4.3,4.28081,4.28081,10,24,455.0,Pound
-True,65,4.4,4.36521,4.36521,10,25,455.0,Pound
-True,22,3.7,3.85698,3.85698,11,9,455.0,Dollar
-True,295,3.15,3.23884,3.23884,10,53,455.0,Pound
-False,30,2.55,2.2385,2.2385,10,39,455.0,Pound
-True,49,4.3,4.21278,4.21278,10,14,455.0,Pound
-True,79,4.2,4.07443,4.07443,10,29,1760.0,Euro
-False,77,4.05,4.14858,4.14858,10,18,455.0,Dollar
-False,29,4.55556,4.57691,4.57691,10,23,455.0,Euro
-True,43,4.35,4.10136,4.10136,10,18,455.0,Euro
-False,109,3.55,3.53636,3.53636,10,9,455.0,Dollar
-True,50,4.45,4.34199,4.34199,10,7,455.0,Dollar
-False,26,3.8,3.76976,3.76976,10,6,455.0,Pound
-False,245,4.83333,4.8141,4.8141,9,24,455.0,Dollar
-True,19,4.38889,4.54576,4.54576,9,14,455.0,Euro
-True,20,3.72222,3.678,3.678,9,10,455.0,Pound
-True,43,4.0,4.12133,4.12133,9,29,455.0,Pound
-True,1222,4.0,4.25757,4.25757,9,37,455.0,Dollar
-True,935,4.66667,4.7714,4.7714,9,38,455.0,Euro
-False,18,4.77778,4.67853,4.67853,9,22,455.0,Euro
-True,63,3.05556,2.9144,2.9144,9,30,455.0,Dollar
-False,20,4.22222,4.33648,4.33648,9,6,455.0,Pound
-False,19,4.11111,4.2581,4.2581,9,13,455.0,Pound
-True,48,4.0,3.88701,3.88701,9,14,455.0,Euro
-True,31,3.83333,3.7898,3.7898,9,11,455.0,Euro
-False,31,3.88889,3.6621,3.6621,9,16,455.0,Dollar
-True,23,4.22222,4.32232,4.32232,9,10,455.0,Dollar
-True,60,3.33333,3.18731,3.18731,9,25,455.0,Dollar
-False,34,4.22222,4.54157,4.54157,9,15,455.0,Euro
-False,21,4.55556,4.57578,4.57578,9,11,800.0,Euro
-True,205,4.0,3.95588,3.95588,9,17,455.0,Pound
-True,62,3.33333,2.10813,2.10813,9,23,455.0,Euro
-False,36,4.05556,4.07555,4.07555,9,14,455.0,Pound
-True,29,4.61111,4.70818,4.70818,9,33,455.0,Euro
-False,20,3.94444,3.86227,3.86227,9,8,455.0,Dollar
-True,19,4.38889,4.10525,4.10525,9,27,455.0,Euro
-False,36,4.16667,4.22146,4.22146,9,8,455.0,Pound
-True,285,3.38889,3.64141,3.64141,9,14,455.0,Dollar
-True,34,4.55556,4.52982,4.52982,9,68,455.0,Dollar
-False,31,3.75,3.55613,3.55613,8,16,3200.0,Euro
-True,46,4.5,4.40909,4.40909,8,74,455.0,Euro
-True,17,4.5625,4.56663,4.56663,8,23,455.0,Dollar
-True,18,4.75,4.7418,4.7418,8,22,3120.0,Pound
-False,12,4.25,3.78951,3.78951,8,30,3200.0,Euro
-False,26,4.4375,4.34674,4.34674,8,17,960.0,Euro
-True,22,4.1875,4.35999,4.35999,8,51,455.0,Pound
-True,20,3.625,3.55431,3.55431,8,28,455.0,Dollar
-True,35,3.9375,3.91081,3.91081,8,21,455.0,Dollar
-True,37,4.5625,4.47694,4.47694,8,62,455.0,Pound
-True,27,4.1875,4.04036,4.04036,8,23,1440.0,Euro
-False,37,4.8125,4.74329,4.74329,8,33,455.0,Euro
-True,18,4.125,3.98942,3.98942,8,9,455.0,Euro
-False,83,4.0,3.98123,3.98123,8,13,455.0,Dollar
-False,20,4.0,3.968,3.968,8,16,455.0,Euro
-True,24,3.625,3.70397,3.70397,8,14,480.0,Euro
-True,15,4.8125,4.74689,4.74689,8,14,455.0,Euro
-False,16,4.875,4.73209,4.73209,8,18,455.0,Euro
-True,23,3.625,3.75003,3.75003,8,23,455.0,Pound
-False,44,4.1875,4.36873,4.36873,8,47,455.0,Pound
-False,45,4.3125,4.01188,4.01188,8,12,455.0,Pound
-True,94,4.3125,4.63092,4.63092,8,33,455.0,Dollar
-False,114,3.9375,3.78585,3.78585,8,44,455.0,Dollar
-True,30,3.25,2.98283,2.98283,8,11,455.0,Pound
-False,19,4.4375,4.21927,4.21927,8,24,455.0,Pound
-False,100,4.4375,4.36982,4.36982,8,20,455.0,Euro
-False,43,4.5625,4.55214,4.55214,8,18,455.0,Euro
-True,23,4.5625,4.54963,4.54963,8,14,455.0,Pound
-False,27,3.25,3.41303,3.41303,8,5,455.0,Pound
-False,23,4.0625,3.9293,3.9293,8,20,455.0,Pound
-False,22,4.71429,4.76067,4.76067,7,13,455.0,Euro
-False,33,4.0,4.10403,4.10403,7,10,455.0,Euro
-True,24,3.71429,3.79203,3.79203,7,24,455.0,Euro
-True,57,4.64286,4.56691,4.56691,7,12,455.0,Pound
-True,19,4.07143,4.01408,4.01408,7,15,455.0,Dollar
-False,13,4.14286,3.93949,3.93949,7,25,455.0,Dollar
-True,20,3.5,3.58469,3.58469,7,39,455.0,Pound
-False,23,3.92857,3.60748,3.60748,7,6,455.0,Dollar
-True,99,4.35714,4.31891,4.31891,7,5,455.0,Euro
-True,23,4.57143,4.57099,4.57099,7,11,455.0,Euro
-False,18,4.35714,4.29936,4.29936,7,15,2080.0,Pound
-True,139,3.57143,3.94488,3.94488,7,11,700.0,Pound
-True,44,5.0,5.0,5.0,7,10,455.0,Euro
-False,374,4.85714,4.90227,4.90227,7,20,455.0,Dollar
-False,38,4.64286,4.72664,4.72664,7,58,3040.0,Pound
-True,17,2.64286,2.79656,2.79656,7,26,455.0,Pound
-True,38,4.28571,4.26022,4.26022,7,16,455.0,Pound
-True,19,4.28571,4.17074,4.17074,7,14,455.0,Pound
-True,9,3.5,3.44444,3.44444,7,13,455.0,Pound
-False,30,4.85714,4.77288,4.77288,7,20,455.0,Pound
-False,30,3.28571,3.30696,3.30696,7,8,455.0,Euro
-False,25,3.78571,3.52258,3.52258,7,5,455.0,Dollar
-False,29,4.0,4.00457,4.00457,7,35,455.0,Euro
-True,126,4.42857,4.34802,4.34802,7,12,455.0,Pound
-False,33,3.14286,3.1971,3.1971,7,16,455.0,Pound
-True,47,3.78571,3.90365,3.90365,7,20,455.0,Euro
-False,51,3.85714,3.99922,3.99922,7,102,455.0,Pound
-True,16,3.57143,3.68471,3.68471,7,5,455.0,Pound
-True,20,4.83333,4.83928,4.83928,6,18,455.0,Pound
-False,30,3.91667,3.96048,3.96048,6,59,455.0,Dollar
-True,22,4.08333,4.33257,4.33257,6,19,1760.0,Euro
-False,17,3.16667,3.35896,3.35896,6,11,455.0,Euro
-True,14,4.0,4.1564,4.1564,6,16,455.0,Pound
-False,21,4.41667,4.48861,4.48861,6,26,455.0,Pound
-True,37,3.91667,3.93133,3.93133,6,7,455.0,Euro
-False,28,4.33333,4.31527,4.31527,6,95,455.0,Dollar
-False,53,4.25,4.23589,4.23589,6,14,455.0,Pound
-False,165,3.91667,4.11507,4.11507,6,8,455.0,Euro
-False,34,4.0,4.02017,4.02017,6,13,640.0,Dollar
-True,35,4.16667,4.11922,4.11922,6,19,455.0,Pound
-True,27,3.66667,3.52805,3.52805,6,6,455.0,Pound
-True,14,3.91667,3.86634,3.86634,6,11,455.0,Euro
-False,50,4.08333,4.10461,4.10461,6,18,455.0,Dollar
-False,71,3.5,3.21736,3.21736,6,50,455.0,Dollar
-True,23,3.83333,3.87981,3.87981,6,5,455.0,Euro
-True,17,4.41667,4.4463,4.4463,6,7,455.0,Euro
-True,346,4.58333,4.36806,4.36806,6,19,455.0,Dollar
-True,37,4.66667,4.63005,4.63005,6,22,455.0,Euro
-True,19,4.33333,4.10792,4.10792,6,6,455.0,Euro
-False,54,3.16667,3.17353,3.17353,6,51,455.0,Pound
-False,32,3.66667,3.41209,3.41209,6,11,455.0,Dollar
-True,44,4.75,4.81674,4.81674,6,33,455.0,Pound
-False,19,4.33333,4.34699,4.34699,6,13,3200.0,Pound
-True,14,4.58333,4.59433,4.59433,6,9,455.0,Euro
-False,17,4.58333,4.64216,4.64216,6,19,455.0,Dollar
-False,38,4.66667,4.72237,4.72237,6,13,455.0,Euro
-True,66,4.75,4.72253,4.72253,6,9,455.0,Pound
-True,51,3.83333,3.62821,3.62821,6,9,455.0,Euro
-True,169,4.16667,4.14625,4.14625,6,19,455.0,Euro
-False,50,3.33333,3.2133,3.2133,6,51,455.0,Dollar
-True,150,4.58333,4.43007,4.43007,6,5,455.0,Dollar
-False,25,4.91667,4.92976,4.92976,6,16,455.0,Pound
-False,26,4.58333,4.72012,4.72012,6,10,2320.0,Euro
-False,30,4.83333,4.607,4.607,6,63,455.0,Dollar
-True,258,4.58333,4.38442,4.38442,6,23,455.0,Dollar
-True,36,4.16667,4.02374,4.02374,6,27,455.0,Dollar
-True,23,4.08333,4.13233,4.13233,6,27,455.0,Pound
-False,30,4.5,4.50296,4.50296,6,31,455.0,Euro
-False,20,4.83333,4.76853,4.76853,6,37,3200.0,Euro
-False,16,4.33333,4.2932,4.2932,6,12,2400.0,Euro
-True,65,4.66667,4.57769,4.57769,6,13,455.0,Pound
-True,64,3.83333,3.85343,3.85343,6,18,455.0,Pound
-True,18,3.83333,3.88912,3.88912,6,9,455.0,Euro
-False,19,3.75,3.65945,3.65945,6,10,455.0,Euro
-False,51,4.0,3.91981,3.91981,5,33,455.0,Dollar
-True,37,3.6,3.70539,3.70539,5,31,455.0,Dollar
-False,25,4.4,4.36123,4.36123,5,9,455.0,Euro
-True,1402,4.2,4.37787,4.37787,5,80,455.0,Pound
-False,36,4.3,4.4102,4.4102,5,18,455.0,Pound
-True,27,4.6,4.71798,4.71798,6,28,455.0,Dollar
-True,27,3.4,3.40112,3.40112,5,7,455.0,Dollar
-False,44,4.5,4.62722,4.62722,5,94,455.0,Euro
-False,20,4.6,4.62705,4.62705,5,7,455.0,Pound
-False,13,4.1,4.08399,4.08399,5,14,455.0,Pound
-False,50,4.6,4.46191,4.46191,5,48,455.0,Euro
-True,11,4.5,4.531,4.531,5,12,455.0,Euro
-True,41,3.8,4.13545,4.13545,5,25,455.0,Pound
-True,20,4.4,4.40854,4.40854,5,36,640.0,Dollar
-False,21,4.7,4.60055,4.60055,5,74,455.0,Pound
-False,20,4.4,4.35786,4.35786,5,9,455.0,Euro
-True,28,3.5,3.83543,3.83543,5,14,455.0,Dollar
-True,22,4.4,4.43198,4.43198,5,25,455.0,Euro
-True,22,3.8,3.82778,3.82778,5,10,455.0,Dollar
-True,35,4.8,4.79398,4.79398,5,7,455.0,Pound
-False,11,3.6,3.40888,3.40888,5,11,455.0,Euro
-False,18,4.6,4.52232,4.52232,5,27,455.0,Pound
-True,25,4.6,4.56105,4.56105,5,36,455.0,Euro
-True,22,4.6,4.49474,4.49474,5,32,455.0,Pound
-True,25,4.1,3.95986,3.95986,5,7,455.0,Pound
-True,35,4.3,4.08999,4.08999,5,8,455.0,Pound
-True,63,4.3,4.35638,4.35638,5,72,455.0,Dollar
-True,91,3.8,3.55603,3.55603,5,11,455.0,Dollar
-False,406,3.3,3.34854,3.34854,5,27,455.0,Pound
-True,30,4.8,4.78975,4.78975,5,5,455.0,Euro
-True,18,4.4,4.37311,4.37311,5,153,455.0,Pound
-False,14,4.2,4.24557,4.24557,5,18,455.0,Euro
-False,32,4.0,4.30598,4.30598,5,22,455.0,Euro
-True,17,2.9,2.91537,2.91537,5,6,455.0,Dollar
-True,1055,4.8,4.82943,4.82943,5,48,455.0,Euro
-True,96,4.7,4.46078,4.46078,5,22,455.0,Euro
-True,45,4.4,4.43824,4.43824,5,19,700.0,Euro
-True,62,3.7,3.58585,3.58585,5,68,455.0,Pound
-False,191,4.8,4.79961,4.79961,5,34,468.0,Euro
-False,37,4.1,4.10486,4.10486,5,5,455.0,Euro
-True,32,4.6,4.67408,4.67408,5,6,455.0,Pound
-True,26,4.5,4.35589,4.35589,5,7,455.0,Pound
-False,18,3.3,3.42283,3.42283,5,98,455.0,Pound
-True,19,4.7,4.66705,4.66705,5,13,455.0,Dollar
-True,30,3.7,3.84221,3.84221,5,9,455.0,Pound
-True,14,4.2,4.10689,4.10689,5,7,455.0,Dollar
-True,7,4.8,4.6421,4.6421,5,25,455.0,Euro
-False,28,4.0,4.18646,4.18646,5,7,455.0,Dollar
-False,30,4.1,3.97129,3.97129,5,41,455.0,Dollar
-False,25,4.1,4.55617,4.55617,5,21,455.0,Pound
-False,21,3.6,3.58798,3.58798,5,33,455.0,Dollar
-True,14,4.125,4.06593,4.06593,4,63,455.0,Euro
-True,96,4.5,4.27571,4.27571,4,9,455.0,Euro
-True,13,3.125,3.34446,3.34446,4,22,455.0,Pound
-False,32,4.875,4.84657,4.84657,4,0,1040.0,Pound
-True,695,4.375,4.79451,4.79451,4,17,640.0,Pound
-True,54,4.75,4.66043,4.66043,4,11,455.0,Pound
-True,17,4.25,4.23645,4.23645,4,16,455.0,Euro
-False,16,4.0,4.17286,4.17286,4,13,455.0,Dollar
-True,11,3.25,3.16272,3.16272,4,5,455.0,Pound
-False,59,3.25,3.26382,3.26382,4,9,455.0,Euro
-True,70,2.75,2.72407,2.72407,4,36,455.0,Dollar
-False,24,3.75,3.729,3.729,4,19,455.0,Pound
-True,15,4.625,4.63323,4.63323,4,8,455.0,Pound
-False,22,4.875,4.86951,4.86951,4,5,700.0,Pound
-False,523,4.75,4.77717,4.77717,4,60,455.0,Euro
-True,15,3.625,3.69398,3.69398,4,9,455.0,Dollar
-False,21,3.25,3.22209,3.22209,4,11,455.0,Pound
-False,22,3.5,3.50156,3.50156,4,13,455.0,Euro
-False,129,3.875,3.71837,3.71837,4,20,455.0,Pound
-True,17,4.5,4.24546,4.24546,4,27,455.0,Dollar
-True,14,4.75,4.71139,4.71139,4,48,455.0,Pound
-False,9,4.125,3.99536,3.99536,4,20,455.0,Euro
-True,190,4.625,4.64062,4.64062,4,15,455.0,Pound
-True,23,5.0,5.0,5.0,4,30,455.0,Euro
-False,14,3.33333,3.61187,3.61187,4,18,455.0,Dollar
-False,76,4.875,4.85577,4.85577,4,12,455.0,Euro
-False,497,5.0,5.0,5.0,4,48,455.0,Pound
-True,6,4.0,4.04741,4.04741,4,10,455.0,Pound
-True,27,3.625,3.40756,3.40756,4,41,455.0,Pound
-False,20,2.5,2.413,2.413,4,7,455.0,Euro
-True,16,5.0,5.0,5.0,4,14,455.0,Euro
-False,14,4.5,4.52874,4.52874,4,25,455.0,Pound
-True,21,4.25,4.26989,4.26989,4,12,455.0,Euro
-False,6,4.625,4.58165,4.58165,4,22,455.0,Pound
-False,10,3.25,3.09731,3.09731,4,21,455.0,Euro
-False,15,4.625,4.54307,4.54307,4,10,455.0,Dollar
-True,33,5.0,5.0,5.0,4,18,455.0,Pound
-True,30,3.875,4.49541,4.49541,4,42,455.0,Pound
-True,21,4.625,4.68111,4.68111,4,65,455.0,Euro
-True,26,4.625,4.71239,4.71239,4,10,455.0,Dollar
-True,13,4.875,4.89746,4.89746,4,8,455.0,Dollar
-True,10,4.375,4.36524,4.36524,4,17,455.0,Pound
-False,6,5.0,5.0,5.0,4,14,880.0,Dollar
-False,41,3.875,3.75611,3.75611,4,24,455.0,Euro
-False,4,1.0,1.0,1.0,4,17,455.0,Dollar
-False,12,4.375,4.38561,4.38561,4,6,455.0,Euro
-False,13,4.5,4.54378,4.54378,4,5,455.0,Euro
-True,14,5.0,5.0,5.0,4,16,455.0,Dollar
-True,5,4.75,4.71324,4.71324,4,42,455.0,Dollar
-False,23,4.625,4.64761,4.64761,4,34,455.0,Dollar
-True,17,4.75,4.7847,4.7847,4,18,455.0,Pound
-False,27,4.875,4.94431,4.94431,4,38,455.0,Dollar
-True,15,4.0,2.98353,2.98353,4,24,455.0,Euro
-False,50,4.5,4.47571,4.47571,4,10,455.0,Pound
-True,5,4.5,4.53069,4.53069,4,8,455.0,Euro
-True,24,3.625,3.85629,3.85629,4,5,455.0,Pound
-False,140,4.25,4.36653,4.36653,4,21,455.0,Dollar
-False,9,3.875,3.77762,3.77762,4,57,455.0,Pound
-False,7,2.875,2.91029,2.91029,4,10,455.0,Pound
-True,15,4.625,4.27025,4.27025,4,12,455.0,Dollar
-True,10,2.875,2.8066,2.8066,4,12,455.0,Pound
-False,17,4.625,4.57643,4.57643,4,98,455.0,Pound
-True,22,4.875,4.82003,4.82003,4,16,455.0,Euro
-True,11,4.375,4.53822,4.53822,4,21,455.0,Euro
-True,10,3.125,3.33695,3.33695,4,6,455.0,Euro
-True,67,3.875,3.92271,3.92271,4,18,455.0,Euro
-True,19,3.875,4.21117,4.21117,4,37,455.0,Pound
-False,18,4.25,4.1555,4.1555,4,30,455.0,Dollar
-False,12,4.5,4.4658,4.4658,4,9,455.0,Euro
-False,10,3.75,3.65265,3.65265,4,9,455.0,Euro
-False,109,4.25,4.17106,4.17106,4,13,455.0,Euro
-True,8,2.33333,2.13667,2.13667,3,28,455.0,Dollar
-True,34,3.66667,3.67409,3.67409,3,25,455.0,Euro
-False,91,4.33333,4.08883,4.08883,3,5,455.0,Dollar
-True,10,4.0,4.16696,4.16696,3,27,455.0,Dollar
-True,18,3.66667,3.71946,3.71946,3,14,455.0,Dollar
-False,9,4.33333,4.08286,4.08286,3,21,455.0,Pound
-False,8,3.83333,3.76378,3.76378,3,21,455.0,Dollar
-True,10,4.16667,4.25071,4.25071,3,8,455.0,Euro
-False,42,5.0,5.0,5.0,3,17,455.0,Dollar
-False,12,4.33333,4.51265,4.51265,3,13,455.0,Pound
-False,5,4.5,4.43781,4.43781,3,14,455.0,Dollar
-False,12,4.16667,4.08155,4.08155,3,18,455.0,Dollar
-True,48,2.33333,2.28232,2.28232,3,63,455.0,Euro
-False,3,4.66667,4.60497,4.60497,3,14,455.0,Pound
-False,22,3.83333,3.93285,3.93285,3,9,455.0,Pound
-True,130,3.83333,3.10158,3.10158,3,15,455.0,Pound
-False,9,5.0,5.0,5.0,3,12,455.0,Dollar
-True,14,3.83333,4.44036,4.44036,3,28,455.0,Dollar
-False,31,3.0,3.11177,3.11177,3,15,455.0,Pound
-True,17,5.0,5.0,5.0,3,26,455.0,Dollar
-False,24,4.83333,4.83075,4.83075,3,8,455.0,Euro
-True,8,5.0,5.0,5.0,3,18,2400.0,Dollar
-True,33,4.16667,4.17241,4.17241,3,53,455.0,Dollar
-True,17,4.66667,4.7939,4.7939,3,10,455.0,Dollar
-True,7,3.66667,3.68338,3.68338,3,6,455.0,Dollar
-False,11,3.66667,3.39965,3.39965,3,25,455.0,Pound
-True,9,3.5,3.5,3.5,3,8,455.0,Euro
-False,7,2.33333,2.44183,2.44183,3,35,700.0,Euro
-True,21,3.33333,3.38924,3.38924,3,119,1040.0,Dollar
-True,12,4.33333,4.39053,4.39053,3,15,455.0,Euro
-True,7,5.0,5.0,5.0,3,8,455.0,Pound
-False,19,3.66667,3.69353,3.69353,3,13,455.0,Pound
-True,6,4.33333,4.44341,4.44341,3,14,455.0,Pound
-True,8,5.0,5.0,5.0,3,30,455.0,Pound
-True,7,2.5,2.18565,2.18565,3,13,455.0,Euro
-True,142,4.33333,4.20055,4.20055,3,11,455.0,Euro
-False,29,3.16667,3.14551,3.14551,3,15,455.0,Dollar
-False,20,3.16667,2.93079,2.93079,3,13,455.0,Dollar
-False,12,3.66667,3.60004,3.60004,3,6,455.0,Euro
-False,59,4.33333,4.39527,4.39527,3,11,455.0,Euro
-True,9,4.33333,4.39015,4.39015,3,49,455.0,Euro
-True,13,4.0,4.01131,4.01131,3,29,455.0,Dollar
-False,12,3.5,3.47809,3.47809,3,22,1440.0,Pound
-True,6,4.0,4.16072,4.16072,3,14,455.0,Euro
-True,228,3.16667,3.68284,3.68284,3,18,468.0,Euro
-True,14,2.0,2.04929,2.04929,3,13,455.0,Pound
-True,8,4.33333,4.37745,4.37745,3,27,455.0,Euro
-False,11,4.66667,4.61351,4.61351,3,5,455.0,Pound
-True,14,4.5,4.49612,4.49612,3,8,455.0,Pound
-True,19,3.0,3.11902,3.11902,3,33,455.0,Dollar
-False,22,4.66667,4.71287,4.71287,3,23,455.0,Pound
-True,12,4.33333,4.53453,4.53453,3,6,455.0,Euro
-True,20,4.66667,4.66955,4.66955,3,9,640.0,Euro
-True,28,4.83333,4.92864,4.92864,3,7,455.0,Dollar
-True,37,4.66667,4.73456,4.73456,3,16,455.0,Euro
-False,23,3.16667,3.24519,3.24519,3,18,455.0,Euro
-False,19,4.0,3.93553,3.93553,3,5,455.0,Euro
-True,22,4.5,4.46274,4.46274,3,5,455.0,Euro
-False,67,4.0,4.04524,4.04524,3,38,455.0,Pound
-False,20,4.0,4.0,4.0,2,12,455.0,Euro
-False,14,3.0,3.0,3.0,2,30,455.0,Pound
-True,30,2.25,2.26316,2.26316,2,15,455.0,Dollar
-False,79,3.5,4.17895,4.17895,2,0,455.0,Pound
-True,142,4.25,4.30303,4.30303,2,24,455.0,Dollar
-True,3,5.0,5.0,5.0,2,31,455.0,Pound
-True,5,3.0,4.38931,4.38931,2,0,455.0,Dollar
-True,10,3.75,3.74723,3.74723,2,8,455.0,Euro
-False,9,4.25,4.24719,4.24719,2,5,455.0,Pound
-True,7,4.75,4.75,4.75,2,9,455.0,Dollar
-True,17,3.75,3.78233,3.78233,2,22,455.0,Pound
-False,13,4.25,4.35955,4.35955,2,250,455.0,Dollar
-False,16,4.5,4.70833,4.70833,2,5,455.0,Pound
-True,223,4.75,4.60471,4.60471,2,8,455.0,Euro
-True,15,5.0,5.0,5.0,2,5,455.0,Euro
-False,13,3.5,3.40727,3.40727,2,11,455.0,Dollar
-True,54,4.0,3.87035,3.87035,2,8,455.0,Euro
-False,7,3.5,3.52117,3.52117,2,5,455.0,Dollar
-False,5,4.25,4.67626,4.67626,2,5,455.0,Dollar
-False,16,3.0,3.02632,3.02632,2,0,880.0,Euro
-True,10,2.25,2.59091,2.59091,2,17,455.0,Dollar
-False,21,4.75,4.77407,4.77407,2,64,455.0,Pound
-True,14,4.75,4.76389,4.76389,2,24,455.0,Pound
-False,6,4.25,4.19403,4.19403,2,17,455.0,Euro
-True,6,4.25,4.31994,4.31994,2,0,455.0,Pound
-True,10,3.0,2.80531,2.80531,2,19,455.0,Dollar
-False,21,3.0,3.0,3.0,2,21,455.0,Dollar
-True,22,4.0,4.55963,4.55963,2,14,455.0,Pound
-False,3,4.0,4.02857,4.02857,2,8,455.0,Dollar
-False,0,2.75,3.19403,3.19403,2,0,455.0,Dollar
-False,7,4.0,4.0,4.0,2,15,455.0,Euro
-False,8,3.75,3.15217,3.15217,2,35,455.0,Pound
-False,8,4.25,4.38235,4.38235,2,28,455.0,Euro
-True,7,4.5,4.45714,4.45714,2,80,455.0,Euro
-True,4,5.0,5.0,5.0,2,9,455.0,Euro
-False,5,3.5,3.41463,3.41463,2,15,455.0,Dollar
-True,168,5.0,5.0,5.0,2,14,455.0,Dollar
-False,10,4.5,4.4684,4.4684,2,10,455.0,Pound
-True,3,1.25,1.17992,1.17992,2,10,455.0,Pound
-True,12,5.0,5.0,5.0,2,16,455.0,Dollar
-False,7,4.0,4.00629,4.00629,2,10,455.0,Dollar
-False,10,5.0,5.0,5.0,2,19,455.0,Pound
-False,5,1.75,1.88068,1.88068,2,8,455.0,Pound
-True,2,4.75,4.76866,4.76866,2,10,455.0,Dollar
-True,9,4.0,3.93264,3.93264,2,7,455.0,Pound
-True,4,3.75,3.74088,3.74088,2,10,455.0,Euro
-False,22,5.0,5.0,5.0,2,5,455.0,Pound
-True,36,3.5,3.59047,3.59047,2,33,455.0,Euro
-True,31,5.0,5.0,5.0,2,6,455.0,Euro
-False,8,5.0,5.0,5.0,2,17,455.0,Dollar
-False,5,3.0,3.17647,3.17647,2,18,455.0,Pound
-False,4,4.5,4.52941,4.52941,2,40,455.0,Euro
-True,9,2.5,2.48607,2.48607,2,5,455.0,Euro
-False,8,5.0,5.0,5.0,2,17,455.0,Dollar
-False,48,3.75,3.68182,3.68182,2,10,455.0,Dollar
-False,6,5.0,5.0,5.0,2,25,455.0,Dollar
-True,12,4.25,4.2852,4.2852,2,28,455.0,Pound
-True,10,4.0,3.77095,3.77095,2,10,455.0,Dollar
-False,3,4.25,4.25,4.25,2,32,455.0,Dollar
-True,11,1.25,1.23108,1.23108,2,5,455.0,Pound
-False,11,4.25,4.30488,4.30488,2,18,455.0,Dollar
-True,90,5.0,5.0,5.0,2,19,455.0,Euro
-True,3,4.25,4.21016,4.21016,2,23,455.0,Dollar
-False,8,5.0,5.0,5.0,2,79,455.0,Euro
-True,6,5.0,5.0,5.0,2,9,455.0,Euro
-True,11,5.0,5.0,5.0,2,7,455.0,Dollar
-True,33,4.25,4.24242,4.24242,2,92,455.0,Euro
-True,6,5.0,5.0,5.0,2,22,455.0,Euro
-True,191,2.75,2.57143,2.57143,2,18,455.0,Dollar
-True,18,4.5,4.42908,4.42908,2,25,455.0,Dollar
-True,38,2.75,2.68473,2.68473,2,5,455.0,Pound
-False,31,4.5,4.31496,4.31496,2,54,455.0,Pound
-True,12,4.75,4.87037,4.87037,2,36,455.0,Euro
-True,8,3.75,3.76866,3.76866,2,14,455.0,Pound
-True,123,2.0,2.17355,2.17355,2,10,455.0,Dollar
-True,5,4.5,4.5,4.5,2,32,455.0,Euro
-False,14,4.0,4.0,4.0,2,9,455.0,Pound
-False,195,4.75,4.61111,4.61111,2,22,455.0,Pound
-True,5,5.0,5.0,5.0,2,30,455.0,Dollar
-True,9,2.5,2.56115,2.56115,2,10,455.0,Pound
-False,4,5.0,5.0,5.0,2,5,455.0,Pound
-True,7,2.75,2.71348,2.71348,2,27,455.0,Dollar
-True,22,5.0,5.0,5.0,2,10,455.0,Dollar
-False,17,4.5,4.48256,4.48256,2,17,3200.0,Pound
-True,19,5.0,5.0,5.0,2,9,455.0,Pound
-True,8,4.0,4.09677,4.09677,2,13,455.0,Pound
-False,17,5.0,5.0,5.0,2,56,455.0,Euro
-True,5,4.75,4.75073,4.75073,2,71,3200.0,Pound
-False,23,4.75,4.75024,4.75024,2,8,455.0,Pound
-False,19,5.0,5.0,5.0,2,19,455.0,Pound
-False,15,3.0,3.6,3.6,2,8,455.0,Pound
-False,20,3.75,3.59155,3.59155,2,5,455.0,Pound
-False,11,4.5,4.49442,4.49442,2,28,455.0,Euro
-False,21,3.5,3.5,3.5,1,24,455.0,Pound
-True,8,3.5,3.5,3.5,1,112,455.0,Euro
-False,50,3.5,3.5,3.5,1,10,455.0,Pound
-False,2,1.0,1.0,1.0,1,17,455.0,Pound
-True,8,5.0,5.0,5.0,1,16,455.0,Pound
-True,7,5.0,5.0,5.0,1,20,455.0,Euro
-False,3,4.0,4.0,4.0,1,11,455.0,Pound
-False,3,5.0,5.0,5.0,1,18,455.0,Pound
-True,2,3.0,3.0,3.0,1,20,960.0,Euro
-False,1,4.0,4.0,4.0,1,10,455.0,Dollar
-True,1,5.0,5.0,5.0,1,7,455.0,Dollar
-True,4,5.0,5.0,5.0,1,22,455.0,Euro
-True,4,2.5,2.5,2.5,1,5,455.0,Euro
-True,133,2.5,2.5,2.5,1,30,455.0,Euro
-True,11,4.5,4.5,4.5,1,7,455.0,Euro
-True,47,5.0,5.0,5.0,1,41,455.0,Pound
-False,4,4.0,4.0,4.0,1,17,455.0,Pound
-True,2,2.5,2.5,2.5,1,15,455.0,Pound
-True,8,5.0,5.0,5.0,1,84,455.0,Pound
-False,5,4.5,4.5,4.5,1,64,455.0,Pound
-True,6,3.0,3.0,3.0,1,7,455.0,Pound
-False,5,5.0,5.0,5.0,1,16,455.0,Dollar
-True,5,4.5,4.5,4.5,1,30,455.0,Dollar
-False,3,2.5,2.5,2.5,1,10,455.0,Pound
-True,15,5.0,5.0,5.0,1,35,455.0,Euro
-True,9,2.0,2.0,2.0,1,18,455.0,Euro
-False,3,3.5,3.5,3.5,1,8,455.0,Dollar
-False,1,3.0,3.0,3.0,1,19,455.0,Dollar
-True,2,4.0,4.0,4.0,1,94,455.0,Pound
-False,5,3.0,3.0,3.0,1,17,455.0,Pound
-False,4,5.0,5.0,5.0,1,15,480.0,Pound
-False,10,3.5,3.5,3.5,1,29,455.0,Dollar
-True,1,1.0,1.0,1.0,1,6,455.0,Dollar
-True,1,5.0,5.0,5.0,1,35,3120.0,Pound
-True,2,5.0,5.0,5.0,1,11,455.0,Pound
-False,6,5.0,5.0,5.0,1,30,455.0,Euro
-True,124,4.5,4.5,4.5,1,10,455.0,Euro
-False,1,1.0,1.0,1.0,1,9,455.0,Dollar
-False,4,5.0,5.0,5.0,1,49,455.0,Dollar
-False,3,4.5,4.5,4.5,1,11,455.0,Dollar
-False,9,2.0,2.0,2.0,1,25,455.0,Dollar
-True,9,3.5,3.5,3.5,1,5,455.0,Dollar
-False,18,5.0,5.0,5.0,1,6,1280.0,Pound
-True,8,3.0,3.0,3.0,1,9,455.0,Pound
-False,8,3.0,3.0,3.0,1,9,455.0,Euro
-False,2,1.0,1.0,1.0,1,5,455.0,Pound
-True,6,3.0,3.0,3.0,1,12,455.0,Dollar
-False,1,4.0,4.0,4.0,1,7,455.0,Dollar
-False,4,4.0,4.0,4.0,1,21,455.0,Euro
-True,2,5.0,5.0,5.0,1,13,455.0,Pound
-True,5,5.0,5.0,5.0,1,7,455.0,Pound
-False,4,5.0,5.0,5.0,1,9,700.0,Dollar
-False,7,4.5,4.5,4.5,1,9,455.0,Dollar
-True,28,4.5,4.5,4.5,1,11,455.0,Pound
-False,4,5.0,5.0,5.0,1,31,455.0,Dollar
-False,5,4.0,4.0,4.0,1,9,455.0,Euro
-False,6,3.0,3.0,3.0,1,10,455.0,Dollar
-False,4,5.0,5.0,5.0,1,9,455.0,Pound
-False,9,2.0,2.0,2.0,1,16,455.0,Pound
-False,3,3.0,3.0,3.0,1,7,800.0,Pound
-False,4,4.5,4.5,4.5,1,6,455.0,Pound
-False,2,4.0,4.0,4.0,1,6,700.0,Pound
-True,42,3.5,3.5,3.5,1,28,455.0,Euro
-False,2,3.0,3.0,3.0,1,8,455.0,Pound
-True,3,3.0,3.0,3.0,1,6,455.0,Dollar
-False,9,3.0,3.0,3.0,1,12,455.0,Euro
-True,4,5.0,5.0,5.0,1,102,455.0,Dollar
-False,4,4.5,4.5,4.5,1,13,455.0,Euro
-False,3,3.0,3.0,3.0,1,32,455.0,Pound
-True,2,3.5,3.5,3.5,1,15,455.0,Dollar
-True,6,5.0,5.0,5.0,1,5,455.0,Dollar
-True,6,5.0,5.0,5.0,1,24,455.0,Dollar
-False,11,5.0,5.0,5.0,1,14,455.0,Euro
-False,2,5.0,5.0,5.0,1,9,455.0,Dollar
-True,184,4.0,4.0,4.0,1,28,455.0,Pound
-True,21,5.0,5.0,5.0,1,34,455.0,Dollar
-True,7,3.5,3.5,3.5,1,24,455.0,Pound
-False,278,5.0,5.0,5.0,1,41,455.0,Pound
-False,16,5.0,5.0,5.0,1,57,455.0,Pound
-True,39,4.0,4.0,4.0,1,28,455.0,Dollar
-True,10,4.0,4.0,4.0,1,16,455.0,Dollar
-True,3,3.0,3.0,3.0,1,27,455.0,Dollar
-True,6,4.0,4.0,4.0,1,10,455.0,Dollar
-False,3,1.0,1.0,1.0,1,49,455.0,Pound
-True,10,5.0,5.0,5.0,1,5,455.0,Pound
-True,6,4.0,4.0,4.0,1,22,700.0,Dollar
-False,5,5.0,5.0,5.0,1,16,455.0,Euro
-False,14,3.5,3.5,3.5,1,16,455.0,Dollar
-False,7,3.0,3.0,3.0,1,27,455.0,Euro
-True,869,4.0,4.0,4.0,1,26,455.0,Euro
-True,1,3.0,3.0,3.0,1,10,455.0,Dollar
-True,10,5.0,5.0,5.0,1,97,455.0,Euro
-True,2,4.5,4.5,4.5,1,21,455.0,Dollar
-False,2,4.0,4.0,4.0,1,33,455.0,Pound
-True,8,5.0,5.0,5.0,1,46,455.0,Dollar
-False,5,5.0,5.0,5.0,1,14,455.0,Euro
-True,8,3.5,3.5,3.5,1,21,455.0,Dollar
-False,72,5.0,5.0,5.0,1,27,455.0,Euro
-False,18,3.5,3.5,3.5,1,23,455.0,Dollar
-True,4,5.0,5.0,5.0,1,17,455.0,Euro
-True,6,3.5,3.5,3.5,1,13,455.0,Pound
-True,2,4.5,4.5,4.5,1,4,455.0,Dollar
-True,9,3.0,3.0,3.0,1,9,455.0,Pound
-True,36,3.0,3.0,3.0,1,7,455.0,Pound
-True,10,3.0,3.0,3.0,1,21,455.0,Euro
-False,22,5.0,5.0,5.0,1,6,455.0,Pound
-False,3,3.0,3.0,3.0,1,26,455.0,Euro
-False,7,5.0,5.0,5.0,1,15,455.0,Euro
-True,3,3.0,3.0,3.0,1,15,480.0,Pound
-True,2,5.0,5.0,5.0,1,12,455.0,Dollar
-True,38,5.0,5.0,5.0,1,11,455.0,Dollar
-False,1,5.0,5.0,5.0,1,19,455.0,Euro
-False,6,5.0,5.0,5.0,1,10,455.0,Euro
-False,10,2.5,2.5,2.5,1,19,455.0,Euro
-True,8,5.0,5.0,5.0,1,9,455.0,Dollar
-True,14,3.5,3.5,3.5,1,8,455.0,Euro
-False,1,4.5,4.5,4.5,1,24,455.0,Euro
-True,18,3.0,3.0,3.0,1,10,455.0,Euro
-True,1,5.0,5.0,5.0,1,8,455.0,Euro
-False,9,3.5,3.5,3.5,1,10,455.0,Dollar
-False,9,3.0,3.0,3.0,1,7,455.0,Pound
-True,122,5.0,5.0,5.0,1,20,455.0,Pound
-False,0,0.0,0.0,0.0,0,19,455.0,Dollar
-False,3,0.0,0.0,0.0,0,10,455.0,Dollar
-False,0,0.0,0.0,0.0,0,8,455.0,Pound
-True,2,0.0,0.0,0.0,0,6,455.0,Euro
-True,6,0.0,0.0,0.0,0,9,455.0,Euro
-False,0,0.0,0.0,0.0,0,7,455.0,Euro
-True,3,0.0,0.0,0.0,0,14,455.0,Euro
-False,0,0.0,0.0,0.0,0,5,455.0,Dollar
-False,0,0.0,0.0,0.0,0,7,455.0,Pound
-True,0,0.0,0.0,0.0,0,10,455.0,Euro
-True,0,0.0,0.0,0.0,0,7,455.0,Dollar
-True,14,0.0,0.0,0.0,0,15,455.0,Euro
-True,4,0.0,0.0,0.0,0,6,455.0,Pound
-True,3,0.0,0.0,0.0,0,19,455.0,Euro
-True,2,0.0,0.0,0.0,0,31,455.0,Pound
-False,24,0.0,0.0,0.0,0,36,455.0,Dollar
-True,5,0.0,0.0,0.0,0,48,455.0,Dollar
-True,1,0.0,0.0,0.0,0,18,455.0,Dollar
-True,2,0.0,0.0,0.0,0,5,455.0,Pound
-True,16,0.0,0.0,0.0,0,30,455.0,Dollar
-False,2,0.0,0.0,0.0,0,20,1200.0,Pound
-True,2,0.0,0.0,0.0,0,48,455.0,Pound
-True,39,0.0,0.0,0.0,0,22,455.0,Dollar
-False,7,0.0,0.0,0.0,0,6,455.0,Pound
-True,6,0.0,0.0,0.0,0,14,455.0,Pound
-False,1,0.0,0.0,0.0,0,12,455.0,Euro
-False,0,0.0,0.0,0.0,0,7,455.0,Pound
-False,0,0.0,0.0,0.0,0,11,455.0,Euro
-False,0,0.0,0.0,0.0,0,6,640.0,Dollar
-True,0,0.0,0.0,0.0,0,8,455.0,Pound
-False,1,0.0,0.0,0.0,0,12,455.0,Pound
-False,0,0.0,0.0,0.0,0,0,455.0,Pound
-True,0,0.0,0.0,0.0,0,21,455.0,Euro
-False,0,0.0,0.0,0.0,0,7,455.0,Pound
-False,0,0.0,0.0,0.0,0,12,455.0,Euro
-False,1,0.0,0.0,0.0,0,8,455.0,Pound
-True,0,0.0,0.0,0.0,0,12,455.0,Euro
-True,2,0.0,0.0,0.0,0,26,455.0,Pound
-False,1,0.0,0.0,0.0,0,7,455.0,Euro
-False,0,0.0,0.0,0.0,0,7,455.0,Dollar
-True,0,0.0,0.0,0.0,0,19,455.0,Pound
-True,2,0.0,0.0,0.0,0,7,455.0,Pound
-False,2,0.0,0.0,0.0,0,34,455.0,Euro
-True,2,0.0,0.0,0.0,0,12,455.0,Pound
-False,2,0.0,0.0,0.0,0,19,455.0,Pound
-True,20,0.0,0.0,0.0,0,12,800.0,Pound
-True,89,0.0,0.0,0.0,0,8,455.0,Euro
-False,7,0.0,0.0,0.0,0,35,455.0,Pound
-True,0,0.0,0.0,0.0,0,110,3200.0,Pound
-False,2,0.0,0.0,0.0,0,6,455.0,Dollar
-True,6,0.0,0.0,0.0,0,29,455.0,Pound
-False,0,0.0,0.0,0.0,0,5,455.0,Pound
-False,0,0.0,0.0,0.0,0,0,455.0,Pound
-False,1,0.0,0.0,0.0,0,9,455.0,Euro
-True,0,0.0,0.0,0.0,0,10,455.0,Dollar
-True,1,0.0,0.0,0.0,0,18,455.0,Pound
-True,0,0.0,0.0,0.0,0,11,455.0,Dollar
-False,0,0.0,0.0,0.0,0,5,455.0,Euro
-False,1,0.0,0.0,0.0,0,6,700.0,Dollar
-False,1,0.0,0.0,0.0,0,19,455.0,Dollar
-True,1,0.0,0.0,0.0,0,5,455.0,Pound
-False,21,0.0,0.0,0.0,0,6,455.0,Pound
-False,0,0.0,0.0,0.0,0,36,455.0,Pound
-True,2,0.0,0.0,0.0,0,28,455.0,Pound
-False,1,0.0,0.0,0.0,0,14,455.0,Dollar
-True,1,0.0,0.0,0.0,0,21,455.0,Pound
-False,2,0.0,0.0,0.0,0,7,455.0,Euro
-False,1,0.0,0.0,0.0,0,8,455.0,Dollar
-True,5,0.0,0.0,0.0,0,18,455.0,Pound
-True,4,0.0,0.0,0.0,0,7,455.0,Pound
-False,4,0.0,0.0,0.0,0,8,455.0,Pound
-True,1,0.0,0.0,0.0,0,11,455.0,Dollar
-False,0,0.0,0.0,0.0,0,46,455.0,Euro
-False,5,0.0,0.0,0.0,0,11,455.0,Pound
-False,0,0.0,0.0,0.0,0,43,2720.0,Euro
-True,2,0.0,0.0,0.0,0,6,455.0,Euro
-True,4,0.0,0.0,0.0,0,25,700.0,Pound
-False,1,0.0,0.0,0.0,0,18,455.0,Dollar
-False,0,0.0,0.0,0.0,0,6,455.0,Euro
-False,129,0.0,0.0,0.0,0,20,455.0,Pound
-False,0,0.0,0.0,0.0,0,21,455.0,Euro
-True,1,0.0,0.0,0.0,0,46,455.0,Pound
-False,1,0.0,0.0,0.0,0,8,455.0,Pound
-False,3,0.0,0.0,0.0,0,114,455.0,Dollar
-False,8,0.0,0.0,0.0,0,7,455.0,Pound
-False,1,0.0,0.0,0.0,0,5,455.0,Dollar
-False,0,0.0,0.0,0.0,0,19,455.0,Euro
-False,0,0.0,0.0,0.0,0,0,455.0,Dollar
-False,1,0.0,0.0,0.0,0,6,455.0,Euro
-False,0,0.0,0.0,0.0,0,9,455.0,Pound
-True,1,0.0,0.0,0.0,0,8,455.0,Euro
-True,0,0.0,0.0,0.0,0,42,455.0,Euro
-True,0,0.0,0.0,0.0,0,5,455.0,Dollar
-True,0,0.0,0.0,0.0,0,0,455.0,Euro
-False,4,0.0,0.0,0.0,0,12,455.0,Pound
-False,6,0.0,0.0,0.0,0,10,455.0,Dollar
-True,6,0.0,0.0,0.0,0,9,455.0,Euro
-True,0,0.0,0.0,0.0,0,24,455.0,Dollar
-True,0,0.0,0.0,0.0,0,11,455.0,Euro
-True,1,0.0,0.0,0.0,0,9,700.0,Pound
-False,0,0.0,0.0,0.0,0,8,455.0,Pound
-True,0,0.0,0.0,0.0,0,17,455.0,Euro
-False,7,0.0,0.0,0.0,0,31,455.0,Pound
-False,3,0.0,0.0,0.0,0,11,455.0,Euro
-False,15,0.0,0.0,0.0,0,67,455.0,Dollar
-False,0,0.0,0.0,0.0,0,14,455.0,Euro
-True,11,0.0,0.0,0.0,0,9,2240.0,Dollar
-True,0,0.0,0.0,0.0,0,7,455.0,Pound
-True,8,0.0,0.0,0.0,0,23,455.0,Pound
-False,2,0.0,0.0,0.0,0,12,455.0,Euro
-True,1,0.0,0.0,0.0,0,0,455.0,Euro
-True,5,0.0,0.0,0.0,0,7,455.0,Dollar
-False,7,0.0,0.0,0.0,0,5,455.0,Dollar
-True,1,0.0,0.0,0.0,0,9,455.0,Dollar
-False,1,0.0,0.0,0.0,0,8,455.0,Pound
-False,7,0.0,0.0,0.0,0,29,455.0,Euro
-False,3,0.0,0.0,0.0,0,12,455.0,Dollar
-False,0,0.0,0.0,0.0,0,11,455.0,Euro
-True,0,0.0,0.0,0.0,0,5,455.0,Euro
-False,0,0.0,0.0,0.0,0,0,455.0,Euro
-True,0,0.0,0.0,0.0,0,10,455.0,Dollar
-False,1,4.5,4.5,4.5,1,19,455.0,Euro
-False,4,0.0,0.0,0.0,0,10,455.0,Euro
-True,0,0.0,0.0,0.0,0,6,455.0,Dollar
-False,3,0.0,0.0,0.0,0,18,455.0,Euro
-False,0,0.0,0.0,0.0,0,14,455.0,Dollar
-False,1,0.0,0.0,0.0,0,10,455.0,Dollar
-False,0,0.0,0.0,0.0,0,34,455.0,Pound
-False,2,0.0,0.0,0.0,0,23,455.0,Pound
-False,1,0.0,0.0,0.0,0,27,455.0,Pound
-True,8,0.0,0.0,0.0,0,8,455.0,Euro
-True,2,0.0,0.0,0.0,0,6,455.0,Dollar
-True,0,0.0,0.0,0.0,0,19,455.0,Dollar
-False,1,0.0,0.0,0.0,0,45,455.0,Dollar
-False,0,0.0,0.0,0.0,0,7,455.0,Euro
-True,1,0.0,0.0,0.0,0,5,700.0,Pound
-True,1,0.0,0.0,0.0,0,6,640.0,Euro
-True,1,0.0,0.0,0.0,0,5,455.0,Euro
-True,4,0.0,0.0,0.0,0,11,455.0,Dollar
-False,3,0.0,0.0,0.0,0,6,560.0,Euro
-True,7,0.0,0.0,0.0,0,8,455.0,Pound
-False,2,0.0,0.0,0.0,0,9,455.0,Euro
-True,0,0.0,0.0,0.0,0,9,455.0,Euro
-True,10,0.0,0.0,0.0,0,15,455.0,Dollar
-True,0,0.0,0.0,0.0,0,9,455.0,Euro
-True,7,0.0,0.0,0.0,0,7,455.0,Euro
-False,1,0.0,0.0,0.0,0,20,455.0,Euro
-False,2,0.0,0.0,0.0,0,0,455.0,Dollar
-True,1,0.0,0.0,0.0,0,22,455.0,Euro
-False,5,0.0,0.0,0.0,0,22,455.0,Euro
-True,0,0.0,0.0,0.0,0,8,1440.0,Dollar
-True,2,0.0,0.0,0.0,0,24,455.0,Pound
-False,3,0.0,0.0,0.0,0,21,455.0,Euro
-False,0,0.0,0.0,0.0,0,11,455.0,Pound
-True,5,0.0,0.0,0.0,0,10,455.0,Pound
-True,0,0.0,0.0,0.0,0,6,455.0,Dollar
-True,4,0.0,0.0,0.0,0,43,455.0,Dollar
-False,1,0.0,0.0,0.0,0,38,455.0,Dollar
-True,0,0.0,0.0,0.0,0,6,455.0,Pound
-True,0,0.0,0.0,0.0,0,5,455.0,Euro
-False,5,0.0,0.0,0.0,0,11,455.0,Euro
-True,10,5.0,5.0,5.0,1,18,455.0,Pound
-True,0,0.0,0.0,0.0,0,43,455.0,Dollar
-True,1,0.0,0.0,0.0,0,0,455.0,Pound
-True,0,0.0,0.0,0.0,0,15,455.0,Pound
-False,0,0.0,0.0,0.0,0,5,455.0,Euro
-False,1,0.0,0.0,0.0,0,7,455.0,Pound
-False,0,0.0,0.0,0.0,0,27,455.0,Dollar
-False,95,0.0,0.0,0.0,0,5,455.0,Euro
-False,0,0.0,0.0,0.0,0,13,455.0,Pound
-False,0,0.0,0.0,0.0,0,11,455.0,Pound
-True,0,0.0,0.0,0.0,0,13,455.0,Pound
-False,13,0.0,0.0,0.0,0,33,455.0,Dollar
-True,7,0.0,0.0,0.0,0,15,455.0,Euro
-False,2,0.0,0.0,0.0,0,6,455.0,Euro
-False,0,0.0,0.0,0.0,0,22,455.0,Dollar
-True,1,0.0,0.0,0.0,0,5,455.0,Euro
-False,2,0.0,0.0,0.0,0,5,455.0,Pound
-True,50,0.0,0.0,0.0,0,10,455.0,Euro
-True,1,0.0,0.0,0.0,0,22,455.0,Pound
-True,0,0.0,0.0,0.0,0,5,455.0,Dollar
-False,0,0.0,0.0,0.0,0,5,455.0,Pound
-False,0,0.0,0.0,0.0,0,8,455.0,Dollar
-True,1,0.0,0.0,0.0,0,5,455.0,Dollar
-True,2,0.0,0.0,0.0,0,16,455.0,Euro
-False,0,0.0,0.0,0.0,0,49,455.0,Euro
-False,0,0.0,0.0,0.0,0,6,700.0,Dollar
-False,1,0.0,0.0,0.0,0,7,455.0,Pound
-True,0,0.0,0.0,0.0,0,65,455.0,Euro
-True,0,0.0,0.0,0.0,0,11,455.0,Pound
-True,0,0.0,0.0,0.0,0,7,455.0,Dollar
-True,0,0.0,0.0,0.0,0,11,455.0,Pound
-True,0,0.0,0.0,0.0,0,11,455.0,Euro
-True,0,0.0,0.0,0.0,0,14,455.0,Pound
-True,0,0.0,0.0,0.0,0,7,455.0,Dollar
-True,4,0.0,0.0,0.0,0,10,455.0,Pound
-False,0,0.0,0.0,0.0,0,59,455.0,Euro
-True,12,0.0,0.0,0.0,0,30,455.0,Dollar
-False,0,0.0,0.0,0.0,0,10,455.0,Dollar
-False,11,0.0,0.0,0.0,0,0,455.0,Pound
-False,4,0.0,0.0,0.0,0,29,1600.0,Pound
-True,15,0.0,0.0,0.0,0,11,640.0,Pound
-False,1,0.0,0.0,0.0,0,8,455.0,Dollar
-False,9,0.0,0.0,0.0,0,0,455.0,Pound
-False,7,0.0,0.0,0.0,0,47,455.0,Euro
-False,5,0.0,0.0,0.0,0,8,640.0,Pound
-True,131,0.0,0.0,0.0,0,25,455.0,Dollar
-False,2,0.0,0.0,0.0,0,5,455.0,Dollar
-True,0,0.0,0.0,0.0,0,11,455.0,Euro
-False,3,0.0,0.0,0.0,0,11,455.0,Euro
-True,4,0.0,0.0,0.0,0,14,455.0,Dollar
-False,2,0.0,0.0,0.0,0,7,455.0,Dollar
-True,0,0.0,0.0,0.0,0,11,455.0,Pound
-True,1,0.0,0.0,0.0,0,18,455.0,Euro
diff --git a/whitebox/analytics/drift/pipelines.py b/whitebox/analytics/drift/pipelines.py
deleted file mode 100644
index b1c3d19..0000000
--- a/whitebox/analytics/drift/pipelines.py
+++ /dev/null
@@ -1,98 +0,0 @@
-import pandas as pd
-import json
-from evidently.report import Report
-from evidently.metric_preset import DataDriftPreset, TargetDriftPreset
-from whitebox.schemas.driftingMetric import DataDriftTable, ConceptDriftTable
-
-
-def run_data_drift_pipeline(
- reference_dataset: pd.DataFrame, current_dataset: pd.DataFrame
-) -> DataDriftTable:
- """
- Two datasets are needed
- The reference dataset serves as a benchmark.
- An analysis happens comparing the current production data to the reference data.
-
- The dataset should include the needed features to evaluate for drift.
- The schema of both datasets should be identical.
- - In the case of pandas DataFrame, all column names should be string
- - All feature columns analyzed for drift should have the numerical type (np.number)
- - Categorical data can be encoded as numerical labels and specified in the column_mapping.
- - DateTime column is the only exception. If available, it can be used as the x-axis in the plots.
-
- Potentially, any two datasets can be used for comparison. Only the reference dataset
- will be used as a basis for comparison.
-
- How it works
-
- To estimate the data drift Evidently compares the distributions of each feature in the two datasets.
- Evidently applies statistical tests to detect if the distribution has changed significantly. There is a default
- logic to choosing the appropriate statistical test based on:
- - feature type: categorical or numerical
- - the number of observations in the reference dataset
- - the number of unique values in the feature (n_unique)
-
- For small data with <= 1000 observations in the reference dataset:
- - For numerical features (n_unique > 5): two-sample Kolmogorov-Smirnov test.
- - For categorical features or numerical features with n_unique <= 5: chi-squared test.
- - For binary categorical features (n_unique <= 2), we use the proportion difference test for independent samples based on Z-score.
-
- All tests use a 0.95 confidence level by default.
-
- For larger data with > 1000 observations in the reference dataset:
- - For numerical features (n_unique > 5): Wasserstein Distance.
- - For categorical features or numerical with n_unique <= 5): Jensen–Shannon divergence.
-
- All tests use a threshold = 0.1 by default.
-
- """
- drift_report = Report(metrics=[DataDriftPreset()])
- drift_report.run(reference_data=reference_dataset, current_data=current_dataset)
-
- initial_report = drift_report.json()
- initial_report = json.loads(initial_report)
-
- data_drift_report = {}
- data_drift_report["drift_summary"] = initial_report["metrics"][1]["result"]
-
- return DataDriftTable(**data_drift_report["drift_summary"])
-
-
-def run_concept_drift_pipeline(
- reference_dataset: pd.DataFrame, current_dataset: pd.DataFrame, target_feature: str
-) -> ConceptDriftTable:
- """
- To estimate the categorical target drift, we compare the distribution of the target in the two datasets.
- This solution works for both binary and multi-class classification.
- As this function works with keywords we have to explicitly define the target column. At the end of the function
- we return the initial name of the feature.
-
- There is a default logic to choosing the appropriate statistical test, based on:
- - the number of observations in the reference dataset
- - the number of unique values in the target (n_unique)
-
- For small data with <= 1000 observations in the reference dataset:
- - For categorical target with n_unique > 2: chi-squared test.
- - For binary categorical target (n_unique <= 2), we use the proportion difference test for independent samples based on Z-score.
-
- All tests use a 0.95 confidence level by default.
-
- For larger data with > 1000 observations in the reference dataset we use Jensen–Shannon divergence with a threshold = 0.1.
-
- """
- reference_dataset.rename(columns={target_feature: "target"}, inplace=True)
- current_dataset.rename(columns={target_feature: "target"}, inplace=True)
- drift_report = Report(metrics=[TargetDriftPreset()])
- drift_report.run(reference_data=reference_dataset, current_data=current_dataset)
- initial_report = drift_report.json()
- initial_report = json.loads(initial_report)
- concept_drift_report = {}
- concept_drift_report["concept_drift_summary"] = initial_report["metrics"][0][
- "result"
- ]
- concept_drift_report["column_correlation"] = initial_report["metrics"][1]["result"]
-
- return ConceptDriftTable(
- concept_drift_summary=concept_drift_report["concept_drift_summary"],
- column_correlation=concept_drift_report["column_correlation"],
- )
diff --git a/whitebox/analytics/metrics/functions.py b/whitebox/analytics/metrics/functions.py
deleted file mode 100644
index b5f74aa..0000000
--- a/whitebox/analytics/metrics/functions.py
+++ /dev/null
@@ -1,119 +0,0 @@
-from sklearn.metrics import multilabel_confusion_matrix
-import pandas as pd
-from typing import Dict, Union, List
-
-
-def format_feature_metrics(
- missing_count: Dict[str, int],
- non_missing_count: Dict[str, int],
- mean: Dict[str, float],
- minimum: Dict[str, float],
- maximum: Dict[str, float],
- sum: Dict[str, float],
- standard_deviation: Dict[str, float],
- variance: Dict[str, float],
-) -> Dict[str, Union[int, float]]:
- formated_metrics = {
- "missing_count": missing_count,
- "non_missing_count": non_missing_count,
- "mean": mean,
- "minimum": minimum,
- "maximum": maximum,
- "sum": sum,
- "standard_deviation": standard_deviation,
- "variance": variance,
- }
-
- return formated_metrics
-
-
-def format_evaluation_metrics_binary(
- accuracy: float,
- precision: float,
- recall: float,
- f1: float,
- tn: int,
- fp: int,
- fn: int,
- tp: int,
-) -> Dict[str, Union[int, float]]:
- formated_metrics_for_binary = {
- "accuracy": accuracy,
- "precision": precision,
- "recall": recall,
- "f1": f1,
- "true_negative": tn,
- "false_positive": fp,
- "false_negative": fn,
- "true_positive": tp,
- }
-
- return formated_metrics_for_binary
-
-
-def format_evaluation_metrics_multiple(
- accuracy: float,
- precision_statistics: Dict[str, float],
- recall_statistics: Dict[str, float],
- f1_statistics: Dict[str, float],
- conf_matrix: Dict[str, Dict[str, int]],
-) -> Dict[str, Union[float, Dict[str, Union[int, float]]]]:
- formated_metrics_for_multiple = {
- "accuracy": accuracy,
- "precision": precision_statistics,
- "recall": recall_statistics,
- "f1": f1_statistics,
- "confusion_matrix": conf_matrix,
- }
-
- return formated_metrics_for_multiple
-
-
-def format_evaluation_metrics_regression(
- r_square: float,
- mean_squared_error: float,
- mean_absolute_error: float,
-) -> Dict[str, Union[int, float]]:
- formated_metrics_for_regression = {
- "r_square": r_square,
- "mean_squared_error": mean_squared_error,
- "mean_absolute_error": mean_absolute_error,
- }
-
- return formated_metrics_for_regression
-
-
-def confusion_for_multiclass(
- test_set: pd.DataFrame, prediction_set: pd.DataFrame, labels: List[int]
-) -> Dict[str, Dict[str, int]]:
- """
- Gets 2 datasets based on multiclass classification and calculates
- the corresponding confusion matrix outputs tn, fp, fn, tp
-
- Parameters
- ----------
- test_set : pd.DataFrame
- Multiclass ground truth labels.
-
- y_score : pd.DataFrame
- Multiclass predicted labels.
-
- Returns
- -------
- mult_dict : Dict
-
- """
- cm = multilabel_confusion_matrix(test_set, prediction_set, labels=labels)
- mult_dict = {}
- class_key = 0
- for i in cm:
- tn, fp, fn, tp = i.ravel()
- eval_dict = {
- "true_negative": tn,
- "false_positive": fp,
- "false_negative": fn,
- "true_positive": tp,
- }
- mult_dict["class{}".format(class_key)] = eval_dict
- class_key = class_key + 1
- return mult_dict
diff --git a/whitebox/analytics/metrics/pipelines.py b/whitebox/analytics/metrics/pipelines.py
deleted file mode 100644
index ddd660f..0000000
--- a/whitebox/analytics/metrics/pipelines.py
+++ /dev/null
@@ -1,231 +0,0 @@
-import pandas as pd
-from sklearn import metrics
-from sklearn.metrics import confusion_matrix
-from whitebox.analytics.metrics.functions import *
-from typing import List
-from whitebox.schemas.performanceMetric import (
- BinaryClassificationMetricsPipelineResult,
- MultiClassificationMetricsPipelineResult,
- RegressionMetricsPipelineResult,
-)
-from whitebox.schemas.modelIntegrityMetric import FeatureMetrics
-
-
-def create_feature_metrics_pipeline(
- dataset: pd.DataFrame,
-) -> FeatureMetrics:
- """
- Feature metrics basic calculation
-
- Calculates the basic metrics of a given dataset
-
- Parameters
- ----------
- dataset : pd.DataFrame
- Given dataset for the calculation of metrics
-
- Returns
- -------
- feature_metrics : Dict
-
- The returned metrics are:
- missing_count,
- non_missing_count,
- mean,
- minimum,
- maximum,
- sum,
- standard_deviation,
- variance
-
- """
- missing_count = dataset.isna().sum().to_dict()
- non_missing_count = dataset.notna().sum().to_dict()
- mean = dataset.mean(numeric_only=True).to_dict()
- minimum = dataset.min(numeric_only=True).to_dict()
- maximum = dataset.max(numeric_only=True).to_dict()
- sum = dataset.sum(numeric_only=True).to_dict()
- standard_deviation = dataset.std(numeric_only=True).to_dict()
- variance = dataset.var(numeric_only=True).to_dict()
-
- return FeatureMetrics(
- **format_feature_metrics(
- missing_count,
- non_missing_count,
- mean,
- minimum,
- maximum,
- sum,
- standard_deviation,
- variance,
- )
- )
-
-
-def create_binary_classification_evaluation_metrics_pipeline(
- test_set: pd.Series, prediction_set: pd.Series, labels: List[int]
-) -> BinaryClassificationMetricsPipelineResult:
- """
- Binary classification evaluation metrics
-
- Calculates the evaluation metrics for binary classification
- given two datasets
-
- Parameters
- ----------
- test_set : pd.Series
- Given ground truth dataset
-
- prediction_set : pd.Series
- Given predictions dataset
-
- Returns
- -------
- evaluation_metrics : Dict
-
- The returned metrics are:
- accuracy,
- precision,
- recall,
- f1,
- tn,
- fp,
- fn,
- tp
-
- """
-
- accuracy = metrics.accuracy_score(test_set, prediction_set)
- precision = metrics.precision_score(test_set, prediction_set)
- recall = metrics.recall_score(test_set, prediction_set)
- f1 = metrics.f1_score(test_set, prediction_set)
- tn, fp, fn, tp = confusion_matrix(test_set, prediction_set, labels=labels).ravel()
-
- return BinaryClassificationMetricsPipelineResult(
- **format_evaluation_metrics_binary(
- accuracy, precision, recall, f1, tn, fp, fn, tp
- )
- )
-
-
-def create_multiple_classification_evaluation_metrics_pipeline(
- test_set: pd.Series, prediction_set: pd.Series, labels: List[int]
-) -> MultiClassificationMetricsPipelineResult:
- """
- Multiclass classification evaluation metrics
-
- Calculates the evaluation metrics for multiclass classification
- given two datasets
-
- Parameters
- ----------
- test_set : pd.Series
- Given ground truth dataset
-
- prediction_set : pd.Series
- Given predictions dataset
-
- Returns
- -------
- evaluation_metrics : Dict
-
- The returned metrics are:
-
- accuracy,
-
- precision_statistics
- micro_precision,
- macro_precision,
- weighted_precision,
-
- recall
- micro_recall,
- macro_recall,
- weighted_recall,
-
- f1
- micro_f1,
- macro_f1,
- weighted_f1
-
- conf_matrix
- tn,
- fp,
- fn,
- tp
- """
- accuracy = metrics.accuracy_score(test_set, prediction_set)
- micro_precision = metrics.precision_score(test_set, prediction_set, average="micro")
- macro_precision = metrics.precision_score(test_set, prediction_set, average="macro")
- weighted_precision = metrics.precision_score(
- test_set, prediction_set, average="weighted"
- )
- precision_statistics = {
- "micro": micro_precision,
- "macro": macro_precision,
- "weighted": weighted_precision,
- }
-
- micro_recall = metrics.recall_score(test_set, prediction_set, average="micro")
- macro_recall = metrics.recall_score(test_set, prediction_set, average="macro")
- weighted_recall = metrics.recall_score(test_set, prediction_set, average="weighted")
- recall_statistics = {
- "micro": micro_recall,
- "macro": macro_recall,
- "weighted": weighted_recall,
- }
-
- micro_f1 = metrics.f1_score(test_set, prediction_set, average="micro")
- macro_f1 = metrics.f1_score(test_set, prediction_set, average="macro")
- weighted_f1 = metrics.f1_score(test_set, prediction_set, average="weighted")
- f1_statistics = {"micro": micro_f1, "macro": macro_f1, "weighted": weighted_f1}
- conf_matrix = confusion_for_multiclass(test_set, prediction_set, labels)
-
- return MultiClassificationMetricsPipelineResult(
- **format_evaluation_metrics_multiple(
- accuracy,
- precision_statistics,
- recall_statistics,
- f1_statistics,
- conf_matrix,
- )
- )
-
-
-def create_regression_evaluation_metrics_pipeline(
- test_set: pd.Series, prediction_set: pd.Series
-) -> RegressionMetricsPipelineResult:
- """
- Regression evaluation metrics
-
- Calculates the evaluation metrics for regression
- given two datasets
-
- Parameters
- ----------
- test_set : pd.Series
- Given ground truth dataset
-
- prediction_set : pd.Series
- Given predictions dataset
-
- Returns
- -------
- evaluation_metrics : Dict
-
- The returned metrics are:
- r square,
- mean square error,
- mean absolute error
-
- """
-
- rsq = round(metrics.r2_score(test_set, prediction_set), 4)
- mse = round(metrics.mean_squared_error(test_set, prediction_set), 4)
- mae = round(metrics.mean_absolute_error(test_set, prediction_set), 4)
-
- return RegressionMetricsPipelineResult(
- **format_evaluation_metrics_regression(
- r_square=rsq, mean_squared_error=mse, mean_absolute_error=mae
- )
- )
diff --git a/whitebox/analytics/models/pipelines.py b/whitebox/analytics/models/pipelines.py
deleted file mode 100644
index 02d63ba..0000000
--- a/whitebox/analytics/models/pipelines.py
+++ /dev/null
@@ -1,194 +0,0 @@
-import pandas as pd
-import os
-from typing import Dict
-import numpy as np
-import lightgbm as lgb
-from lightgbm import LGBMClassifier
-from sklearn.model_selection import train_test_split
-from sklearn.metrics import roc_auc_score, precision_score
-from sklearn import metrics
-import joblib
-from whitebox.core.settings import get_settings
-
-settings = get_settings()
-
-model_base_path = settings.MODEL_PATH
-
-
-def create_binary_classification_training_model_pipeline(
- training_dataset: pd.DataFrame, target: str, model_id: str
-) -> Dict[str, float]:
- model_path = f"{model_base_path}/{model_id}"
-
- # Create directory if it doesn't exist
- os.makedirs(model_path, exist_ok=True)
-
- """
- We first define what will be training set and the targeted column for our prediction
-
- """
- Y = training_dataset[target]
- X = training_dataset.drop(columns=[target])
- """
- We split to test and training set by using a random_state of 0 in order our code to be
- reproducible.
- WARNING: We assume that the given dataset is preprocessed. That means than no preprocessing will be performed
- by us. We have to revisit this step in the near future.
-
- """
-
- X_train, X_test, y_train, y_test = train_test_split(
- X, Y, test_size=0.3, random_state=0
- )
- """
- We use the default set of parameters which produce good results with our baseline dataset.
- WARNING: In the near future we have to grid-search for the optimal parameters for training datasets
-
- The train of our model took locally less than 1 seconds.
- Also we temp save the model in a pkl format.
- WARNING: We have to revisit this step for optimise the resources cost.
-
- """
- clf = LGBMClassifier()
- clf.fit(X_train, y_train)
- joblib.dump(clf, f"{model_path}/lgb_binary.pkl")
-
- """
- We make some predictions in the X_test and we find the class
- there by rounding the output. After that we calculate the roc auc curve
- score.
-
- """
-
- y_pred_1 = clf.predict(X_test)
- y_pred_1 = y_pred_1.round(0)
- y_pred_1 = y_pred_1.astype(int)
-
- roc_score = roc_auc_score(y_test, y_pred_1)
- binary_evaluation_report = {}
- binary_evaluation_report["roc_auc_score"] = roc_score
-
- return clf, binary_evaluation_report
-
-
-def create_multiclass_classification_training_model_pipeline(
- training_dataset: pd.DataFrame, target: str, model_id: str
-) -> Dict[str, float]:
- model_path = f"{model_base_path}/{model_id}"
-
- # Create directory if it doesn't exist
- os.makedirs(model_path, exist_ok=True)
-
- """
- We first define what will be training set and the targeted column for our prediction
-
- """
- Y = training_dataset[target]
- X = training_dataset.drop(columns=[target])
- """
- We split to test and training set by using a random_state of 0 in order our code to be
- reproducible.
- We load the dataset to lightgbm library.
- WARNING: We assume that the given dataset is preprocessed. That means than no preprocessing will be performed
- by us. We have to revisit this step in the near future.
-
- """
-
- X_train, X_test, y_train, y_test = train_test_split(
- X, Y, test_size=0.3, random_state=0
- )
- d_train = lgb.Dataset(X_train, label=y_train)
- """
- We use a set of parameters which produce good results with our baseline dataset.
- WARNING: In the near future we have to grid-search for the optimal parameters for training datasets
-
- """
-
- params = {}
- params["verbose"] = -1 # Remove logs
- params["learning_rate"] = 0.03
- params["boosting_type"] = "gbdt" # GradientBoostingDecisionTree
- params["objective"] = "multiclass" # Multi-class target feature
- params["metric"] = "multi_logloss" # metric for multi-class
- params["max_depth"] = 10
- params[
- "num_class"
- ] = 3 # no.of unique values in the target class not inclusive of the end value
- """
- We train our model in 100 epochs - locally this took less than 2 seconds.
- Also we temp save the model in a pkl format.
- WARNING: We have to revisit this step for optimise the resources cost.
-
- """
- clf = lgb.train(params, d_train, 100) # training the model on 100 epocs
- joblib.dump(clf, f"{model_path}/lgb_multi.pkl")
-
- """
- We make some predictions in the X_test and we find the class with the higher
- probability there. After that we calculate the precision_score
-
- """
-
- y_pred_1 = clf.predict(X_test)
- y_pred_1 = [np.argmax(line) for line in y_pred_1]
- prec_score = precision_score(y_test, y_pred_1, average=None).mean()
-
- multi_evaluation_report = {}
- multi_evaluation_report["precision"] = prec_score
-
- return clf, multi_evaluation_report
-
-
-def create_regression_training_model_pipeline(
- training_dataset: pd.DataFrame, target: str, model_id: str
-) -> Dict[str, float]:
- model_path = f"{model_base_path}/{model_id}"
-
- # Create directory if it doesn't exist
- os.makedirs(model_path, exist_ok=True)
-
- """
- We first define what will be training set and the targeted column for our prediction
-
- """
- Y = training_dataset[target]
- X = training_dataset.drop(columns=[target])
- """
- We split to test and training set by using a random_state of 0 in order our code to be
- reproducible.
- WARNING: We assume that the given dataset is preprocessed. That means than no preprocessing will be performed
- by us. We have to revisit this step in the near future.
-
- """
-
- X_train, X_test, y_train, y_test = train_test_split(
- X, Y, test_size=0.3, random_state=0
- )
- """
- We use the default set of parameters which produce good results with our baseline dataset.
- WARNING: In the near future we have to grid-search for the optimal parameters for training datasets
-
- The train of our model took locally less than 1 seconds.
- Also we temp save the model in a pkl format.
- WARNING: We have to revisit this step for optimise the resources cost.
-
- """
-
- reg = lgb.LGBMRegressor()
- reg.fit(X_train, y_train)
- joblib.dump(reg, f"{model_path}/lgb_reg.pkl")
-
- """
- We make some predictions in the X_test and we find the class
- there by rounding the output. After that we calculate the roc auc curve
- score.
-
- """
-
- y_predicted = reg.predict(X_test)
- r2_score = round(metrics.r2_score(y_test, y_predicted), 4)
-
- reg_evaluation_report = {}
- reg_evaluation_report["r2_score"] = r2_score
-
- return reg, reg_evaluation_report
diff --git a/whitebox/analytics/tests/__init__.py b/whitebox/analytics/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/whitebox/analytics/tests/test_pipelines.py b/whitebox/analytics/tests/test_pipelines.py
deleted file mode 100644
index beb6910..0000000
--- a/whitebox/analytics/tests/test_pipelines.py
+++ /dev/null
@@ -1,319 +0,0 @@
-from whitebox.analytics.metrics.pipelines import *
-from whitebox.analytics.drift.pipelines import *
-from whitebox.analytics.models.pipelines import *
-from whitebox.analytics.xai_models.pipelines import *
-from unittest import TestCase
-from sklearn.datasets import fetch_california_housing
-from sklearn.datasets import load_breast_cancer, load_wine, load_diabetes
-
-test_model_id = "test_model_id"
-
-test_metrics_df = pd.read_csv("whitebox/analytics/data/testing/metrics_test_data.csv")
-test_classification_df = pd.read_csv(
- "whitebox/analytics/data/testing/classification_test_data.csv"
-)
-drift_data = fetch_california_housing(as_frame=True)
-drift_data = drift_data.frame
-reference = drift_data.head(500)
-current = drift_data.iloc[1000:1200]
-reference_concept_drift = test_classification_df.head(5)
-current_concept_drift = test_classification_df.tail(5)
-concept_drift_detected_dataset = pd.read_csv(
- "whitebox/analytics/data/testing/udemy_fin_adj.csv"
-)
-reference_concept_drift_detected = concept_drift_detected_dataset.head(1000)
-current_concept_drift_detected = concept_drift_detected_dataset.tail(1000)
-df_load_binary = load_breast_cancer()
-df_binary = pd.DataFrame(df_load_binary.data, columns=df_load_binary.feature_names)
-df_binary["target"] = df_load_binary.target
-df_binary_inference = df_binary.drop(columns=["target"])
-df_binary_inference = df_binary_inference.tail(10)
-df_binary_inference_row1 = df_binary_inference.iloc[7]
-df_binary_inference_row2 = df_binary_inference.iloc[3]
-df_load_multi = load_wine()
-df_multi = pd.DataFrame(df_load_multi.data, columns=df_load_multi.feature_names)
-df_multi["target"] = df_load_multi.target
-df_multi_inference = df_multi.drop(columns=["target"])
-df_multi_inference = df_multi_inference.tail(10)
-df_multi_inference_row1 = df_multi_inference.iloc[4]
-df_multi_inference_row2 = df_multi_inference.iloc[2]
-
-test_regression_df = pd.read_csv(
- "whitebox/analytics/data/testing/regression_test_data.csv"
-)
-df_load_reg = load_diabetes()
-df_reg = pd.DataFrame(df_load_reg.data, columns=df_load_reg.feature_names)
-df_reg["target"] = df_load_reg.target
-df_reg_inference = df_reg.drop(columns=["target"])
-df_reg_inference = df_reg_inference.tail(10)
-df_reg_inference_row1 = df_reg_inference.iloc[7]
-df_reg_inference_row2 = df_reg_inference.iloc[3]
-
-
-class TestNodes:
- def test_create_feature_metrics_pipeline(self):
- features_metrics = dict(create_feature_metrics_pipeline(test_metrics_df))
- missing_count = features_metrics["missing_count"]
- non_missing_count = features_metrics["non_missing_count"]
- mean = features_metrics["mean"]
- minimum = features_metrics["minimum"]
- maximum = features_metrics["maximum"]
- sum = features_metrics["sum"]
- standard_deviation = features_metrics["standard_deviation"]
- variance = features_metrics["variance"]
- TestCase().assertDictEqual(
- {"num1": 1, "num2": 2, "num3": 0, "cat1": 1, "cat2": 2}, missing_count
- )
- TestCase().assertDictEqual(
- {"num1": 9, "num2": 8, "num3": 10, "cat1": 9, "cat2": 8}, non_missing_count
- )
- TestCase().assertDictEqual(
- {"num1": 156.33333333333334, "num2": 9.223817500000001, "num3": 1.0}, mean
- )
- TestCase().assertDictEqual({"num1": 0.0, "num2": 0.00054, "num3": 0.0}, minimum)
- TestCase().assertDictEqual(
- {"num1": 1000.0, "num2": 45.896, "num3": 2.0}, maximum
- )
- TestCase().assertDictEqual(
- {"num1": 1407.0, "num2": 73.79054000000001, "num3": 10.0}, sum
- )
- TestCase().assertDictEqual(
- {
- "num1": 322.0283372624217,
- "num2": 15.488918075768835,
- "num3": 0.816496580927726,
- },
- standard_deviation,
- )
- TestCase().assertDictEqual(
- {
- "num1": 103702.25000000001,
- "num2": 239.90658315787854,
- "num3": 0.6666666666666666,
- },
- variance,
- )
-
- def test_create_binary_classification_evaluation_metrics_pipeline(self):
- binary_metrics = dict(
- create_binary_classification_evaluation_metrics_pipeline(
- test_classification_df["y_testing_binary"],
- test_classification_df["y_prediction_binary"],
- labels=[0, 1],
- )
- )
-
- binary_metrics_edge_case = dict(
- create_binary_classification_evaluation_metrics_pipeline(
- test_classification_df["y_testing_binary"].tail(1),
- test_classification_df["y_prediction_binary"].tail(1),
- labels=[0, 1],
- )
- )
-
- assert binary_metrics_edge_case["true_positive"] == 1
- assert binary_metrics["accuracy"] == 0.6
- assert binary_metrics["precision"] == 0.6
- assert binary_metrics["recall"] == 0.6
- assert binary_metrics["f1"] == 0.6
- assert binary_metrics["true_negative"] == 3
- assert binary_metrics["false_positive"] == 2
- assert binary_metrics["false_negative"] == 2
- assert binary_metrics["true_positive"] == 3
-
- def test_create_multiple_classification_evaluation_metrics_pipeline(self):
- multi_metrics = create_multiple_classification_evaluation_metrics_pipeline(
- test_classification_df["y_testing_multi"],
- test_classification_df["y_prediction_multi"],
- labels=[0, 1, 2],
- )
-
- multi_metrics_edge_case = (
- create_multiple_classification_evaluation_metrics_pipeline(
- test_classification_df["y_testing_multi"].tail(1),
- test_classification_df["y_prediction_multi"].tail(1),
- labels=[0, 1, 2],
- )
- )
-
- assert multi_metrics.accuracy == 0.6
-
- TestCase().assertDictEqual(
- {
- "true_negative": 0,
- "false_positive": 0,
- "false_negative": 0,
- "true_positive": 1,
- },
- multi_metrics_edge_case.confusion_matrix["class1"].dict(),
- )
-
- TestCase().assertDictEqual(
- {"micro": 0.6, "macro": 0.6444444444444445, "weighted": 0.64},
- multi_metrics.precision.dict(),
- )
- TestCase().assertDictEqual(
- {"micro": 0.6, "macro": 0.5833333333333334, "weighted": 0.6},
- multi_metrics.recall.dict(),
- )
- TestCase().assertDictEqual(
- {"micro": 0.6, "macro": 0.6, "weighted": 0.6066666666666667},
- multi_metrics.f1.dict(),
- )
- TestCase().assertDictEqual(
- {
- "true_negative": 5,
- "false_positive": 2,
- "false_negative": 2,
- "true_positive": 1,
- },
- multi_metrics.confusion_matrix["class0"].dict(),
- )
- TestCase().assertDictEqual(
- {
- "true_negative": 4,
- "false_positive": 2,
- "false_negative": 1,
- "true_positive": 3,
- },
- multi_metrics.confusion_matrix["class1"].dict(),
- )
- TestCase().assertDictEqual(
- {
- "true_negative": 7,
- "false_positive": 0,
- "false_negative": 1,
- "true_positive": 2,
- },
- multi_metrics.confusion_matrix["class2"].dict(),
- )
-
- def test_create_regression_evaluation_metrics_pipeline(self):
- reg_report = dict(
- create_regression_evaluation_metrics_pipeline(
- test_regression_df["y_test"], test_regression_df["y_prediction"]
- )
- )
- rsq = reg_report["r_square"]
- mse = reg_report["mean_squared_error"]
- mae = reg_report["mean_absolute_error"]
- assert (rsq) == 0.9044
- assert (mse) == 0.0071
- assert (mae) == 0.037
-
- def test_create_data_drift_pipeline(self):
- data_drift_report = dict(run_data_drift_pipeline(reference, current))
- assert data_drift_report["number_of_columns"] == 9
- assert data_drift_report["number_of_drifted_columns"] == 7
- assert (
- round(
- dict(data_drift_report["drift_by_columns"]["Population"])[
- "drift_score"
- ],
- 2,
- )
- == 0.06
- )
- assert (
- dict(data_drift_report["drift_by_columns"]["Longitude"])["drift_detected"]
- == True
- )
- assert (
- dict(data_drift_report["drift_by_columns"]["AveBedrms"])["drift_detected"]
- == False
- )
-
- def test_create_concept_drift_pipeline_drift_not_detected(self):
- concept_drift_report = vars(
- run_concept_drift_pipeline(
- reference_concept_drift, current_concept_drift, "y_testing_multi"
- )
- )
- assert list(concept_drift_report.keys()) == [
- "concept_drift_summary",
- "column_correlation",
- ]
- assert (
- round(vars(concept_drift_report["concept_drift_summary"])["drift_score"], 3)
- == 0.082
- )
- assert (
- vars(concept_drift_report["concept_drift_summary"])["drift_detected"]
- == False
- )
-
- def test_create_concept_drift_pipeline_drift_detected(self):
- concept_drift_report = vars(
- run_concept_drift_pipeline(
- reference_concept_drift_detected,
- current_concept_drift_detected,
- "discount_price__currency",
- )
- )
- assert list(concept_drift_report.keys()) == [
- "concept_drift_summary",
- "column_correlation",
- ]
- assert (
- round(vars(concept_drift_report["concept_drift_summary"])["drift_score"], 3)
- == 0.008
- )
- assert (
- vars(concept_drift_report["concept_drift_summary"])["drift_detected"]
- == True
- )
-
- def test_create_binary_classification_training_model_pipeline(self):
- model, eval = create_binary_classification_training_model_pipeline(
- df_binary, "target", test_model_id
- )
- eval_score = eval["roc_auc_score"]
- assert (round(eval_score, 3)) == 0.976
-
- def test_create_multiclass_classification_training_model_pipeline(self):
- model, eval = create_multiclass_classification_training_model_pipeline(
- df_multi, "target", test_model_id
- )
- eval_score = eval["precision"]
- assert (round(eval_score, 2)) == 0.96
-
- def test_create_regression_training_model_pipeline(self):
- model, eval = create_regression_training_model_pipeline(
- df_reg, "target", test_model_id
- )
- eval_score = eval["r2_score"]
- assert (eval_score) == 0.2576
-
- def test_create_xai_pipeline_per_inference_row(self):
- binary_class_report1 = create_xai_pipeline_per_inference_row(
- df_binary, "target", df_binary_inference_row1, "binary", test_model_id
- )
- multi_class_report1 = create_xai_pipeline_per_inference_row(
- df_multi, "target", df_multi_inference_row1, "multi_class", test_model_id
- )
- regression_report1 = create_xai_pipeline_per_inference_row(
- df_reg, "target", df_reg_inference_row1, "regression", test_model_id
- )
- binary_class_report2 = create_xai_pipeline_per_inference_row(
- df_binary, "target", df_binary_inference_row2, "binary", test_model_id
- )
- multi_class_report2 = create_xai_pipeline_per_inference_row(
- df_multi, "target", df_multi_inference_row2, "multi_class", test_model_id
- )
- regression_report2 = create_xai_pipeline_per_inference_row(
- df_reg, "target", df_reg_inference_row2, "regression", test_model_id
- )
-
- binary_contribution_check_one = binary_class_report1["worst perimeter"]
- binary_contribution_check_two = binary_class_report2["worst texture"]
- multi_contribution_check_one = multi_class_report1["hue"]
- multi_contribution_check_two = multi_class_report2["alcohol"]
- regression_contribution_check_one = regression_report1["sex"]
- regression_contribution_check_two = regression_report2["bp"]
-
- assert (round(binary_contribution_check_one, 3)) == -0.464
- assert (round(binary_contribution_check_two, 1)) == -0.1
- assert (round(multi_contribution_check_one, 2)) == -0.09
- assert (round(multi_contribution_check_two, 3)) == 0.076
- assert (round(regression_contribution_check_one, 2)) == 9.48
- assert (round(regression_contribution_check_two, 3)) == 14.079
diff --git a/whitebox/analytics/xai_models/pipelines.py b/whitebox/analytics/xai_models/pipelines.py
deleted file mode 100644
index a95b5fa..0000000
--- a/whitebox/analytics/xai_models/pipelines.py
+++ /dev/null
@@ -1,92 +0,0 @@
-import pandas as pd
-from typing import Dict
-import joblib
-import lime
-import lime.lime_tabular
-from whitebox.analytics.models.pipelines import *
-from whitebox.core.settings import get_settings
-from whitebox.schemas.model import ModelType
-
-
-settings = get_settings()
-
-
-def create_xai_pipeline_per_inference_row(
- training_set: pd.DataFrame,
- target: str,
- inference_row: pd.Series,
- type_of_task: str,
- model_id: str,
-) -> Dict[str, float]:
- model_base_path = settings.MODEL_PATH
- model_path = f"{model_base_path}/{model_id}"
-
- xai_dataset = training_set.drop(columns=[target])
- explainability_report = {}
-
- # Make a mapping dict which will be used later to map the explainer index
- # with the features names
-
- mapping_dict = {}
- for feature in range(0, len(xai_dataset.columns.tolist())):
- mapping_dict[feature] = xai_dataset.columns.tolist()[feature]
-
- # Expainability for both classifications tasks and regression
- # We have again to revisit here in the future as in case we upload the model
- # from the file system we don't care if it is binary or multiclass
-
- if type_of_task == ModelType.multi_class:
- # Giving the option of retrieving the local model
-
- model = joblib.load(f"{model_path}/lgb_multi.pkl")
- explainer = lime.lime_tabular.LimeTabularExplainer(
- xai_dataset.values,
- feature_names=xai_dataset.columns.values.tolist(),
- mode="classification",
- random_state=1,
- )
-
- exp = explainer.explain_instance(inference_row, model.predict)
- med_report = exp.as_map()
- temp_dict = dict(list(med_report.values())[0])
- explainability_report = {
- mapping_dict[name]: val for name, val in temp_dict.items()
- }
-
- elif type_of_task == ModelType.binary:
- # Giving the option of retrieving the local model
-
- model = joblib.load(f"{model_path}/lgb_binary.pkl")
- explainer = lime.lime_tabular.LimeTabularExplainer(
- xai_dataset.values,
- feature_names=xai_dataset.columns.values.tolist(),
- mode="classification",
- random_state=1,
- )
-
- exp = explainer.explain_instance(inference_row, model.predict_proba)
- med_report = exp.as_map()
- temp_dict = dict(list(med_report.values())[0])
- explainability_report = {
- mapping_dict[name]: val for name, val in temp_dict.items()
- }
-
- elif type_of_task == ModelType.regression:
- # Giving the option of retrieving the local model
-
- model = joblib.load(f"{model_path}/lgb_reg.pkl")
- explainer = lime.lime_tabular.LimeTabularExplainer(
- xai_dataset.values,
- feature_names=xai_dataset.columns.values.tolist(),
- mode="regression",
- random_state=1,
- )
-
- exp = explainer.explain_instance(inference_row, model.predict)
- med_report = exp.as_map()
- temp_dict = dict(list(med_report.values())[0])
- explainability_report = {
- mapping_dict[name]: val for name, val in temp_dict.items()
- }
-
- return explainability_report
diff --git a/whitebox/api/__init__.py b/whitebox/api/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/whitebox/api/v1/__init__.py b/whitebox/api/v1/__init__.py
deleted file mode 100644
index 0826863..0000000
--- a/whitebox/api/v1/__init__.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from fastapi import APIRouter
-from .health import health_router
-
-from .models import models_router
-from .dataset_rows import dataset_rows_router
-from .inference_rows import inference_rows_router
-from .performance_metrics import performance_metrics_router
-from .drifting_metrics import drifting_metrics_router
-from .model_integrity_metrics import model_integrity_metrics_router
-from .model_monitors import model_monitors_router
-from .alerts import alerts_router
-from .cron_tasks import cron_tasks_router
-
-
-v1_router = APIRouter()
-v1 = "/v1"
-
-v1_router.include_router(health_router, prefix=v1)
-v1_router.include_router(models_router, prefix=v1)
-v1_router.include_router(dataset_rows_router, prefix=v1)
-v1_router.include_router(inference_rows_router, prefix=v1)
-v1_router.include_router(performance_metrics_router, prefix=v1)
-v1_router.include_router(drifting_metrics_router, prefix=v1)
-v1_router.include_router(model_integrity_metrics_router, prefix=v1)
-v1_router.include_router(model_monitors_router, prefix=v1)
-v1_router.include_router(alerts_router, prefix=v1)
-v1_router.include_router(cron_tasks_router, prefix=v1)
diff --git a/whitebox/api/v1/alerts.py b/whitebox/api/v1/alerts.py
deleted file mode 100644
index bd19a51..0000000
--- a/whitebox/api/v1/alerts.py
+++ /dev/null
@@ -1,41 +0,0 @@
-from typing import List, Union
-from fastapi import APIRouter, Depends, status
-from whitebox import crud
-from sqlalchemy.orm import Session
-from whitebox.core.db import get_db
-from whitebox.middleware.auth import authenticate_user
-from whitebox.schemas.alert import Alert
-from whitebox.schemas.user import User
-from whitebox.utils.errors import add_error_responses, errors
-
-
-alerts_router = APIRouter()
-
-
-@alerts_router.get(
- "/alerts",
- tags=["Alerts"],
- response_model=List[Alert],
- summary="Get all model's alerts",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def get_alerts(
- model_id: Union[str, None] = None,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """
- Fetches alerts from the databse.
- \n If a model id is provided, only the alerts for the specific model will be fetched.
- \n If a model id is not provided then all alerts from the database will be fetched.
- """
-
- if model_id:
- model = crud.models.get(db, model_id)
- if model:
- return crud.alerts.get_model_alerts_by_model(db=db, model_id=model_id)
- else:
- return errors.not_found("Model not found")
- else:
- return crud.alerts.get_all(db=db)
diff --git a/whitebox/api/v1/cron_tasks.py b/whitebox/api/v1/cron_tasks.py
deleted file mode 100644
index f4eb2d5..0000000
--- a/whitebox/api/v1/cron_tasks.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from whitebox.schemas.utils import HealthCheck
-from fastapi import APIRouter, status
-from whitebox.cron_tasks.monitoring_metrics import run_calculate_metrics_pipeline
-from whitebox.cron_tasks.monitoring_alerts import run_create_alerts_pipeline
-
-
-cron_tasks_router = APIRouter()
-
-
-@cron_tasks_router.post(
- "/cron-tasks/run",
- tags=["Cron Tasks"],
- summary="Helper endpoint",
- status_code=status.HTTP_200_OK,
- response_description="Result of cron tasks",
-)
-async def run_cron():
- """A helper endpoint that triggers the metrics and alerts pipelines while testing."""
-
- await run_calculate_metrics_pipeline()
- await run_create_alerts_pipeline()
- return HealthCheck(status="OK")
diff --git a/whitebox/api/v1/dataset_rows.py b/whitebox/api/v1/dataset_rows.py
deleted file mode 100644
index 360f181..0000000
--- a/whitebox/api/v1/dataset_rows.py
+++ /dev/null
@@ -1,110 +0,0 @@
-import pandas as pd
-from typing import List
-from whitebox.analytics.models.pipelines import (
- create_binary_classification_training_model_pipeline,
- create_multiclass_classification_training_model_pipeline,
- create_regression_training_model_pipeline,
-)
-from whitebox.middleware.auth import authenticate_user
-from whitebox.schemas.datasetRow import DatasetRow, DatasetRowCreate
-from whitebox.schemas.model import ModelType
-from whitebox.schemas.user import User
-from fastapi import APIRouter, BackgroundTasks, Depends, status
-from fastapi.encoders import jsonable_encoder
-from whitebox import crud
-from sqlalchemy.orm import Session
-from whitebox.core.db import get_db
-from whitebox.utils.errors import add_error_responses, errors
-
-
-dataset_rows_router = APIRouter()
-
-
-@dataset_rows_router.post(
- "/dataset-rows",
- tags=["Dataset Rows"],
- response_model=List[DatasetRow],
- summary="Create dataset rows",
- status_code=status.HTTP_201_CREATED,
- responses=add_error_responses([400, 401, 404, 409]),
-)
-async def create_dataset_rows(
- body: List[DatasetRowCreate],
- background_tasks: BackgroundTasks,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-) -> DatasetRow:
- """
- Inserts a set of dataset rows into the database.
- \nWhen the dataset rows are successfully saved, the pipeline for training the model is triggered.
- """
-
- if len(body) <= 1:
- return errors.bad_request("Training dataset should be longer that 1 row!")
-
- model = crud.models.get(db=db, _id=dict(body[0])["model_id"])
- if model:
- for row in body:
- if not model.target_column in row.processed:
- return errors.bad_request(
- f'Column "{model.target_column}" was not found in some or any of the rows in provided training dataset. Please try again!'
- )
-
- predictions = list(set(vars(x)["processed"][model.target_column] for x in body))
- if len(predictions) <= 1:
- return errors.bad_request(
- f'Training dataset\'s "{model.target_column}" columns must have at least 2 different values!'
- )
-
- new_dataset_rows = crud.dataset_rows.create_many(db=db, obj_list=body)
- processed_dataset_rows = [
- x["processed"] for x in jsonable_encoder(new_dataset_rows)
- ]
- processed_dataset_rows_pd = pd.DataFrame(processed_dataset_rows)
-
- if model.type == ModelType.binary:
- background_tasks.add_task(
- create_binary_classification_training_model_pipeline,
- processed_dataset_rows_pd,
- model.target_column,
- model.id,
- )
- elif model.type == ModelType.multi_class:
- background_tasks.add_task(
- create_multiclass_classification_training_model_pipeline,
- processed_dataset_rows_pd,
- model.target_column,
- model.id,
- )
- elif model.type == ModelType.regression:
- background_tasks.add_task(
- create_regression_training_model_pipeline,
- processed_dataset_rows_pd,
- model.target_column,
- model.id,
- )
- return new_dataset_rows
- else:
- return errors.not_found(f"Model with id: {dict(body[0])['model_id']} not found")
-
-
-@dataset_rows_router.get(
- "/dataset-rows",
- tags=["Dataset Rows"],
- response_model=List[DatasetRow],
- summary="Get all model's dataset rows",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def get_all_dataset_rows(
- model_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """Fetches the dataset rows of a specific model. A model id is required."""
-
- model = crud.models.get(db, model_id)
- if model:
- return crud.dataset_rows.get_dataset_rows_by_model(db=db, model_id=model_id)
- else:
- return errors.not_found("Model not found")
diff --git a/whitebox/api/v1/docs.py b/whitebox/api/v1/docs.py
deleted file mode 100644
index 66ae11a..0000000
--- a/whitebox/api/v1/docs.py
+++ /dev/null
@@ -1,109 +0,0 @@
-from whitebox.schemas.utils import ErrorResponse
-
-
-tags_metadata = [
- {
- "name": "Health",
- "description": "Health endpoints are used for checking the status of the service",
- },
- {
- "name": "Models",
- "description": "This set of endpoints handles the models that a user creates.",
- },
- {
- "name": "Dataset Rows",
- "description": "This set of endpoints handles the dataset rows.",
- },
- {
- "name": "Inference Rows",
- "description": "This set of endpoints handles a model's inference rows.",
- },
- {
- "name": "Performance Metrics",
- "description": "This set of endpoints handles a model's performance metrics.",
- },
- {
- "name": "Drifting Metrics",
- "description": "This set of endpoints handles a model's drifting metrics.",
- },
- {
- "name": "Model Integrity Metrics",
- "description": "This set of endpoints handles a model's integrity metrics.",
- },
- {
- "name": "Model Monitors",
- "description": "This set of endpoints handles a model's model monitors.",
- },
- {
- "name": "Alerts",
- "description": "This set of endpoints handles a model's alerts.",
- },
- {
- "name": "Cron Tasks",
- "description": "This is a helper endpoint to trigger cron tasks for tests.",
- },
-]
-
-
-bad_request: ErrorResponse = {
- "title": "BadRequest",
- "type": "object",
- "properties": {
- "error": {"title": "Error Message", "type": "string"},
- "status_code": {"title": "Status code", "type": "integer"},
- },
-}
-
-validation_error: ErrorResponse = {
- "title": "HTTPValidationError",
- "type": "object",
- "properties": {
- "error": {"title": "Error Message", "type": "string"},
- "status_code": {"title": "Status code", "type": "integer"},
- },
-}
-
-authorization_error: ErrorResponse = {
- "title": "AuthorizationError",
- "type": "object",
- "properties": {
- "error": {"title": "Error Message", "type": "string"},
- "status_code": {"title": "Status code", "type": "integer"},
- },
-}
-
-not_found_error: ErrorResponse = {
- "title": "NotFoundError",
- "type": "object",
- "properties": {
- "error": {"title": "Error Message", "type": "string"},
- "status_code": {"title": "Status code", "type": "integer"},
- },
-}
-
-conflict_error: ErrorResponse = {
- "title": "ConflictError",
- "type": "object",
- "properties": {
- "error": {"title": "Error Message", "type": "string"},
- "status_code": {"title": "Status code", "type": "integer"},
- },
-}
-
-conflict_error: ErrorResponse = {
- "title": "ConflictError",
- "type": "object",
- "properties": {
- "error": {"title": "Error Message", "type": "string"},
- "status_code": {"title": "Status code", "type": "integer"},
- },
-}
-
-content_gone: ErrorResponse = {
- "title": "ContentGone",
- "type": "object",
- "properties": {
- "error": {"title": "Error Message", "type": "string"},
- "status_code": {"title": "Status code", "type": "integer"},
- },
-}
diff --git a/whitebox/api/v1/drifting_metrics.py b/whitebox/api/v1/drifting_metrics.py
deleted file mode 100644
index b98f9c1..0000000
--- a/whitebox/api/v1/drifting_metrics.py
+++ /dev/null
@@ -1,36 +0,0 @@
-from typing import List
-from fastapi import APIRouter, Depends, status
-from whitebox import crud
-from sqlalchemy.orm import Session
-from whitebox.core.db import get_db
-from whitebox.middleware.auth import authenticate_user
-from whitebox.schemas.driftingMetric import DriftingMetricBase
-from whitebox.schemas.user import User
-from whitebox.utils.errors import add_error_responses, errors
-
-
-drifting_metrics_router = APIRouter()
-
-
-@drifting_metrics_router.get(
- "/drifting-metrics",
- tags=["Drifting Metrics"],
- response_model=List[DriftingMetricBase],
- summary="Get all model's drifting metrics",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def get_all_models_drifting_metrics(
- model_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """Fetches the drifting metrics of a specific model. A model id is required."""
-
- model = crud.models.get(db, model_id)
- if model:
- return crud.drifting_metrics.get_drifting_metrics_by_model(
- db=db, model_id=model_id
- )
- else:
- return errors.not_found("Model not found")
diff --git a/whitebox/api/v1/health.py b/whitebox/api/v1/health.py
deleted file mode 100644
index 448c857..0000000
--- a/whitebox/api/v1/health.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from whitebox.schemas.utils import HealthCheck
-from fastapi import APIRouter, status
-
-health_router = APIRouter()
-
-
-@health_router.get(
- "/health",
- tags=["Health"],
- response_model=HealthCheck,
- summary="Health check the service",
- status_code=status.HTTP_200_OK,
- response_description="Status of the service",
-)
-def health_check():
- """Responds with the status of the service."""
- return HealthCheck(status="OK")
diff --git a/whitebox/api/v1/inference_rows.py b/whitebox/api/v1/inference_rows.py
deleted file mode 100644
index bb67d18..0000000
--- a/whitebox/api/v1/inference_rows.py
+++ /dev/null
@@ -1,166 +0,0 @@
-from typing import Dict, List
-from whitebox.middleware.auth import authenticate_user
-from whitebox.schemas.inferenceRow import (
- InferenceRow,
- InferenceRowCreateDto,
- InferenceRowPreDb,
-)
-from whitebox.analytics.xai_models.pipelines import (
- create_xai_pipeline_per_inference_row,
-)
-import pandas as pd
-from whitebox.schemas.user import User
-from fastapi import APIRouter, Depends, status
-from whitebox import crud
-from sqlalchemy.orm import Session
-from whitebox.core.db import get_db
-from whitebox.utils.errors import add_error_responses, errors
-
-
-inference_rows_router = APIRouter()
-
-
-@inference_rows_router.post(
- "/inference-rows",
- tags=["Inference Rows"],
- response_model=InferenceRow,
- summary="Create an inference row",
- status_code=status.HTTP_201_CREATED,
- responses=add_error_responses([400, 401]),
-)
-async def create_row(
- body: InferenceRowCreateDto,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-) -> InferenceRow:
- """Inserts an inference row into the database."""
-
- updated_body = InferenceRowPreDb(**dict(body), is_used=False)
-
- new_inference_row = crud.inference_rows.create(db=db, obj_in=updated_body)
- return new_inference_row
-
-
-@inference_rows_router.post(
- "/inference-rows/batch",
- tags=["Inference Rows"],
- response_model=List[InferenceRow],
- summary="Create many inference rows",
- status_code=status.HTTP_201_CREATED,
- responses=add_error_responses([400, 401]),
-)
-async def create_many_inference_rows(
- body: List[InferenceRowCreateDto],
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-) -> List[InferenceRow]:
- """Inserts a set of inference rows into the database."""
-
- model = crud.models.get(db=db, _id=dict(body[0])["model_id"])
- if model:
- for row in body:
- if not model.target_column in row.processed:
- return errors.bad_request(
- f'Column "{model.target_column}" was not found in some or any of the rows in provided inference dataset. Please try again!'
- )
-
- updated_body = [InferenceRowPreDb(**dict(x), is_used=False) for x in body]
- new_inference_rows = crud.inference_rows.create_many(
- db=db, obj_list=updated_body
- )
- return new_inference_rows
- else:
- return errors.not_found(f"Model with id: {dict(body[0])['model_id']} not found")
-
-
-@inference_rows_router.get(
- "/inference-rows",
- tags=["Inference Rows"],
- response_model=List[InferenceRow],
- summary="Get all model's inference rows",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def get_all_models_inference_rows(
- model_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """Fetches the inference rows of a specific model. A model id is required."""
-
- model = crud.models.get(db, model_id)
- if model:
- return crud.inference_rows.get_inference_rows_by_model(db=db, model_id=model_id)
- else:
- return errors.not_found("Model not found")
-
-
-@inference_rows_router.get(
- "/inference-rows/{inference_row_id}",
- tags=["Inference Rows"],
- response_model=InferenceRow,
- summary="Get inference row by id",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def get_inference_row(
- inference_row_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """Fetches a specific inference row. An inference row id is required."""
-
- inference_row = crud.inference_rows.get(db=db, _id=inference_row_id)
- if not inference_row:
- return errors.not_found("Inference not found")
-
- return inference_row
-
-
-@inference_rows_router.get(
- "/inference-rows/{inference_row_id}/xai",
- tags=["Inference Rows"],
- response_model=Dict[str, float],
- summary="Creates and fetches am explainability report for an inference row",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def create_inference_row_xai_report(
- inference_row_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """
- Given a specific inference row id, this endpoint produces an explainability report for this inference.
- The XAI pipeline requires a set of dataset rows as a training set, a model and the inference row.
- If one of those three is not found in the database, a 404 error is returned.
- """
-
- inference_row = crud.inference_rows.get(db=db, _id=inference_row_id)
- if not inference_row:
- return errors.not_found(f"Inference row with id {inference_row_id} not found")
-
- inference_row_df = pd.DataFrame([inference_row.processed])
- inference_row_series = inference_row_df.drop(columns=["target"]).iloc[0]
-
- model = crud.models.get(db=db, _id=inference_row.model_id)
- if not model:
- return errors.not_found(f"Model with id {inference_row.model_id} not found")
-
- dataset_rows = crud.dataset_rows.get_dataset_rows_by_model(db=db, model_id=model.id)
- if not dataset_rows:
- return errors.not_found(
- f"Dataset rows for model with id {inference_row.model_id} not found"
- )
-
- dataset_rows_processed = [x.processed for x in dataset_rows]
-
- xai_report = create_xai_pipeline_per_inference_row(
- training_set=pd.DataFrame(dataset_rows_processed),
- target=model.target_column,
- inference_row=inference_row_series,
- type_of_task=model.type,
- model_id=model.id,
- )
-
- return xai_report
diff --git a/whitebox/api/v1/model_integrity_metrics.py b/whitebox/api/v1/model_integrity_metrics.py
deleted file mode 100644
index e4f0e4a..0000000
--- a/whitebox/api/v1/model_integrity_metrics.py
+++ /dev/null
@@ -1,36 +0,0 @@
-from typing import List
-from fastapi import APIRouter, Depends, status
-from whitebox import crud
-from sqlalchemy.orm import Session
-from whitebox.core.db import get_db
-from whitebox.middleware.auth import authenticate_user
-from whitebox.schemas.modelIntegrityMetric import ModelIntegrityMetric
-from whitebox.schemas.user import User
-from whitebox.utils.errors import add_error_responses, errors
-
-
-model_integrity_metrics_router = APIRouter()
-
-
-@model_integrity_metrics_router.get(
- "/model-integrity-metrics",
- tags=["Model Integrity Metrics"],
- response_model=List[ModelIntegrityMetric],
- summary="Get all model's model integrity metrics",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def get_all_models_model_integrity_metrics(
- model_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """Fetches the model integrity metrics of a specific model. A model id is required."""
-
- model = crud.models.get(db, model_id)
- if model:
- return crud.model_integrity_metrics.get_model_integrity_metrics_by_model(
- db=db, model_id=model_id
- )
- else:
- return errors.not_found("Model not found")
diff --git a/whitebox/api/v1/model_monitors.py b/whitebox/api/v1/model_monitors.py
deleted file mode 100644
index 1be6e0f..0000000
--- a/whitebox/api/v1/model_monitors.py
+++ /dev/null
@@ -1,157 +0,0 @@
-from typing import List, Union
-from whitebox.middleware.auth import authenticate_user
-from whitebox.schemas.modelMonitor import (
- ModelMonitor,
- ModelMonitorCreateDto,
- ModelMonitorUpdateDto,
- MonitorMetrics,
-)
-from fastapi import APIRouter, Depends, status
-from whitebox import crud
-from sqlalchemy.orm import Session
-from whitebox.core.db import get_db
-from whitebox.schemas.user import User
-from whitebox.schemas.utils import StatusCode
-from whitebox.utils.errors import add_error_responses, errors
-
-
-model_monitors_router = APIRouter()
-
-
-@model_monitors_router.post(
- "/model-monitors",
- tags=["Model Monitors"],
- response_model=ModelMonitor,
- summary="Create a model monitor",
- status_code=status.HTTP_201_CREATED,
- responses=add_error_responses([400, 401, 409]),
-)
-async def create_model_monitor(
- body: ModelMonitorCreateDto,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-) -> ModelMonitor:
- """Inserts a model monitor into the database."""
-
- model = crud.models.get(db, body.model_id)
- if not model:
- return errors.not_found("Model not found!")
-
- if body.metric in [MonitorMetrics.concept_drift, MonitorMetrics.data_drift]:
- if body.metric == MonitorMetrics.concept_drift:
- body.feature = model.target_column
- else:
- if not body.feature:
- return errors.bad_request(f"Please set a feature for the monitor!")
- # TODO This should get the feature columns from model.features when this field is
- # automatically updated from the training dataset.
- dataset_row = crud.dataset_rows.get_first_by_filter(db, model_id=model.id)
- if not dataset_row:
- return errors.not_found(
- f"No training dataset found for model: {model.id}!\
- Insert the taining dataset and then create a monitor!"
- )
- features = dataset_row.processed
- if body.feature not in features:
- return errors.bad_request(
- f"Monitored featured must be in the dataset's features!"
- )
- if body.feature == model.target_column:
- return errors.bad_request(
- f"Monitored featured cannot be the target column in data drift!"
- )
- body.lower_threshold = None
- else:
- if body.lower_threshold is None:
- return errors.bad_request(f"Please set a lower threshold for the monitor!")
- body.feature = None
-
- new_model_monitor = crud.model_monitors.create(db=db, obj_in=body)
- return new_model_monitor
-
-
-@model_monitors_router.get(
- "/model-monitors",
- tags=["Model Monitors"],
- response_model=List[ModelMonitor],
- summary="Get all model's model monitors",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def get_all_models_model_monitors(
- model_id: Union[str, None] = None,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """
- Fetches model monitors from the databse.
- \n If a model id is provided, only the monitors for the specific model will be fetched.
- \n If a model id is not provided then all monitors from the database will be fetched.
- """
-
- if model_id:
- model = crud.models.get(db, model_id)
- if model:
- return crud.model_monitors.get_model_monitors_by_model(
- db=db, model_id=model_id
- )
- else:
- return errors.not_found("Model not found")
- else:
- return crud.model_monitors.get_all(db=db)
-
-
-@model_monitors_router.put(
- "/model-monitors/{model_monitor_id}",
- tags=["Model Monitors"],
- response_model=ModelMonitor,
- summary="Update model monitor",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([400, 401, 404]),
-)
-async def update_model_monitor(
- model_monitor_id: str,
- body: ModelMonitorUpdateDto,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-) -> ModelMonitor:
- """Updates record of the model monitor with the specified id."""
-
- # Remove all unset properties (with None values) from the update object
- filtered_body = {k: v for k, v in dict(body).items() if v is not None}
-
- model_monitor = crud.model_monitors.get(db=db, _id=model_monitor_id)
-
- if not model_monitor:
- return errors.not_found("Model monitor not found!")
-
- if model_monitor.metric in [
- MonitorMetrics.concept_drift,
- MonitorMetrics.data_drift,
- ]:
- filtered_body["lower_threshold"] = None
-
- return crud.model_monitors.update(db=db, db_obj=model_monitor, obj_in=filtered_body)
-
-
-@model_monitors_router.delete(
- "/model-monitors/{model_monitor_id}",
- tags=["Model Monitors"],
- response_model=StatusCode,
- summary="Delete model monitor",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def delete_model_monitor(
- model_monitor_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-) -> StatusCode:
- """Deletes the model monitor with the specified id from the database."""
-
- model_monitor = crud.model_monitors.get(db=db, _id=model_monitor_id)
- if not model_monitor:
- return errors.not_found("Model monitor not found")
-
- crud.model_monitors.remove(db=db, _id=model_monitor_id)
- return {"status_code": status.HTTP_200_OK}
diff --git a/whitebox/api/v1/models.py b/whitebox/api/v1/models.py
deleted file mode 100644
index e5058bc..0000000
--- a/whitebox/api/v1/models.py
+++ /dev/null
@@ -1,140 +0,0 @@
-from typing import List
-from whitebox.middleware.auth import authenticate_user
-from whitebox.schemas.model import Model, ModelCreateDto, ModelUpdateDto
-from fastapi import APIRouter, Depends, status
-from whitebox import crud
-from sqlalchemy.orm import Session
-from whitebox.core.db import get_db
-from whitebox.schemas.utils import StatusCode
-from whitebox.schemas.user import User
-from whitebox.utils.errors import add_error_responses, errors
-
-
-models_router = APIRouter()
-
-
-@models_router.post(
- "/models",
- tags=["Models"],
- response_model=Model,
- summary="Create model",
- status_code=status.HTTP_201_CREATED,
- responses=add_error_responses([400, 401]),
-)
-async def create_model(
- body: ModelCreateDto,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-) -> Model:
- """Inserts a model into the database"""
-
- granularity = body.granularity
-
- try:
- granularity_amount = float(granularity[:-1])
- except ValueError:
- return errors.bad_request("Granularity amount that was given is not a number!")
-
- if not granularity_amount.is_integer():
- return errors.bad_request(
- "Granularity amount should be an integer and not a float (e.g. 1D)!"
- )
-
- granularity_type = granularity[-1]
- if granularity_type not in ["T", "H", "D", "W"]:
- return errors.bad_request(
- "Wrong granularity type. Accepted values: T (minutes), H (hours), D (days), W (weeks)"
- )
-
- new_model = crud.models.create(db=db, obj_in=body)
- return new_model
-
-
-@models_router.get(
- "/models",
- tags=["Models"],
- response_model=List[Model],
- summary="Get all models",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401]),
-)
-async def get_all_models(
- db: Session = Depends(get_db), authenticated_user: User = Depends(authenticate_user)
-):
- """Fetches all models from the database"""
-
- models_in_db = crud.models.get_all(db=db)
- return models_in_db
-
-
-@models_router.get(
- "/models/{model_id}",
- tags=["Models"],
- response_model=Model,
- summary="Get model by id",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def get_model(
- model_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """Fetches the model with the specified id from the database"""
-
- model = crud.models.get(db=db, _id=model_id)
-
- if not model:
- return errors.not_found("Model not found")
-
- return model
-
-
-@models_router.put(
- "/models/{model_id}",
- tags=["Models"],
- response_model=Model,
- summary="Update model",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([400, 401, 404]),
-)
-async def update_model(
- model_id: str,
- body: ModelUpdateDto,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-) -> Model:
- """Updates record of the model with the specified id"""
-
- # Remove all unset properties (with None values) from the update object
- filtered_body = {k: v for k, v in dict(body).items() if v is not None}
-
- model = crud.models.get(db=db, _id=model_id)
-
- if not model:
- return errors.not_found("Model not found")
-
- return crud.models.update(db=db, db_obj=model, obj_in=filtered_body)
-
-
-@models_router.delete(
- "/models/{model_id}",
- tags=["Models"],
- response_model=StatusCode,
- summary="Delete model",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def delete_model(
- model_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-) -> StatusCode:
- """Deletes the model with the specified id from the database"""
-
- model = crud.models.get(db=db, _id=model_id)
- if not model:
- return errors.not_found("Model not found")
-
- crud.models.remove(db=db, _id=model_id)
- return {"status_code": status.HTTP_200_OK}
diff --git a/whitebox/api/v1/performance_metrics.py b/whitebox/api/v1/performance_metrics.py
deleted file mode 100644
index 81a6136..0000000
--- a/whitebox/api/v1/performance_metrics.py
+++ /dev/null
@@ -1,54 +0,0 @@
-from typing import List, Union
-from fastapi import APIRouter, Depends, status
-from whitebox import crud
-from sqlalchemy.orm import Session
-from whitebox.core.db import get_db
-from whitebox.middleware.auth import authenticate_user
-from whitebox.schemas.performanceMetric import (
- BinaryClassificationMetrics,
- MultiClassificationMetrics,
- RegressionMetrics,
-)
-from whitebox.schemas.user import User
-from whitebox.schemas.model import ModelType
-from whitebox.utils.errors import add_error_responses, errors
-
-
-performance_metrics_router = APIRouter()
-
-
-@performance_metrics_router.get(
- "/performance-metrics",
- tags=["Performance Metrics"],
- response_model=Union[
- List[BinaryClassificationMetrics],
- List[MultiClassificationMetrics],
- List[RegressionMetrics],
- ],
- summary="Get all model's performance metrics",
- status_code=status.HTTP_200_OK,
- responses=add_error_responses([401, 404]),
-)
-async def get_all_models_performance_metrics(
- model_id: str,
- db: Session = Depends(get_db),
- authenticated_user: User = Depends(authenticate_user),
-):
- """Fetches the performance metrics of a specific model. A model id is required."""
-
- model = crud.models.get(db, model_id)
- if model:
- if model.type == ModelType.binary:
- return crud.binary_classification_metrics.get_performance_metrics_by_model(
- db=db, model_id=model_id
- )
- elif model.type == ModelType.multi_class:
- return crud.multi_classification_metrics.get_performance_metrics_by_model(
- db=db, model_id=model_id
- )
- elif model.type == ModelType.regression:
- return crud.regression_metrics.get_performance_metrics_by_model(
- db=db, model_id=model_id
- )
- else:
- return errors.not_found("Model not found")
diff --git a/whitebox/core/__init__.py b/whitebox/core/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/whitebox/core/db.py b/whitebox/core/db.py
deleted file mode 100644
index 85a66ac..0000000
--- a/whitebox/core/db.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from whitebox.core.settings import get_settings
-import databases
-import sqlalchemy
-from sqlalchemy.orm import sessionmaker
-from whitebox.entities.Base import Base
-from whitebox.schemas.user import UserCreateDto
-
-from whitebox import crud
-from whitebox.utils.passwords import encrypt_api_key
-from whitebox.utils.logger import cronLogger as logger
-
-from secrets import token_hex
-
-settings = get_settings()
-database = databases.Database(settings.DATABASE_URL)
-engine = sqlalchemy.create_engine(settings.DATABASE_URL)
-SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
-
-
-def get_db():
- db = SessionLocal()
- try:
- yield db
- finally:
- db.close()
-
-
-async def connect():
- """
- Connect to DB
- """
- Base.metadata.create_all(engine)
- db = SessionLocal()
-
- admin_exists = crud.users.get_first_by_filter(db=db, username="admin")
- if not admin_exists:
- plain_api_key = token_hex(32)
- secret_key = settings.SECRET_KEY
- api_key = (
- encrypt_api_key(plain_api_key, secret_key.encode())
- if secret_key
- else plain_api_key
- )
-
- obj_in = UserCreateDto(username="admin", api_key=api_key)
- crud.users.create(db=db, obj_in=obj_in)
- logger.info(f"Created username: admin, API key: {plain_api_key}")
- await database.connect()
-
-
-async def close():
- """
- Close DB Connection
- """
- await database.disconnect()
- # logging.info("Closed connection with DB")
diff --git a/whitebox/core/manager.py b/whitebox/core/manager.py
deleted file mode 100644
index 35ec4de..0000000
--- a/whitebox/core/manager.py
+++ /dev/null
@@ -1,349 +0,0 @@
-import asyncio
-import functools
-from collections import deque
-
-from crontab import CronTab
-from whitebox.utils.exceptions import (
- TaskNotFoundException,
- TaskAlreadyRunningException,
- TaskNotRunningException,
-)
-from whitebox.utils.logger import cronLogger as logger
-from whitebox.schemas.task import (
- TaskDefinition,
- RunningTask,
- TaskLog,
- TaskInfo,
- TaskStatus,
- State,
- TaskRealTimeInfo,
- EventType,
-)
-from typing import Callable, Optional, Coroutine, List, Dict, Deque, Union
-
-from functools import lru_cache
-import datetime
-
-import pytz
-
-
-def now():
- return datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
-
-
-class Task_Manager:
- def __init__(self):
- self._definitions: Dict[str, TaskDefinition] = {}
- self._real_time: Dict[str, TaskRealTimeInfo] = {}
- self._running_tasks: Dict[str, RunningTask] = {}
- self._log_queue: Deque[TaskLog] = deque()
-
- self._is_running: bool = False
- self._is_shutting_down: bool = False
-
- self._cleanup_tasks: List[asyncio.Task] = []
-
- def clear(self):
- """Resets the"""
- if self._is_running or self._is_shutting_down:
- raise Exception("Cannot clear before shutdown")
- self._definitions: Dict[str, TaskDefinition] = {}
- self._real_time: Dict[str, TaskRealTimeInfo] = {}
- self._running_tasks: Dict[str, RunningTask] = {}
- self._log_queue: Deque[TaskLog] = deque()
-
- def register(
- self,
- async_callable: Callable[[], Coroutine],
- crontab: Union[str, None] = None,
- name: Union[str, None] = None,
- ):
- name = name or async_callable.__name__
- if name in self._definitions:
- raise Exception(f"Task <{name}> already exists.")
-
- definition = TaskDefinition(
- name=name, async_callable=async_callable, crontab=crontab, enabled=True
- )
- self._definitions[name] = definition
- self._real_time[name] = TaskRealTimeInfo(
- name=name, status="registered", next_run_ts=None
- )
-
- self._log_event("task_registered", definition.name)
-
- def _log_event(
- self, event_type: EventType, task_name: str, error: Union[str, None] = None
- ):
- self._log_queue.append(
- TaskLog(
- event_type=event_type,
- task_name=task_name,
- crontab=self._definitions[task_name].crontab,
- enabled=self._definitions[task_name].enabled,
- error=error,
- )
- )
-
- def _get_task_definition(self, name: str) -> TaskDefinition:
- try:
- return self._definitions[name]
- except KeyError as e:
- raise TaskNotFoundException from e
-
- def _get_running_task(self, name: str) -> RunningTask:
- try:
- return self._running_tasks[name]
- except KeyError as e:
- raise TaskNotRunningException from e
-
- def _is_task_running(self, name: str) -> bool:
- return name in self._running_tasks
-
- def get_task_info(self, name: str) -> TaskInfo:
- definition = self._get_task_definition(name)
- return TaskInfo(
- name=definition.name,
- enabled=definition.enabled,
- crontab=definition.crontab,
- started_at=self._get_task_started_at(name),
- stopped_at=self._get_task_stopped_at(name),
- next_run_in=self._get_task_next_run_in(name),
- previous_status=self._get_previous_status(name) or "registered",
- status=self._get_task_status(name),
- )
-
- # TODO: Implement functionality
- def _get_task_started_at(self, name: str):
- rt_info = self._real_time.get(name)
- if not rt_info:
- raise TaskNotFoundException("task not found")
- return rt_info.started_at
-
- # TODO: Implement functionality
- def _get_task_stopped_at(self, name: str):
- rt_info = self._real_time.get(name)
- if not rt_info:
- raise TaskNotFoundException("task not found")
- return rt_info.stopped_at
-
- def _get_task_status(self, name: str) -> TaskStatus:
- rt_info = self._real_time.get(name)
- if not rt_info:
- raise TaskNotFoundException("task not found")
- return rt_info.status
-
- def _get_previous_status(self, name: str) -> TaskStatus:
- rt_info = self._real_time.get(name)
- if not rt_info:
- raise TaskNotFoundException("task not found")
- return rt_info.previous_status
-
- def _get_task_next_run_in(self, name: str) -> Optional[int]:
- definition = self._get_task_definition(name)
- if definition.crontab is None:
- return None
- return CronTab(definition.crontab).next(default_utc=True)
-
- def _create_running_task(self, definition: TaskDefinition) -> RunningTask:
- running_task = RunningTask(
- task_definition=definition,
- asyncio_task=asyncio.get_event_loop().create_task(
- definition.async_callable()
- ),
- since=now().timestamp(),
- )
- running_task.asyncio_task.add_done_callback(
- functools.partial(self._on_task_done, definition.name)
- )
- return running_task
-
- async def cancel_task(self, name: str):
- if not self._is_task_running(name):
- raise TaskNotRunningException("task not running")
- logger.info(f"Cancelling {name}")
- self._get_task_definition(name)
- running_task = self._get_running_task(name)
- cancelled = running_task.asyncio_task.cancel()
- return cancelled
-
- def run_task(self, name: str) -> None:
- if self._is_task_running(name):
- raise TaskAlreadyRunningException("task already running")
-
- definition = self._get_task_definition(name)
- running_task = self._create_running_task(definition)
- self._running_tasks[definition.name] = running_task
-
- self._real_time[name] = TaskRealTimeInfo(
- name=name,
- status="running",
- previous_status=self._get_previous_status(name),
- started_at=now().timestamp(),
- next_run_ts=now().timestamp() + (self._get_task_next_run_in(name) or 0),
- )
-
- # TODO: Implement disable task functionality
- def disable_task(self, name: str):
- return False
-
- # TODO: Implement enable task functionality
- def enable_task(self, name: str):
- return False
-
- def get_all_tasks_info(self) -> List[TaskInfo]:
- return [self.get_task_info(name) for name in self._definitions.keys()]
-
- def _on_task_done(self, task_name: str, task: asyncio.Task) -> None:
- definition = self._get_task_definition(task_name)
- del self._running_tasks[task_name]
-
- try:
- exception = task.exception()
- except asyncio.CancelledError:
- self._log_event("task_cancelled", definition.name)
-
- self._real_time[task_name] = TaskRealTimeInfo(
- name=task_name,
- status="pending",
- previous_status="cancelled",
- next_run_ts=None,
- started_at=self._get_task_started_at(task_name),
- stopped_at=now().timestamp(),
- )
- task = asyncio.get_event_loop().create_task(
- self.on_task_cancelled(task_name)
- )
- self._cleanup_tasks.append(task)
- return
-
- if exception:
- self._log_event("task_failed", definition.name, error=str(exception))
-
- self._real_time[task_name] = TaskRealTimeInfo(
- name=task_name,
- status="pending",
- previous_status="failed",
- next_run_ts=None,
- started_at=self._get_task_started_at(task_name),
- stopped_at=now().timestamp(),
- )
- task = asyncio.get_event_loop().create_task(
- self.on_task_exception(task_name, exception)
- )
- self._cleanup_tasks.append(task)
- return
-
- self._log_event("task_finished", definition.name)
-
- self._real_time[task_name] = TaskRealTimeInfo(
- name=task_name,
- status="pending",
- previous_status="finished",
- started_at=self._get_task_started_at(task_name),
- stopped_at=now().timestamp(),
- next_run_ts=now().timestamp() + self._get_task_next_run_in(task_name)
- if definition.crontab
- else None,
- )
- task = asyncio.get_event_loop().create_task(self.on_task_finished(task_name))
- self._cleanup_tasks.append(task)
- return
-
- async def _on_task_started(self, task_name: str):
- definition = self._get_task_definition(task_name)
-
- self._log_event("task_started", definition.name)
- await self.on_task_started(task_name)
-
- async def run(self, state: Union[State, None] = None):
- if self._is_running:
- logger.warning("Ignoring current calling of run(). Already running.")
- return
-
- self._is_running = True
- await self.on_startup()
-
- if state:
- for task_info in state.tasks_info:
- if task_info.name in self._definitions:
- self._definitions[task_info.name].crontab = task_info.crontab
- self._definitions[task_info.name].enabled = task_info.enabled
-
- self._real_time[task_info.name].status = task_info.status
-
- await self._run_ad_infinitum()
-
- async def _run_ad_infinitum(self):
- while True and self._is_running:
- for task_name, rt_info in self._real_time.items():
- this_time_ts = now().timestamp()
-
- if rt_info.status == "registered":
- delta: int = self._get_task_next_run_in(task_name) or 0
-
- self._real_time[task_name] = TaskRealTimeInfo(
- name=task_name,
- status="pending",
- previous_status="registered",
- next_run_ts=now().timestamp() + delta,
- )
- elif (
- not self._is_shutting_down
- and rt_info.status in ["pending", "finished"]
- and rt_info.next_run_ts is not None
- and rt_info.next_run_ts <= this_time_ts
- ):
- self.run_task(task_name)
- elif rt_info.status == "running" and not self._is_task_running(
- task_name
- ):
- self.run_task(task_name)
- else: # rt_info.status in ["cancelled", "failed"]:
- ...
- await asyncio.sleep(1.5)
-
- async def shutdown(self):
- await asyncio.sleep(2)
- logger.info("Shutting down...")
- logger.info(f"Cancelling {len(self._running_tasks)} running tasks...")
- self._is_shutting_down = True
-
- for running_task in self._running_tasks.values():
- await self.cancel_task(running_task.task_definition.name)
- logger.debug(f"Cancelled task {running_task.task_definition.name}")
-
- await asyncio.gather(*self._cleanup_tasks)
- logger.debug("Cleanup tasks finished.")
-
- await self.on_shutdown()
-
- self._is_running = False
- self._is_shutting_down = False
-
- async def on_task_started(self, task_name: str):
- ...
-
- async def on_task_exception(self, task_name: str, exception: BaseException):
- ...
-
- async def on_task_cancelled(self, task_name: str):
- logger.info(f"Cancelled {task_name}")
-
- async def on_task_finished(self, task_name: str):
- logger.info(f"Finished {task_name}")
-
- async def on_startup(self):
- ...
-
- async def on_shutdown(self):
- ...
-
- def state(self) -> State:
- state = State(created_at=now(), tasks_info=self.get_all_tasks_info())
- return state
-
-
-@lru_cache()
-def get_task_manager():
- return Task_Manager()
diff --git a/whitebox/core/settings.py b/whitebox/core/settings.py
deleted file mode 100644
index 1203407..0000000
--- a/whitebox/core/settings.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from functools import lru_cache
-from pydantic import BaseSettings
-import os
-
-
-class Settings(BaseSettings):
- APP_NAME: str = ""
- ENV: str = ""
- DATABASE_URL: str = ""
- VERSION: str = ""
- MODEL_PATH: str = ""
- SECRET_KEY: str = ""
- GRANULARITY: str = ""
-
- class Config:
- env_file = f".env.{os.getenv('ENV')}" or ".env.dev"
-
-
-@lru_cache()
-def get_settings():
- return Settings()
-
-
-class CronSettings(Settings):
- APP_NAME_CRON: str
- METRICS_CRON: str
-
- class Config:
- env_file = f".env.{os.getenv('ENV')}" or ".env.dev"
-
-
-@lru_cache()
-def get_cron_settings():
- return CronSettings()
diff --git a/whitebox/cron.py b/whitebox/cron.py
deleted file mode 100644
index 8d15357..0000000
--- a/whitebox/cron.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from fastapi import FastAPI, Depends
-import asyncio
-import json
-from whitebox.utils.logger import cronLogger as logger
-
-from whitebox.core.settings import get_cron_settings
-from whitebox.cron_tasks.tasks import task_manager
-from fastapi.openapi.utils import get_openapi
-
-
-settings = get_cron_settings()
-cron_app = FastAPI(title=settings.APP_NAME_CRON, redoc_url="/")
-
-
-@cron_app.on_event("startup")
-async def init():
- # Start task amanager
- asyncio.get_event_loop().create_task(task_manager.run())
-
-
-@cron_app.on_event("shutdown")
-async def shutdown():
- logger.info("App is shutting down...")
- logger.info("Task Manager is shutting down...")
- await task_manager.shutdown()
-
-
-def app_openapi():
- if cron_app.openapi_schema:
- return cron_app.openapi_schema
- openapi_schema = get_openapi(
- title="Cron API", version=settings.VERSION, routes=cron_app.routes
- )
-
- cron_app.openapi_schema = openapi_schema
- return cron_app.openapi_schema
-
-
-cron_app.openapi = app_openapi
diff --git a/whitebox/cron_tasks/monitoring_alerts.py b/whitebox/cron_tasks/monitoring_alerts.py
deleted file mode 100644
index 286f3c0..0000000
--- a/whitebox/cron_tasks/monitoring_alerts.py
+++ /dev/null
@@ -1,129 +0,0 @@
-from datetime import datetime
-import time
-from sqlalchemy import create_engine
-from sqlalchemy.orm import sessionmaker, Session
-
-from whitebox import crud, entities
-from whitebox.core.settings import get_settings
-from whitebox.cron_tasks.shared import (
- get_all_models,
- get_latest_drift_metrics_report,
- get_latest_performance_metrics_report,
- get_active_model_monitors,
-)
-from whitebox.schemas.model import Model, ModelType
-from whitebox.schemas.modelMonitor import ModelMonitor, MonitorMetrics
-from whitebox.utils.logger import cronLogger as logger
-
-settings = get_settings()
-
-engine = create_engine(settings.DATABASE_URL)
-SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
-db: Session = SessionLocal()
-
-
-async def run_create_performance_metric_alert_pipeline(
- model: Model, monitor: ModelMonitor
-):
- """
- Run the pipeline to find any alerts for a metric in performance metrics
- If one is found it is saved in the database
- """
-
- last_performance_metrics_report = await get_latest_performance_metrics_report(
- db, model
- )
-
- if not last_performance_metrics_report:
- logger.info(
- f"No alert created for monitor: {monitor.id} because no performance report was found!"
- )
- return
-
- # Performance metrics reports for not multi_class models have the same format: metric: float.
- # Same if the metric is accuracy.
- if (
- model.type is not ModelType.multi_class
- or monitor.metric == MonitorMetrics.accuracy
- ):
- metric_value = vars(last_performance_metrics_report)[monitor.metric]
- else:
- metric_value = vars(last_performance_metrics_report)[monitor.metric]["weighted"]
-
- if metric_value < monitor.lower_threshold:
- new_alert = entities.Alert(
- model_id=model.id,
- model_monitor_id=monitor.id,
- timestamp=str(datetime.utcnow()),
- description=f"{monitor.metric} fell below the threshold of {monitor.lower_threshold} at value {metric_value}.",
- )
- crud.alerts.create(db, obj_in=new_alert)
- logger.info(f"Created alert for monitor {monitor.id}!")
-
-
-async def run_create_drift_alert_pipeline(model: Model, monitor: ModelMonitor):
- """
- Run the pipeline to find any alerts for a metric in drift metrics
- If one is found it is saved in the database
- """
-
- last_drift_report = await get_latest_drift_metrics_report(db, model)
-
- if not last_drift_report:
- logger.info(
- f"No alert created for monitor: {monitor.id} because no drift report was found!"
- )
- return
-
- if monitor.metric == MonitorMetrics.data_drift:
- drift_detected: bool = last_drift_report.data_drift_summary["drift_by_columns"][
- monitor.feature
- ]["drift_detected"]
- else:
- drift_detected: bool = last_drift_report.concept_drift_summary[
- "concept_drift_summary"
- ]["drift_detected"]
-
- if drift_detected:
- new_alert = entities.Alert(
- model_id=model.id,
- model_monitor_id=monitor.id,
- timestamp=str(datetime.utcnow()),
- description=f'{monitor.metric.capitalize().replace("_", " ")} found in "{monitor.feature}" feature.',
- )
- crud.alerts.create(db, obj_in=new_alert)
- logger.info(f"Created alert for monitor {monitor.id}!")
-
-
-async def run_create_alerts_pipeline():
- logger.info("Beginning Alerts pipeline for all models!")
- start = time.time()
- engine.connect()
-
- models = await get_all_models(db)
- if not models:
- logger.info("No models found! Skipping pipeline")
- else:
- for model in models:
- model_monitors = await get_active_model_monitors(db, model_id=model.id)
- for monitor in model_monitors:
- if monitor.metric in [
- MonitorMetrics.accuracy,
- MonitorMetrics.precision,
- MonitorMetrics.recall,
- MonitorMetrics.f1,
- MonitorMetrics.r_square,
- MonitorMetrics.mean_squared_error,
- MonitorMetrics.mean_absolute_error,
- ]:
- await run_create_performance_metric_alert_pipeline(model, monitor)
- elif (
- monitor.metric == MonitorMetrics.data_drift
- or monitor.metric == MonitorMetrics.concept_drift
- ):
- await run_create_drift_alert_pipeline(model, monitor)
-
- db.close()
- end = time.time()
- logger.info("Alerts pipeline ended for all models!")
- logger.info("Runtime of Alerts pipeline took {}".format(end - start))
diff --git a/whitebox/cron_tasks/monitoring_metrics.py b/whitebox/cron_tasks/monitoring_metrics.py
deleted file mode 100644
index cbc112b..0000000
--- a/whitebox/cron_tasks/monitoring_metrics.py
+++ /dev/null
@@ -1,323 +0,0 @@
-from datetime import datetime
-import pandas as pd
-import time
-from sqlalchemy import create_engine
-from sqlalchemy.orm import sessionmaker, Session
-from fastapi.encoders import jsonable_encoder
-from whitebox import crud, entities
-from whitebox.analytics.drift.pipelines import (
- run_data_drift_pipeline,
- run_concept_drift_pipeline,
-)
-from whitebox.analytics.metrics.pipelines import (
- create_binary_classification_evaluation_metrics_pipeline,
- create_feature_metrics_pipeline,
- create_multiple_classification_evaluation_metrics_pipeline,
- create_regression_evaluation_metrics_pipeline,
-)
-from whitebox.core.settings import get_settings
-from whitebox.cron_tasks.shared import (
- get_all_models,
- get_model_dataset_rows_df,
- get_unused_model_inference_rows,
- group_inference_rows_by_timestamp,
- seperate_inference_rows,
- set_inference_rows_to_used,
- get_latest_drift_metrics_report,
- round_timestamp,
- get_used_inference_for_reusage,
-)
-from whitebox.schemas.model import Model, ModelType
-from whitebox.schemas.modelIntegrityMetric import ModelIntegrityMetricCreate
-from whitebox.utils.logger import cronLogger as logger
-
-
-settings = get_settings()
-
-engine = create_engine(settings.DATABASE_URL)
-SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
-db: Session = SessionLocal()
-
-
-async def run_calculate_drifting_metrics_pipeline(
- model: Model, inference_processed_df: pd.DataFrame, timestamp: datetime
-):
- """
- Run the pipeline to calculate the drifting metrics
- After the metrics are calculated they are saved in the database
- """
-
- training_processed_df = await get_model_dataset_rows_df(db, model_id=model.id)
-
- if training_processed_df.empty:
- logger.info(f"Can't calculate data drift metrics for model {model.id}")
- return
-
- logger.info(f"Calculating drifting metrics for model {model.id}...")
-
- # We need to drop the target column from the data to calculate drifting metrics
- processed_inference_dropped_target_df = inference_processed_df.drop(
- [model.target_column], axis=1
- )
- processed_training_dropped_target_df = training_processed_df.drop(
- [model.target_column], axis=1
- )
-
- data_drift_report = run_data_drift_pipeline(
- processed_training_dropped_target_df, processed_inference_dropped_target_df
- )
- concept_drift_report = run_concept_drift_pipeline(
- training_processed_df,
- inference_processed_df,
- model.target_column,
- )
-
- new_drifting_metric = entities.DriftingMetric(
- timestamp=str(timestamp),
- model_id=model.id,
- concept_drift_summary=concept_drift_report,
- data_drift_summary=data_drift_report,
- )
-
- existing_report = crud.drifting_metrics.get_first_by_filter(
- db=db, model_id=model.id, timestamp=timestamp
- )
- if existing_report:
- crud.drifting_metrics.update(
- db=db, db_obj=existing_report, obj_in=jsonable_encoder(new_drifting_metric)
- )
- else:
- crud.drifting_metrics.create(db, obj_in=new_drifting_metric)
- logger.info("Drifting metrics calculated!")
-
-
-async def run_calculate_performance_metrics_pipeline(
- model: Model,
- inference_processed_df: pd.DataFrame,
- actual_df: pd.DataFrame,
- timestamp: datetime,
-):
- """
- Run the pipeline to calculate the performance metrics
- After the metrics are calculated they are saved in the database
- """
-
- cleaned_actuals_df = actual_df.dropna()
-
- if cleaned_actuals_df.empty:
- logger.info(
- f"Can't calculate performance metrics for model {model.id} because no actuals were found!"
- )
- return
-
- if len(cleaned_actuals_df.index) != len(actual_df.index):
- logger.info(
- f"Performance metrics will be calculated only for a portion of rows for model: {model.id}\
- because actuals were not provided for all inference rows!"
- )
- inference_processed_df = inference_processed_df.iloc[cleaned_actuals_df.index]
-
- inference_processed_df = inference_processed_df.reset_index(drop=True)
- cleaned_actuals_df = cleaned_actuals_df.reset_index(drop=True)
-
- if model.type is not ModelType.regression:
- if not model.labels:
- logger.info(
- f"Can't calculate performance metrics for model {model.id} because labels are required for binary and multi_class models!"
- )
- return
- labels = list(model.labels.values())
-
- logger.info(f"Calculating performance metrics for model {model.id}")
- if model.type == ModelType.binary:
- binary_classification_metrics_report = (
- create_binary_classification_evaluation_metrics_pipeline(
- cleaned_actuals_df, inference_processed_df[model.target_column], labels
- )
- )
-
- new_performance_metric = entities.BinaryClassificationMetrics(
- model_id=model.id,
- timestamp=str(timestamp),
- **dict(binary_classification_metrics_report),
- )
-
- existing_report = crud.binary_classification_metrics.get_first_by_filter(
- db=db, model_id=model.id, timestamp=timestamp
- )
- if existing_report:
- crud.binary_classification_metrics.update(
- db=db,
- db_obj=existing_report,
- obj_in=jsonable_encoder(new_performance_metric),
- )
- else:
- crud.binary_classification_metrics.create(db, obj_in=new_performance_metric)
-
- elif model.type == ModelType.multi_class:
- multiclass_classification_metrics_report = (
- create_multiple_classification_evaluation_metrics_pipeline(
- cleaned_actuals_df, inference_processed_df[model.target_column], labels
- )
- )
-
- new_performance_metric = entities.MultiClassificationMetrics(
- model_id=model.id,
- timestamp=str(timestamp),
- **dict(multiclass_classification_metrics_report),
- )
-
- existing_report = crud.multi_classification_metrics.get_first_by_filter(
- db=db, model_id=model.id, timestamp=timestamp
- )
- if existing_report:
- crud.multi_classification_metrics.update(
- db=db,
- db_obj=existing_report,
- obj_in=jsonable_encoder(new_performance_metric),
- )
- else:
- crud.multi_classification_metrics.create(db, obj_in=new_performance_metric)
-
- elif model.type == ModelType.regression:
- regression_metrics_report = create_regression_evaluation_metrics_pipeline(
- cleaned_actuals_df, inference_processed_df[model.target_column]
- )
-
- new_performance_metric = entities.RegressionMetrics(
- model_id=model.id,
- timestamp=str(timestamp),
- **dict(regression_metrics_report),
- )
-
- existing_report = crud.regression_metrics.get_first_by_filter(
- db=db, model_id=model.id, timestamp=timestamp
- )
- if existing_report:
- crud.regression_metrics.update(
- db=db,
- db_obj=existing_report,
- obj_in=jsonable_encoder(new_performance_metric),
- )
- else:
- crud.regression_metrics.create(db, obj_in=new_performance_metric)
-
- logger.info("Performance metrics calculated!")
-
-
-async def run_calculate_feature_metrics_pipeline(
- model: Model, inference_processed_df: pd.DataFrame, timestamp: datetime
-):
- """
- Run the pipeline to calculate the feature metrics
- After the metrics are calculated they are saved in the database
- """
-
- logger.info(f"Calculating feature metrics for model {model.id}")
- feature_metrics_report = create_feature_metrics_pipeline(inference_processed_df)
-
- if feature_metrics_report:
- new_feature_metric = ModelIntegrityMetricCreate(
- model_id=model.id,
- timestamp=str(timestamp),
- feature_metrics=feature_metrics_report,
- )
-
- existing_report = crud.model_integrity_metrics.get_first_by_filter(
- db=db, model_id=model.id, timestamp=timestamp
- )
- if existing_report:
- crud.model_integrity_metrics.update(
- db=db,
- db_obj=existing_report,
- obj_in=jsonable_encoder(new_feature_metric),
- )
- else:
- crud.model_integrity_metrics.create(db, obj_in=new_feature_metric)
-
- logger.info("Feature metrics calculated!")
-
-
-async def run_calculate_metrics_pipeline():
- logger.info("Beginning Metrics pipeline for all models!")
- start = time.time()
- engine.connect()
-
- models = await get_all_models(db)
- if not models:
- logger.info("No models found! Skipping pipeline")
- else:
- for model in models:
- granularity = model.granularity
- granularity_amount = int(granularity[:-1])
- granularity_type = granularity[-1]
-
- last_report = await get_latest_drift_metrics_report(db, model)
-
- # We need to get the last report's timestamp as a base of grouping unless there's no report produced.
- # In this case, the base timestamp is considered the "now" rounded to the day so the intervals start from midnight
- # e.g. 12:00, 12:15, 12:30, 12:45 and so on if granularity is 15T.
- last_report_time = (
- last_report.timestamp
- if last_report
- else round_timestamp(datetime.utcnow(), "1D")
- )
-
- unused_inference_rows_in_db = await get_unused_model_inference_rows(
- db, model_id=model.id
- )
-
- if len(unused_inference_rows_in_db) == 0:
- logger.info(
- f"No new inferences found for model {model.id}! Continuing with next model..."
- )
- continue
- logger.info(f"Executing Metrics pipeline for model {model.id}...")
-
- used_inferences = get_used_inference_for_reusage(
- db,
- model.id,
- unused_inference_rows_in_db,
- last_report_time,
- granularity_amount,
- granularity_type,
- )
-
- all_inferences = unused_inference_rows_in_db + used_inferences
-
- grouped_inference_rows = await group_inference_rows_by_timestamp(
- all_inferences,
- last_report_time,
- granularity_amount,
- granularity_type,
- )
-
- for group in grouped_inference_rows:
- for timestamp, inference_group in group.items():
- inference_rows_ids = [x.id for x in inference_group]
- (
- inference_processed_df,
- inference_nonprocessed_df,
- actual_df,
- ) = await seperate_inference_rows(inference_group)
-
- await run_calculate_drifting_metrics_pipeline(
- model, inference_processed_df, timestamp
- )
-
- await run_calculate_performance_metrics_pipeline(
- model, inference_processed_df, actual_df, timestamp
- )
-
- await run_calculate_feature_metrics_pipeline(
- model, inference_processed_df, timestamp
- )
-
- await set_inference_rows_to_used(db, inference_rows_ids)
-
- logger.info(f"Ended Metrics pipeline for model {model.id}...")
-
- db.close()
- end = time.time()
- logger.info("Metrics pipeline ended for all models!")
- logger.info("Runtime of Metrics pipeline took {}".format(end - start))
diff --git a/whitebox/cron_tasks/shared.py b/whitebox/cron_tasks/shared.py
deleted file mode 100644
index 45e3f13..0000000
--- a/whitebox/cron_tasks/shared.py
+++ /dev/null
@@ -1,224 +0,0 @@
-from typing import Callable, Dict, List, Tuple, Union
-import itertools
-import pandas as pd
-import datetime
-from sqlalchemy.orm import Session
-from whitebox import crud
-from whitebox.schemas.inferenceRow import InferenceRow
-from whitebox.schemas.model import Model, ModelType
-from whitebox.schemas.modelMonitor import ModelMonitor
-from whitebox.schemas.driftingMetric import DriftingMetric
-from whitebox.schemas.performanceMetric import (
- BinaryClassificationMetrics,
- MultiClassificationMetrics,
-)
-
-
-async def get_model_dataset_rows_df(db: Session, model_id: str) -> pd.DataFrame:
- dataset_rows_in_db = crud.dataset_rows.get_dataset_rows_by_model(
- db=db, model_id=model_id
- )
- dataset_rows_processed = [x.processed for x in dataset_rows_in_db]
- dataset_df = pd.DataFrame(dataset_rows_processed)
- return dataset_df
-
-
-async def get_unused_model_inference_rows(
- db: Session, model_id: str
-) -> List[InferenceRow]:
- return crud.inference_rows.get_unused_inference_rows(db=db, model_id=model_id)
-
-
-async def group_inference_rows_by_timestamp(
- inference_rows: List[InferenceRow],
- last_time: datetime.datetime,
- granularity_amount: int,
- granularity_type: str,
-) -> List[Dict[datetime.datetime, List[InferenceRow]]]:
- """Create a list of dicts with all inferences grouped by timestamp"""
-
- dict_inference_rows = [vars(x) for x in inference_rows]
-
- updated_inferences_dict = []
- for x in dict_inference_rows:
- new_obj = {**x}
- new_obj["timestamp"] = change_timestamp(
- x["timestamp"], last_time, granularity_amount, granularity_type
- )
- updated_inferences_dict.append(new_obj)
-
- updated_inferences = [InferenceRow(**x) for x in updated_inferences_dict]
-
- key_func: Callable[[InferenceRow]] = lambda x: x.timestamp
-
- grouped_inferences = [
- {key: list(group)}
- for key, group in itertools.groupby(updated_inferences, key_func)
- ]
-
- return grouped_inferences
-
-
-async def seperate_inference_rows(
- inference_rows: List[InferenceRow],
-) -> Tuple[pd.DataFrame, pd.DataFrame, pd.Series]:
- inference_rows_processed = [x.processed for x in inference_rows]
- inference_rows_nonprocessed = [x.nonprocessed for x in inference_rows]
- inference_rows_actual = [x.actual for x in inference_rows]
- processed_df = pd.DataFrame(inference_rows_processed)
- nonprocessed_df = pd.DataFrame(inference_rows_nonprocessed)
- actual_df = pd.Series(inference_rows_actual)
-
- # TODO: check if the length of the dataframes is the same
- return processed_df, nonprocessed_df, actual_df
-
-
-async def set_inference_rows_to_used(db: Session, ids: List[str]) -> None:
- """Changes the "is_used" property of an inference row to True"""
-
- for id in ids:
- inference_to_update = crud.inference_rows.get(db=db, _id=id)
- crud.inference_rows.update(
- db=db, db_obj=inference_to_update, obj_in={"is_used": True}
- )
-
-
-async def get_all_models(db: Session) -> List[Model]:
- models_in_db = crud.models.get_all(db)
- return models_in_db
-
-
-async def get_active_model_monitors(db: Session, model_id: str) -> List[ModelMonitor]:
- model_monitors_in_db = crud.model_monitors.get_active_model_monitors_by_model(
- db=db, model_id=model_id
- )
- return model_monitors_in_db
-
-
-async def get_latest_performance_metrics_report(
- db: Session, model: Model
-) -> Union[BinaryClassificationMetrics, MultiClassificationMetrics]:
- if model.type == ModelType.binary:
- last_report_in_db = (
- crud.binary_classification_metrics.get_latest_report_by_model(
- db, model_id=model.id
- )
- )
- elif model.type == ModelType.multi_class:
- last_report_in_db = (
- crud.multi_classification_metrics.get_latest_report_by_model(
- db, model_id=model.id
- )
- )
- else:
- last_report_in_db = crud.regression_metrics.get_latest_report_by_model(
- db, model_id=model.id
- )
- return last_report_in_db
-
-
-async def get_latest_drift_metrics_report(db: Session, model: Model) -> DriftingMetric:
- last_report_in_db = crud.drifting_metrics.get_latest_report_by_model(
- db, model_id=model.id
- )
- return last_report_in_db
-
-
-def round_timestamp(
- timestamp: datetime.datetime, granularity_type: str
-) -> datetime.datetime:
- """Rounds a timestamp depending on a given unit
- (e.g. if the unit is D (day) it converts 2023-03-03 12:33:25.34432 into 2023-03-03 00:00:00)
- """
-
- if granularity_type == "T":
- timestamp = timestamp.replace(second=0, microsecond=0)
- elif granularity_type == "H":
- timestamp = timestamp.replace(minute=0, second=0, microsecond=0)
- else:
- timestamp = timestamp.replace(hour=0, minute=0, second=0, microsecond=0)
-
- return timestamp
-
-
-def convert_granularity_to_secs(granularity_amount: int, granularity_type: str) -> int:
- """Converts a granularity into seconds (e.g. 1 day in 1 * 86400 = 86400 seconds)"""
-
- amount_of_seconds = {"T": 60, "H": 3600, "D": 86400, "W": 604800}
-
- return granularity_amount * amount_of_seconds[granularity_type]
-
-
-def change_timestamp(
- timestamp: datetime.datetime,
- start_time: datetime.datetime,
- granularity_amount: int,
- granularity_type: str,
-) -> datetime.datetime:
- """Converts a specific timestamp into it's group's timestamp based on the granularity and previous group timestamp.\n
- (E.g. a timestamp 2023-03-03 12:33:25.34432 when granularity is set to 2D and the previous group's timestamp is \
- 2023-03-03 00:00:00 will be converted into 2023-03-05 00:00:00)"""
-
- timestamp_in_seconds = round_timestamp(timestamp, granularity_type).timestamp()
-
- granularity_in_seconds = convert_granularity_to_secs(
- granularity_amount, granularity_type
- )
-
- start_time_in_seconds = start_time.timestamp()
-
- time_difference = (
- timestamp_in_seconds - start_time_in_seconds
- ) // granularity_in_seconds
-
- new_timestamp_in_seconds = (
- time_difference + 1
- ) * granularity_in_seconds + start_time_in_seconds
-
- new_timestamp = datetime.datetime.fromtimestamp(new_timestamp_in_seconds)
-
- return new_timestamp
-
-
-def get_used_inference_for_reusage(
- db: Session,
- model_id: str,
- inferences: List[InferenceRow],
- start_time: datetime.datetime,
- granularity_amount: int,
- granularity_type: str,
-) -> List[InferenceRow]:
- """Collects already used inference rows to be grouped with new rows of the same timestamp group and be \
- reused to create new reports."""
-
- timestamps = [x.timestamp for x in inferences]
-
- changed_timestamps = [
- change_timestamp(x, start_time, granularity_amount, granularity_type)
- for x in timestamps
- ]
- unique_timestamps = list(set(changed_timestamps))
-
- granularity_in_seconds = convert_granularity_to_secs(
- granularity_amount, granularity_type
- )
-
- all_used_inferences = []
-
- for timestamp in unique_timestamps:
- previous_timestamp = timestamp - datetime.timedelta(
- seconds=granularity_in_seconds
- )
-
- used_inferences_for_timestamp = (
- crud.inference_rows.get_inference_rows_betweet_dates(
- db=db,
- model_id=model_id,
- min_date=previous_timestamp,
- max_date=timestamp,
- )
- )
-
- all_used_inferences += used_inferences_for_timestamp
-
- return all_used_inferences
diff --git a/whitebox/cron_tasks/tasks.py b/whitebox/cron_tasks/tasks.py
deleted file mode 100644
index 89ce2b9..0000000
--- a/whitebox/cron_tasks/tasks.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import os
-from whitebox.core.manager import get_task_manager
-from whitebox.cron_tasks.monitoring_metrics import run_calculate_metrics_pipeline
-from whitebox.cron_tasks.monitoring_alerts import run_create_alerts_pipeline
-
-task_manager = get_task_manager()
-
-metrics_cron = os.getenv("METRICS_CRON") or "0 12 * * *"
-
-task_manager.register(
- name="metrics_cron",
- async_callable=run_calculate_metrics_pipeline,
- crontab=metrics_cron,
-)
-
-task_manager.register(
- name="alerts_cron",
- async_callable=run_create_alerts_pipeline,
- crontab=metrics_cron,
-)
diff --git a/whitebox/crud/__init__.py b/whitebox/crud/__init__.py
deleted file mode 100644
index 389e2cf..0000000
--- a/whitebox/crud/__init__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from .drifting_metrics import *
-from .dataset_rows import *
-from .inference_rows import *
-from .model_integrity_metrics import *
-from .model_monitors import *
-from .performance_metrics import *
-from .alerts import *
-from .users import *
-from .models import *
-from .base import *
diff --git a/whitebox/crud/alerts.py b/whitebox/crud/alerts.py
deleted file mode 100644
index a4317a6..0000000
--- a/whitebox/crud/alerts.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from typing import Any, List
-from sqlalchemy.orm import Session
-from whitebox.crud.base import CRUDBase
-from whitebox.entities.Alert import Alert as AlertEntity
-from whitebox.schemas.alert import Alert
-
-
-class CRUD(CRUDBase[Alert, Any, Any]):
- def get_model_alerts_by_model(self, db: Session, *, model_id: str) -> List[Alert]:
- return db.query(self.model).filter(AlertEntity.model_id == model_id).all()
-
-
-alerts = CRUD(AlertEntity)
diff --git a/whitebox/crud/base.py b/whitebox/crud/base.py
deleted file mode 100644
index f76d8c1..0000000
--- a/whitebox/crud/base.py
+++ /dev/null
@@ -1,86 +0,0 @@
-from typing import Any, Dict, Generic, List, Optional, Type, TypeVar, Union
-from fastapi.encoders import jsonable_encoder
-from pydantic import BaseModel
-from sqlalchemy.orm import Session
-from whitebox.core.db import Base
-import datetime
-
-ModelType = TypeVar("ModelType", bound=Base)
-CreateSchemaType = TypeVar("CreateSchemaType", bound=BaseModel)
-UpdateSchemaType = TypeVar("UpdateSchemaType", bound=BaseModel)
-
-
-class CRUDBase(Generic[ModelType, CreateSchemaType, UpdateSchemaType]):
- def __init__(self, model: Type[ModelType]):
- """
- CRUD object with default methods to Create, Read, Update, Delete (CRUD).
-
- **Parameters**
-
- * `model`: A SQLAlchemy model class
- * `schema`: A Pydantic model (schema) class
- """
- self.model = model
-
- def get(self, db: Session, _id: str) -> Optional[ModelType]:
- return db.query(self.model).filter(self.model.id == _id).first()
-
- def get_all(
- self, db: Session, *, skip: int = 0, limit: int = 100
- ) -> List[ModelType]:
- return db.query(self.model).offset(skip).limit(limit).all()
-
- def get_first_by_filter(self, db: Session, **kwargs: Any) -> Optional[ModelType]:
- return db.query(self.model).filter_by(**kwargs).first()
-
- def create(self, db: Session, *, obj_in: CreateSchemaType) -> ModelType:
- date_now = datetime.datetime.utcnow()
- obj_in_data = jsonable_encoder(obj_in)
- db_obj = self.model(**obj_in_data, created_at=date_now, updated_at=date_now)
- db.add(db_obj)
- db.commit()
- db.refresh(db_obj)
- return db_obj
-
- def create_many(
- self, db: Session, *, obj_list: List[CreateSchemaType]
- ) -> List[ModelType]:
- date_now = datetime.datetime.utcnow()
- obj_list_in_data = jsonable_encoder(obj_list)
- db_obj_list = list(
- map(
- lambda x: self.model(**x, created_at=date_now, updated_at=date_now),
- obj_list_in_data,
- )
- )
- db.add_all(db_obj_list)
- db.commit()
- for obj in db_obj_list:
- db.refresh(obj)
- return db_obj_list
-
- def update(
- self,
- db: Session,
- *,
- db_obj: ModelType,
- obj_in: Union[UpdateSchemaType, Dict[str, Any]]
- ) -> ModelType:
- date_now = datetime.datetime.utcnow()
- obj_data = jsonable_encoder(db_obj)
- if isinstance(obj_in, dict):
- update_data = obj_in
- else:
- update_data = obj_in.dict(exclude_unset=True)
- for field in obj_data:
- if field in update_data:
- setattr(db_obj, field, update_data[field])
- setattr(db_obj, "updated_at", date_now)
- db.commit()
- db.refresh(db_obj)
- return db_obj
-
- def remove(self, db: Session, *, _id: str):
- db.query(self.model).filter(self.model.id == _id).delete()
- db.commit()
- return
diff --git a/whitebox/crud/dataset_rows.py b/whitebox/crud/dataset_rows.py
deleted file mode 100644
index 6a64117..0000000
--- a/whitebox/crud/dataset_rows.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from typing import Any, List
-from sqlalchemy.orm import Session
-from whitebox.crud.base import CRUDBase
-from whitebox.schemas.datasetRow import DatasetRow, DatasetRowCreate
-from whitebox.entities.DatasetRow import DatasetRow as DatasetRowEntity
-
-
-class CRUD(CRUDBase[DatasetRow, DatasetRowCreate, Any]):
- def get_dataset_rows_by_model(
- self, db: Session, *, model_id: str
- ) -> List[DatasetRow]:
- return db.query(self.model).filter(DatasetRowEntity.model_id == model_id).all()
-
-
-dataset_rows = CRUD(DatasetRowEntity)
diff --git a/whitebox/crud/drifting_metrics.py b/whitebox/crud/drifting_metrics.py
deleted file mode 100644
index ee17853..0000000
--- a/whitebox/crud/drifting_metrics.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from typing import Any, List
-from sqlalchemy.orm import Session
-from sqlalchemy import asc, desc
-from whitebox.crud.base import CRUDBase
-from whitebox.entities.DriftingMetric import DriftingMetric as DriftingMetricEntity
-from whitebox.schemas.driftingMetric import DriftingMetric
-
-
-class CRUD(CRUDBase[DriftingMetric, Any, Any]):
- def get_drifting_metrics_by_model(
- self, db: Session, *, model_id: str
- ) -> List[DriftingMetric]:
- return (
- db.query(self.model)
- .filter(DriftingMetricEntity.model_id == model_id)
- .order_by(asc("timestamp"))
- .all()
- )
-
- def get_latest_report_by_model(
- self, db: Session, *, model_id: int
- ) -> DriftingMetric:
- return (
- db.query(self.model)
- .filter(self.model.model_id == model_id)
- .order_by(desc("created_at"))
- .first()
- )
-
-
-drifting_metrics = CRUD(DriftingMetricEntity)
diff --git a/whitebox/crud/inference_rows.py b/whitebox/crud/inference_rows.py
deleted file mode 100644
index e732bf7..0000000
--- a/whitebox/crud/inference_rows.py
+++ /dev/null
@@ -1,47 +0,0 @@
-from typing import Any, List
-from datetime import datetime
-from sqlalchemy import and_
-from sqlalchemy.orm import Session
-from whitebox.crud.base import CRUDBase
-from whitebox.schemas.inferenceRow import InferenceRow, InferenceRowPreDb
-from whitebox.entities.Inference import InferenceRow as InferenceRowEntity
-
-
-class CRUD(CRUDBase[InferenceRow, InferenceRowPreDb, Any]):
- def get_inference_rows_by_model(
- self, db: Session, *, model_id: str
- ) -> List[InferenceRow]:
- return (
- db.query(self.model).filter(InferenceRowEntity.model_id == model_id).all()
- )
-
- def get_unused_inference_rows(
- self, db: Session, *, model_id: str
- ) -> List[InferenceRow]:
- return (
- db.query(self.model)
- .filter(
- InferenceRowEntity.model_id == model_id,
- InferenceRowEntity.is_used == False,
- )
- .all()
- )
-
- def get_inference_rows_betweet_dates(
- self, db: Session, *, model_id: str, min_date: datetime, max_date: datetime
- ) -> List[InferenceRow]:
- return (
- db.query(self.model)
- .filter(
- and_(
- InferenceRowEntity.model_id == model_id,
- InferenceRowEntity.is_used == True,
- InferenceRowEntity.timestamp >= min_date,
- InferenceRowEntity.timestamp < max_date,
- )
- )
- .all()
- )
-
-
-inference_rows = CRUD(InferenceRowEntity)
diff --git a/whitebox/crud/model_integrity_metrics.py b/whitebox/crud/model_integrity_metrics.py
deleted file mode 100644
index 44ade18..0000000
--- a/whitebox/crud/model_integrity_metrics.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from typing import Any, List
-from sqlalchemy.orm import Session
-from sqlalchemy import asc
-from whitebox.crud.base import CRUDBase
-from whitebox.entities.ModelIntegrityMetric import (
- ModelIntegrityMetric as ModelIntegrityMetricEntity,
-)
-from whitebox.schemas.modelIntegrityMetric import (
- ModelIntegrityMetricCreate,
- ModelIntegrityMetric,
-)
-
-
-class CRUD(CRUDBase[ModelIntegrityMetric, ModelIntegrityMetricCreate, Any]):
- def get_model_integrity_metrics_by_model(
- self, db: Session, *, model_id: str
- ) -> List[ModelIntegrityMetric]:
- return (
- db.query(self.model)
- .filter(ModelIntegrityMetricEntity.model_id == model_id)
- .order_by(asc("timestamp"))
- .all()
- )
-
-
-model_integrity_metrics = CRUD(ModelIntegrityMetricEntity)
diff --git a/whitebox/crud/model_monitors.py b/whitebox/crud/model_monitors.py
deleted file mode 100644
index 5bbc371..0000000
--- a/whitebox/crud/model_monitors.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from typing import Any, List
-from whitebox.crud.base import CRUDBase
-from sqlalchemy.orm import Session
-from whitebox.schemas.modelMonitor import (
- ModelMonitor,
- ModelMonitorCreateDto,
- MonitorStatus,
-)
-from whitebox.entities.ModelMonitor import ModelMonitor as ModelMonitorEntity
-
-
-class CRUD(CRUDBase[ModelMonitor, ModelMonitorCreateDto, Any]):
- def get_model_monitors_by_model(
- self, db: Session, *, model_id: str
- ) -> List[ModelMonitor]:
- return (
- db.query(self.model).filter(ModelMonitorEntity.model_id == model_id).all()
- )
-
- def get_active_model_monitors_by_model(
- self, db: Session, *, model_id: str
- ) -> List[ModelMonitor]:
- return (
- db.query(self.model)
- .filter(
- ModelMonitorEntity.model_id == model_id,
- ModelMonitorEntity.status == MonitorStatus.active,
- )
- .all()
- )
-
-
-model_monitors = CRUD(ModelMonitorEntity)
diff --git a/whitebox/crud/models.py b/whitebox/crud/models.py
deleted file mode 100644
index 275334f..0000000
--- a/whitebox/crud/models.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from whitebox.crud.base import CRUDBase
-from whitebox.schemas.model import Model, ModelCreateDto, ModelUpdateDto
-from whitebox.entities.Model import Model as ModelEntity
-
-
-class CRUD(CRUDBase[Model, ModelCreateDto, ModelUpdateDto]):
- pass
-
-
-models = CRUD(ModelEntity)
diff --git a/whitebox/crud/performance_metrics.py b/whitebox/crud/performance_metrics.py
deleted file mode 100644
index 5da1a43..0000000
--- a/whitebox/crud/performance_metrics.py
+++ /dev/null
@@ -1,49 +0,0 @@
-from typing import Any, List, Union
-from sqlalchemy.orm import Session
-from sqlalchemy import asc, desc
-from whitebox.crud.base import CRUDBase
-from whitebox.entities.PerformanceMetric import (
- BinaryClassificationMetrics as BinaryClassificationMetricsEntity,
- MultiClassificationMetrics as MultiClassificationMetricsEntity,
- RegressionMetrics as RegressionMetricsEntity,
-)
-from whitebox.schemas.performanceMetric import (
- BinaryClassificationMetrics,
- MultiClassificationMetrics,
- RegressionMetrics,
-)
-
-
-class CRUD(
- CRUDBase[Union[BinaryClassificationMetrics, MultiClassificationMetrics], Any, Any]
-):
- def get_performance_metrics_by_model(
- self, db: Session, *, model_id: int
- ) -> Union[
- List[BinaryClassificationMetrics],
- List[MultiClassificationMetrics],
- List[RegressionMetrics],
- ]:
- return (
- db.query(self.model)
- .filter(self.model.model_id == model_id)
- .order_by(asc("timestamp"))
- .all()
- )
-
- def get_latest_report_by_model(
- self, db: Session, *, model_id: int
- ) -> Union[
- BinaryClassificationMetrics, MultiClassificationMetrics, RegressionMetrics
- ]:
- return (
- db.query(self.model)
- .filter(self.model.model_id == model_id)
- .order_by(desc("created_at"))
- .first()
- )
-
-
-binary_classification_metrics = CRUD(BinaryClassificationMetricsEntity)
-multi_classification_metrics = CRUD(MultiClassificationMetricsEntity)
-regression_metrics = CRUD(RegressionMetricsEntity)
diff --git a/whitebox/crud/users.py b/whitebox/crud/users.py
deleted file mode 100644
index b68b1a6..0000000
--- a/whitebox/crud/users.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from typing import Any
-from whitebox.crud.base import CRUDBase
-from whitebox.schemas.user import User, UserCreateDto
-from whitebox.entities.User import User as UserEntity
-
-
-class CRUD(CRUDBase[User, UserCreateDto, Any]):
- pass
-
-
-users = CRUD(UserEntity)
diff --git a/whitebox/entities/Alert.py b/whitebox/entities/Alert.py
deleted file mode 100644
index a43a379..0000000
--- a/whitebox/entities/Alert.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from sqlalchemy import Column, String, ForeignKey, DateTime
-from whitebox.entities.Base import Base
-from whitebox.utils.id_gen import generate_uuid
-
-
-class Alert(Base):
- __tablename__ = "alerts"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- model_id = model_id = Column(String, ForeignKey("models.id", ondelete="CASCADE"))
- model_monitor_id = Column(
- String, ForeignKey("model_monitors.id", ondelete="CASCADE")
- )
- timestamp = Column(DateTime)
- description = Column(String)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
diff --git a/whitebox/entities/Base.py b/whitebox/entities/Base.py
deleted file mode 100644
index e8aec5d..0000000
--- a/whitebox/entities/Base.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from typing import Any, Dict
-from sqlalchemy.ext.declarative import as_declarative, declared_attr
-
-
-class_registry: Dict = {}
-
-
-@as_declarative(class_registry=class_registry)
-class Base:
- id: Any
- __name__: str
-
- # Generate __tablename__ automatically
- @declared_attr
- def __tablename__(cls) -> str:
- return cls.__name__.lower()
diff --git a/whitebox/entities/DatasetRow.py b/whitebox/entities/DatasetRow.py
deleted file mode 100644
index c7f9fbd..0000000
--- a/whitebox/entities/DatasetRow.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from sqlalchemy import Column, String, ForeignKey, DateTime, JSON
-from whitebox.entities.Base import Base
-from whitebox.utils.id_gen import generate_uuid
-
-
-class DatasetRow(Base):
- __tablename__ = "dataset_rows"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- model_id = Column(String, ForeignKey("models.id", ondelete="CASCADE"))
- nonprocessed = Column(JSON)
- processed = Column(JSON)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
diff --git a/whitebox/entities/DriftingMetric.py b/whitebox/entities/DriftingMetric.py
deleted file mode 100644
index 5496904..0000000
--- a/whitebox/entities/DriftingMetric.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from sqlalchemy import Column, ForeignKey, String, DateTime, JSON
-from whitebox.entities.Base import Base
-from whitebox.utils.id_gen import generate_uuid
-
-
-class DriftingMetric(Base):
- __tablename__ = "drifting_metrics"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- model_id = Column(String, ForeignKey("models.id", ondelete="CASCADE"))
- timestamp = Column(DateTime)
- concept_drift_summary = Column(JSON)
- data_drift_summary = Column(JSON)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
diff --git a/whitebox/entities/Inference.py b/whitebox/entities/Inference.py
deleted file mode 100644
index 2d0d6d4..0000000
--- a/whitebox/entities/Inference.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from sqlalchemy import Boolean, Column, String, ForeignKey, DateTime, JSON, Float
-from whitebox.entities.Base import Base
-from whitebox.utils.id_gen import generate_uuid
-
-
-class InferenceRow(Base):
- __tablename__ = "inference_rows"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- model_id = Column(String, ForeignKey("models.id", ondelete="CASCADE"))
- timestamp = Column(DateTime)
- nonprocessed = Column(JSON)
- processed = Column(JSON)
- is_used = Column(Boolean)
- actual = Column(Float, nullable=True)
-
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
diff --git a/whitebox/entities/Model.py b/whitebox/entities/Model.py
deleted file mode 100644
index 2cae97d..0000000
--- a/whitebox/entities/Model.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from sqlalchemy import Column, String, DateTime, JSON, Enum
-from whitebox.entities.Base import Base
-from whitebox.utils.id_gen import generate_uuid
-from sqlalchemy.orm import relationship
-from whitebox.schemas.model import ModelType
-
-
-class Model(Base):
- __tablename__ = "models"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- name = Column(String)
- description = Column(String)
- type = Column("type", Enum(ModelType))
- target_column = Column(String)
- granularity = Column(String)
- labels = Column(JSON, nullable=True)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
-
- dataset_rows = relationship("DatasetRow")
- inference_rows = relationship("InferenceRow")
- binary_classification_metrics = relationship("BinaryClassificationMetrics")
- multi_classification_metrics = relationship("MultiClassificationMetrics")
- regression_metrics = relationship("RegressionMetrics")
- drifting_metrics = relationship("DriftingMetric")
- model_integrity_metrics = relationship("ModelIntegrityMetric")
- model_monitors = relationship("ModelMonitor")
diff --git a/whitebox/entities/ModelIntegrityMetric.py b/whitebox/entities/ModelIntegrityMetric.py
deleted file mode 100644
index 277794a..0000000
--- a/whitebox/entities/ModelIntegrityMetric.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from sqlalchemy import Column, JSON, Float, ForeignKey, String, DateTime
-from whitebox.entities.Base import Base
-from whitebox.utils.id_gen import generate_uuid
-
-
-class ModelIntegrityMetric(Base):
- __tablename__ = "model_integrity_metrics"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- model_id = Column(String, ForeignKey("models.id", ondelete="CASCADE"))
- timestamp = Column(DateTime)
- feature_metrics = Column(JSON)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
diff --git a/whitebox/entities/ModelMonitor.py b/whitebox/entities/ModelMonitor.py
deleted file mode 100644
index a0b406d..0000000
--- a/whitebox/entities/ModelMonitor.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from sqlalchemy import Column, Numeric, Enum, String, ForeignKey, DateTime
-from whitebox.entities.Base import Base
-from sqlalchemy.orm import relationship
-from whitebox.schemas.modelMonitor import AlertSeverity, MonitorMetrics, MonitorStatus
-from whitebox.utils.id_gen import generate_uuid
-
-
-class ModelMonitor(Base):
- __tablename__ = "model_monitors"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- model_id = Column(String, ForeignKey("models.id", ondelete="CASCADE"))
- name = Column(String)
- status = Column("status", Enum(MonitorStatus))
- metric = Column("metric", Enum(MonitorMetrics))
- feature = Column(String, nullable=True)
- lower_threshold = Column(Numeric, nullable=True)
- severity = Column("severity", Enum(AlertSeverity))
- email = Column(String)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
-
- alerts = relationship("Alert")
diff --git a/whitebox/entities/PerformanceMetric.py b/whitebox/entities/PerformanceMetric.py
deleted file mode 100644
index c2969d4..0000000
--- a/whitebox/entities/PerformanceMetric.py
+++ /dev/null
@@ -1,49 +0,0 @@
-from sqlalchemy import Column, Integer, Float, ForeignKey, String, DateTime, JSON
-from whitebox.entities.Base import Base
-from whitebox.utils.id_gen import generate_uuid
-
-
-class BinaryClassificationMetrics(Base):
- __tablename__ = "binary_classification_metrics"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- model_id = Column(String, ForeignKey("models.id", ondelete="CASCADE"))
- timestamp = Column(DateTime)
- accuracy = Column(Float)
- precision = Column(Float)
- recall = Column(Float)
- f1 = Column(Float)
- true_negative = Column(Integer)
- false_positive = Column(Integer)
- false_negative = Column(Integer)
- true_positive = Column(Integer)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
-
-
-class MultiClassificationMetrics(Base):
- __tablename__ = "multi_classification_metrics"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- model_id = Column(String, ForeignKey("models.id", ondelete="CASCADE"))
- timestamp = Column(DateTime)
- accuracy = Column(Float)
- precision = Column(JSON)
- recall = Column(JSON)
- f1 = Column(JSON)
- confusion_matrix = Column(JSON)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
-
-
-class RegressionMetrics(Base):
- __tablename__ = "regression_metrics"
-
- id = Column(String, primary_key=True, unique=True, default=generate_uuid)
- model_id = Column(String, ForeignKey("models.id", ondelete="CASCADE"))
- timestamp = Column(DateTime)
- r_square = Column(Float)
- mean_squared_error = Column(Float)
- mean_absolute_error = Column(Float)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
diff --git a/whitebox/entities/User.py b/whitebox/entities/User.py
deleted file mode 100644
index b0838a6..0000000
--- a/whitebox/entities/User.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from sqlalchemy import Column, String, DateTime
-from whitebox.entities.Base import Base
-from whitebox.utils.id_gen import generate_uuid
-from sqlalchemy.orm import deferred, relationship
-
-
-class User(Base):
- __tablename__ = "users"
-
- id = Column(String, unique=True, primary_key=True, default=generate_uuid)
- username = Column(String)
- api_key = Column(String)
- created_at = Column(DateTime)
- updated_at = Column(DateTime)
diff --git a/whitebox/entities/__init__.py b/whitebox/entities/__init__.py
deleted file mode 100644
index d4cb0a4..0000000
--- a/whitebox/entities/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from .Alert import Alert
-from .DatasetRow import DatasetRow
-from .DriftingMetric import DriftingMetric
-from .Inference import InferenceRow
-from .Model import Model
-from .ModelIntegrityMetric import ModelIntegrityMetric
-from .ModelMonitor import ModelMonitor
-from .PerformanceMetric import (
- BinaryClassificationMetrics,
- MultiClassificationMetrics,
- RegressionMetrics,
-)
-from .User import User
diff --git a/whitebox/main.py b/whitebox/main.py
deleted file mode 100644
index 36fb043..0000000
--- a/whitebox/main.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from fastapi import FastAPI
-from fastapi.middleware.cors import CORSMiddleware
-from whitebox.api.v1 import v1_router
-from fastapi.openapi.utils import get_openapi
-from whitebox.api.v1.docs import (
- tags_metadata,
- validation_error,
- authorization_error,
- not_found_error,
- conflict_error,
- content_gone,
- bad_request,
-)
-from whitebox.core.settings import get_settings
-from whitebox.core.db import connect, close
-from starlette.exceptions import HTTPException as StarletteHTTPException
-from fastapi.exceptions import RequestValidationError
-
-from whitebox.utils.errors import errors
-
-settings = get_settings()
-
-app = FastAPI(title=settings.APP_NAME, redoc_url="/")
-
-app.add_middleware(
- CORSMiddleware,
- allow_origins=["*"],
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
-)
-
-app.include_router(v1_router)
-
-
-app.add_exception_handler(StarletteHTTPException, errors.http_exception_handler)
-app.add_exception_handler(RequestValidationError, errors.validation_exception_handler)
-
-
-@app.on_event("startup")
-async def on_app_start():
- """Anything that needs to be done while app starts"""
- await connect()
-
-
-@app.on_event("shutdown")
-async def on_app_shutdown():
- """Anything that needs to be done while app shutdown"""
- await close()
-
-
-def app_openapi():
- if app.openapi_schema:
- return app.openapi_schema
- openapi_schema = get_openapi(
- title="Whitebox",
- version=settings.VERSION,
- routes=app.routes,
- tags=tags_metadata,
- )
-
- openapi_schema["components"]["schemas"]["HTTPValidationError"] = validation_error
- openapi_schema["components"]["schemas"]["AuthorizationError"] = authorization_error
- openapi_schema["components"]["schemas"]["NotFoundError"] = not_found_error
- openapi_schema["components"]["schemas"]["ConflictError"] = conflict_error
- openapi_schema["components"]["schemas"]["BadRequest"] = bad_request
- openapi_schema["components"]["schemas"]["ContentGone"] = content_gone
-
- app.openapi_schema = openapi_schema
- return app.openapi_schema
-
-
-app.openapi = app_openapi
diff --git a/whitebox/middleware/__initi__.py b/whitebox/middleware/__initi__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/whitebox/middleware/auth.py b/whitebox/middleware/auth.py
deleted file mode 100644
index 40143c5..0000000
--- a/whitebox/middleware/auth.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from fastapi import Depends, HTTPException, status, Header
-from sqlalchemy.orm import Session
-from whitebox import crud
-from whitebox.schemas.user import User
-from whitebox.core.db import get_db
-from whitebox.utils.passwords import passwords_match
-
-
-async def authenticate_user(
- api_key: str = Header(),
- db: Session = Depends(get_db),
-) -> User:
- user = crud.users.get_first_by_filter(db, username="admin")
- if not passwords_match(user.api_key, api_key):
- raise HTTPException(
- detail="Invalid API key", status_code=status.HTTP_401_UNAUTHORIZED
- )
- return user
diff --git a/whitebox/schemas/__init__.py b/whitebox/schemas/__init__.py
deleted file mode 100644
index b13b928..0000000
--- a/whitebox/schemas/__init__.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from .inferenceRow import *
-from .model import *
-from .alert import *
-from .base import *
-from .datasetRow import *
-from .driftingMetric import *
-from .modelIntegrityMetric import *
-from .modelMonitor import *
-from .performanceMetric import *
-from .user import *
-from .utils import *
diff --git a/whitebox/schemas/alert.py b/whitebox/schemas/alert.py
deleted file mode 100644
index b8308ea..0000000
--- a/whitebox/schemas/alert.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from datetime import datetime
-from typing import Union
-from pydantic import BaseModel
-from whitebox.schemas.base import ItemBase
-
-
-class AlertBase(BaseModel):
- model_id: str
- model_monitor_id: str
- timestamp: Union[str, datetime]
- description: str
-
-
-class Alert(AlertBase, ItemBase):
- pass
-
-
-class AlertCreateDto(AlertBase):
- pass
diff --git a/whitebox/schemas/base.py b/whitebox/schemas/base.py
deleted file mode 100644
index bd496f3..0000000
--- a/whitebox/schemas/base.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import datetime
-from pydantic import BaseModel
-
-
-class ItemBase(BaseModel):
- id: str
- created_at: datetime.datetime
- updated_at: datetime.datetime
-
- class Config:
- orm_mode = True
diff --git a/whitebox/schemas/datasetRow.py b/whitebox/schemas/datasetRow.py
deleted file mode 100644
index 6276a4e..0000000
--- a/whitebox/schemas/datasetRow.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from pydantic import BaseModel
-from whitebox.schemas.base import ItemBase
-from typing import Dict, Any
-
-
-class DatasetRowBase(BaseModel):
- model_id: str
- # Data before any processing
- nonprocessed: Dict[str, Any]
- # Before model entry
- processed: Dict[str, float]
-
-
-class DatasetRow(DatasetRowBase, ItemBase):
- pass
-
-
-class DatasetRowCreate(DatasetRowBase):
- pass
diff --git a/whitebox/schemas/driftingMetric.py b/whitebox/schemas/driftingMetric.py
deleted file mode 100644
index 97616cf..0000000
--- a/whitebox/schemas/driftingMetric.py
+++ /dev/null
@@ -1,68 +0,0 @@
-from datetime import datetime
-from typing import Dict, List, Union
-from pydantic import BaseModel
-from whitebox.schemas.base import ItemBase
-
-
-class ColumnDataDriftMetrics(BaseModel):
- """One column drift metrics"""
-
- column_name: str
- column_type: str
- stattest_name: str
- drift_score: float
- drift_detected: bool
- threshold: float
-
-
-class DataDriftTable(BaseModel):
- number_of_columns: int
- number_of_drifted_columns: int
- share_of_drifted_columns: float
- dataset_drift: bool
- drift_by_columns: Dict[str, ColumnDataDriftMetrics]
-
-
-class CramerV(BaseModel):
- """CramerV statistics"""
-
- column_name: str
- kind: str
- values: Dict[str, List[str]]
-
-
-class ColumnConceptDriftCorrelationMetrics(BaseModel):
- """One column concept drift correlation metrics"""
-
- column_name: str
- current: Dict[str, CramerV]
- reference: Dict[str, CramerV]
-
-
-class ColumnConceptDriftMetrics(BaseModel):
- """One column concept drift metrics"""
-
- column_name: str
- column_type: str
- stattest_name: str
- drift_score: float
- drift_detected: bool
- stattest_threshold: float
-
-
-class ConceptDriftTable(BaseModel):
- """Concept drift Table metrics"""
-
- concept_drift_summary: ColumnConceptDriftMetrics
- column_correlation: ColumnConceptDriftCorrelationMetrics
-
-
-class DriftingMetricBase(ItemBase):
- model_id: str
- timestamp: Union[str, datetime]
- concept_drift_summary: ConceptDriftTable
- data_drift_summary: DataDriftTable
-
-
-class DriftingMetric(DriftingMetricBase, ItemBase):
- pass
diff --git a/whitebox/schemas/inferenceRow.py b/whitebox/schemas/inferenceRow.py
deleted file mode 100644
index abd0ba9..0000000
--- a/whitebox/schemas/inferenceRow.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from datetime import datetime
-from typing import Any, Dict, Union, Optional
-from pydantic import BaseModel
-from whitebox.schemas.base import ItemBase
-
-
-class InferenceRowBase(BaseModel):
- model_id: str
- timestamp: Union[str, datetime]
- # Prediction is included into nonprocessed & processed
- nonprocessed: Dict[str, Any]
- processed: Dict[str, float]
- actual: Optional[float]
-
-
-class InferenceRowCreateDto(InferenceRowBase):
- pass
-
-
-class InferenceRowPreDb(InferenceRowBase):
- is_used: bool
-
-
-class InferenceRow(InferenceRowPreDb, ItemBase):
- pass
diff --git a/whitebox/schemas/model.py b/whitebox/schemas/model.py
deleted file mode 100644
index 4ad533c..0000000
--- a/whitebox/schemas/model.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from typing import Dict, Optional
-from pydantic import BaseModel
-from whitebox.schemas.base import ItemBase
-import enum
-
-
-class ModelType(str, enum.Enum):
- binary = "binary"
- multi_class = "multi_class"
- regression = "regression"
-
-
-class ModelBase(BaseModel):
- name: str
- description: str
- type: ModelType
- target_column: str
- granularity: str
- labels: Optional[Dict[str, int]]
-
-
-class Model(ModelBase, ItemBase):
- pass
-
-
-class ModelCreateDto(ModelBase):
- pass
-
-
-class ModelUpdateDto(BaseModel):
- name: Optional[str]
- description: Optional[str]
diff --git a/whitebox/schemas/modelIntegrityMetric.py b/whitebox/schemas/modelIntegrityMetric.py
deleted file mode 100644
index eefc1d1..0000000
--- a/whitebox/schemas/modelIntegrityMetric.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from typing import Dict, Union
-from pydantic import BaseModel
-from whitebox.schemas.base import ItemBase
-from datetime import datetime
-
-
-class FeatureMetrics(BaseModel):
- missing_count: Dict[str, int]
- non_missing_count: Dict[str, int]
- mean: Dict[str, float]
- minimum: Dict[str, float]
- maximum: Dict[str, float]
- sum: Dict[str, float]
- standard_deviation: Dict[str, float]
- variance: Dict[str, float]
-
-
-class ModelIntegrityMetricBase(BaseModel):
- model_id: str
- timestamp: Union[str, datetime]
- feature_metrics: FeatureMetrics
-
-
-class ModelIntegrityMetric(ModelIntegrityMetricBase, ItemBase):
- pass
-
-
-class ModelIntegrityMetricCreate(ModelIntegrityMetricBase):
- pass
diff --git a/whitebox/schemas/modelMonitor.py b/whitebox/schemas/modelMonitor.py
deleted file mode 100644
index bb38fcf..0000000
--- a/whitebox/schemas/modelMonitor.py
+++ /dev/null
@@ -1,57 +0,0 @@
-from typing import Optional
-from pydantic import BaseModel
-import enum
-from whitebox.schemas.base import ItemBase
-
-
-class MonitorStatus(str, enum.Enum):
- active = "active"
- inactive = "inactive"
-
-
-class MonitorMetrics(str, enum.Enum):
- # Performance metrics
- accuracy = "accuracy"
- precision = "precision"
- recall = "recall"
- f1 = "f1"
- r_square = "r_square"
- mean_squared_error = "mean_squared_error"
- mean_absolute_error = "mean_absolute_error"
-
- # Drifting metrics
- data_drift = "data_drift"
- concept_drift = "concept_drift"
-
-
-class AlertSeverity(str, enum.Enum):
- low = "low"
- mid = "mid"
- high = "high"
-
-
-class ModelMonitorBase(BaseModel):
- model_id: str
- name: str
- status: MonitorStatus
- metric: MonitorMetrics
- severity: AlertSeverity
- email: str
- feature: Optional[str]
- lower_threshold: Optional[float]
-
-
-class ModelMonitor(ModelMonitorBase, ItemBase):
- pass
-
-
-class ModelMonitorCreateDto(ModelMonitorBase):
- pass
-
-
-class ModelMonitorUpdateDto(BaseModel):
- name: Optional[str]
- status: Optional[MonitorStatus]
- severity: Optional[AlertSeverity]
- email: Optional[str]
- lower_threshold: Optional[float]
diff --git a/whitebox/schemas/performanceMetric.py b/whitebox/schemas/performanceMetric.py
deleted file mode 100644
index 54a7968..0000000
--- a/whitebox/schemas/performanceMetric.py
+++ /dev/null
@@ -1,77 +0,0 @@
-from datetime import datetime
-from pydantic import BaseModel
-from typing import Dict, Union
-from whitebox.schemas.base import ItemBase
-
-# TODO: Include comments of what each class represents
-
-
-class BinaryClassificationMetricsPipelineResult(BaseModel):
- """This class is used to store the results of the pipeline that calculates the binary classification metrics"""
-
- accuracy: float
- precision: float
- recall: float
- f1: float
- true_negative: int
- false_positive: int
- false_negative: int
- true_positive: int
-
-
-class BinaryClassificationMetricsBase(BinaryClassificationMetricsPipelineResult):
- model_id: str
- timestamp: Union[str, datetime]
-
-
-class BinaryClassificationMetrics(BinaryClassificationMetricsBase, ItemBase):
- pass
-
-
-class DifferentStatistics(BaseModel):
- micro: float
- macro: float
- weighted: float
-
-
-class ConfusionMatrix(BaseModel):
- true_negative: int
- false_positive: int
- false_negative: int
- true_positive: int
-
-
-class MultiClassificationMetricsPipelineResult(BaseModel):
- """This class is used to store the results of the pipeline that calculates the multi classification metrics"""
-
- accuracy: float
- precision: DifferentStatistics
- recall: DifferentStatistics
- f1: DifferentStatistics
- confusion_matrix: Dict[str, ConfusionMatrix]
-
-
-class MultiClassificationMetricsBase(MultiClassificationMetricsPipelineResult):
- model_id: str
- timestamp: Union[str, datetime]
-
-
-class MultiClassificationMetrics(MultiClassificationMetricsBase, ItemBase):
- pass
-
-
-class RegressionMetricsPipelineResult(BaseModel):
- """This class is used to store the results of the pipeline that calculates the regression metrics"""
-
- r_square: float
- mean_squared_error: float
- mean_absolute_error: float
-
-
-class RegressionMetricsBase(RegressionMetricsPipelineResult):
- model_id: str
- timestamp: Union[str, datetime]
-
-
-class RegressionMetrics(RegressionMetricsBase, ItemBase):
- pass
diff --git a/whitebox/schemas/task.py b/whitebox/schemas/task.py
deleted file mode 100644
index 8ca74f4..0000000
--- a/whitebox/schemas/task.py
+++ /dev/null
@@ -1,77 +0,0 @@
-from asyncio.tasks import Task
-from dataclasses import dataclass
-
-from pydantic import BaseModel, Field
-from typing import Callable, Coroutine, Optional, List, Dict, Deque, Literal, Union
-from uuid import UUID, uuid4
-
-import datetime
-import pytz
-
-
-def now():
- return datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
-
-
-TaskStatus = Literal[
- "registered", "running", "finished", "pending", "cancelled", "failed"
-]
-
-EventType = Literal[
- "task_registered",
- "task_started",
- "task_failed",
- "task_finished",
- "task_cancelled",
- "task_disabled",
-]
-
-
-class TaskInfo(BaseModel):
- uid: UUID = uuid4()
- name: str
- status: str
- previous_status: str
- enabled: bool
- crontab: Union[str, None] = None
- created_at: Union[datetime.datetime, float] = now().timestamp()
- started_at: Union[datetime.datetime, float, None] = None
- stopped_at: Union[datetime.datetime, float, None] = None
- next_run_in: Union[int, None] = None
-
-
-class TaskDefinition(BaseModel):
- name: str
- async_callable: Callable[[], Coroutine]
- enabled: bool = True
- crontab: Optional[str] = None
-
-
-@dataclass
-class RunningTask:
- task_definition: TaskDefinition
- asyncio_task: Task
- since: Union[datetime.datetime, float]
-
-
-class TaskLog(BaseModel):
- event_type: EventType
- task_name: str
- crontab: Union[str, None] = None
- enabled: bool
- error: Union[str, None] = None
- timestamp: int = Field(default_factory=lambda: datetime.datetime.now().timestamp())
-
-
-class State(BaseModel):
- created_at: datetime.datetime
- tasks_info: List[TaskInfo]
-
-
-class TaskRealTimeInfo(BaseModel):
- name: str
- status: TaskStatus
- previous_status: Optional[TaskStatus]
- next_run_ts: Optional[int]
- started_at: Optional[Union[datetime.datetime, float]]
- stopped_at: Optional[Union[datetime.datetime, float]]
diff --git a/whitebox/schemas/user.py b/whitebox/schemas/user.py
deleted file mode 100644
index 6ed25f2..0000000
--- a/whitebox/schemas/user.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from typing import Optional, Union
-from pydantic import BaseModel
-from whitebox.schemas.base import ItemBase
-
-
-class UserBase(BaseModel):
- username: str
-
-
-class User(UserBase, ItemBase):
- pass
-
-
-class UserCreateDto(UserBase):
- api_key: str
diff --git a/whitebox/schemas/utils.py b/whitebox/schemas/utils.py
deleted file mode 100644
index 0cf2556..0000000
--- a/whitebox/schemas/utils.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from pydantic import BaseModel
-
-
-class HealthCheck(BaseModel):
- status: str
-
-
-class StatusCode(BaseModel):
- status_code: str
-
-
-class ErrorProps(BaseModel):
- error: str
- status_code: int
-
-
-class ErrorResponse(BaseModel):
- title: str
- type: str
- properties: ErrorProps
diff --git a/whitebox/sdk/__init__.py b/whitebox/sdk/__init__.py
deleted file mode 100644
index 16835b2..0000000
--- a/whitebox/sdk/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from .whitebox import *
diff --git a/whitebox/sdk/whitebox.py b/whitebox/sdk/whitebox.py
deleted file mode 100644
index 0d06c85..0000000
--- a/whitebox/sdk/whitebox.py
+++ /dev/null
@@ -1,403 +0,0 @@
-from enum import Enum
-import numpy as np
-import pandas as pd
-from whitebox.schemas.model import ModelCreateDto, ModelType, ModelUpdateDto
-from typing import Dict, Optional, Union
-import requests
-import logging
-from fastapi import status as status_code
-from fastapi.encoders import jsonable_encoder
-
-from whitebox.schemas.modelMonitor import (
- AlertSeverity,
- ModelMonitorCreateDto,
- ModelMonitorUpdateDto,
- MonitorMetrics,
- MonitorStatus,
-)
-
-
-class APiVersion(str, Enum):
- v1 = "v1"
-
-
-logger = logging.getLogger(__name__)
-
-
-class Whitebox:
- def __init__(
- self,
- host: str,
- api_key: str,
- verbose: bool = False,
- api_version: APiVersion = APiVersion.v1,
- ):
- self.host = host
- self.api_key = api_key
- self.verbose = verbose
- self.api_version = api_version
-
- def create_model(
- self,
- name: str,
- type: ModelType,
- target_column: str,
- granularity: str,
- labels: Dict[str, int] = None,
- description: str = "",
- ) -> dict:
- """
- Create a new model in Whitebox and define a type, and a schema for it.
- """
- new_model = ModelCreateDto(
- name=name,
- type=type,
- target_column=target_column,
- granularity=granularity,
- labels=labels,
- description=description,
- )
-
- result = requests.post(
- url=f"{self.host}/{self.api_version}/models",
- json=jsonable_encoder(new_model),
- headers={"api-key": self.api_key},
- )
-
- logger.info(result.json())
- return result.json()
-
- def get_model(self, model_id: str) -> dict:
- """
- Returns a model by its id. If the model does not exist, returns None.
- """
- result = requests.get(
- url=f"{self.host}/{self.api_version}/models/{model_id}",
- headers={"api-key": self.api_key},
- )
- if result.status_code == status_code.HTTP_404_NOT_FOUND:
- return None
-
- return result.json()
-
- def get_models(self) -> Union[dict, None]:
- """
- Returns all the models. If no models exist, returns None.
- """
- result = requests.get(
- url=f"{self.host}/{self.api_version}/models",
- headers={"api-key": self.api_key},
- )
- if result.status_code == status_code.HTTP_404_NOT_FOUND:
- return None
-
- return result.json()
-
- def update_model(
- self,
- model_id: str,
- name: Optional[str] = None,
- description: Optional[str] = None,
- ):
- """
- Updates a model by its id. If any error occurs, returns False.
- """
-
- model = ModelUpdateDto(name=name, description=description)
-
- result = requests.put(
- url=f"{self.host}/{self.api_version}/models/{model_id}",
- json=jsonable_encoder(model),
- headers={"api-key": self.api_key},
- )
- logger.info(result.json())
-
- if result.status_code == status_code.HTTP_200_OK:
- return True
-
- return False
-
- def delete_model(self, model_id: str):
- """
- Deletes a model by its id. If any error occurs, returns False.
- """
- result = requests.delete(
- url=f"{self.host}/{self.api_version}/models/{model_id}",
- headers={"api-key": self.api_key},
- )
-
- if result.status_code == status_code.HTTP_200_OK:
- return True
-
- return False
-
- def log_training_dataset(
- self, model_id: str, non_processed: pd.DataFrame, processed: pd.DataFrame
- ) -> bool:
- """
- Logs a training dataset for a model.
-
- Non processed is a dataframe with the raw data.
- Processed is a dataframe with the data after it has been processed and before it has entered the model.
- """
- self._check_processed_and_non_processed_length(processed, non_processed)
- non_processed_json = non_processed.to_dict(orient="records")
- processed_json = processed.to_dict(orient="records")
-
- dataset_rows = []
- for i in range(len(non_processed)):
- dataset_rows.append(
- dict(
- model_id=model_id,
- nonprocessed=non_processed_json[i],
- processed=processed_json[i],
- )
- )
-
- result = requests.post(
- url=f"{self.host}/{self.api_version}/dataset-rows",
- headers={"api-key": self.api_key},
- json=dataset_rows,
- )
- if result.status_code == status_code.HTTP_201_CREATED:
- return True
-
- return False
-
- def log_inferences(
- self,
- model_id: str,
- non_processed: pd.DataFrame,
- processed: pd.DataFrame,
- timestamps: pd.Series,
- actuals: pd.Series = None,
- ) -> bool:
- """
- Logs inferences of a model.
-
- Non processed is a dataframe with the raw data.
- Processed is a dataframe with the data after it has been processed and before it has entered the model.
- """
- self._check_processed_and_non_processed_length(processed, non_processed)
- non_processed_json = non_processed.to_dict(orient="records")
- processed_json = processed.to_dict(orient="records")
- timestamps_list = timestamps.tolist()
-
- if actuals is not None:
- actuals = actuals.replace({np.nan: None})
- actuals_list = actuals.tolist()
- else:
- actuals_list = actuals
-
- inference_rows = []
- for i in range(len(non_processed)):
- inference_rows.append(
- dict(
- model_id=model_id,
- nonprocessed=non_processed_json[i],
- processed=processed_json[i],
- timestamp=timestamps_list[i],
- actual=actuals_list[i] if actuals_list is not None else None,
- )
- )
-
- result = requests.post(
- url=f"{self.host}/{self.api_version}/inference-rows/batch",
- headers={"api-key": self.api_key},
- json=inference_rows,
- )
- if result.status_code == status_code.HTTP_201_CREATED:
- return True
-
- return False
-
- def get_inferences(self, model_id: str):
- """
- Given a specific model id, this endpoint fetches all the inferences.
- If some of the required data isn't found, returns None.
- """
- result = requests.get(
- url=f"{self.host}/{self.api_version}/inference-rows?model_id={model_id}",
- headers={"api-key": self.api_key},
- )
- if result.status_code == status_code.HTTP_404_NOT_FOUND:
- return None
-
- return result.json()
-
- def get_xai_row(self, inference_row_id: str):
- """
- Given a specific inference row id, this endpoint produces an explainability report for this inference.
- If some of the required data isn't found, returns None.
- """
- result = requests.get(
- url=f"{self.host}/{self.api_version}/inference-rows/{inference_row_id}/xai",
- headers={"api-key": self.api_key},
- )
- if result.status_code == status_code.HTTP_404_NOT_FOUND:
- return None
-
- return result.json()
-
- def create_model_monitor(
- self,
- model_id: str,
- name: str,
- status: MonitorStatus,
- metric: MonitorMetrics,
- severity: AlertSeverity,
- email: str,
- lower_threshold: Optional[float],
- feature: Optional[Union[str, None]] = None,
- ) -> dict:
- """
- Creates a monitor for a model.
- """
-
- model_monitor = ModelMonitorCreateDto(
- model_id=model_id,
- name=name,
- status=status,
- metric=metric,
- feature=feature,
- lower_threshold=lower_threshold,
- severity=severity,
- email=email,
- )
-
- result = requests.post(
- url=f"{self.host}/{self.api_version}/model-monitors",
- json=model_monitor.dict(),
- headers={"api-key": self.api_key},
- )
-
- logger.info(result.json())
- return result.json()
-
- def get_model_monitors(self, model_id: str) -> dict:
- """
- Returns all monitors for a model.
- """
- result = requests.get(
- url=f"{self.host}/{self.api_version}/model-monitors?modelId={model_id}",
- headers={"api-key": self.api_key},
- )
-
- logger.info(result.json())
- return result.json()
-
- def update_model_monitor(
- self,
- model_monitor_id: str,
- name: Optional[str] = None,
- status: Optional[MonitorStatus] = None,
- severity: Optional[AlertSeverity] = None,
- email: Optional[str] = None,
- lower_threshold: Optional[float] = None,
- ):
- """
- Updates a model monitor by its id. If any error occurs, returns False.
- """
-
- model_monitor = ModelMonitorUpdateDto(
- name=name,
- status=status,
- severity=severity,
- lower_threshold=lower_threshold,
- email=email,
- )
-
- result = requests.put(
- url=f"{self.host}/{self.api_version}/model-monitors/{model_monitor_id}",
- json=jsonable_encoder(model_monitor),
- headers={"api-key": self.api_key},
- )
-
- logger.info(result.json())
-
- if result.status_code == status_code.HTTP_200_OK:
- return True
-
- return False
-
- def delete_model_monitor(self, model_monitor_id: str):
- """
- Deletes a model monitor by its id. If any error occurs, returns False.
- """
- result = requests.delete(
- url=f"{self.host}/{self.api_version}/model-monitors/{model_monitor_id}",
- headers={"api-key": self.api_key},
- )
-
- if result.status_code == status_code.HTTP_200_OK:
- return True
-
- return False
-
- def get_alerts(self, model_id: str = "") -> dict:
- """
- Returns all alerts for a model.
- """
- result = requests.get(
- url=f"{self.host}/{self.api_version}/alerts?model_id={model_id}",
- headers={"api-key": self.api_key},
- )
-
- if result.status_code == status_code.HTTP_404_NOT_FOUND:
- return None
-
- return result.json()
-
- def get_drifting_metrics(self, model_id: str) -> dict:
- """
- Returns a model's drifting metric reports. If the model does not exist, returns None.
- If the model exists but there are no metrics, returns an empty list.
- """
- result = requests.get(
- url=f"{self.host}/{self.api_version}/drifting-metrics?model_id={model_id}",
- headers={"api-key": self.api_key},
- )
- if result.status_code == status_code.HTTP_404_NOT_FOUND:
- return None
-
- return result.json()
-
- def get_descriptive_statistics(self, model_id: str) -> dict:
- """
- Returns a model's descriptive statistics reports. If the model does not exist, returns None.
- If the model exists but there are no metrics, returns an empty list.
- """
- result = requests.get(
- url=f"{self.host}/{self.api_version}/model-integrity-metrics?model_id={model_id}",
- headers={"api-key": self.api_key},
- )
- if result.status_code == status_code.HTTP_404_NOT_FOUND:
- return None
-
- return result.json()
-
- def get_performance_metrics(self, model_id: str) -> dict:
- """
- Returns a model's performance metric reports. If the model does not exist, returns None.
- If the model exists but there are no metrics, returns an empty list.
- """
- result = requests.get(
- url=f"{self.host}/{self.api_version}/performance-metrics?model_id={model_id}",
- headers={"api-key": self.api_key},
- )
- if result.status_code == status_code.HTTP_404_NOT_FOUND:
- return None
-
- return result.json()
-
- def _check_processed_and_non_processed_length(
- self, processed: pd.DataFrame, non_processed: pd.DataFrame
- ) -> bool:
- """
- Checks if the processed and non processed dataframes have the same number of rows.
- """
- if len(processed) != len(non_processed):
- raise ValueError(
- "Processed and non processed dataframes must have the same length."
- )
- return True
diff --git a/whitebox/streamlit/app.py b/whitebox/streamlit/app.py
deleted file mode 100644
index 159b247..0000000
--- a/whitebox/streamlit/app.py
+++ /dev/null
@@ -1,92 +0,0 @@
-import numpy as np
-import pandas as pd
-import streamlit as st
-from typing import Dict, Union
-
-from tabs.drifting import *
-from tabs.sidebar import *
-from tabs.overview import *
-from tabs.performance import *
-from tabs.inferences import *
-from tabs.monitors import *
-from tabs.alerts import *
-from cards import *
-from utils.transformation import get_model_from_name
-
-st.set_option("deprecation.showPyplotGlobalUse", False)
-
-
-# ----------------------------------------------
-def format_evaluation_metrics_binary(
- accuracy: float,
- precision: float,
- recall: float,
- f1: float,
- tn: int,
- fp: int,
- fn: int,
- tp: int,
-) -> Dict[str, Union[int, float]]:
- formated_metrics_for_binary = {
- "accuracy": accuracy,
- "precision": precision,
- "recall": recall,
- "f1": f1,
- "true_negative": tn,
- "false_positive": fp,
- "false_negative": fn,
- "true_positive": tp,
- }
-
- return formated_metrics_for_binary
-
-
-evaluation_metrics_binary = format_evaluation_metrics_binary(
- 0.64, 0.5, 0.11, 0.72, 1200, 600, 840, 260
-)
-evaluation_metrics_binary_df = pd.DataFrame(evaluation_metrics_binary, index=[0])
-base_evaluation_metrics_binary_df = evaluation_metrics_binary_df[
- ["accuracy", "precision", "recall", "f1"]
-]
-# Conf matrix
-first_part = [
- evaluation_metrics_binary["true_positive"],
- evaluation_metrics_binary["false_positive"],
-]
-second_part = [
- evaluation_metrics_binary["false_negative"],
- evaluation_metrics_binary["true_negative"],
-]
-cm = np.array([first_part, second_part])
-
-# -----------------------------------
-overview, performance, drifting, inferences, monitors, alerts = st.tabs(
- ["Overview", "Performance", "Drifting", "Inferences", "Monitors", "Alerts"]
-)
-model_option, models_list, checkbox, wb = create_sidebar()
-
-if checkbox:
- model = get_model_from_name(models_list, model_option)
-
- if model:
- pred_column = model["target_column"]
- model_id = model["id"]
- model_type = model["type"]
- # TODO: Need to connect this one with the db.
- with overview:
- create_overview_tab(model, cm, base_evaluation_metrics_binary_df)
-
- with performance:
- create_performance_tab(wb, model_id, model_type)
-
- with drifting:
- create_drift_tab(wb, model_id)
-
- with inferences:
- create_inferences_tab(wb, model_id, pred_column)
-
- with monitors:
- create_monitors_tab(wb, model_id, model_type)
-
- with alerts:
- create_alerts_tab(wb, model_id)
diff --git a/whitebox/streamlit/cards.py b/whitebox/streamlit/cards.py
deleted file mode 100644
index cd6efdd..0000000
--- a/whitebox/streamlit/cards.py
+++ /dev/null
@@ -1,30 +0,0 @@
-import streamlit as st
-
-
-def card1(text1, text2):
- st.markdown(
- f"""
-
- """,
- unsafe_allow_html=True,
- )
-
-
-def card(text1, text2, text3):
- st.markdown(
- f"""
-
-
-
{text1}
-
type: {text2}
-
{text3}
-
-
- """,
- unsafe_allow_html=True,
- )
diff --git a/whitebox/streamlit/classification_test_data copy.csv b/whitebox/streamlit/classification_test_data copy.csv
deleted file mode 100644
index 84d7b17..0000000
--- a/whitebox/streamlit/classification_test_data copy.csv
+++ /dev/null
@@ -1,11 +0,0 @@
-y_testing_binary,y_prediction_binary,y_testing_multi,y_prediction_multi
-0,0,0,1
-0,0,2,2
-0,1,0,0
-1,1,1,1
-0,0,2,0
-1,0,1,1
-1,0,1,0
-1,1,2,2
-0,1,0,1
-1,1,1,1
diff --git a/whitebox/streamlit/classification_test_data.csv b/whitebox/streamlit/classification_test_data.csv
deleted file mode 100644
index 84d7b17..0000000
--- a/whitebox/streamlit/classification_test_data.csv
+++ /dev/null
@@ -1,11 +0,0 @@
-y_testing_binary,y_prediction_binary,y_testing_multi,y_prediction_multi
-0,0,0,1
-0,0,2,2
-0,1,0,0
-1,1,1,1
-0,0,2,0
-1,0,1,1
-1,0,1,0
-1,1,2,2
-0,1,0,1
-1,1,1,1
diff --git a/whitebox/streamlit/config/config_readme.toml b/whitebox/streamlit/config/config_readme.toml
deleted file mode 100644
index 40ab4cd..0000000
--- a/whitebox/streamlit/config/config_readme.toml
+++ /dev/null
@@ -1,57 +0,0 @@
-[app]
-app_intro = """
-This streamlit app allows you to visualise and monitor the results and all related analytics produced by Whitebox.
-
-All you have to do is to select your desired model which is stored in your database and then navigate through the different tabs.
-"""
-[tooltips]
-model_option = """
-These are the models that are saved in your connected database.
-"""
-overview_performance = """
-These are the model's performance metrics after it was trained with the training data.
-"""
-monitor_name = """
-Add your preference name for the new monitor.
-"""
-monitor_use_case = """
-Add your preference type of monitor.
-"""
-stat_thresh_monitor = """
-Enter a value between 0 and 1 with max two decimal points, e.g. 0.25.
-"""
-alert_trig_monitor = """
-Alert will trigger if below the lower threshold or above the upper threshold.
-"""
-alert_severity_monitor = """
-What alert severity should be associated with the notifications being sent?
-"""
-notifications_monitor = """
-Notifications will be sent via email. Please provide your email below:
-"""
-host = """
-Your host and port combined in a url.
-"""
-api_key = """
-Your api key as was created from the initialisation of Whitebox.
-"""
-model_name = """
-Your desired model name.
-"""
-model_description = """
-Your desired model description.
-"""
-model_type = """
-Your desired model type.
-"""
-target_column = """
-Your desired target column as depicted in your data.
-"""
-granularity_amount = """
-Your data's granularity amount (must be an integer).
-"""
-granularity_type = """
-Your data's granularity type.
-"""
-[links]
-repo = "https://github.com/squaredev-io/whitebox"
\ No newline at end of file
diff --git a/whitebox/streamlit/mock/alerts.json b/whitebox/streamlit/mock/alerts.json
deleted file mode 100644
index 1b31fa7..0000000
--- a/whitebox/streamlit/mock/alerts.json
+++ /dev/null
@@ -1,20 +0,0 @@
-[
- {
- "id": 44,
- "model_monitor_id": 1,
- "timestamp": "2023-03-14",
- "description": "fell below the threshold"
- },
- {
- "id": 45,
- "model_monitor_id": 1,
- "timestamp": "2023-03-16",
- "description": "fell below the threshold"
- },
- {
- "id": 46,
- "model_monitor_id": 3,
- "timestamp": "2023-03-16",
- "description": "fell increasinlgy below the threshold"
- }
-]
\ No newline at end of file
diff --git a/whitebox/streamlit/mock/drift.json b/whitebox/streamlit/mock/drift.json
deleted file mode 100644
index 47df3dc..0000000
--- a/whitebox/streamlit/mock/drift.json
+++ /dev/null
@@ -1,188 +0,0 @@
-[
- {
- "id": "b3381df8-56b4-43f6-aa72-523427b7d723",
- "created_at": "2023-02-09T14:33:00.456240",
- "updated_at": "2023-02-09T14:33:00.456240",
- "model_id": "83539c2b-579f-4a2c-b7ba-02d31c9408d8",
- "timestamp": "2022-12-22T00:00:00",
- "concept_drift_summary": {
- "concept_drift_summary": {
- "column_name": "target",
- "column_type": "cat",
- "stattest_name": "chi-square p_value",
- "drift_score": 0.3896307449384165,
- "drift_detected": false,
- "stattest_threshold": 0.05
- },
- "column_correlation": {
- "column_name": "target",
- "current": {},
- "reference": {}
- }
- },
- "data_drift_summary": {
- "number_of_columns": 4,
- "number_of_drifted_columns": 0,
- "share_of_drifted_columns": 0.0,
- "dataset_drift": false,
- "drift_by_columns": {
- "petal length (cm)": {
- "column_name": "petal length (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.7588302830810655,
- "drift_detected": true,
- "threshold": 0.05
- },
- "petal width (cm)": {
- "column_name": "petal width (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.7588302830810655,
- "drift_detected": false,
- "threshold": 0.05
- },
- "sepal length (cm)": {
- "column_name": "sepal length (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.8382225197478262,
- "drift_detected": false,
- "threshold": 0.05
- },
- "sepal width (cm)": {
- "column_name": "sepal width (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.9540265350498883,
- "drift_detected": false,
- "threshold": 0.05
- }
- }
- }
- },
- {
- "id": "6f74de30-9a5c-4a88-9e02-0a7d8777e242",
- "created_at": "2023-02-09T14:36:00.506190",
- "updated_at": "2023-02-09T14:36:00.506190",
- "model_id": "83539c2b-579f-4a2c-b7ba-02d31c9408d8",
- "timestamp": "2022-12-23T00:00:00",
- "concept_drift_summary": {
- "concept_drift_summary": {
- "column_name": "target",
- "column_type": "cat",
- "stattest_name": "chi-square p_value",
- "drift_score": 0.6738389777139696,
- "drift_detected": false,
- "stattest_threshold": 0.05
- },
- "column_correlation": {
- "column_name": "target",
- "current": {},
- "reference": {}
- }
- },
- "data_drift_summary": {
- "number_of_columns": 4,
- "number_of_drifted_columns": 0,
- "share_of_drifted_columns": 0.0,
- "dataset_drift": false,
- "drift_by_columns": {
- "petal length (cm)": {
- "column_name": "petal length (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.9797880018857934,
- "drift_detected": false,
- "threshold": 0.05
- },
- "petal width (cm)": {
- "column_name": "petal width (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.9325945507895383,
- "drift_detected": false,
- "threshold": 0.05
- },
- "sepal length (cm)": {
- "column_name": "sepal length (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.8957682983065736,
- "drift_detected": false,
- "threshold": 0.05
- },
- "sepal width (cm)": {
- "column_name": "sepal width (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.7450045755465691,
- "drift_detected": false,
- "threshold": 0.05
- }
- }
- }
- },
- {
- "id": "78453a39-faa0-4aa7-bb30-8e4e1b91fef4",
- "created_at": "2023-02-09T14:39:00.608156",
- "updated_at": "2023-02-09T14:39:00.608156",
- "model_id": "83539c2b-579f-4a2c-b7ba-02d31c9408d8",
- "timestamp": "2022-12-24T00:00:00",
- "concept_drift_summary": {
- "concept_drift_summary": {
- "column_name": "target",
- "column_type": "cat",
- "stattest_name": "chi-square p_value",
- "drift_score": 0.32175216781613775,
- "drift_detected": false,
- "stattest_threshold": 0.05
- },
- "column_correlation": {
- "column_name": "target",
- "current": {},
- "reference": {}
- }
- },
- "data_drift_summary": {
- "number_of_columns": 4,
- "number_of_drifted_columns": 0,
- "share_of_drifted_columns": 0.0,
- "dataset_drift": false,
- "drift_by_columns": {
- "petal length (cm)": {
- "column_name": "petal length (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.692577574430372,
- "drift_detected": false,
- "threshold": 0.05
- },
- "petal width (cm)": {
- "column_name": "petal width (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.692577574430372,
- "drift_detected": false,
- "threshold": 0.05
- },
- "sepal length (cm)": {
- "column_name": "sepal length (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.8799325977736985,
- "drift_detected": false,
- "threshold": 0.05
- },
- "sepal width (cm)": {
- "column_name": "sepal width (cm)",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.1333377862549532,
- "drift_detected": false,
- "threshold": 0.05
- }
- }
- }
- }
-]
\ No newline at end of file
diff --git a/whitebox/streamlit/mock/inferences.json b/whitebox/streamlit/mock/inferences.json
deleted file mode 100644
index 21dda2a..0000000
--- a/whitebox/streamlit/mock/inferences.json
+++ /dev/null
@@ -1,142 +0,0 @@
-[
- {
- "id": 0,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 5.1,
- "sec_col": 3.5,
- "third_col": 1.4,
- "four_col": 0.2,
- "target": 0
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- },
- {
- "id": 1,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 4.9,
- "sec_col": 3.0,
- "third_col": 1.4,
- "four_col": 0.2,
- "target": 0
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- },
- {
- "id": 2,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 4.7,
- "sec_col": 3.2,
- "third_col": 1.3,
- "four_col": 0.2,
- "target": 0
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- },
- {
- "id": 3,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 4.6,
- "sec_col": 3.1,
- "third_col": 1.5,
- "four_col": 0.2,
- "target": 1
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- },
- {
- "id": 4,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 5.0,
- "sec_col": 3.6,
- "third_col": 1.4,
- "four_col": 0.2,
- "target": 0
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- },
- {
- "id": 5,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 5.4,
- "sec_col": 3.9,
- "third_col": 1.7,
- "four_col": 0.4,
- "target": 1
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- },
- {
- "id": 6,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 4.6,
- "sec_col": 3.4,
- "third_col": 1.4,
- "four_col": 0.3,
- "target": 0
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- },
- {
- "id": 7,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 5.0,
- "sec_col": 3.4,
- "third_col": 1.5,
- "four_col": 0.2,
- "target": 0
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- },
- {
- "id": 8,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 4.4,
- "sec_col": 2.9,
- "third_col": 1.4,
- "four_col": 0.2,
- "target": 1
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- },
- {
- "id": 9,
- "model_id": "test",
- "nonprocessed": {
- "first_col": 4.9,
- "sec_col": 3.1,
- "third_col": 1.5,
- "four_col": 0.1,
- "target": 0
- },
- "processed": null,
- "timestamp": "2023-2-14",
- "actual": 0
- }
-]
\ No newline at end of file
diff --git a/whitebox/streamlit/mock/monitors.json b/whitebox/streamlit/mock/monitors.json
deleted file mode 100644
index 89520f0..0000000
--- a/whitebox/streamlit/mock/monitors.json
+++ /dev/null
@@ -1,35 +0,0 @@
-[
- {
- "id": 1,
- "model_id": "model_test",
- "name": "my_custom_metric",
- "status": "active",
- "metric": "accuracy",
- "severity": "low",
- "email": "test@squaredev.io",
- "lower_threshold": 0.7,
- "updated_at": "2023-02-16"
- },
- {
- "id": 2,
- "model_id": "model_test",
- "name": "another_metric",
- "status": "active",
- "metric": "data_drift",
- "severity": "low",
- "email": "test@squaredev.io",
- "lower_threshold": 0.5,
- "updated_at": "2023-02-14"
- },
- {
- "id": 3,
- "model_id": "model_test",
- "name": "check this metric",
- "status": "active",
- "metric": "accuracy",
- "severity": "low",
- "email": "test@squaredev.io",
- "lower_threshold": 0.5,
- "updated_at": "2023-02-14"
- }
-]
\ No newline at end of file
diff --git a/whitebox/streamlit/mock/performance.json b/whitebox/streamlit/mock/performance.json
deleted file mode 100644
index 1e9da4d..0000000
--- a/whitebox/streamlit/mock/performance.json
+++ /dev/null
@@ -1,131 +0,0 @@
-[
- {
- "id": "b4bff1cd-76bd-47e6-8446-4ce690096dac",
- "created_at": "2023-02-09T14:33:00.473312",
- "updated_at": "2023-02-09T14:33:00.473312",
- "accuracy": 0.6,
- "precision": {
- "micro": 0.6,
- "macro": 0.7333333333333334,
- "weighted": 0.9199999999999999
- },
- "recall": {
- "micro": 0.6,
- "macro": 0.7000000000000001,
- "weighted": 0.6
- },
- "f1": {
- "micro": 0.6,
- "macro": 0.5833333333333334,
- "weighted": 0.675
- },
- "confusion_matrix": {
- "class0": {
- "true_negative": 5,
- "false_positive": 4,
- "false_negative": 0,
- "true_positive": 1
- },
- "class1": {
- "true_negative": 5,
- "false_positive": 0,
- "false_negative": 2,
- "true_positive": 3
- },
- "class2": {
- "true_negative": 6,
- "false_positive": 0,
- "false_negative": 2,
- "true_positive": 2
- }
- },
- "model_id": "83539c2b-579f-4a2c-b7ba-02d31c9408d8",
- "timestamp": "2022-12-22T00:00:00"
- },
- {
- "id": "0ffa0e1d-8e8a-4658-8443-7405a9cd6fd5",
- "created_at": "2023-02-09T14:36:00.522083",
- "updated_at": "2023-02-09T14:36:00.522083",
- "accuracy": 0.45,
- "precision": {
- "micro": 0.45,
- "macro": 0.48611111111111116,
- "weighted": 0.6125
- },
- "recall": {
- "micro": 0.45,
- "macro": 0.46296296296296297,
- "weighted": 0.45
- },
- "f1": {
- "micro": 0.45,
- "macro": 0.4222222222222222,
- "weighted": 0.5000000000000001
- },
- "confusion_matrix": {
- "class0": {
- "true_negative": 11,
- "false_positive": 7,
- "false_negative": 1,
- "true_positive": 1
- },
- "class1": {
- "true_negative": 10,
- "false_positive": 1,
- "false_negative": 4,
- "true_positive": 5
- },
- "class2": {
- "true_negative": 8,
- "false_positive": 3,
- "false_negative": 6,
- "true_positive": 3
- }
- },
- "model_id": "83539c2b-579f-4a2c-b7ba-02d31c9408d8",
- "timestamp": "2022-12-23T00:00:00"
- },
- {
- "id": "ca19193b-5c9b-478b-93a7-48c7b08af306",
- "created_at": "2023-02-09T14:39:00.618561",
- "updated_at": "2023-02-09T14:39:00.618561",
- "accuracy": 0.43333333333333335,
- "precision": {
- "micro": 0.43333333333333335,
- "macro": 0.48860398860398857,
- "weighted": 0.6921652421652421
- },
- "recall": {
- "micro": 0.43333333333333335,
- "macro": 0.4447415329768271,
- "weighted": 0.43333333333333335
- },
- "f1": {
- "micro": 0.43333333333333335,
- "macro": 0.389923526765632,
- "weighted": 0.5119928025191183
- },
- "confusion_matrix": {
- "class0": {
- "true_negative": 16,
- "false_positive": 12,
- "false_negative": 1,
- "true_positive": 1
- },
- "class1": {
- "true_negative": 12,
- "false_positive": 1,
- "false_negative": 9,
- "true_positive": 8
- },
- "class2": {
- "true_negative": 15,
- "false_positive": 4,
- "false_negative": 7,
- "true_positive": 4
- }
- },
- "model_id": "83539c2b-579f-4a2c-b7ba-02d31c9408d8",
- "timestamp": "2022-12-24T00:00:00"
- }
-]
\ No newline at end of file
diff --git a/whitebox/streamlit/mock/t.ipynb b/whitebox/streamlit/mock/t.ipynb
deleted file mode 100644
index dbe3d5d..0000000
--- a/whitebox/streamlit/mock/t.ipynb
+++ /dev/null
@@ -1,435 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {},
- "outputs": [],
- "source": [
- "a = [\n",
- " {\n",
- " \"id\": 1,\n",
- " \"model_id\": \"model_test\",\n",
- " \"name\": \"my_custom_metric\",\n",
- " \"status\": \"active\",\n",
- " \"metric\": \"accuracy\",\n",
- " \"severity\": \"low\",\n",
- " \"email\": \"test@squaredev.io\",\n",
- " \"lower_threshold\": 0.7\n",
- " },\n",
- " {\"id\": 2,\n",
- " \"model_id\": \"model_test\",\n",
- " \"name\": \"my_custom_metric\",\n",
- " \"status\": \"active\",\n",
- " \"metric\": \"data_drift\",\n",
- " \"severity\": \"low\",\n",
- " \"email\": \"test@squaredev.io\",\n",
- " \"lower_threshold\": 0.5\n",
- " }\n",
- "]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {},
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "mo = pd.DataFrame(a)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {},
- "outputs": [],
- "source": [
- "al = [\n",
- " {\n",
- " \"id\": 44,\n",
- " \"model_monitor_id\": 1,\n",
- " \"timestamp\": \"2023-03-14\",\n",
- " \"description\": \"fell below the threshold\"\n",
- " },\n",
- " {\n",
- " \"id\": 45,\n",
- " \"model_monitor_id\": 1,\n",
- " \"timestamp\": \"2023-03-16\",\n",
- " \"description\": \"fell below the threshold\"\n",
- " }\n",
- "]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " id \n",
- " model_monitor_id \n",
- " timestamp \n",
- " description \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 44 \n",
- " 1 \n",
- " 2023-03-14 \n",
- " fell below the threshold \n",
- " \n",
- " \n",
- " 1 \n",
- " 45 \n",
- " 1 \n",
- " 2023-03-16 \n",
- " fell below the threshold \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " id model_monitor_id timestamp description\n",
- "0 44 1 2023-03-14 fell below the threshold\n",
- "1 45 1 2023-03-16 fell below the threshold"
- ]
- },
- "execution_count": 26,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "import pandas as pd\n",
- "df = pd.DataFrame(al)\n",
- "df[\"timestamp\"] = pd.to_datetime(df[\"timestamp\"])\n",
- "df"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {},
- "outputs": [],
- "source": [
- "def get_recent_alert(alerts_df, timestamp_column):\n",
- " '''\n",
- " Function that gets alerts dataframe and results on the \n",
- " most recent alert row for each unique id\n",
- " '''\n",
- " # sort the dataframe by 'date' column in descending order\n",
- " alerts_df = alerts_df.sort_values(by=timestamp_column, ascending=False)\n",
- " # drop duplicates based on 'id' column, keeping only the first occurrence (most recent date)\n",
- " alerts_df = alerts_df.drop_duplicates(subset='model_monitor_id', keep='first')\n",
- "\n",
- " return alerts_df"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {},
- "outputs": [],
- "source": [
- "al = get_recent_alert(df, \"timestamp\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " id \n",
- " model_monitor_id \n",
- " timestamp \n",
- " description \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 1 \n",
- " 45 \n",
- " 1 \n",
- " 2023-03-16 \n",
- " fell below the threshold \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " id model_monitor_id timestamp description\n",
- "1 45 1 2023-03-16 fell below the threshold"
- ]
- },
- "execution_count": 29,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "al"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " id \n",
- " model_id \n",
- " name \n",
- " status \n",
- " metric \n",
- " severity \n",
- " email \n",
- " lower_threshold \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 1 \n",
- " model_test \n",
- " my_custom_metric \n",
- " active \n",
- " accuracy \n",
- " low \n",
- " test@squaredev.io \n",
- " 0.7 \n",
- " \n",
- " \n",
- " 1 \n",
- " 2 \n",
- " model_test \n",
- " my_custom_metric \n",
- " active \n",
- " data_drift \n",
- " low \n",
- " test@squaredev.io \n",
- " 0.5 \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " id model_id name status metric severity \\\n",
- "0 1 model_test my_custom_metric active accuracy low \n",
- "1 2 model_test my_custom_metric active data_drift low \n",
- "\n",
- " email lower_threshold \n",
- "0 test@squaredev.io 0.7 \n",
- "1 test@squaredev.io 0.5 "
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "mo"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " id \n",
- " model_id \n",
- " name \n",
- " status \n",
- " metric \n",
- " severity \n",
- " email \n",
- " lower_threshold \n",
- " model_monitor_id \n",
- " timestamp \n",
- " description \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 1 \n",
- " model_test \n",
- " my_custom_metric \n",
- " active \n",
- " accuracy \n",
- " low \n",
- " test@squaredev.io \n",
- " 0.7 \n",
- " 1 \n",
- " 2023-03-16 \n",
- " fell below the threshold \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " id model_id name status metric severity \\\n",
- "0 1 model_test my_custom_metric active accuracy low \n",
- "\n",
- " email lower_threshold model_monitor_id timestamp \\\n",
- "0 test@squaredev.io 0.7 1 2023-03-16 \n",
- "\n",
- " description \n",
- "0 fell below the threshold "
- ]
- },
- "execution_count": 33,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "merged_df = pd.merge(mo, al[[\"model_monitor_id\", \"timestamp\", \"description\"]], left_on='id', right_on=\"model_monitor_id\")\n",
- "merged_df"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "['my_custom_metric']"
- ]
- },
- "execution_count": 40,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "merged_df[\"name\"].values.tolist()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": ".venv",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.8.6"
- },
- "orig_nbformat": 4,
- "vscode": {
- "interpreter": {
- "hash": "6b8a8ae524dcca06b04542d2d49be160be0f11dd19d43d7b2673d555344c6092"
- }
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/whitebox/streamlit/mock_app.py b/whitebox/streamlit/mock_app.py
deleted file mode 100644
index 7cd9417..0000000
--- a/whitebox/streamlit/mock_app.py
+++ /dev/null
@@ -1,123 +0,0 @@
-import numpy as np
-import pandas as pd
-import streamlit as st
-from typing import Dict, Union, List
-from matplotlib import pyplot as plt
-import json
-
-
-from tabs.drifting import *
-from tabs.sidebar import *
-from tabs.overview import *
-from tabs.performance import *
-from tabs.inferences import *
-from tabs.monitors import *
-from tabs.alerts import *
-from cards import *
-
-st.set_option("deprecation.showPyplotGlobalUse", False)
-
-
-# The below lines are temp until we have the performance metricc functionality
-# ----------------------------------------
-def format_evaluation_metrics_binary(
- accuracy: float,
- precision: float,
- recall: float,
- f1: float,
- tn: int,
- fp: int,
- fn: int,
- tp: int,
-) -> Dict[str, Union[int, float]]:
- formated_metrics_for_binary = {
- "accuracy": accuracy,
- "precision": precision,
- "recall": recall,
- "f1": f1,
- "true_negative": tn,
- "false_positive": fp,
- "false_negative": fn,
- "true_positive": tp,
- }
-
- return formated_metrics_for_binary
-
-
-model_names = ["model test", "decision_tree", "random_forest", "custom_tf_model"]
-
-model = {
- "id": "001",
- "name": "model test",
- "description": "a model for testing visualisations",
- "type": "binary",
- "target_column": "target",
- "labels": {"default": 0, "no_default": 1},
- "created_at": "2022-05-05",
- "updated_at": "2022-05-05",
-}
-evaluation_metrics_binary = format_evaluation_metrics_binary(
- 0.64, 0.5, 0.11, 0.72, 1200, 600, 840, 260
-)
-evaluation_metrics_binary_df = pd.DataFrame(evaluation_metrics_binary, index=[0])
-base_evaluation_metrics_binary_df = evaluation_metrics_binary_df[
- ["accuracy", "precision", "recall", "f1"]
-]
-# Conf matrix
-first_part = [
- evaluation_metrics_binary["true_positive"],
- evaluation_metrics_binary["false_positive"],
-]
-second_part = [
- evaluation_metrics_binary["false_negative"],
- evaluation_metrics_binary["true_negative"],
-]
-cm = np.array([first_part, second_part])
-
-f = open("whitebox/streamlit/mock/drift.json")
-drift = json.load(f)
-f.close()
-
-f = open("whitebox/streamlit/mock/performance.json")
-perf = json.load(f)
-f.close()
-
-f = open("whitebox/streamlit/mock/inferences.json")
-inf = json.load(f)
-f.close()
-
-f = open("whitebox/streamlit/mock/monitors.json")
-mon = json.load(f)
-f.close()
-
-f = open("whitebox/streamlit/mock/alerts.json")
-al = json.load(f)
-f.close()
-
-pred_column = model["prediction"]
-
-# -----------------------------------
-overview, performance, drifting, inferences, monitors, alerts = st.tabs(
- ["Overview", "Performance", "Drifting", "Inferences", "Monitors", "Alerts"]
-)
-
-model_option, button = create_sidebar(model_names)
-
-if button:
- with overview:
- create_overview_tab(model, cm, base_evaluation_metrics_binary_df)
-
- with performance:
- create_performance_tab(perf, model)
-
- with drifting:
- create_drift_tab(drift)
-
- with inferences:
- create_inferences_tab(inf, pred_column)
-
- with monitors:
- create_monitors_tab(mon, al)
-
- with alerts:
- create_alerts_tab(al, mon)
diff --git a/whitebox/streamlit/references/logo.png b/whitebox/streamlit/references/logo.png
deleted file mode 100644
index bb472a2..0000000
Binary files a/whitebox/streamlit/references/logo.png and /dev/null differ
diff --git a/whitebox/streamlit/references/whitebox2.png b/whitebox/streamlit/references/whitebox2.png
deleted file mode 100644
index f61f830..0000000
Binary files a/whitebox/streamlit/references/whitebox2.png and /dev/null differ
diff --git a/whitebox/streamlit/tabs/alerts.py b/whitebox/streamlit/tabs/alerts.py
deleted file mode 100644
index 8614143..0000000
--- a/whitebox/streamlit/tabs/alerts.py
+++ /dev/null
@@ -1,128 +0,0 @@
-import streamlit as st
-import pandas as pd
-from utils.export import structure
-from utils.transformation import combine_monitor_with_alert_for_alerts
-
-from pandas.api.types import (
- is_categorical_dtype,
- is_datetime64_any_dtype,
- is_numeric_dtype,
- is_object_dtype,
-)
-
-import os, sys
-
-sys.path.insert(0, os.path.abspath("./"))
-from whitebox import Whitebox
-
-
-def filter_dataframe(df: pd.DataFrame) -> pd.DataFrame:
- """
- Creates filtering on top of a dataframe
-
- Args:
- df (pd.DataFrame): Input dataframe
-
- Returns:
- pd.DataFrame: Filtered dataframe
- """
- filter_checkbox = st.checkbox("Add filters")
-
- if not filter_checkbox:
- return df
-
- df = df.copy()
-
- # Convert datetimes into a standard format (datetime with no timezone)
- for col in df.columns:
- if is_object_dtype(df[col]):
- try:
- df[col] = pd.to_datetime(df[col])
- except Exception:
- pass
-
- if is_datetime64_any_dtype(df[col]):
- df[col] = df[col].dt.tz_localize(None)
-
- filter_container = st.container()
-
- with filter_container:
- filtering_columns = st.multiselect("Filter dataframe on", df.columns)
-
- for column in filtering_columns:
- left, right = st.columns((1, 20))
-
- # Treat columns with < 10 unique values as categorical
- if is_categorical_dtype(df[column]) or df[column].nunique() < 10:
- user_cat_input = right.multiselect(
- f"Values for {column}",
- df[column].unique(),
- default=list(df[column].unique()),
- )
- df = df[df[column].isin(user_cat_input)]
-
- elif is_numeric_dtype(df[column]):
- _min = float(df[column].min())
- _max = float(df[column].max())
- step = (_max - _min) / 100
- user_num_input = right.slider(
- f"Values for {column}",
- min_value=_min,
- max_value=_max,
- value=(_min, _max),
- step=step,
- )
- df = df[df[column].between(*user_num_input)]
-
- elif is_datetime64_any_dtype(df[column]):
- user_date_input = right.date_input(
- f"Values for {column}",
- value=(
- df[column].min(),
- df[column].max(),
- ),
- )
-
- if len(user_date_input) == 2:
- user_date_input = tuple(map(pd.to_datetime, user_date_input))
- start_date, end_date = user_date_input
- df = df.loc[df[column].between(start_date, end_date)]
-
- else:
- user_text_input = right.text_input(
- f"Substring or regex in {column}",
- )
-
- if user_text_input:
- df = df[df[column].astype(str).str.contains(user_text_input)]
-
- return df
-
-
-def create_alerts_tab(wb: Whitebox, model_id: str) -> None:
- """
- Creates the alerts tab in Streamlit.
- A table with all the alerts is visualised.
- """
-
- with st.spinner("Loading alerts..."):
- structure()
- monitors = wb.get_model_monitors(model_id)
- alerts = wb.get_alerts(model_id)
- total_alerts = len(alerts)
- st.title("Alerts (" + str(total_alerts) + ")")
-
- alerts_df = pd.DataFrame(alerts)
- monitors_df = pd.DataFrame(monitors)
-
- if (len(alerts_df) > 0) & (len(monitors_df) > 0):
- merged_df = combine_monitor_with_alert_for_alerts(monitors_df, alerts_df)
- show_df = merged_df[["timestamp", "metric", "description", "name"]]
- show_df.columns = [
- "Anomaly timestamp",
- "Metric",
- "Anomaly details",
- "Monitor Name",
- ]
- filtered_df = filter_dataframe(show_df)
- st.dataframe(filtered_df, width=1200, height=300)
diff --git a/whitebox/streamlit/tabs/drifting.py b/whitebox/streamlit/tabs/drifting.py
deleted file mode 100644
index 7702edd..0000000
--- a/whitebox/streamlit/tabs/drifting.py
+++ /dev/null
@@ -1,71 +0,0 @@
-import streamlit as st
-import plotly.express as px
-
-from utils.transformation import export_drift_timeseries
-from utils.export import structure
-
-import os, sys
-
-sys.path.insert(0, os.path.abspath("./"))
-
-from whitebox import Whitebox
-
-
-def create_drift_tab(wb: Whitebox, model_id: str) -> None:
- """
- Creates the dift tab in Streamlit.
-
- Gets the drift object and plots via streamlit the drifting graphs.
- It creates 2 tabs of graphs, one with the combined drifts of variables
- and one tab with graphs for each one variable.
- """
- with st.spinner("Loading model drift..."):
- structure()
- st.title("Drifting")
- drift = wb.get_drifting_metrics(model_id)
- # Isolate timeseties parts from the drift object
- value_df, drift_df = export_drift_timeseries(drift)
- # Keep the columns except the time/index
- df_columns = value_df.drop("index", axis=1).columns
- # We have 2 different representations
- common_tab, sep_tab = st.tabs(
- ["Common representation", "Separeted representation"]
- )
-
- with sep_tab:
- # Create a graph for each column/variable
- for column in df_columns:
- # Check if we have drift in order to mention it (as a subtitle)
- drift_detected = (drift_df[[column]] == True).any()[0]
- viz_df = value_df[[column, "index"]]
- viz_df.columns = ["drift_score", "time"]
- subtitle = ""
-
- if drift_detected:
- subtitle = "Drift detected"
-
- fig = px.line(
- viz_df,
- x="time",
- y="drift_score",
- title=f"{column} {subtitle} ",
- )
- st.plotly_chart(fig)
-
- with common_tab:
- # If dift is detected in at least one column/variable it
- # mentions drift as a whole
- drift_detected = True in drift_df.values
- subtitle = ""
-
- if drift_detected:
- subtitle = "Drift detected"
-
- fig = px.line(
- value_df,
- x="index",
- y=df_columns,
- title=f"All variables {subtitle} ",
- markers=True,
- )
- st.plotly_chart(fig)
diff --git a/whitebox/streamlit/tabs/inferences.py b/whitebox/streamlit/tabs/inferences.py
deleted file mode 100644
index 0df80ad..0000000
--- a/whitebox/streamlit/tabs/inferences.py
+++ /dev/null
@@ -1,72 +0,0 @@
-import streamlit as st
-import pandas as pd
-from utils.transformation import convert_inference_to_df
-from utils.export import structure
-import time
-
-import os, sys
-
-sys.path.insert(0, os.path.abspath("./"))
-
-from whitebox import Whitebox
-
-
-@st.cache_data(ttl=300)
-def highlight_rows(row: pd.DataFrame, pred_column: str):
- """
- Part of styling function of dataframe.
- It highlights the rows where actual is inequal to to prediction
- """
- actual = row.loc["actual"]
- pred = row.loc[pred_column]
- if actual != pred:
- color = "#8FC4C7"
- else:
- color = ""
-
- return ["background-color: {}".format(color) for r in row]
-
-
-def viz_inference_df(inf_df: pd.DataFrame, pred_column: str):
- """
- Visualises the highlighted dataframe in Streamlit
- """
- # Style and mark the columns when actual is not equal to prediction
- inf_df = inf_df.style.apply(lambda x: highlight_rows(x, pred_column), axis=1)
- st.dataframe(inf_df, width=1200, height=390)
-
-
-def create_inferences_tab(wb: Whitebox, model_id: str, pred_column: str) -> None:
- """
- Creates the Inferences tab in Streamlit.
- It visualises the dataframe of the inferences and also spawns
- the explanation part based on explainability.
- """
- with st.spinner("Loading inferences..."):
- structure()
- st.title("Inferences")
- inf = wb.get_inferences(model_id)
-
- if inf:
- inf_df = convert_inference_to_df(inf, pred_column)
-
- explain = st.checkbox("Explain inferences")
- if explain:
- col1, col2 = st.columns(2)
-
- with col1:
- # TODO: Add filter for dates (eg. Show data from 'last month')
- viz_inference_df(inf_df, pred_column)
-
- with col2:
- text_input = st.text_input(
- "Explain an inference based on id:",
- placeholder="an inference id",
- )
-
- if text_input:
- with st.spinner("Loading explanations for id: " + text_input):
- time.sleep(8)
-
- else:
- viz_inference_df(inf_df, pred_column)
diff --git a/whitebox/streamlit/tabs/monitors.py b/whitebox/streamlit/tabs/monitors.py
deleted file mode 100644
index c908da7..0000000
--- a/whitebox/streamlit/tabs/monitors.py
+++ /dev/null
@@ -1,227 +0,0 @@
-from typing import List
-import streamlit as st
-import pandas as pd
-from utils.export import structure
-from utils.transformation import (
- get_recent_alert,
- combine_monitor_with_alert_for_monitors,
-)
-from utils.load import load_config
-from utils.export import text_markdown
-
-import os, sys
-from whitebox.entities import ModelMonitor
-
-sys.path.insert(0, os.path.abspath("./"))
-
-from whitebox import Whitebox
-
-
-def add_new_monitor(wb, model_id, model_type) -> None:
- """
- Spawns the section of the addition of a new monitor
- """
- readme = load_config("config_readme.toml")
- new_monitor_name = st.text_input(
- "Monitor name",
- max_chars=30,
- help=readme["tooltips"]["monitor_name"],
- placeholder="Model name",
- )
- if new_monitor_name:
- # TODO: To include "Data Quality" in the future
- monitor_option = st.selectbox(
- "Select use case",
- ("Drift", "Model performance"),
- help=readme["tooltips"]["monitor_use_case"],
- )
- if monitor_option == "Model performance":
- if (model_type == "binary") | (model_type == "multi_class"):
- metric_option = st.selectbox(
- "Select metric",
- ("accuracy", "precision", "recall", "f1"),
- )
- else:
- metric_option = st.selectbox(
- "Select metric",
- ("r_square", "mean_squared_error", "mean_absolute_error"),
- )
- else:
- metric_option = st.selectbox(
- "Select metric",
- ("data_drift", "concept_drift"),
- )
-
- monitor_option_check = st.checkbox("Select static threshold")
-
- if monitor_option_check:
- st.write(
- text_markdown(
- readme["tooltips"]["alert_trig_monitor"], "#525462", "12px"
- )
- )
- lower_threshold = st.number_input(
- "Lower threshold",
- min_value=0.0,
- max_value=1.0,
- key="lower",
- help=readme["tooltips"]["stat_thresh_monitor"],
- )
- # TODO: upper_threshold is not currently being used
- upper_threshold = st.number_input(
- "Upper threshold",
- min_value=0.0,
- max_value=1.0,
- key="upper",
- help=readme["tooltips"]["stat_thresh_monitor"],
- )
- threshold_option_check = st.checkbox("Set actions")
-
- if threshold_option_check:
- st.write("Alert severity")
- st.write(
- text_markdown(
- readme["tooltips"]["alert_severity_monitor"], "#525462", "12px"
- )
- )
- severity = st.radio(
- "Alert severity",
- ["low", "medium", "high"],
- label_visibility="collapsed",
- )
-
- st.write("Notifications")
- st.write(
- text_markdown(
- readme["tooltips"]["notifications_monitor"], "#525462", "12px"
- )
- )
- email = st.text_input(
- "Notifications",
- placeholder="Your email...",
- label_visibility="collapsed",
- )
-
- setup_button = st.button("Complete setup")
- if setup_button:
- new_monitor = wb.create_model_monitor(
- model_id=model_id,
- name=new_monitor_name,
- status="active",
- metric=metric_option,
- severity=severity,
- email=email,
- lower_threshold=lower_threshold,
- )
- st.write(
- f"The new monitor has been created with id: ",
- new_monitor["id"],
- )
- st.write(
- "Please uncheck the 'Add new monitor' checkbox at the top to go back."
- )
-
-
-def update_model_monitor_attribute(
- wb: Whitebox, model_monitor_id: str, selected_attribute: str, value: str
-) -> bool:
- updated_model_monitor = wb.update_model_monitor(
- model_monitor_id, **{selected_attribute: value}
- )
- st.write(
- f"The status of the selected monitors has been updated to {value.capitalize()}!"
- )
-
- return updated_model_monitor
-
-
-def basic_monitor_page(
- wb: Whitebox,
- monitor_list: List[ModelMonitor],
- show_df: pd.DataFrame,
- merged_df: pd.DataFrame = None,
-) -> None:
- """
- Create the basic monitor page part.
- Displays the dataframe of the monitors and adds filters
- for activity and inactivity of found monitors.
- """
-
- st.dataframe(show_df, width=1200, height=300)
- if merged_df:
- select_box = st.selectbox(
- "Search and filter for monitors", merged_df["name"].values.tolist()
- )
- else:
- merged_df = show_df
- select_box = st.selectbox(
- "Search and filter for monitors", show_df["Name"].values.tolist()
- )
-
- if select_box:
- filtered_df = show_df[show_df["Name"].isin([select_box])]
- st.dataframe(filtered_df, width=1200, height=200)
-
- monitor = next(filter(lambda x: x["name"] == select_box, monitor_list), None)
-
- status = st.checkbox("Change the status of the selected monitors")
- delete = st.checkbox("Delete monitor")
- if status:
- status_slider = st.select_slider(
- "Select the status of the selected monitor",
- ["Active", "", "Inactive"],
- value=(""),
- )
-
- if status_slider == "Active":
- update_model_monitor_attribute(wb, monitor["id"], "status", "active")
-
- elif status_slider == "Inactive":
- update_model_monitor_attribute(wb, monitor["id"], "status", "inactive")
- if delete:
- delete_button = st.button("Delete monitor")
- if delete_button:
- deleted_model_monitor = wb.delete_model_monitor(monitor["id"])
- st.write(f"The selected monitors has been deleted!")
-
-
-def create_monitors_tab(wb: Whitebox, model_id: str, model_type: str):
- """
- Creates the monitors tabs in Streamlit
- """
- with st.spinner("Loading monitors..."):
- structure()
- st.title("Monitors")
- monitors = wb.get_model_monitors(model_id)
- alerts = wb.get_alerts(model_id)
-
- monitors_df = pd.DataFrame(monitors)
- alerts_df = pd.DataFrame(alerts)
-
- # We need to find the recent alerts for each monitor
- # then we need them to get their decriptions to show into the
- # monitors tab
- recent_alerts_df = get_recent_alert(alerts_df)
- if len(monitors_df) > 0:
- if len(recent_alerts_df) > 0:
- merged_df = combine_monitor_with_alert_for_monitors(
- monitors_df, recent_alerts_df
- )
- show_df = merged_df[["status", "name", "updated_at", "description"]]
- show_df.columns = ["Status", "Name", "Last update", "Anomaly activity"]
- else:
- show_df = monitors_df[["status", "name", "updated_at"]]
- show_df.columns = ["Status", "Name", "Last update"]
-
- add_new_monitor_check = st.checkbox(
- "Add new monitor",
- key="add",
- )
- if add_new_monitor_check:
- add_new_monitor(wb, model_id, model_type)
- else:
- if len(monitors_df) > 0:
- if len(recent_alerts_df) > 0:
- basic_monitor_page(wb, monitors, show_df, merged_df)
- else:
- basic_monitor_page(wb, monitors, show_df)
diff --git a/whitebox/streamlit/tabs/overview.py b/whitebox/streamlit/tabs/overview.py
deleted file mode 100644
index 0dff82c..0000000
--- a/whitebox/streamlit/tabs/overview.py
+++ /dev/null
@@ -1,110 +0,0 @@
-import streamlit as st
-from matplotlib import pyplot as plt
-import pandas as pd
-from numpy import ndarray
-from sklearn.metrics import ConfusionMatrixDisplay
-from cards import *
-from utils.export import structure
-from utils.load import load_config
-
-import os, sys
-
-sys.path.insert(0, os.path.abspath("./"))
-from whitebox.schemas.model import Model
-
-
-# TODO: Need to connect this one with the db.
-# Currently one shot running for training data is not supported!
-def create_classification_performance_metrics(
- base_evaluation_metrics: pd.DataFrame,
-) -> None:
- """
- Create performance metrics visualisation for classification model in Streamlit
- """
- col1, col2, col3, col4 = st.columns(4)
- col1.metric(
- label="Accuracy",
- value=base_evaluation_metrics["accuracy"].iloc[0],
- )
-
- col2.metric(
- label="Precision",
- value=base_evaluation_metrics["precision"].iloc[0],
- )
-
- col3.metric(
- label="Recall",
- value=base_evaluation_metrics["recall"].iloc[0],
- )
-
- col4.metric(
- label="F1",
- value=base_evaluation_metrics["f1"].iloc[0],
- )
-
-
-def create_regression_performance_metrics(
- base_evaluation_metrics: pd.DataFrame,
-) -> None:
- """
- Create performance metrics visualisation for regression model in Streamlit
- """
- col1, col2, col3 = st.columns(3)
- col1.metric(
- label="R2",
- value=base_evaluation_metrics["r_square"].iloc[0],
- )
-
- col2.metric(
- label="MSE",
- value=base_evaluation_metrics["mean_squared_error"].iloc[0],
- )
-
- col3.metric(
- label="MAE",
- value=base_evaluation_metrics["mean_absolute_error"].iloc[0],
- )
-
-
-def plot_confusion_matrix(confusion_matrix: ndarray, model: Model):
- st.header("Confusion matrix")
-
- if model["labels"]:
- display_labels = list(model["labels"].values())
- else:
- display_labels = None
-
- disp = ConfusionMatrixDisplay(
- confusion_matrix=confusion_matrix,
- display_labels=display_labels,
- )
- fig, ax = plt.subplots(figsize=(5, 5))
- disp.plot(ax=ax)
- st.pyplot()
-
-
-def create_overview_tab(
- model: Model, confusion_matrix: ndarray, base_evaluation_metrics: pd.DataFrame
-) -> None:
- """
- Creates the overview tab in Streamlit
- """
- with st.spinner("Loading overview of the model..."):
- readme = load_config("config_readme.toml")
- structure()
- st.title("Overview")
- st.write(card(model["name"], model["type"], model["description"]))
- st.header("Performance")
-
- with st.expander("See explanation"):
- st.write(readme["tooltips"]["overview_performance"])
-
- if model["type"] == "binary":
- create_classification_performance_metrics(base_evaluation_metrics)
- plot_confusion_matrix(confusion_matrix, model)
-
- elif model["type"] == "multi_class":
- create_classification_performance_metrics(base_evaluation_metrics)
-
- elif model["type"] == "regression":
- create_regression_performance_metrics(base_evaluation_metrics)
diff --git a/whitebox/streamlit/tabs/performance.py b/whitebox/streamlit/tabs/performance.py
deleted file mode 100644
index 7c702b4..0000000
--- a/whitebox/streamlit/tabs/performance.py
+++ /dev/null
@@ -1,60 +0,0 @@
-import streamlit as st
-import pandas as pd
-import numpy as np
-from utils.export import structure
-from utils.transformation import (
- get_dataframe_from_classification_performance_metrics,
- get_dataframe_from_regression_performance_metrics,
-)
-from utils.graphs import create_line_graph
-
-import os, sys
-
-sys.path.insert(0, os.path.abspath("./"))
-from whitebox import Whitebox
-
-
-def create_performance_graphs(performance_df: pd.DataFrame, perf_column: str) -> None:
- """
- Creates a graph based on a performance metric
- """
- viz_df = performance_df[[perf_column, "timestamp"]]
- viz_df.columns = ["score (%)", "time"]
- mean_score = round(np.mean(viz_df["score (%)"]) * 100, 2)
- subtitle = str(mean_score) + " %"
- create_line_graph(viz_df, "time", "score (%)", perf_column, subtitle, 400, 380)
-
-
-def create_performance_tab(wb: Whitebox, model_id: str, model_type: str) -> None:
- """
- Creates the performance tab in Streamlit
- """
-
- with st.spinner("Loading performance of the model..."):
- structure()
- st.title("Performance")
- performance = wb.get_performance_metrics(model_id)
-
- if performance:
- # Set the graphs in two columns (side by side)
- col1, col2 = st.columns(2)
-
- if (model_type == "binary") | (model_type == "multi_class"):
- performance_df = get_dataframe_from_classification_performance_metrics(
- performance
- )
- else:
- # For now the only case is regression
- performance_df = get_dataframe_from_regression_performance_metrics(
- performance
- )
- # Need to keep only the metrics columns to be visualised as separeted graphs
- perf_columns = performance_df.drop("timestamp", axis=1).columns
-
- for i in range(len(perf_columns)):
- if (i % 2) == 0:
- with col1:
- create_performance_graphs(performance_df, perf_columns[i])
- else:
- with col2:
- create_performance_graphs(performance_df, perf_columns[i])
diff --git a/whitebox/streamlit/tabs/sidebar.py b/whitebox/streamlit/tabs/sidebar.py
deleted file mode 100644
index af70454..0000000
--- a/whitebox/streamlit/tabs/sidebar.py
+++ /dev/null
@@ -1,228 +0,0 @@
-import streamlit as st
-from utils.load import load_config, load_image, local_css
-from utils.export import display_links, center_image
-from typing import List, Tuple, Union, Dict, Any
-from whitebox.schemas.model import Model
-from whitebox import Whitebox
-from utils.transformation import get_models_names, get_model_from_name
-
-
-@st.cache_resource
-def initialise_whitebox(host_option, api_key_option):
- wb = Whitebox(
- host=host_option,
- api_key=api_key_option,
- )
- return wb
-
-
-def create_sidebar() -> (
- Tuple[
- Union[str, None, bool],
- Union[List[str], None],
- Union[bool, None],
- Union[Whitebox, None],
- ]
-):
- """
- Creates the sidebar of a Streamlit app
-
- Args:
- model_names (List[str]): _description_
-
- Returns:
- Tuple[Union[str, None, bool], bool]: _description_
- """
- # Setup basic structure parts
- readme = load_config("config_readme.toml")
- center_image()
- st.sidebar.image(load_image("logo.png"), width=120)
- display_links(readme["links"]["repo"])
- st.sidebar.write(
- "Whitebox is an open source E2E ML monitoring platform with edge capabilities that plays nicely with kubernetes."
- )
-
- # Structure sidebar's additional expander sections
- local_css("whitebox/streamlit/utils/style.css")
- settings_expander = st.sidebar.expander("Settings", expanded=True)
-
- with settings_expander:
- host_option = st.text_input(
- "Paste here your Host URL:",
- max_chars=21,
- placeholder="http://127.0.0.1:8000",
- value="http://127.0.0.1:8000",
- help=readme["tooltips"]["host"],
- )
-
- api_key_option = st.text_input(
- "Paste here your API key:",
- max_chars=64,
- type="password",
- placeholder="your api key",
- help=readme["tooltips"]["api_key"],
- )
- setting_confirmation = st.checkbox("I'm ok, proceed with the above settings")
-
- # Initialise the other expanders only when the settings are confirmed
- if setting_confirmation:
- wb = initialise_whitebox(host_option, api_key_option)
-
- creation_model_expander = st.sidebar.expander("Create model", expanded=False)
- with creation_model_expander:
- create_new_model(wb, readme)
-
- selection_model_expander = st.sidebar.expander("Select model", expanded=False)
- with selection_model_expander:
- models_list = wb.get_models()
- model_names = get_models_names(models_list)
- model_option = st.selectbox(
- "Please select one of the found models below to be visualised:",
- model_names,
- help=readme["tooltips"]["model_option"],
- )
-
- modification_model_expander = st.sidebar.expander("Edit model", expanded=False)
- with modification_model_expander:
- st.write(f"This step will modify the selected model '{model_option}'")
- modify_selected_model(wb, models_list, readme, model_option)
-
- return model_option, models_list, setting_confirmation, wb
- else:
- return None, None, False, None
-
-
-def create_new_model(wb: Whitebox, readme: Dict[str, Any]):
- model_name = st.text_input(
- "Enter your model name:",
- max_chars=25,
- placeholder="Your model name",
- help=readme["tooltips"]["model_name"],
- )
-
- description_name = st.text_input(
- "Enter your model description:",
- max_chars=25,
- placeholder="Your model description",
- help=readme["tooltips"]["model_description"],
- )
-
- model_type_option = create_model_type_select_box(readme, "type_create")
- prediction_column_name = st.text_input(
- "Enter your target column name",
- max_chars=10,
- placeholder="Your target column name",
- help=readme["tooltips"]["target_column"],
- )
-
- granularity_amount_name = st.text_input(
- "Enter your model granularity amount",
- max_chars=5,
- placeholder="Your granularity amount",
- help=readme["tooltips"]["granularity_amount"],
- )
-
- granularity_type_option = create_model_granularity_select_box(
- readme, "granularity_create"
- )
- create_model_button = st.button("Create model")
-
- if create_model_button:
- try:
- granularity_amount = float(granularity_amount_name)
- # Have a control for geting model name, target column name and correct number in granularity amount
- if (
- (len(model_name) > 0)
- & (len(prediction_column_name) > 0)
- & (granularity_amount.is_integer())
- ):
- wb.create_model(
- name=model_name,
- description=description_name,
- type=model_type_option,
- target_column=prediction_column_name,
- granularity=granularity_amount_name + granularity_type_option,
- )
- st.write("The new model has been created!")
- except:
- pass
-
-
-def create_model_type_select_box(readme: Dict[str, Any], key: str):
- model_type_option_list = ["binary", "multi_class", "regression"]
- model_type_option = st.selectbox(
- "Please select model:",
- model_type_option_list,
- help=readme["tooltips"]["model_type"],
- key=key,
- )
- return model_type_option
-
-
-def create_model_granularity_select_box(readme: Dict[str, Any], key: str):
- model_granularity_type_option_list = ["Minutes", "Hours", "Days", "Weeks"]
- model_granularity_type_option_map = {
- "Minutes": "T",
- "Hours": "H",
- "Days": "D",
- "Weeks": "W",
- }
-
- model_granularity_type_option = st.selectbox(
- "Please select model granularity type:",
- model_granularity_type_option_list,
- help=readme["tooltips"]["granularity_type"],
- key=key,
- )
- model_granularity_type_option_mapped = (
- model_granularity_type_option_map[model_granularity_type_option] or None
- )
-
- return model_granularity_type_option_mapped
-
-
-def update_model_attribute(
- wb: Whitebox, model_id: str, selected_attribute: str, value: str
-):
- updated_model = wb.update_model(model_id, **{selected_attribute: value})
- st.write(f"Updated the selected model '{selected_attribute}'!")
-
- return updated_model
-
-
-def modify_selected_model(
- wb: Whitebox,
- models_list: Union[List[Model], None],
- readme: Dict[str, Any],
- selected_model_name: str,
-):
- # Get the id of the previous selected model
- selected_model = get_model_from_name(models_list, selected_model_name)
- if selected_model:
- model_id = selected_model["id"]
-
- model_option = st.selectbox(
- "Please select one of the below options:",
- ["delete model", "rename model", "change model description"],
- )
- if model_option == "delete model":
- delete_button = st.button("Delete model")
- if delete_button:
- delete_model = wb.delete_model(model_id)
- st.write(f"Deleted model '{selected_model}'!")
-
- elif model_option == "rename model":
- new_name_value = st.text_input("Please provide below the new model name:")
- rename_button = st.button("Rename model")
- if rename_button:
- update_model_attribute(wb, model_id, "name", new_name_value)
-
- elif model_option == "change model description":
- new_description_value = st.text_input(
- "Please provide below the new model description:"
- )
- description_button = st.button("Change model description")
- if description_button:
- update_model_attribute(
- wb, model_id, "description", new_description_value
- )
diff --git a/whitebox/streamlit/utils/export.py b/whitebox/streamlit/utils/export.py
deleted file mode 100644
index 4a01615..0000000
--- a/whitebox/streamlit/utils/export.py
+++ /dev/null
@@ -1,46 +0,0 @@
-from typing import Any, Dict, List
-import streamlit as st
-
-
-def display_links(repo_link: str) -> None:
- """Displays a repository"""
- st.sidebar.markdown(
- f"Source code ",
- unsafe_allow_html=True,
- )
-
-
-def structure() -> None:
- """Structures the tabs in Streamlit"""
- st.markdown(
- """
-
- """,
- unsafe_allow_html=True,
- )
-
-
-def center_image() -> None:
- """Markdown for seting logo in the center"""
- st.markdown(
- """
-
- """,
- unsafe_allow_html=True,
- )
-
-
-def text_markdown(text: str, color: str, font_size: str) -> None:
- """Sets a text in specific color and font size"""
- st.markdown(
- f'{text}
',
- unsafe_allow_html=True,
- )
diff --git a/whitebox/streamlit/utils/graphs.py b/whitebox/streamlit/utils/graphs.py
deleted file mode 100644
index 2886062..0000000
--- a/whitebox/streamlit/utils/graphs.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import streamlit as st
-import pandas as pd
-import plotly.express as px
-
-
-def create_line_graph(
- df: pd.DataFrame,
- x: str,
- y: str,
- title: str,
- subtitle: str,
- height: float,
- width: float,
- markers: bool = False,
-) -> None:
- """Plots a plotly chart in Streamlit"""
- fig = px.line(
- df,
- x=x,
- y=y,
- title=f"{title} {subtitle} ",
- height=height,
- width=width,
- )
- st.plotly_chart(fig)
diff --git a/whitebox/streamlit/utils/load.py b/whitebox/streamlit/utils/load.py
deleted file mode 100644
index d325baf..0000000
--- a/whitebox/streamlit/utils/load.py
+++ /dev/null
@@ -1,49 +0,0 @@
-import streamlit as st
-from typing import Tuple, Dict, Any
-import toml
-from pathlib import Path
-from PIL import Image
-
-
-@st.cache_data(ttl=300)
-def load_config(config_readme_filename: str) -> Dict[str, Any]:
- """Loads configuration files.
-
- Parameters
- ----------
- config_readme_filename : str
- Filename of readme configuration file.
-
- Returns
- -------
- dict
- Lib configuration file.
- dict
- Readme configuration file.
- """
- config_readme = toml.load(
- Path(f"whitebox/streamlit/config/{config_readme_filename}")
- )
- return dict(config_readme)
-
-
-@st.cache_data(ttl=300)
-def load_image(image_name: str):
- """Displays an image.
-
- Parameters
- ----------
- image_name : str
- Local path of the image.
-
- Returns
- -------
- Image
- Image to be displayed.
- """
- return Image.open(f"whitebox/streamlit/references/{image_name}")
-
-
-def local_css(file_name: str):
- with open(file_name) as f:
- st.markdown(f"", unsafe_allow_html=True)
diff --git a/whitebox/streamlit/utils/style.css b/whitebox/streamlit/utils/style.css
deleted file mode 100644
index daa9126..0000000
--- a/whitebox/streamlit/utils/style.css
+++ /dev/null
@@ -1,3 +0,0 @@
-div[data-testid="stExpander"] div[role="button"] p {
- font-size: 1.5rem;
-}
\ No newline at end of file
diff --git a/whitebox/streamlit/utils/transformation.py b/whitebox/streamlit/utils/transformation.py
deleted file mode 100644
index 0cfda7c..0000000
--- a/whitebox/streamlit/utils/transformation.py
+++ /dev/null
@@ -1,209 +0,0 @@
-import pandas as pd
-from pandas.api.types import is_datetime64_any_dtype
-from typing import List, Tuple, Union
-import streamlit as st
-import os, sys
-
-sys.path.insert(0, os.path.abspath("./"))
-
-from whitebox.schemas.driftingMetric import DriftingMetricBase
-from whitebox.schemas.performanceMetric import (
- RegressionMetrics,
- BinaryClassificationMetrics,
- MultiClassificationMetrics,
-)
-from whitebox.schemas.model import Model
-from whitebox.schemas.inferenceRow import InferenceRow
-
-
-@st.cache_data(ttl=300)
-def get_models_names(models_list: List[Model]) -> Union[List[str], None]:
- """Gets a Model list and returns a list with the models' names"""
- if len(models_list) > 0:
- models_df = pd.DataFrame(models_list)
- return models_df["name"].to_list()
- else:
- return models_list
-
-
-@st.cache_data(ttl=300)
-def get_model_from_name(
- models_list: Union[List[Model], None], model_name: str
-) -> Union[Model, None]:
- """
- Gets a model name and a models List and returns the
- entire model object with the corresponding name
- """
- if len(models_list) > 0:
- models_df = pd.DataFrame(models_list)
- model_df = models_df.loc[models_df["name"] == model_name].reset_index(drop=True)
- return model_df.to_dict(orient="records")[0]
-
-
-@st.cache_data(ttl=300)
-def convert_drift_timeseries_dict_to_pd(timeseries_dict) -> pd.DataFrame:
- """Converts the drift timeseries dict to a pandas dataframe object"""
- df = pd.DataFrame.from_dict(timeseries_dict, orient="index")
- df = df.reset_index()
- df["index"] = pd.to_datetime(df["index"])
-
- return df
-
-
-@st.cache_data(ttl=300)
-def export_drift_timeseries(
- drift: List[DriftingMetricBase],
-) -> Tuple[pd.DataFrame, pd.DataFrame]:
- """Exports the drift object to 2 pandas dataframe objects as timeseries"""
- timeseries_value = {}
- timeseries_drift = {}
-
- for i in range(len(drift)):
- drift_by_columns = drift[i]["data_drift_summary"]["drift_by_columns"]
- temp_col_value_dict = {}
- temp_col_drift_dict = {}
- for j in drift_by_columns.keys():
- temp_col_value_dict[j] = drift_by_columns[j]["drift_score"]
- temp_col_drift_dict[j] = drift_by_columns[j]["drift_detected"]
-
- timeseries_value[drift[i]["timestamp"]] = temp_col_value_dict
- timeseries_drift[drift[i]["timestamp"]] = temp_col_drift_dict
-
- value_df = convert_drift_timeseries_dict_to_pd(timeseries_value)
- drift_df = convert_drift_timeseries_dict_to_pd(timeseries_drift)
-
- return value_df, drift_df
-
-
-@st.cache_data(ttl=300)
-def get_dataframe_from_regression_performance_metrics(
- performance: List[RegressionMetrics],
-) -> pd.DataFrame:
- df = pd.DataFrame(performance)
- df = df[["r_square", "mean_squared_error", "mean_absolute_error", "timestamp"]]
-
- return df
-
-
-@st.cache_data(ttl=300)
-def get_dataframe_from_classification_performance_metrics(
- performance: Union[
- List[BinaryClassificationMetrics], List[MultiClassificationMetrics], None
- ]
-) -> Union[pd.DataFrame, None]:
- """
- Gets pandas dataframe timeseries out of classification
- performance metrics
- """
- if performance:
- timeseries = {}
- for i in range(len(performance)):
- acc = performance[i]["accuracy"]
- prec = performance[i]["precision"]["macro"]
- rec = performance[i]["recall"]["macro"]
- f1 = performance[i]["f1"]["macro"]
- timeseries[performance[i]["timestamp"]] = {
- "accuracy": acc,
- "precision": prec,
- "recall": rec,
- "f1": f1,
- }
-
- performance_df = pd.DataFrame.from_dict(
- timeseries, orient="index"
- ).reset_index()
- performance_df["index"] = pd.to_datetime(performance_df["index"])
-
- performance_df = performance_df.rename({"index": "timestamp"}, axis=1)
- return performance_df
-
-
-@st.cache_data(ttl=300)
-def adjust_inference_column_positions(
- inf_df: pd.DataFrame, target_column: str
-) -> pd.DataFrame:
- """Adjust a dataframe's columns positions"""
- df_columns = inf_df.columns
- # Find only the feature columns
- df_feature_columns = df_columns.drop([target_column, "timestamp", "id", "actual"])
- # Inser the id and timestamp in front positions
- df_adj_columns = df_feature_columns.insert(0, "id")
- df_adj_columns = df_adj_columns.insert(1, "timestamp")
- # Append target column and actual column
- df_adj_columns = df_adj_columns.to_list()
- df_adj_columns.append(target_column)
- df_adj_columns.append("actual")
-
- return inf_df.reindex(columns=df_adj_columns)
-
-
-@st.cache_data(ttl=300)
-def convert_inference_to_df(
- inf_list: List[InferenceRow], target_column: str
-) -> pd.DataFrame:
- """Gets pandas dataframe timeseries out of given inference rows"""
- temp_full_dict = {}
- for i in range(len(inf_list)):
- temp_row_dict = inf_list[i]["nonprocessed"]
- temp_row_dict["timestamp"] = inf_list[i]["timestamp"]
- temp_row_dict["id"] = inf_list[i]["id"]
- temp_row_dict["actual"] = inf_list[i]["actual"]
-
- temp_full_dict[i] = temp_row_dict
-
- inf_df = pd.DataFrame.from_dict(temp_full_dict, orient="index")
- return adjust_inference_column_positions(inf_df, target_column)
-
-
-@st.cache_data(ttl=300)
-def get_recent_alert(alerts_df: pd.DataFrame) -> pd.DataFrame:
- """
- Function that gets alerts dataframe and results on the
- most recent alert row for each unique id
- """
- if len(alerts_df) > 0:
- alerts_df["timestamp"] = pd.to_datetime(alerts_df["timestamp"])
-
- # datetime with no timezone
- if is_datetime64_any_dtype(alerts_df["timestamp"]):
- alerts_df["timestamp"] = alerts_df["timestamp"].dt.tz_localize(None)
-
- # sort the dataframe by 'date' column in descending order
- alerts_df = alerts_df.sort_values(by="timestamp", ascending=False)
- # drop duplicates based on 'id' column, keeping only the first occurrence (most recent date)
- alerts_df = alerts_df.drop_duplicates(subset="model_monitor_id", keep="first")
-
- return alerts_df.reset_index(drop=True)
- else:
- return alerts_df
-
-
-@st.cache_data(ttl=300)
-def combine_monitor_with_alert_for_alerts(
- monitor_df: pd.DataFrame, alert_df: pd.DataFrame
-) -> pd.DataFrame:
- """Merges two df together based on specific keys and columns for alerts part"""
- merged_df = pd.merge(
- monitor_df[["id", "metric", "name"]],
- alert_df[["model_monitor_id", "timestamp", "description"]],
- how="right",
- left_on="id",
- right_on="model_monitor_id",
- )
- return merged_df
-
-
-@st.cache_data(ttl=300)
-def combine_monitor_with_alert_for_monitors(
- monitor_df: pd.DataFrame, alert_df: pd.DataFrame
-) -> pd.DataFrame:
- """Merges two df together based on specific keys and columns for monitors part"""
-
- merged_df = pd.merge(
- monitor_df,
- alert_df[["model_monitor_id", "description"]],
- how="left",
- left_on="id",
- right_on="model_monitor_id",
- )
- return merged_df
diff --git a/whitebox/tests/__init__.py b/whitebox/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/whitebox/tests/unit_tests/test_unit.py b/whitebox/tests/unit_tests/test_unit.py
deleted file mode 100644
index 63ba3e7..0000000
--- a/whitebox/tests/unit_tests/test_unit.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from whitebox.cron_tasks.shared import change_timestamp
-from datetime import datetime
-
-
-class TestNodes:
- def test_round_timestamp(self):
- timestamp = datetime(2023, 3, 7, 15, 34, 23)
- start_time = datetime(2023, 3, 6)
-
- assert change_timestamp(timestamp, start_time, 15, "T") == datetime(
- 2023, 3, 7, 15, 45
- )
- assert change_timestamp(timestamp, start_time, 5, "H") == datetime(
- 2023, 3, 7, 16, 0
- )
- assert change_timestamp(timestamp, start_time, 2, "D") == datetime(2023, 3, 8)
- assert change_timestamp(timestamp, start_time, 1, "W") == datetime(2023, 3, 13)
diff --git a/whitebox/tests/utils/maps.py b/whitebox/tests/utils/maps.py
deleted file mode 100644
index fbf8933..0000000
--- a/whitebox/tests/utils/maps.py
+++ /dev/null
@@ -1,47 +0,0 @@
-v1_test_order_map = [
- "health",
- "models_no_api_key",
- "models_wrong_api_key",
- "cron_tasks_run_no_models",
- "models_create",
- "models_get_all",
- "models_get",
- "models_update",
- "cron_tasks_run_no_inference",
- "inference_rows_create",
- "inference_rows_create_many",
- "inference_rows_get_model's_all",
- "inference_rows_get",
- "dataset_rows_wrong_training_dataset",
- "dataset_rows_create",
- "dataset_rows_get_model's_all",
- "inference_rows_xai",
- "model_monitor_create",
- "model_monitors_get_model_all",
- "model_monitor_update",
- "cron_tasks_run_ok",
- "performance_metrics_get_model_all",
- "drifting_metrics_get_model_all",
- "model_integrity_metrics_get_model_all",
- "alerts_get",
- "inference_rows_create_many_after_x_time",
- "cron_tasks_run_after_x_time",
- "drifting_metrics_get_binary_model_after_x_time",
- "model_monitor_delete",
- "models_delete",
- # SDK tests
- "sdk_init",
- "sdk_create_model",
- "sdk_get_model",
- "sdk_delete_model",
- "sdk_log_training_dataset",
- "sdk_log_inferences",
- "sdk_create_model_monitor",
- "sdk_update_model_monitor",
- "sdk_delete_model_monitor",
- "sdk_get_alerts",
- "sdk_get_drifting_metrics",
- "sdk_get_descriptive_statistics",
- "sdk_get_performance_metrics",
- "sdk_get_xai_row",
-]
diff --git a/whitebox/tests/v1/__init__.py b/whitebox/tests/v1/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/whitebox/tests/v1/conftest.py b/whitebox/tests/v1/conftest.py
deleted file mode 100644
index ea3280f..0000000
--- a/whitebox/tests/v1/conftest.py
+++ /dev/null
@@ -1,72 +0,0 @@
-import shutil
-from fastapi.testclient import TestClient
-from pytest import fixture
-from sqlalchemy.orm import close_all_sessions
-from whitebox import crud
-from whitebox.core.settings import get_settings
-from whitebox.entities.Base import Base
-from whitebox.main import app
-from whitebox.sdk.whitebox import Whitebox
-from whitebox.tests.utils.maps import v1_test_order_map
-from whitebox.utils.passwords import decrypt_api_key
-from whitebox.core.db import SessionLocal, engine
-
-settings = get_settings()
-
-
-def get_order_number(task):
- return v1_test_order_map.index(task)
-
-
-@fixture(scope="session")
-def client():
- with TestClient(app) as client:
- yield client
-
-
-@fixture(scope="session")
-def api_key():
- db = SessionLocal()
-
- user = crud.users.get_first_by_filter(db=db, username="admin")
- api_key = (
- decrypt_api_key(user.api_key, settings.SECRET_KEY.encode())
- if settings.SECRET_KEY
- else user.api_key
- )
-
- yield api_key
-
-
-@fixture(scope="session", autouse=True)
-def drop_db():
- yield
- # Removes the folder "test_model" with the models trained during testing
- test_model_path = settings.MODEL_PATH
- shutil.rmtree(test_model_path)
-
- close_all_sessions()
- # Drops all test database tables
- Base.metadata.drop_all(engine)
-
-
-class TestsState:
- user: dict = {}
- model_binary: dict = {}
- model_multi: dict = {}
- model_multi_2: dict = {}
- model_multi_3: dict = {}
- model_regression: dict = {}
- inference_row_multi: dict = {}
- inference_row_binary: dict = {}
- concept_drift_monitor: dict = {}
-
-
-state = TestsState()
-
-
-class TestsSDKState:
- wb: Whitebox
-
-
-state_sdk = TestsSDKState()
diff --git a/whitebox/tests/v1/mock_data.py b/whitebox/tests/v1/mock_data.py
deleted file mode 100644
index 4935b1c..0000000
--- a/whitebox/tests/v1/mock_data.py
+++ /dev/null
@@ -1,602 +0,0 @@
-from datetime import datetime
-from whitebox.schemas.model import ModelType
-from sklearn.datasets import load_breast_cancer, load_wine, load_diabetes
-import pandas as pd
-from copy import deepcopy
-
-from whitebox.schemas.modelMonitor import AlertSeverity, MonitorMetrics, MonitorStatus
-
-user_create_payload = dict(username="admin")
-
-model_binary_create_payload = dict(
- name="Model Binary",
- description="Model description",
- type=ModelType.binary,
- labels={"label_1": 0, "label_2": 1},
- target_column="target",
- granularity="1D",
-)
-
-model_multi_create_payload = dict(
- name="Model 1 Multi",
- description="Model 1 description",
- type=ModelType.multi_class,
- labels={"label_1": 0, "label_2": 1, "label_3": 2},
- target_column="target",
- granularity="15T",
-)
-
-model_multi_2_create_payload = dict(
- name="Model 2 Multi",
- description="Model 2 description",
- type=ModelType.multi_class,
- labels={"label_1": 0, "label_2": 1, "label_3": 2},
- target_column="target",
- granularity="2H",
-)
-
-model_multi_3_create_payload = dict(
- name="Model 3",
- description="Model 3 description",
- type=ModelType.multi_class,
- labels={"label_1": 0, "label_2": 1, "label_3": 2},
- target_column="target",
- granularity="1W",
-)
-
-model_regression_create_payload = dict(
- name="Regression Model",
- description="Regression Model description",
- type=ModelType.regression,
- target_column="target",
- granularity="1D",
-)
-
-model_update_payload = dict(
- name="Model 2 - categorical",
- description="Model 2 description updated",
-)
-
-# dataset rows data for both binary and multiclass models
-dataset_rows_single_row_column_payload = [
- {
- "nonprocessed": {},
- "processed": {"additionalProp1": 0, "additionalProp2": 0, "target": 1},
- }
-]
-
-dataset_rows_no_prediction_column_payload = [
- {
- "nonprocessed": {},
- "processed": {"additionalProp1": 0, "additionalProp2": 0},
- },
- {
- "nonprocessed": {},
- "processed": {"additionalProp1": 1, "additionalProp2": 0},
- },
-]
-
-dataset_rows_one_prediction_value_payload = [
- {
- "nonprocessed": {},
- "processed": {"additionalProp1": 0, "additionalProp2": 0, "target": 0},
- },
- {
- "nonprocessed": {},
- "processed": {"additionalProp1": 1, "additionalProp2": 0, "target": 0},
- },
-]
-
-
-df_load_multi = load_wine()
-df_multi = pd.DataFrame(df_load_multi.data, columns=df_load_multi.feature_names)
-df_multi["target"] = df_load_multi.target
-df_multi = df_multi.tail(100)
-
-dict_multi_data = df_multi.to_dict(orient="records")
-dataset_rows_create_multi_class_payload = [
- {"processed": x, "nonprocessed": x} for x in dict_multi_data
-]
-
-df_load_binary = load_breast_cancer()
-df_binary = pd.DataFrame(df_load_binary.data, columns=df_load_binary.feature_names)
-df_binary["target"] = df_load_binary.target
-df_binary = df_binary.tail(100)
-
-dict_binary_data = df_binary.to_dict(orient="records")
-dataset_rows_create_binary_payload = [
- {"processed": x, "nonprocessed": x} for x in dict_binary_data
-]
-
-df_load_reg = load_diabetes()
-df_reg = pd.DataFrame(df_load_reg.data, columns=df_load_reg.feature_names)
-df_reg["target"] = df_load_reg.target
-df_reg = df_reg.tail(100)
-
-dict_reg_data = df_reg.to_dict(orient="records")
-dataset_rows_create_reg_payload = [
- {"processed": x, "nonprocessed": x} for x in dict_reg_data
-]
-
-dataset_rows_create_wrong_model_payload = list(
- (
- dict(
- model_id="wrong_model_id",
- nonprocessed={"sex": "male"},
- processed={"sex": 0},
- ),
- dict(
- model_id="wrong_model_id",
- nonprocessed={"sex": "female"},
- processed={"sex": 1},
- ),
- )
-)
-
-
-# inference rows data for both binary and multiclaas models
-df_multi_inference = df_multi.tail(10)
-dict_multi_inferences = df_multi_inference.to_dict(orient="records")
-multi_actuals = [0, 2, 0, 1, 2, 1, 1, 2, 0, 1]
-inference_row_create_many_multi_payload = [
- {
- "timestamp": str(datetime(2023, 3, 6, 12, 13, 25)),
- "processed": x,
- "nonprocessed": x,
- "actual": multi_actuals[i],
- }
- for i, x in enumerate(dict_multi_inferences)
-]
-
-inference_row_create_single_row_payload = inference_row_create_many_multi_payload[0]
-inference_row_create_many_multi_no_actual_payload = deepcopy(
- inference_row_create_many_multi_payload
-)
-for x in inference_row_create_many_multi_no_actual_payload:
- del x["actual"]
-
-inference_row_create_many_multi_mixed_actuals_payload = (
- inference_row_create_many_multi_no_actual_payload
- + inference_row_create_many_multi_payload
-)
-
-# This is the body of the request coming from the sdk
-df_binary_inference = df_binary.tail(10)
-dict_binary_inferences = df_binary_inference.to_dict(orient="records")
-binary_actuals = [0, 1, 1, 0, 1, 0, 1, 1, 1, 0]
-inference_row_create_many_binary_payload = [
- {
- "timestamp": str(datetime(2023, 3, 6, 12, 13, 25)),
- "processed": x,
- "nonprocessed": x,
- "actual": binary_actuals[i],
- }
- for i, x in enumerate(dict_binary_inferences)
-]
-
-df_reg_inference = df_reg.tail(10)
-dict_reg_inferences = df_reg_inference.to_dict(orient="records")
-reg_actuals = [103, 20, 50, 64, 48, 198, 105, 138, 250, 57]
-inference_row_create_many_reg_payload = [
- {
- "timestamp": str(datetime(2023, 3, 6, 12, 13, 25)),
- "processed": x,
- "nonprocessed": x,
- "actual": reg_actuals[i],
- }
- for i, x in enumerate(dict_reg_inferences)
-]
-
-timestamps = pd.Series(["2022-12-22T12:13:27.879738"] * 10)
-mixed_actuals = pd.Series([0, 1, None, 1, 0, None, None, 1, 0, None])
-
-model_monitor_accuracy_create_payload = dict(
- name="accuracy monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.accuracy,
- lower_threshold=0.85,
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-model_monitor_f1_create_payload = dict(
- name="f1 Monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.f1,
- lower_threshold=0.85,
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-model_monitor_data_drift_create_payload = dict(
- name="data drift monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.data_drift,
- feature="concavity error",
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-model_monitor_concept_drift_create_payload = dict(
- name="concept drift monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.concept_drift,
- feature="concavity error",
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-model_monitor_precision_create_payload = dict(
- name="precision monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.precision,
- lower_threshold=0.85,
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-model_monitor_r_square_create_payload = dict(
- name="r_square monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.r_square,
- lower_threshold=0.85,
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-model_monitor_no_threshold_create_payload = dict(
- name="no threshold monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.r_square,
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-model_monitor_no_feature_create_payload = dict(
- name="no feature monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.data_drift,
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-model_monitor_feature_same_as_target_create_payload = dict(
- name="feature same as target monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.data_drift,
- feature="target",
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-model_monitor_feature_not_in_columns_create_payload = dict(
- name="feature not in columns monitor",
- status=MonitorStatus.active,
- metric=MonitorMetrics.data_drift,
- feature="not_a_column",
- severity=AlertSeverity.low,
- email="example@whitebox.io",
-)
-
-
-model_monitor_update_payload = dict(
- name="concept drift monitor updated", lower_threshold=0.54
-)
-
-alert_payload = {
- "id": "c2a25e32-4e40-40da-a83f-fc299514866e",
- "created_at": "2023-02-09T12:52:50.547557",
- "updated_at": "2023-02-09T12:52:50.547557",
- "model_id": "11737584-a356-4de5-924c-9894dfcd0e0d",
- "model_monitor_id": "fa3a12f3-6801-4c25-8154-8b627e1d37b1",
- "timestamp": "2023-02-09T12:52:50.547525",
- "description": 'Data drift found in "concavity error" feature.',
-}
-
-performance_metrics_report_payload = [
- {
- "id": "f7030044-e0c2-4493-8aea-f66e6564efb7",
- "created_at": "2023-02-06T09:53:00.343616",
- "updated_at": "2023-02-06T09:53:00.343616",
- "model_id": "dbb7f384-cf46-4884-bca3-7787e049a3d5",
- "timestamp": "2023-02-06T09:53:00.343548",
- "accuracy": 0.6,
- "precision": 0.25,
- "recall": 0.5,
- "f1": 0.3333333333333333,
- "true_negative": 5,
- "false_positive": 3,
- "false_negative": 1,
- "true_positive": 1,
- }
-]
-
-descriptive_statistics_report_payload = [
- {
- "id": "d4f18837-65f6-45c2-af7c-34dcdc4aabf9",
- "created_at": "2023-02-06T09:53:00.370639",
- "updated_at": "2023-02-06T09:53:00.370639",
- "model_id": "bc01a212-b01e-48b4-aeb5-4a0a3cfa3c98",
- "timestamp": "2023-02-06T09:53:00.370617",
- "feature_metrics": {
- "missing_count": {
- "alcohol": 0,
- "malic_acid": 0,
- "ash": 0,
- "alcalinity_of_ash": 0,
- "magnesium": 0,
- "total_phenols": 0,
- "flavanoids": 0,
- "nonflavanoid_phenols": 0,
- "proanthocyanins": 0,
- "color_intensity": 0,
- "hue": 0,
- "od280/od315_of_diluted_wines": 0,
- "proline": 0,
- "target": 0,
- },
- "non_missing_count": {
- "alcohol": 10,
- "malic_acid": 10,
- "ash": 10,
- "alcalinity_of_ash": 10,
- "magnesium": 10,
- "total_phenols": 10,
- "flavanoids": 10,
- "nonflavanoid_phenols": 10,
- "proanthocyanins": 10,
- "color_intensity": 10,
- "hue": 10,
- "od280/od315_of_diluted_wines": 10,
- "proline": 10,
- "target": 10,
- },
- "mean": {
- "alcohol": 13.379000000000001,
- "malic_acid": 3.564,
- "ash": 2.493,
- "alcalinity_of_ash": 21.6,
- "magnesium": 102.3,
- "total_phenols": 1.6620000000000001,
- "flavanoids": 0.699,
- "nonflavanoid_phenols": 0.44499999999999995,
- "proanthocyanins": 1.1889999999999998,
- "color_intensity": 8.595999899999999,
- "hue": 0.6399999999999999,
- "od280/od315_of_diluted_wines": 1.6970000000000003,
- "proline": 674.5,
- "target": 2.0,
- },
- "minimum": {
- "alcohol": 12.2,
- "malic_acid": 2.39,
- "ash": 2.26,
- "alcalinity_of_ash": 19.0,
- "magnesium": 86.0,
- "total_phenols": 1.25,
- "flavanoids": 0.49,
- "nonflavanoid_phenols": 0.27,
- "proanthocyanins": 0.64,
- "color_intensity": 5.5,
- "hue": 0.57,
- "od280/od315_of_diluted_wines": 1.56,
- "proline": 470.0,
- "target": 2.0,
- },
- "maximum": {
- "alcohol": 14.16,
- "malic_acid": 5.65,
- "ash": 2.86,
- "alcalinity_of_ash": 25.0,
- "magnesium": 120.0,
- "total_phenols": 2.05,
- "flavanoids": 0.96,
- "nonflavanoid_phenols": 0.56,
- "proanthocyanins": 1.54,
- "color_intensity": 10.2,
- "hue": 0.74,
- "od280/od315_of_diluted_wines": 1.92,
- "proline": 840.0,
- "target": 2.0,
- },
- "sum": {
- "alcohol": 133.79000000000002,
- "malic_acid": 35.64,
- "ash": 24.93,
- "alcalinity_of_ash": 216.0,
- "magnesium": 1023.0,
- "total_phenols": 16.62,
- "flavanoids": 6.989999999999999,
- "nonflavanoid_phenols": 4.449999999999999,
- "proanthocyanins": 11.889999999999999,
- "color_intensity": 85.959999,
- "hue": 6.3999999999999995,
- "od280/od315_of_diluted_wines": 16.970000000000002,
- "proline": 6745.0,
- "target": 20.0,
- },
- "standard_deviation": {
- "alcohol": 0.5907894906159238,
- "malic_acid": 1.1073311258256142,
- "ash": 0.2058613341278272,
- "alcalinity_of_ash": 2.3664319132398464,
- "magnesium": 11.80442478244681,
- "total_phenols": 0.24334703157790474,
- "flavanoids": 0.14224001624796806,
- "nonflavanoid_phenols": 0.08396427811873335,
- "proanthocyanins": 0.3045743842734572,
- "color_intensity": 1.4311393049673125,
- "hue": 0.05291502622129182,
- "od280/od315_of_diluted_wines": 0.12356284950492914,
- "proline": 130.39363481397396,
- "target": 0.0,
- },
- "variance": {
- "alcohol": 0.34903222222222274,
- "malic_acid": 1.2261822222222223,
- "ash": 0.04237888888888891,
- "alcalinity_of_ash": 5.599999999999999,
- "magnesium": 139.34444444444443,
- "total_phenols": 0.059217777777777765,
- "flavanoids": 0.02023222222222222,
- "nonflavanoid_phenols": 0.0070500000000000024,
- "proanthocyanins": 0.09276555555555556,
- "color_intensity": 2.048159710222322,
- "hue": 0.002800000000000001,
- "od280/od315_of_diluted_wines": 0.015267777777777769,
- "proline": 17002.5,
- "target": 0.0,
- },
- },
- }
-]
-
-drifting_metrics_report_payload = [
- {
- "id": "d11f2313-12e3-4533-b16d-7689175ad617",
- "created_at": "2023-02-06T09:53:00.450466",
- "updated_at": "2023-02-06T09:53:00.450466",
- "model_id": "e8e5ff00-0212-4a1e-bcdb-0ef9183c867f",
- "timestamp": "2023-02-06T09:53:00.450435",
- "concept_drift_summary": {
- "concept_drift_summary": {
- "column_name": "target",
- "column_type": "cat",
- "stattest_name": "Z-test p_value",
- "drift_score": 0.0010364142456651404,
- "drift_detected": True,
- "stattest_threshold": 0.05,
- },
- "column_correlation": {
- "column_name": "target",
- "current": {},
- "reference": {},
- },
- },
- "data_drift_summary": {
- "number_of_columns": 13,
- "number_of_drifted_columns": 7,
- "share_of_drifted_columns": 0.5384615384615384,
- "dataset_drift": True,
- "drift_by_columns": {
- "alcalinity_of_ash": {
- "column_name": "alcalinity_of_ash",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.5163177458201748,
- "drift_detected": False,
- "threshold": 0.05,
- },
- "alcohol": {
- "column_name": "alcohol",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.0012612112534500996,
- "drift_detected": True,
- "threshold": 0.05,
- },
- "ash": {
- "column_name": "ash",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.23438597334285016,
- "drift_detected": False,
- "threshold": 0.05,
- },
- "color_intensity": {
- "column_name": "color_intensity",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.00015242693342585546,
- "drift_detected": True,
- "threshold": 0.05,
- },
- "flavanoids": {
- "column_name": "flavanoids",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.0003384276858653337,
- "drift_detected": True,
- "threshold": 0.05,
- },
- "hue": {
- "column_name": "hue",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.0002500181491633883,
- "drift_detected": True,
- "threshold": 0.05,
- },
- "magnesium": {
- "column_name": "magnesium",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.08450859981880006,
- "drift_detected": False,
- "threshold": 0.05,
- },
- "malic_acid": {
- "column_name": "malic_acid",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.033698127881912385,
- "drift_detected": True,
- "threshold": 0.05,
- },
- "nonflavanoid_phenols": {
- "column_name": "nonflavanoid_phenols",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.30861039864383094,
- "drift_detected": False,
- "threshold": 0.05,
- },
- "od280/od315_of_diluted_wines": {
- "column_name": "od280/od315_of_diluted_wines",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.0006076739224878145,
- "drift_detected": True,
- "threshold": 0.05,
- },
- "proanthocyanins": {
- "column_name": "proanthocyanins",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.09673060972050829,
- "drift_detected": False,
- "threshold": 0.05,
- },
- "proline": {
- "column_name": "proline",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.0328848734766648,
- "drift_detected": True,
- "threshold": 0.05,
- },
- "total_phenols": {
- "column_name": "total_phenols",
- "column_type": "num",
- "stattest_name": "K-S p_value",
- "drift_score": 0.082145120769578,
- "drift_detected": False,
- "threshold": 0.05,
- },
- },
- },
- }
-]
-
-inference_row_xai_payload = {
- "mean perimeter": -0.23641989216827916,
- "mean concavity": -0.16854638344893477,
- "worst radius": -0.16657884627852115,
- "mean concave points": -0.1260514980862101,
- "worst perimeter": -0.08533726601274261,
- "worst texture": -0.07905090544100012,
- "mean texture": -0.05969642438812264,
- "worst concave points": -0.03310756238929911,
- "mean radius": -0.03244286722644983,
- "worst symmetry": 0.02852296352595751,
-}
diff --git a/whitebox/tests/v1/test_alerts.py b/whitebox/tests/v1/test_alerts.py
deleted file mode 100644
index 64ba6b7..0000000
--- a/whitebox/tests/v1/test_alerts.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import pytest
-from whitebox import schemas
-from whitebox.tests.v1.conftest import get_order_number, state
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("alerts_get"))
-def test_alerts_get_model_all(client, api_key):
- response_all = client.get(
- f"/v1/alerts",
- headers={"api-key": api_key},
- )
-
- response_model_all = client.get(
- f"/v1/alerts?model_id={state.model_multi['id']}",
- headers={"api-key": api_key},
- )
-
- response_wrong_model = client.get(
- f"/v1/alerts?model_id=wrong_model_id",
- headers={"api-key": api_key},
- )
-
- assert len(response_all.json()) == 6
-
- assert response_all.status_code == status.HTTP_200_OK
- assert response_model_all.status_code == status.HTTP_200_OK
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
-
- validated = [schemas.Alert(**m) for m in response_all.json()]
- validated = [schemas.Alert(**m) for m in response_model_all.json()]
diff --git a/whitebox/tests/v1/test_cron_tasks.py b/whitebox/tests/v1/test_cron_tasks.py
deleted file mode 100644
index 27cdc62..0000000
--- a/whitebox/tests/v1/test_cron_tasks.py
+++ /dev/null
@@ -1,27 +0,0 @@
-import pytest
-from whitebox.tests.v1.conftest import get_order_number
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("cron_tasks_run_no_models"))
-def test_cron_tasks_no_models(client):
- response = client.post("/v1/cron-tasks/run")
- assert response.status_code == status.HTTP_200_OK
-
-
-@pytest.mark.order(get_order_number("cron_tasks_run_no_inference"))
-def test_cron_tasks_no_inference(client):
- response = client.post("/v1/cron-tasks/run")
- assert response.status_code == status.HTTP_200_OK
-
-
-@pytest.mark.order(get_order_number("cron_tasks_run_ok"))
-def test_cron_tasks_ok(client):
- response = client.post("/v1/cron-tasks/run")
- assert response.status_code == status.HTTP_200_OK
-
-
-@pytest.mark.order(get_order_number("cron_tasks_run_after_x_time"))
-def test_cron_tasks_run_after_x_time(client):
- response = client.post("/v1/cron-tasks/run")
- assert response.status_code == status.HTTP_200_OK
diff --git a/whitebox/tests/v1/test_dataset_rows.py b/whitebox/tests/v1/test_dataset_rows.py
deleted file mode 100644
index a12cba9..0000000
--- a/whitebox/tests/v1/test_dataset_rows.py
+++ /dev/null
@@ -1,125 +0,0 @@
-from whitebox.tests.v1.mock_data import (
- dataset_rows_single_row_column_payload,
- dataset_rows_no_prediction_column_payload,
- dataset_rows_one_prediction_value_payload,
- dataset_rows_create_multi_class_payload,
- dataset_rows_create_binary_payload,
- dataset_rows_create_wrong_model_payload,
- dataset_rows_create_reg_payload,
-)
-import pytest
-from whitebox import schemas
-from whitebox.tests.v1.conftest import get_order_number, state
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("dataset_rows_wrong_training_dataset"))
-def test_dataset_rows_wrong_training_data(client, api_key):
- response_single_row = client.post(
- "/v1/dataset-rows",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_multi["id"]},
- dataset_rows_single_row_column_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_no_prediction = client.post(
- "/v1/dataset-rows",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_multi["id"]},
- dataset_rows_no_prediction_column_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_one_prediction_value = client.post(
- "/v1/dataset-rows",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_multi["id"]},
- dataset_rows_one_prediction_value_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- assert response_single_row.status_code == status.HTTP_400_BAD_REQUEST
- assert response_no_prediction.status_code == status.HTTP_400_BAD_REQUEST
- assert response_one_prediction_value.status_code == status.HTTP_400_BAD_REQUEST
-
-
-@pytest.mark.order(get_order_number("dataset_rows_create"))
-def test_dataset_row_create_many(client, api_key):
- response_model_multi = client.post(
- "/v1/dataset-rows",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_multi["id"]},
- dataset_rows_create_multi_class_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_model_binary = client.post(
- "/v1/dataset-rows",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_binary["id"]},
- dataset_rows_create_binary_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_model_reg = client.post(
- "/v1/dataset-rows",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_regression["id"]},
- dataset_rows_create_reg_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_wrong_model = client.post(
- "/v1/dataset-rows",
- json=(dataset_rows_create_wrong_model_payload),
- headers={"api-key": api_key},
- )
-
- assert response_model_multi.status_code == status.HTTP_201_CREATED
- assert response_model_binary.status_code == status.HTTP_201_CREATED
- assert response_model_reg.status_code == status.HTTP_201_CREATED
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
- validated = [schemas.DatasetRow(**m) for m in response_model_multi.json()]
- validated = [schemas.DatasetRow(**m) for m in response_model_binary.json()]
- validated = [schemas.DatasetRow(**m) for m in response_model_reg.json()]
-
-
-@pytest.mark.order(get_order_number("dataset_rows_get_model's_all"))
-def test_dataset_row_get_models_all(client, api_key):
- response_model_multi = client.get(
- f"/v1/dataset-rows?model_id={state.model_multi['id']}",
- headers={"api-key": api_key},
- )
- response_model_binary = client.get(
- f"/v1/dataset-rows?model_id={state.model_binary['id']}",
- headers={"api-key": api_key},
- )
- response_model_not_found = client.get(
- f"/v1/dataset-rows?model_id=wrong_model_id",
- headers={"api-key": api_key},
- )
-
- assert response_model_multi.status_code == status.HTTP_200_OK
- assert response_model_binary.status_code == status.HTTP_200_OK
- assert response_model_not_found.status_code == status.HTTP_404_NOT_FOUND
- validated = [schemas.DatasetRow(**m) for m in response_model_multi.json()]
- validated = [schemas.DatasetRow(**m) for m in response_model_binary.json()]
diff --git a/whitebox/tests/v1/test_drifting_metrics.py b/whitebox/tests/v1/test_drifting_metrics.py
deleted file mode 100644
index 3939a94..0000000
--- a/whitebox/tests/v1/test_drifting_metrics.py
+++ /dev/null
@@ -1,55 +0,0 @@
-import pytest
-from whitebox import schemas
-from whitebox.tests.v1.conftest import get_order_number, state
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("drifting_metrics_get_model_all"))
-def test_drifting_metric_get_model_all(client, api_key):
- response_multi = client.get(
- f"/v1/drifting-metrics?model_id={state.model_multi['id']}",
- headers={"api-key": api_key},
- )
-
- response_binary = client.get(
- f"/v1/drifting-metrics?model_id={state.model_binary['id']}",
- headers={"api-key": api_key},
- )
- response_wrong_model = client.get(
- f"/v1/drifting-metrics?model_id=wrong_model_id",
- headers={"api-key": api_key},
- )
-
- response_binary_json = response_binary.json()
- response_multi_json = response_multi.json()
-
- assert len(response_multi_json) == 1
- assert len(response_binary_json) == 1
-
- assert response_multi_json[0]["timestamp"] == "2023-03-06T12:15:00"
- assert response_binary_json[0]["timestamp"] == "2023-03-07T00:00:00"
-
- assert response_multi.status_code == status.HTTP_200_OK
- assert response_binary.status_code == status.HTTP_200_OK
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
-
- validated = [schemas.DriftingMetric(**m) for m in response_multi_json]
- validated = [schemas.DriftingMetric(**m) for m in response_binary_json]
-
-
-@pytest.mark.order(get_order_number("drifting_metrics_get_binary_model_after_x_time"))
-def test_drifting_metrics_get_binary_model_after_x_time(client, api_key):
- response_binary = client.get(
- f"/v1/drifting-metrics?model_id={state.model_binary['id']}",
- headers={"api-key": api_key},
- )
-
- response_binary_json = response_binary.json()
-
- assert len(response_binary_json) == 1
-
- assert response_binary_json[0]["timestamp"] == "2023-03-07T00:00:00"
-
- assert response_binary.status_code == status.HTTP_200_OK
-
- validated = [schemas.DriftingMetric(**m) for m in response_binary_json]
diff --git a/whitebox/tests/v1/test_errors.py b/whitebox/tests/v1/test_errors.py
deleted file mode 100644
index f486d82..0000000
--- a/whitebox/tests/v1/test_errors.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import pytest
-from whitebox.tests.v1.conftest import get_order_number
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("models_no_api_key"))
-def test_model_no_api_key(client):
- response = client.get("/v1/models")
-
- assert response.status_code == status.HTTP_422_UNPROCESSABLE_ENTITY
-
-
-@pytest.mark.order(get_order_number("models_wrong_api_key"))
-def test_model_wrong_api_key(client):
- response = client.get(
- "/v1/models",
- headers={"api-key": "1234567890"},
- )
-
- assert response.status_code == status.HTTP_401_UNAUTHORIZED
diff --git a/whitebox/tests/v1/test_health.py b/whitebox/tests/v1/test_health.py
deleted file mode 100644
index 7a85a23..0000000
--- a/whitebox/tests/v1/test_health.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import pytest
-from whitebox import schemas
-from whitebox.tests.v1.conftest import get_order_number
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("health"))
-def test_health(client):
- response = client.get("/v1/health")
- assert response.status_code == status.HTTP_200_OK
- validated = schemas.HealthCheck(**response.json())
diff --git a/whitebox/tests/v1/test_inference_rows.py b/whitebox/tests/v1/test_inference_rows.py
deleted file mode 100644
index 320e930..0000000
--- a/whitebox/tests/v1/test_inference_rows.py
+++ /dev/null
@@ -1,191 +0,0 @@
-from whitebox.tests.v1.mock_data import (
- inference_row_create_single_row_payload,
- inference_row_create_many_binary_payload,
- inference_row_create_many_multi_payload,
- inference_row_create_many_multi_no_actual_payload,
- inference_row_create_many_multi_mixed_actuals_payload,
- inference_row_create_many_reg_payload,
-)
-import pytest
-from whitebox import schemas
-from whitebox.tests.v1.conftest import get_order_number, state
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("inference_rows_create"))
-def test_inference_row_create(client, api_key):
- response = client.post(
- "/v1/inference-rows",
- json={
- **inference_row_create_single_row_payload,
- "model_id": state.model_multi["id"],
- },
- headers={"api-key": api_key},
- )
- state.inference_row_multi = response.json()
- assert response.status_code == status.HTTP_201_CREATED
- validated = schemas.InferenceRow(**response.json())
-
-
-@pytest.mark.order(get_order_number("inference_rows_create_many"))
-def test_inference_row_create_many(client, api_key):
- response_binary = client.post(
- "/v1/inference-rows/batch",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_binary["id"]},
- inference_row_create_many_binary_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- state.inference_row_binary = response_binary.json()[0]
-
- response_multi = client.post(
- "/v1/inference-rows/batch",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_multi["id"]},
- inference_row_create_many_multi_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_multi_2 = client.post(
- "/v1/inference-rows/batch",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_multi_2["id"]},
- inference_row_create_many_multi_no_actual_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_multi_3 = client.post(
- "/v1/inference-rows/batch",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_multi_3["id"]},
- inference_row_create_many_multi_mixed_actuals_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_reg = client.post(
- "/v1/inference-rows/batch",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_regression["id"]},
- inference_row_create_many_reg_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- assert response_binary.status_code == status.HTTP_201_CREATED
- assert response_multi.status_code == status.HTTP_201_CREATED
- assert response_reg.status_code == status.HTTP_201_CREATED
- validated = [schemas.InferenceRow(**m) for m in response_binary.json()]
- validated = [schemas.InferenceRow(**m) for m in response_multi.json()]
- validated = [schemas.InferenceRow(**m) for m in response_multi_2.json()]
- validated = [schemas.InferenceRow(**m) for m in response_multi_3.json()]
- validated = [schemas.InferenceRow(**m) for m in response_reg.json()]
-
-
-@pytest.mark.order(get_order_number("inference_rows_get_model's_all"))
-def test_inference_row_get_models_all(client, api_key):
- response_multi = client.get(
- f"/v1/inference-rows?model_id={state.model_multi['id']}",
- headers={"api-key": api_key},
- )
- response_binary = client.get(
- f"/v1/inference-rows?model_id={state.model_binary['id']}",
- headers={"api-key": api_key},
- )
- response_wrong_model = client.get(
- f"/v1/inference-rows?model_id=wrong_model_id",
- headers={"api-key": api_key},
- )
- assert response_multi.status_code == status.HTTP_200_OK
- assert response_binary.status_code == status.HTTP_200_OK
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
- validated = [schemas.InferenceRow(**m) for m in response_multi.json()]
- validated = [schemas.InferenceRow(**m) for m in response_binary.json()]
-
-
-@pytest.mark.order(get_order_number("inference_rows_get"))
-def test_inference_row_get(client, api_key):
- response = client.get(
- f"/v1/inference-rows/{state.inference_row_multi['id']}",
- headers={"api-key": api_key},
- )
- response_wrong_inference = client.get(
- f"/v1/inference-rows/wrong_inference_id",
- headers={"api-key": api_key},
- )
- assert response.status_code == status.HTTP_200_OK
- assert response_wrong_inference.status_code == status.HTTP_404_NOT_FOUND
- validated = schemas.InferenceRow(**response.json())
-
-
-@pytest.mark.order(get_order_number("inference_rows_xai"))
-def test_inference_row_xai(client, api_key):
- response = client.get(
- f"/v1/inference-rows/{state.inference_row_binary['id']}/xai",
- headers={"api-key": api_key},
- )
-
- response_wrong_inference = client.get(
- f"/v1/inference-rows/wrong_inference_id/xai",
- headers={"api-key": api_key},
- )
-
- assert response.status_code == status.HTTP_200_OK
- assert response_wrong_inference.status_code == status.HTTP_404_NOT_FOUND
-
-
-@pytest.mark.order(get_order_number("inference_rows_create_many_after_x_time"))
-def test_inference_row_create_many_after_x_time(client, api_key):
- response_binary = client.post(
- "/v1/inference-rows/batch",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_binary["id"]},
- inference_row_create_many_binary_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_multi = client.post(
- "/v1/inference-rows/batch",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_multi["id"]},
- inference_row_create_many_multi_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- response_reg = client.post(
- "/v1/inference-rows/batch",
- json=list(
- map(
- lambda x: {**x, "model_id": state.model_regression["id"]},
- inference_row_create_many_reg_payload,
- )
- ),
- headers={"api-key": api_key},
- )
-
- assert response_binary.status_code == status.HTTP_201_CREATED
- assert response_multi.status_code == status.HTTP_201_CREATED
- assert response_reg.status_code == status.HTTP_201_CREATED
- validated = [schemas.InferenceRow(**m) for m in response_binary.json()]
- validated = [schemas.InferenceRow(**m) for m in response_multi.json()]
- validated = [schemas.InferenceRow(**m) for m in response_reg.json()]
diff --git a/whitebox/tests/v1/test_model_integrity_metrics.py b/whitebox/tests/v1/test_model_integrity_metrics.py
deleted file mode 100644
index f7378bb..0000000
--- a/whitebox/tests/v1/test_model_integrity_metrics.py
+++ /dev/null
@@ -1,30 +0,0 @@
-import pytest
-from whitebox import schemas
-from whitebox.tests.v1.conftest import get_order_number, state
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("model_integrity_metrics_get_model_all"))
-def test_model_integrity_metric_get_model_all(client, api_key):
- response_multi = client.get(
- f"/v1/model-integrity-metrics?model_id={state.model_multi['id']}",
- headers={"api-key": api_key},
- )
- response_binary = client.get(
- f"/v1/model-integrity-metrics?model_id={state.model_binary['id']}",
- headers={"api-key": api_key},
- )
- response_wrong_model = client.get(
- f"/v1/model-integrity-metrics?model_id=wrong_model_id",
- headers={"api-key": api_key},
- )
-
- assert len(response_multi.json()) == 1
- assert len(response_binary.json()) == 1
-
- assert response_multi.status_code == status.HTTP_200_OK
- assert response_binary.status_code == status.HTTP_200_OK
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
-
- validated = [schemas.ModelIntegrityMetric(**m) for m in response_multi.json()]
- validated = [schemas.ModelIntegrityMetric(**m) for m in response_binary.json()]
diff --git a/whitebox/tests/v1/test_model_monitors.py b/whitebox/tests/v1/test_model_monitors.py
deleted file mode 100644
index 4183e33..0000000
--- a/whitebox/tests/v1/test_model_monitors.py
+++ /dev/null
@@ -1,206 +0,0 @@
-import pytest
-from whitebox.tests.v1.mock_data import (
- model_monitor_accuracy_create_payload,
- model_monitor_f1_create_payload,
- model_monitor_data_drift_create_payload,
- model_monitor_concept_drift_create_payload,
- model_monitor_precision_create_payload,
- model_monitor_r_square_create_payload,
- model_monitor_no_threshold_create_payload,
- model_monitor_no_feature_create_payload,
- model_monitor_feature_same_as_target_create_payload,
- model_monitor_feature_not_in_columns_create_payload,
- model_monitor_update_payload,
-)
-from whitebox import schemas
-from whitebox.tests.v1.conftest import get_order_number, state
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("model_monitor_create"))
-def test_model_monitor_create(client, api_key):
- accuracy_monitor = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_accuracy_create_payload,
- "model_id": state.model_multi["id"],
- },
- headers={"api-key": api_key},
- )
-
- f1_monitor = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_f1_create_payload,
- "model_id": state.model_multi["id"],
- },
- headers={"api-key": api_key},
- )
-
- data_drift_monitor = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_data_drift_create_payload,
- "model_id": state.model_binary["id"],
- },
- headers={"api-key": api_key},
- )
-
- concept_drift_monitor = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_concept_drift_create_payload,
- "model_id": state.model_binary["id"],
- },
- headers={"api-key": api_key},
- )
-
- precision_monitor = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_precision_create_payload,
- "model_id": state.model_binary["id"],
- },
- headers={"api-key": api_key},
- )
-
- r_square_monitor = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_r_square_create_payload,
- "model_id": state.model_regression["id"],
- },
- headers={"api-key": api_key},
- )
-
- wrong_model_monitor = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_r_square_create_payload,
- "model_id": "wrong_model_id",
- },
- headers={"api-key": api_key},
- )
-
- no_training_data = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_data_drift_create_payload,
- "model_id": state.model_multi_3["id"],
- },
- headers={"api-key": api_key},
- )
-
- no_threshold = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_no_threshold_create_payload,
- "model_id": state.model_multi["id"],
- },
- headers={"api-key": api_key},
- )
-
- no_feature = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_no_feature_create_payload,
- "model_id": state.model_multi["id"],
- },
- headers={"api-key": api_key},
- )
-
- feature_same_as_target = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_feature_same_as_target_create_payload,
- "model_id": state.model_multi["id"],
- },
- headers={"api-key": api_key},
- )
-
- feature_not_in_columns = client.post(
- "/v1/model-monitors",
- json={
- **model_monitor_feature_not_in_columns_create_payload,
- "model_id": state.model_multi["id"],
- },
- headers={"api-key": api_key},
- )
-
- state.concept_drift_monitor = (
- concept_drift_monitor_json
- ) = concept_drift_monitor.json()
-
- assert concept_drift_monitor.status_code == status.HTTP_201_CREATED
- assert concept_drift_monitor_json["feature"] == "target"
- assert wrong_model_monitor.status_code == status.HTTP_404_NOT_FOUND
- assert no_threshold.status_code == status.HTTP_400_BAD_REQUEST
- assert no_feature.status_code == status.HTTP_400_BAD_REQUEST
- assert feature_same_as_target.status_code == status.HTTP_400_BAD_REQUEST
- assert feature_not_in_columns.status_code == status.HTTP_400_BAD_REQUEST
- assert no_training_data.status_code == status.HTTP_404_NOT_FOUND
- validated = schemas.ModelMonitor(**concept_drift_monitor_json)
-
-
-@pytest.mark.order(get_order_number("model_monitors_get_model_all"))
-def test_model_monitors_get_model_all(client, api_key):
- response_multi = client.get(
- f"/v1/model-monitors?model_id={state.model_multi['id']}",
- headers={"api-key": api_key},
- )
- response_all = client.get(
- f"/v1/model-monitors",
- headers={"api-key": api_key},
- )
- response_wrong_model = client.get(
- f"/v1/model-monitors?model_id=wrong_model_id",
- headers={"api-key": api_key},
- )
-
- assert len(response_multi.json()) == 2
- assert len(response_all.json()) == 6
-
- assert response_multi.status_code == status.HTTP_200_OK
- assert response_all.status_code == status.HTTP_200_OK
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
-
- validated = [schemas.ModelMonitor(**m) for m in response_multi.json()]
- validated = [schemas.ModelMonitor(**m) for m in response_all.json()]
-
-
-@pytest.mark.order(get_order_number("model_monitor_update"))
-def test_model_monitor_update(client, api_key):
- response = client.put(
- f"/v1/model-monitors/{state.concept_drift_monitor['id']}",
- json=model_monitor_update_payload,
- headers={"api-key": api_key},
- )
- response_wrong_model = client.put(
- f"/v1/model-monitors/wrong_model_id",
- json=model_monitor_update_payload,
- headers={"api-key": api_key},
- )
-
- response_json = response.json()
-
- assert response.status_code == status.HTTP_200_OK
- assert response_json["lower_threshold"] == None
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
-
- validated = schemas.ModelMonitor(**response_json)
-
-
-@pytest.mark.order(get_order_number("model_monitor_delete"))
-def test_model_monitor_delete(client, api_key):
- response = client.delete(
- f"/v1/model-monitors/{state.concept_drift_monitor['id']}",
- headers={"api-key": api_key},
- )
-
- wrong_monitor_response = client.delete(
- f"/v1/model-monitors/wrong_model_monitor_id",
- headers={"api-key": api_key},
- )
-
- assert response.status_code == status.HTTP_200_OK
- assert wrong_monitor_response.status_code == status.HTTP_404_NOT_FOUND
diff --git a/whitebox/tests/v1/test_models.py b/whitebox/tests/v1/test_models.py
deleted file mode 100644
index e7aaeff..0000000
--- a/whitebox/tests/v1/test_models.py
+++ /dev/null
@@ -1,133 +0,0 @@
-from whitebox.tests.v1.mock_data import (
- model_binary_create_payload,
- model_multi_create_payload,
- model_multi_2_create_payload,
- model_multi_3_create_payload,
- model_regression_create_payload,
- model_update_payload,
-)
-import pytest
-from whitebox import schemas
-from whitebox.tests.v1.conftest import get_order_number, state
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("models_create"))
-def test_model_create(client, api_key):
- response_binary = client.post(
- "/v1/models",
- json={**model_binary_create_payload},
- headers={"api-key": api_key},
- )
-
- response_multi = client.post(
- "/v1/models",
- json={**model_multi_create_payload},
- headers={"api-key": api_key},
- )
-
- response_multi_2 = client.post(
- "/v1/models",
- json={**model_multi_2_create_payload},
- headers={"api-key": api_key},
- )
-
- response_multi_3 = client.post(
- "/v1/models",
- json={**model_multi_3_create_payload},
- headers={"api-key": api_key},
- )
-
- response_regression = client.post(
- "/v1/models",
- json={**model_regression_create_payload},
- headers={"api-key": api_key},
- )
-
- state.model_binary = response_binary.json()
- state.model_multi = response_multi.json()
- state.model_multi_2 = response_multi_2.json()
- state.model_multi_3 = response_multi_3.json()
- state.model_regression = response_regression.json()
-
- assert response_binary.status_code == status.HTTP_201_CREATED
- assert response_multi.status_code == status.HTTP_201_CREATED
- assert response_multi_2.status_code == status.HTTP_201_CREATED
- assert response_multi_3.status_code == status.HTTP_201_CREATED
- assert response_regression.status_code == status.HTTP_201_CREATED
-
- validated = schemas.Model(**response_binary.json())
- validated = schemas.Model(**response_multi.json())
- validated = schemas.Model(**response_multi_2.json())
- validated = schemas.Model(**response_multi_3.json())
- validated = schemas.Model(**response_regression.json())
-
-
-@pytest.mark.order(get_order_number("models_get_all"))
-def test_model_get_all(client, api_key):
- response = client.get(f"/v1/models", headers={"api-key": api_key})
- assert response.status_code == status.HTTP_200_OK
- validated = [schemas.Model(**m) for m in response.json()]
-
-
-@pytest.mark.order(get_order_number("models_get"))
-def test_model_get(client, api_key):
- response = client.get(
- f"/v1/models/{state.model_multi['id']}", headers={"api-key": api_key}
- )
- response_wrong_model = client.get(
- f"/v1/models/wrong_model_id", headers={"api-key": api_key}
- )
-
- assert response.status_code == status.HTTP_200_OK
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
-
- validated = schemas.Model(**response.json())
-
-
-@pytest.mark.order(get_order_number("models_update"))
-def test_model_update(client, api_key):
- response = client.put(
- f"/v1/models/{state.model_multi['id']}",
- json=model_update_payload,
- headers={"api-key": api_key},
- )
- response_wrong_model = client.put(
- f"/v1/models/wrong_model_id",
- json=model_update_payload,
- headers={"api-key": api_key},
- )
-
- assert response.status_code == status.HTTP_200_OK
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
-
- validated = schemas.Model(**response.json())
-
-
-@pytest.mark.order(get_order_number("models_delete"))
-def test_model_delete(client, api_key):
- response_binary = client.delete(
- f"/v1/models/{state.model_binary['id']}", headers={"api-key": api_key}
- )
- response_multi = client.delete(
- f"/v1/models/{state.model_multi['id']}", headers={"api-key": api_key}
- )
- response_multi_2 = client.delete(
- f"/v1/models/{state.model_multi_2['id']}", headers={"api-key": api_key}
- )
- response_multi_3 = client.delete(
- f"/v1/models/{state.model_multi_3['id']}", headers={"api-key": api_key}
- )
- response_regression = client.delete(
- f"/v1/models/{state.model_regression['id']}", headers={"api-key": api_key}
- )
- response_no_model = client.delete(
- f"/v1/models/{state.model_binary['id']}", headers={"api-key": api_key}
- )
-
- assert response_binary.status_code == status.HTTP_200_OK
- assert response_multi.status_code == status.HTTP_200_OK
- assert response_multi_2.status_code == status.HTTP_200_OK
- assert response_multi_3.status_code == status.HTTP_200_OK
- assert response_regression.status_code == status.HTTP_200_OK
- assert response_no_model.status_code == status.HTTP_404_NOT_FOUND
diff --git a/whitebox/tests/v1/test_performance_metrics.py b/whitebox/tests/v1/test_performance_metrics.py
deleted file mode 100644
index 690527d..0000000
--- a/whitebox/tests/v1/test_performance_metrics.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import pytest
-from whitebox import schemas
-from whitebox.tests.v1.conftest import get_order_number, state
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("performance_metrics_get_model_all"))
-def test_performance_metric_get_model_all(client, api_key):
- response_multi = client.get(
- f"/v1/performance-metrics?model_id={state.model_multi['id']}",
- headers={"api-key": api_key},
- )
- response_binary = client.get(
- f"/v1/performance-metrics?model_id={state.model_binary['id']}",
- headers={"api-key": api_key},
- )
- response_reg = client.get(
- f"/v1/performance-metrics?model_id={state.model_regression['id']}",
- headers={"api-key": api_key},
- )
- response_wrong_model = client.get(
- f"/v1/performance-metrics?model_id=wrong_model_id",
- headers={"api-key": api_key},
- )
-
- assert response_multi.status_code == status.HTTP_200_OK
- assert response_binary.status_code == status.HTTP_200_OK
- assert response_reg.status_code == status.HTTP_200_OK
- assert response_wrong_model.status_code == status.HTTP_404_NOT_FOUND
-
- validated = [schemas.MultiClassificationMetrics(**m) for m in response_multi.json()]
- validated = [
- schemas.BinaryClassificationMetrics(**m) for m in response_binary.json()
- ]
- validated = [schemas.RegressionMetrics(**m) for m in response_reg.json()]
diff --git a/whitebox/tests/v1/test_sdk.py b/whitebox/tests/v1/test_sdk.py
deleted file mode 100644
index 7ef4994..0000000
--- a/whitebox/tests/v1/test_sdk.py
+++ /dev/null
@@ -1,397 +0,0 @@
-import pandas as pd
-import pytest
-from whitebox.schemas.modelMonitor import AlertSeverity, MonitorMetrics, MonitorStatus
-from whitebox.sdk import Whitebox
-from whitebox.tests.v1.conftest import get_order_number, state, state_sdk
-from whitebox.tests.v1.mock_data import (
- model_multi_create_payload,
- timestamps,
- mixed_actuals,
- inference_row_xai_payload,
- model_monitor_concept_drift_create_payload,
- model_monitor_update_payload,
- alert_payload,
- drifting_metrics_report_payload,
- descriptive_statistics_report_payload,
- performance_metrics_report_payload,
-)
-import requests_mock
-from fastapi import status
-
-
-@pytest.mark.order(get_order_number("sdk_init"))
-def test_sdk_init(client, api_key):
- wb = Whitebox(host=client.base_url, api_key=api_key)
- assert wb.host == client.base_url
- assert wb.api_key == api_key
- state_sdk.wb = wb
-
-
-@pytest.mark.order(get_order_number("sdk_create_model"))
-def test_sdk_create_model(client):
- with requests_mock.Mocker() as m:
- m.post(
- url=f"{state_sdk.wb.host}/v1/models",
- json=model_multi_create_payload,
- headers={"api-key": state_sdk.wb.api_key},
- )
-
- model = state_sdk.wb.create_model(
- name=model_multi_create_payload["name"],
- description=model_multi_create_payload["description"],
- labels=model_multi_create_payload["labels"],
- type=model_multi_create_payload["type"],
- target_column=model_multi_create_payload["target_column"],
- granularity=model_multi_create_payload["granularity"],
- )
-
- assert model == model_multi_create_payload
-
-
-@pytest.mark.order(get_order_number("sdk_get_model"))
-def test_sdk_get_model(client):
- mock_model_id = "mock_model_id"
- with requests_mock.Mocker() as m:
- m.get(
- url=f"{state_sdk.wb.host}/v1/models/{mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_404_NOT_FOUND,
- )
-
- not_found_result = state_sdk.wb.get_model(model_id=mock_model_id)
-
- assert not_found_result == None
-
- m.get(
- url=f"{state_sdk.wb.host}/v1/models/{mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- json=state.model_multi,
- )
-
- model = state_sdk.wb.get_model(model_id=mock_model_id)
-
- assert model == state.model_multi
-
-
-@pytest.mark.order(get_order_number("sdk_delete_model"))
-def test_sdk_delete_model(client):
- mock_model_id = "mock_model_id"
-
- with requests_mock.Mocker() as m:
- m.delete(
- url=f"{state_sdk.wb.host}/v1/models/{mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_200_OK,
- )
-
- happy_result = state_sdk.wb.delete_model(model_id=mock_model_id)
- assert happy_result == True
-
- m.delete(
- url=f"{state_sdk.wb.host}/v1/models/{mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_400_BAD_REQUEST,
- )
-
- sad_result = state_sdk.wb.delete_model(model_id=mock_model_id)
- assert sad_result == False
-
-
-@pytest.mark.order(get_order_number("sdk_log_training_dataset"))
-def test_sdk_log_training_dataset(client):
- mock_model_id = "mock_model_id"
- df = pd.read_csv("whitebox/analytics/data/testing/classification_test_data.csv")
-
- with requests_mock.Mocker() as m:
- m.post(
- url=f"{state_sdk.wb.host}/v1/dataset-rows",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_201_CREATED,
- )
-
- happy_result = state_sdk.wb.log_training_dataset(
- model_id=mock_model_id, processed=df, non_processed=df
- )
- assert happy_result == True
-
- m.post(
- url=f"{state_sdk.wb.host}/v1/dataset-rows",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_400_BAD_REQUEST,
- )
-
- sad_result = state_sdk.wb.log_training_dataset(
- model_id=mock_model_id, processed=df, non_processed=df
- )
- assert sad_result == False
-
- # drop a row in df to test the dataframe length error handling
- df2 = df.drop(df.index[0])
- with pytest.raises(Exception) as e_info:
- state_sdk.wb.log_inferences(
- model_id=mock_model_id, processed=df, non_processed=df2
- )
-
-
-@pytest.mark.order(get_order_number("sdk_log_inferences"))
-def test_sdk_log_inferences(client):
- mock_model_id = "mock_model_id"
- df = pd.read_csv("whitebox/analytics/data/testing/classification_test_data.csv")
-
- with requests_mock.Mocker() as m:
- m.post(
- url=f"{state_sdk.wb.host}/v1/inference-rows/batch",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_201_CREATED,
- )
-
- happy_result = state_sdk.wb.log_inferences(
- model_id=mock_model_id,
- processed=df,
- non_processed=df,
- timestamps=timestamps,
- actuals=mixed_actuals,
- )
- assert happy_result == True
-
- m.post(
- url=f"{state_sdk.wb.host}/v1/inference-rows/batch",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_400_BAD_REQUEST,
- )
-
- sad_result = state_sdk.wb.log_inferences(
- model_id=mock_model_id,
- processed=df,
- non_processed=df,
- timestamps=timestamps,
- )
- assert sad_result == False
-
- # drop a row in df to test the dataframe length error handling
- df2 = df.drop(df.index[0])
- with pytest.raises(Exception) as e_info:
- state_sdk.wb.log_inferences(
- model_id=mock_model_id,
- processed=df,
- non_processed=df2,
- timestamps=timestamps,
- actuals=mixed_actuals,
- )
-
-
-@pytest.mark.order(get_order_number("sdk_create_model_monitor"))
-def test_sdk_create_model_monitor(client):
- with requests_mock.Mocker() as m:
- m.post(
- url=f"{state_sdk.wb.host}/v1/model-monitors",
- json=model_monitor_concept_drift_create_payload,
- headers={"api-key": state_sdk.wb.api_key},
- )
-
- model_monitor = state_sdk.wb.create_model_monitor(
- model_id="mock_model_id",
- name="test",
- status=MonitorStatus.active,
- metric=MonitorMetrics.accuracy,
- feature="feature1",
- lower_threshold=0.7,
- severity=AlertSeverity.high,
- email="jackie.chan@chinamail.io",
- )
-
- assert model_monitor is not None
-
-
-@pytest.mark.order(get_order_number("sdk_update_model_monitor"))
-def test_sdk_update_model_monitor(client):
- mock_model_monitor_id = "mock_model_monitor_id"
-
- with requests_mock.Mocker() as m:
- m.put(
- url=f"{state_sdk.wb.host}/v1/model-monitors/{mock_model_monitor_id}",
- json=model_monitor_update_payload,
- headers={"api-key": state_sdk.wb.api_key},
- )
-
- happy_result = state_sdk.wb.update_model_monitor(
- model_monitor_id=mock_model_monitor_id,
- name="concept drift monitor updated",
- lower_threshold=0.54,
- )
-
- assert happy_result == True
-
- m.put(
- url=f"{state_sdk.wb.host}/v1/model-monitors/{mock_model_monitor_id}",
- json=model_monitor_update_payload,
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_400_BAD_REQUEST,
- )
-
- sad_result = state_sdk.wb.update_model_monitor(
- model_monitor_id=mock_model_monitor_id,
- name="concept drift monitor updated",
- lower_threshold=0.54,
- )
-
- assert sad_result == False
-
-
-@pytest.mark.order(get_order_number("sdk_delete_model_monitor"))
-def test_sdk_delete_model_monitor(client):
- mock_model_monitor_id = "mock_model_monitor_id"
-
- with requests_mock.Mocker() as m:
- m.delete(
- url=f"{state_sdk.wb.host}/v1/model-monitors/{mock_model_monitor_id}",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_200_OK,
- )
-
- happy_result = state_sdk.wb.delete_model_monitor(
- model_monitor_id=mock_model_monitor_id
- )
- assert happy_result == True
-
- m.delete(
- url=f"{state_sdk.wb.host}/v1/model-monitors/{mock_model_monitor_id}",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_400_BAD_REQUEST,
- )
-
- sad_result = state_sdk.wb.delete_model_monitor(
- model_monitor_id=mock_model_monitor_id
- )
- assert sad_result == False
-
-
-@pytest.mark.order(get_order_number("sdk_get_alerts"))
-def test_sdk_get_alerts(client):
- mock_model_id = "mock_model_id"
- with requests_mock.Mocker() as m:
- m.get(
- url=f"{state_sdk.wb.host}/v1/alerts?model_id={mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_404_NOT_FOUND,
- )
-
- not_found_result = state_sdk.wb.get_alerts(model_id=mock_model_id)
-
- assert not_found_result == None
-
- m.get(
- url=f"{state_sdk.wb.host}/v1/alerts?model_id={mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- json=alert_payload,
- )
-
- alert = state_sdk.wb.get_alerts(model_id=mock_model_id)
-
- assert alert == alert_payload
-
-
-@pytest.mark.order(get_order_number("sdk_get_drifting_metrics"))
-def test_sdk_get_drifting_metrics(client):
- mock_model_id = "mock_model_id"
- with requests_mock.Mocker() as m:
- m.get(
- url=f"{state_sdk.wb.host}/v1/drifting-metrics?model_id={mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_404_NOT_FOUND,
- )
-
- not_found_result = state_sdk.wb.get_drifting_metrics(model_id=mock_model_id)
-
- assert not_found_result == None
-
- m.get(
- url=f"{state_sdk.wb.host}/v1/drifting-metrics?model_id={mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- json=drifting_metrics_report_payload,
- )
-
- drifting_report = state_sdk.wb.get_drifting_metrics(model_id=mock_model_id)
-
- assert drifting_report == drifting_metrics_report_payload
-
-
-@pytest.mark.order(get_order_number("sdk_get_descriptive_statistics"))
-def test_sdk_get_descriptive_statistics(client):
- mock_model_id = "mock_model_id"
- with requests_mock.Mocker() as m:
- m.get(
- url=f"{state_sdk.wb.host}/v1/model-integrity-metrics?model_id={mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_404_NOT_FOUND,
- )
-
- not_found_result = state_sdk.wb.get_descriptive_statistics(
- model_id=mock_model_id
- )
-
- assert not_found_result == None
-
- m.get(
- url=f"{state_sdk.wb.host}/v1/model-integrity-metrics?model_id={mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- json=descriptive_statistics_report_payload,
- )
-
- descriptive_report = state_sdk.wb.get_descriptive_statistics(
- model_id=mock_model_id
- )
-
- assert descriptive_report == descriptive_statistics_report_payload
-
-
-@pytest.mark.order(get_order_number("sdk_get_performance_metrics"))
-def test_sdk_get_performance_metrics(client):
- mock_model_id = "mock_model_id"
- with requests_mock.Mocker() as m:
- m.get(
- url=f"{state_sdk.wb.host}/v1/performance-metrics?model_id={mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_404_NOT_FOUND,
- )
-
- not_found_result = state_sdk.wb.get_performance_metrics(model_id=mock_model_id)
-
- assert not_found_result == None
-
- m.get(
- url=f"{state_sdk.wb.host}/v1/performance-metrics?model_id={mock_model_id}",
- headers={"api-key": state_sdk.wb.api_key},
- json=performance_metrics_report_payload,
- )
-
- performance_report = state_sdk.wb.get_performance_metrics(
- model_id=mock_model_id
- )
-
- assert performance_report == performance_metrics_report_payload
-
-
-@pytest.mark.order(get_order_number("sdk_get_xai_row"))
-def test_sdk_get_xai_row(client):
- mock_inference_id = "mock_inference_id"
- with requests_mock.Mocker() as m:
- m.get(
- url=f"{state_sdk.wb.host}/v1/inference-rows/{mock_inference_id}/xai",
- headers={"api-key": state_sdk.wb.api_key},
- status_code=status.HTTP_404_NOT_FOUND,
- )
-
- not_found_result = state_sdk.wb.get_xai_row(inference_row_id=mock_inference_id)
-
- assert not_found_result == None
-
- m.get(
- url=f"{state_sdk.wb.host}/v1/inference-rows/{mock_inference_id}/xai",
- headers={"api-key": state_sdk.wb.api_key},
- json=inference_row_xai_payload,
- )
-
- xai = state_sdk.wb.get_xai_row(inference_row_id=mock_inference_id)
-
- assert xai == inference_row_xai_payload
diff --git a/whitebox/utils/__init__.py b/whitebox/utils/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/whitebox/utils/errors.py b/whitebox/utils/errors.py
deleted file mode 100644
index 6b7c050..0000000
--- a/whitebox/utils/errors.py
+++ /dev/null
@@ -1,124 +0,0 @@
-from typing import List
-from fastapi import status
-from fastapi.encoders import jsonable_encoder
-from fastapi.responses import JSONResponse
-from starlette.exceptions import HTTPException as StarletteHTTPException
-from fastapi.exceptions import HTTPException
-from starlette.requests import Request
-from whitebox.schemas.utils import ErrorProps
-from whitebox.utils.logger import log
-
-
-class CustomError(BaseException):
- async def http_exception_handler(
- self, _: Request, exc: StarletteHTTPException
- ) -> ErrorProps:
- log.error(f"{exc.status_code}: {exc.detail}")
- return JSONResponse(
- status_code=exc.status_code,
- content=jsonable_encoder(
- {"error": f"{str(exc.detail)}", "status_code": exc.status_code}
- ),
- )
-
- async def validation_exception_handler(
- self,
- _: Request,
- exc: HTTPException,
- ) -> ErrorProps:
- responsible_value = exc.errors()[0]["loc"][-1]
- reason = exc.errors()[0]["msg"]
- log.error(
- f"{status.HTTP_422_UNPROCESSABLE_ENTITY}: ({str(responsible_value)}) {str(reason)}"
- )
- return JSONResponse(
- status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
- content=jsonable_encoder(
- {
- "error": f"({str(responsible_value)}) {str(reason)}",
- "status_code": status.HTTP_422_UNPROCESSABLE_ENTITY,
- }
- ),
- )
-
- def bad_request(self, msg: str = "Bad request") -> ErrorProps:
- log.error(f"{status.HTTP_400_BAD_REQUEST}: {str(msg)}")
- return JSONResponse(
- status_code=status.HTTP_400_BAD_REQUEST,
- content=jsonable_encoder(
- {"error": str(msg), "status_code": status.HTTP_400_BAD_REQUEST}
- ),
- )
-
- def not_found(self, msg: str = "Content not found") -> ErrorProps:
- log.error(f"{status.HTTP_404_NOT_FOUND}: {str(msg)}")
- return JSONResponse(
- status_code=status.HTTP_404_NOT_FOUND,
- content=jsonable_encoder(
- {"error": str(msg), "status_code": status.HTTP_404_NOT_FOUND}
- ),
- )
-
-
-errors = CustomError()
-
-
-def add_error_responses(status_codes) -> List[ErrorProps]:
- """
- For the schema to work the part after schemas/ should correspond to a title error schema in whitebox/api/app/v1/docs.py
- """
-
- error_responses = {
- 400: {
- "description": "Bad Request",
- "content": {
- "application/json": {
- "schema": {"$ref": "#/components/schemas/BadRequest"}
- }
- },
- },
- 401: {
- "description": "Authorization Error",
- "content": {
- "application/json": {
- "schema": {"$ref": "#/components/schemas/AuthorizationError"}
- }
- },
- },
- 404: {
- "description": "Not Found Error",
- "content": {
- "application/json": {
- "schema": {"$ref": "#/components/schemas/NotFoundError"}
- }
- },
- },
- 409: {
- "description": "Conflict Error",
- "content": {
- "application/json": {
- "schema": {"$ref": "#/components/schemas/ConflictError"}
- }
- },
- },
- 410: {
- "description": "Content Gone",
- "content": {
- "application/json": {
- "schema": {"$ref": "#/components/schemas/ContenGone"}
- }
- },
- },
- 422: {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {"$ref": "#/components/schemas/HTTPValidationError"}
- }
- },
- },
- }
- responses = {}
- for code in status_codes:
- responses[code] = error_responses[code]
- return responses
diff --git a/whitebox/utils/exceptions.py b/whitebox/utils/exceptions.py
deleted file mode 100644
index 8268fa0..0000000
--- a/whitebox/utils/exceptions.py
+++ /dev/null
@@ -1,10 +0,0 @@
-class TaskAlreadyRunningException(Exception):
- pass
-
-
-class TaskNotFoundException(Exception):
- pass
-
-
-class TaskNotRunningException(Exception):
- pass
diff --git a/whitebox/utils/id_gen.py b/whitebox/utils/id_gen.py
deleted file mode 100644
index 9ec92e6..0000000
--- a/whitebox/utils/id_gen.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from uuid import uuid4
-
-
-def generate_uuid():
- return str(uuid4())
diff --git a/whitebox/utils/logger.py b/whitebox/utils/logger.py
deleted file mode 100644
index 8326174..0000000
--- a/whitebox/utils/logger.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from colorama import Fore, Back, Style
-import logging
-
-
-class Logger:
- def info(self, info):
- print(Fore.LIGHTBLUE_EX + "INFO" + Fore.BLACK + ":" + 4 * " ", info)
-
- def error(self, error):
- print(Fore.RED + "ERROR" + Fore.BLACK + ":" + 3 * " ", error)
-
- def success(self, msg):
- print(Fore.GREEN + "SUCCESS" + Fore.BLACK + ":" + 1 * " ", msg)
-
-
-log = Logger()
-
-
-logging.basicConfig(level="INFO")
-
-cronLogger = logging.getLogger("cron")
diff --git a/whitebox/utils/passwords.py b/whitebox/utils/passwords.py
deleted file mode 100644
index 3386dd2..0000000
--- a/whitebox/utils/passwords.py
+++ /dev/null
@@ -1,42 +0,0 @@
-from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
-from cryptography.hazmat.primitives import padding
-from cryptography.hazmat.backends import default_backend
-import secrets
-from whitebox.core.settings import get_settings
-
-
-settings = get_settings()
-
-
-def to_utf8(ps):
- return ps.encode("utf-8")
-
-
-def encrypt_api_key(password: str, key: bytes) -> str:
- iv = secrets.token_bytes(16)
- cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
- encryptor = cipher.encryptor()
- padder = padding.PKCS7(128).padder()
- padded_data = padder.update(to_utf8(password)) + padder.finalize()
- ct = encryptor.update(padded_data) + encryptor.finalize()
- return (iv + ct).hex()
-
-
-def decrypt_api_key(password: str, key: bytes) -> str:
- ct = bytes.fromhex(password)
- iv = ct[:16]
- ct = ct[16:]
- cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
- decryptor = cipher.decryptor()
- pt = decryptor.update(ct) + decryptor.finalize()
- unpadder = padding.PKCS7(128).unpadder()
- data = unpadder.update(pt) + unpadder.finalize()
- return data.decode("utf-8")
-
-
-def passwords_match(api_key_in_db: str, api_key_in_headers: str):
- if not settings.SECRET_KEY:
- return api_key_in_db == api_key_in_headers
-
- api_key = decrypt_api_key(api_key_in_db, settings.SECRET_KEY.encode())
- return api_key == api_key_in_headers