File size: 2,028 Bytes
c417b6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import unittest
import pandas as pd


class TestDataQuality(unittest.TestCase):
    def setUp(self):
        # Load your data here
        self.data = pd.read_csv("data/assets_data.csv")

    def test_completeness(self):
        # Check for missing values
        missing_values = self.data.isnull().sum()
        self.assertEqual(missing_values.sum(), 0,
                         "There are missing values in the dataset.")

    def test_accuracy(self):
        # Define acceptable ranges for numerical columns
        acceptable_ranges = {
            "open": (0, 100000),
            "high": (0, 100000),
            "low": (0, 100000),
            "close": (0, 100000),
        }

        # Check if values are within acceptable ranges
        for column, (min_val, max_val) in acceptable_ranges.items():
            values = self.data[column]
            self.assertTrue(all(min_val <= values) and all(values <= max_val),
                            f"Values in {column} column are outside the"
                            " acceptable range."
                            )

    def test_consistency(self):
        # Check for duplicate rows
        duplicate_rows = self.data[self.data.duplicated()]
        self.assertTrue(duplicate_rows.empty, "Duplicate rows found in the"
                        " dataset."
                        )

    def test_validity(self):
        # Check date format validity
        date_format_valid = pd.to_datetime(self.data.index, errors='coerce') \
            .notna().all()
        self.assertTrue(date_format_valid, "Date format is not valid.")

        # Check format validity for specific columns (e.g., symbols)
        symbol_columns = ["000001.SS", "AAPL", "CL=F", "GC=F", "HG=F",
                          "NVDA", "^DJI", "^GSPC", "^N100", "^N225"]
        valid_symbol_format = self.data[symbol_columns].notna()
        self.assertTrue(valid_symbol_format.all().all(), "Invalid symbol"
                        " format found.")


if __name__ == '__main__':
    unittest.main()