[
  {
    "name": "floor equals highest mean",
    "function": "distributionally_robust_portfolio",
    "args": [
      [
        0.06,
        0.03
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      0.02,
      0.06
    ],
    "expected": {
      "weights": [
        1,
        0
      ],
      "expected_return": 0.06
    },
    "error": false
  },
  {
    "name": "tied highest means diversify",
    "function": "distributionally_robust_portfolio",
    "args": [
      [
        0.06,
        0.06,
        0.03
      ],
      [
        [
          0.01,
          0,
          0
        ],
        [
          0,
          0.01,
          0
        ],
        [
          0,
          0,
          0.01
        ]
      ],
      0.02,
      0.06
    ],
    "expected": {
      "weights": [
        0.5,
        0.5,
        0
      ]
    },
    "error": false
  },
  {
    "name": "free floor searches above floor",
    "function": "distributionally_robust_portfolio",
    "args": [
      [
        0.06,
        0.03
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      0.02,
      0.03
    ],
    "expected": {
      "weights": [
        0.2857142857142857,
        0.7142857142857143
      ],
      "risk_score": 1.5617376188860606
    },
    "error": false
  },
  {
    "name": "outer exhaustion is visible",
    "function": "distributionally_robust_portfolio",
    "args": [
      [
        0.06,
        0.03
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      0.02,
      0.03,
      1e-11,
      1
    ],
    "expected": {
      "status": "nonconverged"
    },
    "error": false
  },
  {
    "name": "infinite threshold rejected",
    "function": "distributionally_robust_portfolio",
    "args": [
      [
        0.06,
        0.03
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      "Infinity",
      0.03
    ],
    "expected": null,
    "error": true
  },
  {
    "name": "infeasible floor rejected",
    "function": "distributionally_robust_portfolio",
    "args": [
      [
        0.06,
        0.03
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      0.02,
      0.07
    ],
    "expected": null,
    "error": true
  },
  {
    "error": false,
    "name": "three asset free floor ratio closed form",
    "function": "distributionally_robust_portfolio",
    "args": [
      [
        0.06,
        0.04,
        0.03
      ],
      [
        [
          0.04,
          0,
          0
        ],
        [
          0,
          0.02,
          0
        ],
        [
          0,
          0,
          0.01
        ]
      ],
      0.02,
      0.03
    ],
    "expected": {
      "weights": [
        0.2,
        0.3,
        0.5
      ],
      "expected_return": 0.039,
      "risk_score": 1.3018891098082386
    }
  }
]
