116 lines
3.5 KiB
Markdown
116 lines
3.5 KiB
Markdown
# 🐳 Run Docker & Qlib
|
|
---
|
|
|
|
## 📄 Description
|
|
This guide explains how to run the Qlib Docker test file located at `test/utils/test_env.py` in the RD-Agent repository.
|
|
|
|
---
|
|
|
|
## 🚀 Running Instructions
|
|
|
|
### 1. Install the required Python libraries
|
|
- Ensure that the `docker` Python library is installed:
|
|
```sh
|
|
pip install docker
|
|
```
|
|
|
|
### 2. Run the test script
|
|
- Execute the test script to verify the Docker environment setup:
|
|
```sh
|
|
python test/utils/test_env.py
|
|
```
|
|
|
|
### Troubleshooting
|
|
- **PermissionError: [Errno 13] Permission denied.**
|
|
> This error occurs when the current user does not have the necessary permissions to access the Docker socket. To resolve this issue, follow these steps:
|
|
|
|
1. **Add the current user to the `docker` group**
|
|
Docker requires root or `docker` group user permissions to access the Docker socket. Add the current user to the `docker` group:
|
|
```sh
|
|
sudo usermod -aG docker $USER
|
|
```
|
|
|
|
2. **Refresh group changes**
|
|
To apply the group changes, log out and log back in, or use the following command:
|
|
```sh
|
|
newgrp docker
|
|
```
|
|
|
|
3. **Verify Docker access**
|
|
Run the following command to ensure that Docker can be accessed:
|
|
```sh
|
|
docker run hello-world
|
|
```
|
|
|
|
4. **Rerun the test script**
|
|
After completing these steps, rerun the test script:
|
|
```sh
|
|
python test/utils/test_env.py
|
|
```
|
|
---
|
|
## 🛠️ Detailed Qlib Docker Function Framework
|
|
|
|
Here, we provide an overview of the specific functions within the Qlib Docker framework, their purposes, and examples of how to call them.
|
|
|
|
### QTDockerEnv Class in `env.py`
|
|
|
|
The `QTDockerEnv` class is responsible for setting up and running Docker environments for Qlib experiments.
|
|
|
|
#### Methods:
|
|
|
|
1. **prepare()**
|
|
- **Purpose**: Prepares the Docker environment for running experiments. This includes building the Docker image if necessary.
|
|
- **Example**:
|
|
```python
|
|
qtde = QTDockerEnv()
|
|
qtde.prepare()
|
|
```
|
|
|
|
2. **run(local_path: str, entry: str) -> str**
|
|
- **Purpose**: Runs a specified entry point (e.g., a configuration file) in the prepared Docker environment.
|
|
- **Parameters**:
|
|
- `local_path`: Path to the local directory to mount into the Docker container.
|
|
- `entry`: Command or entry point to run inside the Docker container.
|
|
- **Returns**: The stdout output from the Docker container.
|
|
- **Example**:
|
|
```python
|
|
result = qtde.run(local_path="/path/to/env_tpl", entry="qrun conf.yaml")
|
|
```
|
|
---
|
|
### 📊 Expected Output
|
|
|
|
Upon successful execution, the test script will produce analysis results of benchmark returns and various risk metrics. The expected output should be similar to:
|
|
|
|
```
|
|
'The following are analysis results of benchmark return (1 day).'
|
|
risk
|
|
mean 0.000477
|
|
std 0.012295
|
|
annualized_return 0.113561
|
|
information_ratio 0.598699
|
|
max_drawdown -0.370479
|
|
|
|
'The following are analysis results of the excess return without cost (1 day).'
|
|
risk
|
|
mean 0.000530
|
|
std 0.005718
|
|
annualized_return 0.126029
|
|
information_ratio 1.428574
|
|
max_drawdown -0.072310
|
|
|
|
'The following are analysis results of the excess return with cost (1 day).'
|
|
risk
|
|
mean 0.000339
|
|
std 0.005717
|
|
annualized_return 0.080654
|
|
information_ratio 0.914486
|
|
max_drawdown -0.086083
|
|
|
|
'The following are analysis results of indicators (1 day).'
|
|
value
|
|
ffr 1.0
|
|
pa 0.0
|
|
pos 0.0
|
|
```
|
|
|
|
By following these steps and using the provided functions, you should be able to run the Qlib Docker tests and obtain the expected analysis results. |