249 lines
8.7 KiB
Plaintext
249 lines
8.7 KiB
Plaintext
#
|
|
# LEAN Foundation Docker Container 20200428
|
|
# Cross platform deployment for multiple brokerages
|
|
# Intended to be used in conjunction with Dockerfile. This is just the foundation common OS+Dependencies required.
|
|
#
|
|
|
|
# Use base system for cleaning up wayward processes
|
|
FROM phusion/baseimage:0.9.22
|
|
|
|
MAINTAINER QuantConnect <contact@quantconnect.com>
|
|
|
|
# Use baseimage-docker's init system.
|
|
CMD ["/sbin/my_init"]
|
|
|
|
# Have to add env TZ=UTC. See https://github.com/dotnet/coreclr/issues/602
|
|
RUN env TZ=UTC
|
|
|
|
# Install OS Packages:
|
|
# Misc tools for running Python.NET and IB inside a headless container.
|
|
RUN add-apt-repository ppa:ubuntu-toolchain-r/test && apt-get update
|
|
RUN apt-get install -y git bzip2 clang cmake curl unzip wget python3-pip python-opengl zlib1g-dev && \
|
|
apt-get install -y xvfb libxrender1 libxtst6 libxi6 libglib2.0-dev libopenmpi-dev libstdc++6 openmpi-bin && \
|
|
# Install R
|
|
apt-get install -y r-base pandoc libcurl4-openssl-dev
|
|
|
|
# Java for running IB inside container:
|
|
RUN apt-get install -y openjdk-8-jdk openjdk-8-jre
|
|
|
|
# Install IB Gateway: Installs to ~/Jts
|
|
RUN wget http://cdn.quantconnect.com/interactive/ibgateway-stable-standalone-linux-x64-v978.2c.sh && \
|
|
chmod 777 ibgateway-stable-standalone-linux-x64-v978.2c.sh && \
|
|
./ibgateway-stable-standalone-linux-x64-v978.2c.sh -q && \
|
|
wget -O ~/Jts/jts.ini http://cdn.quantconnect.com/interactive/ibgateway-latest-standalone-linux-x64-v974.4g.jts.ini && \
|
|
rm ibgateway-stable-standalone-linux-x64-v978.2c.sh
|
|
|
|
# Mono C# for LEAN:
|
|
# From https://github.com/mono/docker/blob/master/
|
|
RUN apt-get update && rm -rf /var/lib/apt/lists/*
|
|
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
|
|
RUN echo "deb http://download.mono-project.com/repo/ubuntu stable-xenial/snapshots/5.12.0.226 main" > /etc/apt/sources.list.d/mono-xamarin.list && \
|
|
apt-get update && apt-get install -y binutils mono-complete ca-certificates-mono mono-vbnc nuget referenceassemblies-pcl && \
|
|
apt-get install -y fsharp && rm -rf /var/lib/apt/lists/* /tmp/*
|
|
|
|
# Install miniconda
|
|
ENV CONDA="Miniconda3-4.5.12-Linux-x86_64.sh"
|
|
ENV PATH="/opt/miniconda3/bin:${PATH}"
|
|
RUN wget https://cdn.quantconnect.com/miniconda/${CONDA} && \
|
|
bash ${CONDA} -b -p /opt/miniconda3 && rm -rf ${CONDA} && \
|
|
ln -s /opt/miniconda3/lib/libpython3.6m.so /usr/lib/libpython3.6m.so
|
|
|
|
# Install supported third party python packages
|
|
# Updates conda and pip
|
|
RUN conda update -y conda pip
|
|
|
|
# Updates pip
|
|
RUN pip install --upgrade pip
|
|
|
|
# Sets python version to 3.6.8
|
|
RUN conda install -y python=3.6.8
|
|
RUN conda clean -y --all
|
|
|
|
# Install essential packages
|
|
RUN conda install -y \
|
|
cython=0.29.15 \
|
|
numpy=1.18.1 \
|
|
pandas=0.25.3 \
|
|
wrapt=1.12.1
|
|
|
|
# Install pyarrow to improve DataFrame construction performance
|
|
RUN pip install pyarrow==1.0.1
|
|
|
|
# Install non-math packages
|
|
RUN conda install -y \
|
|
astropy=4.0.1.post1 \
|
|
beautifulsoup4=4.9.0 \
|
|
blaze=0.11.3 \
|
|
dill=0.3.1.1 \
|
|
jsonschema=3.2.0 \
|
|
lxml=4.5.0 \
|
|
msgpack-python=1.0.0 \
|
|
numba=0.46 \
|
|
setuptools-git=1.2 \
|
|
xarray=0.15.1
|
|
|
|
RUN conda install -y -c plotly \
|
|
plotly=4.6.0
|
|
|
|
RUN conda install -y -c conda-forge \
|
|
jupyterlab=2.1.0
|
|
|
|
# Install TensorFlow 1.15.2
|
|
RUN pip install tensorflow==1.15.2
|
|
|
|
# Install math/ML packages
|
|
RUN conda install -y \
|
|
docutils=0.14 \
|
|
cvxopt=1.2.0 \
|
|
gensim=3.8.0 \
|
|
keras=2.3.1 \
|
|
lightgbm=2.3.0 \
|
|
nltk=3.4.5 \
|
|
pomegranate=0.11.1 \
|
|
tensorflow-base=1.15.0 \
|
|
python-graphviz=0.8.4
|
|
|
|
# Install requirement for fbprophet
|
|
RUN pip install cmdstanpy==0.4
|
|
|
|
# Install math/ML from conda-forge
|
|
RUN conda install -y -c conda-forge \
|
|
copulae=0.3.1 \
|
|
featuretools=0.13.4 \
|
|
fbprophet=0.6 \
|
|
pulp=1.6.8 \
|
|
pymc3=3.8 \
|
|
rauth=0.7.3 \
|
|
scikit-learn=0.21.3 \
|
|
scikit-multiflow=0.4.1 \
|
|
scikit-optimize=0.7.4 \
|
|
theano=1.0.4 \
|
|
tsfresh=0.15.1 \
|
|
tslearn=0.3.1 \
|
|
tweepy=3.8.0 \
|
|
pywavelets=1.1.1 \
|
|
umap-learn=0.4.1
|
|
|
|
# Install math/ML from pytorch
|
|
RUN conda install -y -c pytorch \
|
|
pytorch=1.5.0 \
|
|
torchvision=0.6.0
|
|
|
|
# Install math/ML from fastai
|
|
RUN conda install -y -c fastai \
|
|
nvidia-ml-py3=7.352.0 \
|
|
fastai=1.0.60
|
|
|
|
RUN conda clean -y --all
|
|
|
|
# Install from PIP I
|
|
RUN pip install arch==4.14 \
|
|
copulalib==1.1.0 \
|
|
copulas==0.3.0 \
|
|
creme==0.5.1 \
|
|
cufflinks==0.17.3 \
|
|
gym==0.17.1 \
|
|
ipywidgets==7.5.1
|
|
|
|
# Install from PIP II
|
|
RUN pip install deap==1.3.1 \
|
|
cvxpy==1.1.0a3 \
|
|
mlfinlab==0.9.3 \
|
|
pykalman==0.9.5 \
|
|
pyportfolioopt==1.1.0 \
|
|
pyramid-arima==0.9.0 \
|
|
pyro-ppl==1.3.1 \
|
|
riskparityportfolio==0.1.6
|
|
|
|
# Install from PIP III
|
|
RUN pip install sklearn==0.0 \
|
|
stable-baselines==2.10.0 \
|
|
statistics==1.0.3.5 \
|
|
statsmodels==0.11.1 \
|
|
tensorforce==0.5.4 \
|
|
QuantLib-Python==1.18 \
|
|
xgboost==1.0.2 \
|
|
dtw-python==1.0.5
|
|
|
|
# Install from PIP IV
|
|
RUN pip install cntk==2.7 \
|
|
mxnet==1.6 \
|
|
gluonts==0.4.3 \
|
|
gplearn==0.4.1 \
|
|
jax==0.1.64 \
|
|
jaxlib==0.1.45 \
|
|
keras-rl==0.4.2 \
|
|
pennylane==0.8.1
|
|
|
|
# Install Google Neural Tangents after JAX
|
|
RUN pip install neural-tangents==0.2.1
|
|
|
|
RUN pip install --upgrade mplfinance==0.12.3a3
|
|
RUN pip install --upgrade hmmlearn==0.2.3
|
|
RUN python -m nltk.downloader -d /usr/share/nltk_data punkt
|
|
RUN python -m nltk.downloader -d /usr/share/nltk_data vader_lexicon
|
|
|
|
# Install TA-lib for python
|
|
RUN wget http://cdn.quantconnect.com/ta-lib/ta-lib-0.4.0-src.tar.gz && \
|
|
tar -zxvf ta-lib-0.4.0-src.tar.gz && cd ta-lib && \
|
|
./configure --prefix=/usr && make && make install && \
|
|
pip install TA-lib && cd .. && rm -irf ta-lib
|
|
|
|
# Install DX Analytics
|
|
RUN wget https://cdn.quantconnect.com/dx/dx-master-9fab393.zip && \
|
|
unzip -q dx-master-9fab393 && cd dx-master && \
|
|
python setup.py install && cd .. && rm -irf dx-master
|
|
|
|
# Install py-earth
|
|
RUN wget https://cdn.quantconnect.com/py-earth/py-earth-master-b209d19.zip && \
|
|
unzip -q py-earth-master-b209d19.zip && cd py-earth-master && \
|
|
python setup.py install && cd .. && rm -irf py-earth-master
|
|
|
|
# Install fastText
|
|
RUN wget https://cdn.quantconnect.com/fastText/fastText-master-6d7c77c.zip && \
|
|
unzip -q fastText-master-6d7c77c.zip && cd fastText-master && \
|
|
python setup.py install && cd .. && rm -irf fastText-master
|
|
|
|
# Update ODO
|
|
RUN conda remove --force-remove -y odo
|
|
RUN wget https://cdn.quantconnect.com/odo/odo-master-9fce669.zip && \
|
|
unzip -q odo-master-9fce669.zip && cd odo-master && \
|
|
python setup.py install && cd .. && rm -irf odo-master
|
|
|
|
# Install Auto-KS
|
|
RUN wget https://cdn.quantconnect.com/auto_ks/auto_ks-master-b39e8f3.zip && \
|
|
unzip -q auto_ks-master-b39e8f3.zip && cd auto_ks-master && \
|
|
python setup.py install && cd .. && rm -irf auto_ks-master
|
|
|
|
# Install Pyrb
|
|
RUN wget https://cdn.quantconnect.com/pyrb/pyrb-master-d02b56a.zip && \
|
|
unzip -q pyrb-master-d02b56a.zip && cd pyrb-master && \
|
|
python setup.py install && cd .. && rm -irf pyrb-master
|
|
|
|
# Install SSM
|
|
RUN wget https://cdn.quantconnect.com/ssm/ssm-master-34b50d4.zip && \
|
|
unzip -q ssm-master-34b50d4.zip && cd ssm-master && \
|
|
python setup.py install && cd .. && rm -irf ssm-master
|
|
|
|
# Install Tigramite
|
|
RUN wget https://cdn.quantconnect.com/tigramite/tigramite-master-eee4809.zip && \
|
|
unzip -q tigramite-master-eee4809.zip && cd tigramite-master && \
|
|
python setup.py install && cd .. && rm -irf tigramite-master
|
|
|
|
# Install H2O
|
|
RUN wget https://cdn.quantconnect.com/h2o/h2o-3.30.0.1.zip && \
|
|
unzip -q h2o-3.30.0.1.zip && \
|
|
pip install h2o-3.30.0.1/python/h2o-3.30.0.1-py2.py3-none-any.whl && \
|
|
rm -irf h2o-3.30.0.1
|
|
|
|
# Delete temporary zip files
|
|
RUN rm -irf *.zip *.gz
|
|
|
|
# Remove black-listed packages
|
|
RUN pip uninstall -y s3transfer
|
|
RUN conda remove --force-remove -y s3transfer
|
|
RUN conda clean -y --all
|
|
|
|
# List all packages
|
|
RUN conda list
|