[
  {
    "name": "negative probabilities rejected in helper",
    "function": "log_growth",
    "args": [
      [
        0.5,
        0.5
      ],
      [
        [
          0.1,
          0.1
        ],
        [
          0.2,
          0.2
        ]
      ],
      [
        2,
        -1
      ]
    ],
    "expected": null,
    "error": true
  },
  {
    "name": "NaN fractional weight rejected",
    "function": "fractional_kelly",
    "args": [
      [
        "NaN",
        1
      ],
      0.4
    ],
    "expected": null,
    "error": true
  },
  {
    "name": "NaN return rejected",
    "function": "log_growth",
    "args": [
      [
        1
      ],
      [
        [
          "NaN"
        ]
      ],
      [
        1
      ]
    ],
    "expected": null,
    "error": true
  },
  {
    "name": "empty allocation rejected",
    "function": "fractional_kelly",
    "args": [
      [],
      0.4
    ],
    "expected": null,
    "error": true
  },
  {
    "name": "all cash can be optimal",
    "function": "kelly_allocation",
    "args": [
      [
        [
          -0.1,
          0
        ],
        [
          -0.05,
          0
        ]
      ]
    ],
    "expected": {
      "weights": [
        0,
        1
      ],
      "expected_log_growth": 0
    },
    "error": false
  },
  {
    "name": "asymmetric interior Kelly",
    "function": "kelly_allocation",
    "args": [
      [
        [
          1,
          0
        ],
        [
          -0.5,
          0
        ]
      ],
      [
        0.6,
        0.4
      ]
    ],
    "expected": {
      "weights": [
        0.8,
        0.2
      ]
    },
    "error": false
  },
  {
    "name": "infinite tolerance rejected",
    "function": "kelly_allocation",
    "args": [
      [
        [
          0.1,
          0
        ],
        [
          0,
          0.1
        ]
      ],
      null,
      30000,
      "Infinity"
    ],
    "expected": null,
    "error": true
  },
  {
    "name": "zero probability ruin is a declared stress constraint",
    "function": "kelly_allocation",
    "args": [
      [
        [
          -1,
          -1
        ],
        [
          0.1,
          0.2
        ]
      ],
      [
        0,
        1
      ]
    ],
    "expected": null,
    "error": true
  }
]
