Files
NexQuant/test/utils
you-n-g 0631de5103 refactor: add run_ret_code method and update run method to use it (#623)
* refactor: Add run_ret_code method and update run method to use it

* feat: Add kwargs support to run methods and test for run_ret_code

* fix: preserve exit code after chmod in DockerEnv entry command

* chore: Change file permissions from 755 to 644 in env_tpl directory

* refactor: Return execution code and update evaluator logic

* lint

* refactor: Use MappingProxyType for running_extra_volume in DockerEnv methods

* lint
2025-02-20 00:42:10 +08:00
..
2024-07-11 08:49:37 +00:00
2024-11-20 17:01:18 +08:00
2024-09-06 17:18:52 +08:00

🐳 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:
    pip install docker
    

2. Run the test script

  • Execute the test script to verify the Docker environment setup:
    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:

    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:

    newgrp docker
    
  3. Verify Docker access Run the following command to ensure that Docker can be accessed:

    docker run hello-world
    
  4. Rerun the test script After completing these steps, rerun the test script:

    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:
      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:
      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.