All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fluxtion.server.lib.pnl.NetMarkToMarket Maven / Gradle / Ivy

There is a newer version: 0.1.36
Show newest version
/*
 * SPDX-FileCopyrightText: © 2025 Gregory Higgins 
 * SPDX-License-Identifier: AGPL-3.0-only
 */

package com.fluxtion.server.lib.pnl;

import com.fluxtion.server.lib.pnl.refdata.Instrument;

import java.util.Map;

public record NetMarkToMarket(InstrumentPosMtm instrumentMtm, FeeInstrumentPosMtm feesMtm, double tradePnl, double fees,
                              double pnlNetFees) {

    public NetMarkToMarket(InstrumentPosMtm instrumentMtm, FeeInstrumentPosMtm feesMtm) {
        this(instrumentMtm, feesMtm, instrumentMtm.getTradePnl(), feesMtm.getFees(), (instrumentMtm.getTradePnl() - feesMtm.getFees()));
    }

    public static NetMarkToMarket combine(InstrumentPosMtm instrumentMtm, FeeInstrumentPosMtm feesMtm) {
        return new NetMarkToMarket(instrumentMtm, feesMtm == null ? new FeeInstrumentPosMtm() : feesMtm);
    }

    public static NetMarkToMarket markToMarketSum(Map instrumentNetMarkToMarketMap) {
        InstrumentPosMtm instrumentPosMtm = new InstrumentPosMtm();
        FeeInstrumentPosMtm feesMtm = new FeeInstrumentPosMtm();

        instrumentNetMarkToMarketMap.values().forEach(m -> {
            instrumentPosMtm.combine(m.instrumentMtm());
            feesMtm.combine(m.feesMtm());
        });
        instrumentPosMtm.setBookName("global");

        return new NetMarkToMarket(instrumentPosMtm, feesMtm);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy