public DiscretePayoffs Inverse() { var outcomes = new DiscretePayoffs(); foreach (var pnl in this) { outcomes.Add(new DiscretePayoff(pnl.Outcome, -pnl.Reward)); } return(outcomes); }
public static DiscretePayoffs CreateFromContractInfo(ContractInfo[] contractInfos, Money collateral) { var payoffs = new DiscretePayoffs(); foreach (var i in contractInfos) { if (i.Outcome is DiscreteOutcome && i.Payout is Money) { payoffs.Add(i.Outcome, i.Payout - collateral); } } return(payoffs); }
public static DiscretePayoffs CreateFromContractInfo(ContractInfo[] contractInfos, Money collateral, DiscreteOutcome[]?preimages = null) { var hashsetPreimages = (preimages ?? Array.Empty <DiscreteOutcome>()).ToHashSet(); var payoffs = new DiscretePayoffs(); foreach (var i in contractInfos) { if (i.Outcome is DiscreteOutcome && i.Payout is Money) { hashsetPreimages.TryGetValue(i.Outcome, out var preimage); payoffs.Add(preimage ?? i.Outcome, i.Payout - collateral); } } return(payoffs); }