
com.fluxtion.server.lib.pnl.PositionSnapshot Maven / Gradle / Ivy
The newest version!
/*
* SPDX-FileCopyrightText: © 2025 Gregory Higgins
* SPDX-License-Identifier: AGPL-3.0-only
*/
package com.fluxtion.server.lib.pnl;
import com.fluxtion.runtime.annotations.builder.FluxtionIgnore;
import com.fluxtion.server.lib.pnl.refdata.Instrument;
import lombok.Data;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@Data
public class PositionSnapshot {
public static PositionSnapshot of(InstrumentPosition... positions) {
PositionSnapshot positionSnapshot = new PositionSnapshot();
for (InstrumentPosition position : positions) {
positionSnapshot.getPositions().add(position);
}
return positionSnapshot;
}
@FluxtionIgnore
private Collection positions = new ArrayList<>();
@FluxtionIgnore
private Collection feePositions = new ArrayList<>();
@FluxtionIgnore
private Map instrumentPositionSnopshotMap = new HashMap<>();
public Map getInstrumentPositionMap() {
Map instrumentPositionMap = new HashMap<>();
instrumentPositionSnopshotMap.forEach((instrument, positionSnapshot) -> {
InstrumentPosMtm instrumentPosMtm = new InstrumentPosMtm();
instrumentPosMtm.setBookName(instrument.instrumentName());
positionSnapshot.getPositions().forEach((inst) -> {
instrumentPosMtm.getPositionMap().put(inst.instrument(), inst.position());
});
instrumentPositionMap.put(instrument, instrumentPosMtm);
});
return instrumentPositionMap;
}
public Map getInstrumentFeePositionMap() {
Map instrumentPositionMap = new HashMap<>();
instrumentPositionSnopshotMap.forEach((instrument, positionSnapshot) -> {
FeeInstrumentPosMtm instrumentPosMtm = new FeeInstrumentPosMtm();
instrumentPosMtm.setBookName(instrument.instrumentName());
positionSnapshot.feePositions.forEach((inst) -> {
instrumentPosMtm.getFeesPositionMap().put(inst.instrument(), inst.position());
});
instrumentPositionMap.put(instrument, instrumentPosMtm);
});
return instrumentPositionMap;
}
@Data
public static class InstrumentPositionSnapshot {
private Collection positions = new ArrayList<>();
private Collection feePositions = new ArrayList<>();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy