diff --git a/ReleaseNotes/03_29_2023.txt b/ReleaseNotes/03_29_2023.txt
new file mode 100644
index 00000000000..9eac96db92e
--- /dev/null
+++ b/ReleaseNotes/03_29_2023.txt
@@ -0,0 +1,37 @@
+
+Features:
+
+ - Mid Price Peg Scheme Shell (1, 2)
+ - OMS Benchmark Peg Scheme Side (3, 4)
+ - OMS Benchmark Peg Scheme Ticker (5, 6)
+ - OMS Benchmark Peg Scheme Constructor (7, 8, 9)
+ - Fixed Peg Price Scheme Generator (10, 11, 12)
+ - Mid Peg Price Scheme #1 (13, 14)
+ - Retrieve Set of Montage Tickers (15, 16)
+ - Cross Venue Montage Digest Ticker (17, 18, 19)
+ - Retrieve Ticker Montage L1 Manager (20, 21, 22)
+ - Mid Price Peg Scheme Limit (23, 24, 25)
+ - Market Making Peg Scheme Shell (26, 27)
+ - Market Making Peg Scheme #1 (28, 29, 30)
+ - Peg Scheme Abstract To Interface (31)
+ - Fixed Price Peg Scheme Extension (32, 33)
+ - Mid Peg Price Scheme #2 (34, 35, 36)
+ - Market Making Peg Scheme #2 (37)
+ - Crossing Market Making Peg Scheme #1 (38, 39)
+ - Crossing Market Making Peg Scheme #2 (40, 41)
+ - Montage L1 Manager Side Book (42)
+ - Crossing Market Making Peg Scheme #3 (43, 44, 45)
+ - Entity Equity Label Tick Size (46, 47, 48)
+ - Entity Equity Label Default Size (49)
+ - Entity Equity Label Tick Constructor (50, 51, 52)
+ - Entity Equity Label Ticker #1 (53, 54)
+ - Entity Equity Label Ticker #2 (55, 56)
+ - Aggressive Market Making Peg Scheme #1 (57, 58, 59)
+ - Aggressive Market Making Peg Scheme #2 (60)
+
+
+Bug Fixes/Re-organization:
+
+Samples:
+
+IdeaDRIP:
diff --git a/ScheduleSheet.xlsx b/ScheduleSheet.xlsx
index 10cda2dfb75..6fc99096565 100644
Binary files a/ScheduleSheet.xlsx and b/ScheduleSheet.xlsx differ
diff --git a/src/main/java/org/drip/oms/benchmark/AggressiveMarketMakingPegScheme.java b/src/main/java/org/drip/oms/benchmark/AggressiveMarketMakingPegScheme.java
new file mode 100644
index 00000000000..4740f731178
--- /dev/null
+++ b/src/main/java/org/drip/oms/benchmark/AggressiveMarketMakingPegScheme.java
@@ -0,0 +1,121 @@
+
+package org.drip.oms.benchmark;
+
+import org.drip.state.identifier.EntityEquityLabel;
+
+/*
+ * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ */
+
+/*!
+ * Copyright (C) 2024 Lakshmi Krishnamurthy
+ *
+ * This file is part of DROP, an open-source library targeting analytics/risk, transaction cost analytics,
+ * asset liability management analytics, capital, exposure, and margin analytics, valuation adjustment
+ * analytics, and portfolio construction analytics within and across fixed income, credit, commodity,
+ * equity, FX, and structured products. It also includes auxiliary libraries for algorithm support,
+ * numerical analysis, numerical optimization, spline builder, model validation, statistical learning,
+ * graph builder/navigator, and computational support.
+ *
+ * https://lakshmidrip.github.io/DROP/
+ *
+ * DROP is composed of three modules:
+ *
+ * - DROP Product Core - https://lakshmidrip.github.io/DROP-Product-Core/
+ * - DROP Portfolio Core - https://lakshmidrip.github.io/DROP-Portfolio-Core/
+ * - DROP Computational Core - https://lakshmidrip.github.io/DROP-Computational-Core/
+ *
+ * DROP Product Core implements libraries for the following:
+ * - Fixed Income Analytics
+ * - Loan Analytics
+ * - Transaction Cost Analytics
+ *
+ * DROP Portfolio Core implements libraries for the following:
+ * - Asset Allocation Analytics
+ * - Asset Liability Management Analytics
+ * - Capital Estimation Analytics
+ * - Exposure Analytics
+ * - Margin Analytics
+ * - XVA Analytics
+ *
+ * DROP Computational Core implements libraries for the following:
+ * - Algorithm Support
+ * - Computation Support
+ * - Function Analysis
+ * - Graph Algorithm
+ * - Model Validation
+ * - Numerical Analysis
+ * - Numerical Optimizer
+ * - Spline Builder
+ * - Statistical Learning
+ *
+ * Documentation for DROP is Spread Over:
+ *
+ * - Main => https://lakshmidrip.github.io/DROP/
+ * - Wiki => https://github.com/lakshmiDRIP/DROP/wiki
+ * - GitHub => https://github.com/lakshmiDRIP/DROP
+ * - Repo Layout Taxonomy => https://github.com/lakshmiDRIP/DROP/blob/master/Taxonomy.md
+ * - Javadoc => https://lakshmidrip.github.io/DROP/Javadoc/index.html
+ * - Technical Specifications => https://github.com/lakshmiDRIP/DROP/tree/master/Docs/Internal
+ * - Release Versions => https://lakshmidrip.github.io/DROP/version.html
+ * - Community Credits => https://lakshmidrip.github.io/DROP/credits.html
+ * - Issues Catalog => https://github.com/lakshmiDRIP/DROP/issues
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ *
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * AggressiveMarketMakingPegScheme implements the Aggressively Jumping Market Making Scheme for Peg
+ * Orders. The References are:
+ *
+ *
+ *
+ * -
+ * Berkowitz, S. A., D. E. Logue, and E. A. J. Noser (1988): The Total Cost of Transactions on the
+ * NYSE Journal of Finance 43 (1) 97-112
+ *
+ * -
+ * Cont, R., and A. Kukanov (2017): Optimal Order Placement in Limit Order Markets Quantitative
+ * Finance 17 (1) 21-39
+ *
+ * -
+ * Vassilis, P. (2005a): A Realistic Model of Market Liquidity and Depth Journal of Futures
+ * Markets 25 (5) 443-464
+ *
+ * -
+ * Vassilis, P. (2005b): Slow and Fast Markets Journal of Economics and Business 57
+ * (6) 576-593
+ *
+ * -
+ * Weiss, D. (2006): After the Trade is Made: Processing Securities Transactions Portfolio
+ * Publishing London UK
+ *
+ *
+ *
+ *
+ *
+ *
+ * @author Lakshmi Krishnamurthy
+ */
+
+public class AggressiveMarketMakingPegScheme
+{
+ private EntityEquityLabel _entityEquityLabel = null;
+
+}
diff --git a/src/main/java/org/drip/oms/benchmark/CrossingMarketMakingPegScheme.java b/src/main/java/org/drip/oms/benchmark/CrossingMarketMakingPegScheme.java
new file mode 100644
index 00000000000..41a4ef8e135
--- /dev/null
+++ b/src/main/java/org/drip/oms/benchmark/CrossingMarketMakingPegScheme.java
@@ -0,0 +1,200 @@
+
+package org.drip.oms.benchmark;
+
+import org.drip.oms.depth.MontageL1Manager;
+import org.drip.oms.exchange.CrossVenueMontageDigest;
+import org.drip.oms.transaction.OrderBlock;
+import org.drip.oms.transaction.Side;
+
+/*
+ * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ */
+
+/*!
+ * Copyright (C) 2024 Lakshmi Krishnamurthy
+ *
+ * This file is part of DROP, an open-source library targeting analytics/risk, transaction cost analytics,
+ * asset liability management analytics, capital, exposure, and margin analytics, valuation adjustment
+ * analytics, and portfolio construction analytics within and across fixed income, credit, commodity,
+ * equity, FX, and structured products. It also includes auxiliary libraries for algorithm support,
+ * numerical analysis, numerical optimization, spline builder, model validation, statistical learning,
+ * graph builder/navigator, and computational support.
+ *
+ * https://lakshmidrip.github.io/DROP/
+ *
+ * DROP is composed of three modules:
+ *
+ * - DROP Product Core - https://lakshmidrip.github.io/DROP-Product-Core/
+ * - DROP Portfolio Core - https://lakshmidrip.github.io/DROP-Portfolio-Core/
+ * - DROP Computational Core - https://lakshmidrip.github.io/DROP-Computational-Core/
+ *
+ * DROP Product Core implements libraries for the following:
+ * - Fixed Income Analytics
+ * - Loan Analytics
+ * - Transaction Cost Analytics
+ *
+ * DROP Portfolio Core implements libraries for the following:
+ * - Asset Allocation Analytics
+ * - Asset Liability Management Analytics
+ * - Capital Estimation Analytics
+ * - Exposure Analytics
+ * - Margin Analytics
+ * - XVA Analytics
+ *
+ * DROP Computational Core implements libraries for the following:
+ * - Algorithm Support
+ * - Computation Support
+ * - Function Analysis
+ * - Graph Algorithm
+ * - Model Validation
+ * - Numerical Analysis
+ * - Numerical Optimizer
+ * - Spline Builder
+ * - Statistical Learning
+ *
+ * Documentation for DROP is Spread Over:
+ *
+ * - Main => https://lakshmidrip.github.io/DROP/
+ * - Wiki => https://github.com/lakshmiDRIP/DROP/wiki
+ * - GitHub => https://github.com/lakshmiDRIP/DROP
+ * - Repo Layout Taxonomy => https://github.com/lakshmiDRIP/DROP/blob/master/Taxonomy.md
+ * - Javadoc => https://lakshmidrip.github.io/DROP/Javadoc/index.html
+ * - Technical Specifications => https://github.com/lakshmiDRIP/DROP/tree/master/Docs/Internal
+ * - Release Versions => https://lakshmidrip.github.io/DROP/version.html
+ * - Community Credits => https://lakshmidrip.github.io/DROP/credits.html
+ * - Issues Catalog => https://github.com/lakshmiDRIP/DROP/issues
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ *
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * CrossingMarketMakingPegScheme implements the Crosser Market Making Scheme for Peg Orders. The
+ * References are:
+ *
+ *
+ *
+ * -
+ * Berkowitz, S. A., D. E. Logue, and E. A. J. Noser (1988): The Total Cost of Transactions on the
+ * NYSE Journal of Finance 43 (1) 97-112
+ *
+ * -
+ * Cont, R., and A. Kukanov (2017): Optimal Order Placement in Limit Order Markets Quantitative
+ * Finance 17 (1) 21-39
+ *
+ * -
+ * Vassilis, P. (2005a): A Realistic Model of Market Liquidity and Depth Journal of Futures
+ * Markets 25 (5) 443-464
+ *
+ * -
+ * Vassilis, P. (2005b): Slow and Fast Markets Journal of Economics and Business 57
+ * (6) 576-593
+ *
+ * -
+ * Weiss, D. (2006): After the Trade is Made: Processing Securities Transactions Portfolio
+ * Publishing London UK
+ *
+ *
+ *
+ *
+ *
+ *
+ * @author Lakshmi Krishnamurthy
+ */
+
+public class CrossingMarketMakingPegScheme
+ extends MarketMakingPegScheme
+{
+
+ /**
+ * CrossingMarketMakingPegScheme Constructor
+ *
+ * @param ticker Ticker
+ * @param side Side
+ *
+ * @throws Exception Thrown if the Inputs are Invalid
+ */
+
+ public CrossingMarketMakingPegScheme (
+ final String ticker,
+ final Side side)
+ throws Exception
+ {
+ super (
+ ticker,
+ side
+ );
+ }
+
+ @Override public double limitPrice (
+ final CrossVenueMontageDigest crossVenueMontageDigest)
+ throws Exception
+ {
+ if (null == crossVenueMontageDigest)
+ {
+ throw new Exception (
+ "MidPricePegScheme::limitPrice => Invalid Inputs"
+ );
+ }
+
+ MontageL1Manager montageL1Manager = crossVenueMontageDigest.retrieveTickerMontageL1Manager (
+ ticker()
+ );
+
+ if (null == montageL1Manager)
+ {
+ throw new Exception (
+ "MidPricePegScheme::limitPrice => Invalid L1 Montage Manager"
+ );
+ }
+
+ char buySell = side().buySell();
+
+ if (Side.BUY == buySell)
+ {
+ OrderBlock askNBBOBlock = montageL1Manager.askNBBOBlock();
+
+ if (null == askNBBOBlock)
+ {
+ throw new Exception (
+ "MidPricePegScheme::limitPrice => Invalid Ask NBBO Block"
+ );
+ }
+
+ return askNBBOBlock.price();
+ }
+
+ if (Side.SELL == buySell)
+ {
+ OrderBlock bidNBBOBlock = montageL1Manager.bidNBBOBlock();
+
+ if (null == bidNBBOBlock)
+ {
+ throw new Exception (
+ "MidPricePegScheme::limitPrice => Invalid Bid NBBO Block"
+ );
+ }
+
+ return bidNBBOBlock.price();
+ }
+
+ throw new Exception (
+ "MidPricePegScheme::limitPrice => Cannot compute Limit Price"
+ );
+ }
+}
diff --git a/src/main/java/org/drip/oms/benchmark/FixedPricePegScheme.java b/src/main/java/org/drip/oms/benchmark/FixedPricePegScheme.java
index 26dccfbc29e..ee2e16a69a8 100644
--- a/src/main/java/org/drip/oms/benchmark/FixedPricePegScheme.java
+++ b/src/main/java/org/drip/oms/benchmark/FixedPricePegScheme.java
@@ -3,7 +3,6 @@
import org.drip.numerical.common.NumberUtil;
import org.drip.oms.exchange.CrossVenueMontageDigest;
-import org.drip.oms.transaction.Side;
/*
* -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -155,8 +154,6 @@ public double threshold()
}
@Override public double limitPrice (
- final String ticker,
- final Side side,
final CrossVenueMontageDigest crossVenueMontageDigest)
throws Exception
{
diff --git a/src/main/java/org/drip/oms/benchmark/MarketMakingPegScheme.java b/src/main/java/org/drip/oms/benchmark/MarketMakingPegScheme.java
new file mode 100644
index 00000000000..dcf2f7ed0ce
--- /dev/null
+++ b/src/main/java/org/drip/oms/benchmark/MarketMakingPegScheme.java
@@ -0,0 +1,156 @@
+
+package org.drip.oms.benchmark;
+
+import org.drip.oms.transaction.Side;
+
+/*
+ * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ */
+
+/*!
+ * Copyright (C) 2024 Lakshmi Krishnamurthy
+ *
+ * This file is part of DROP, an open-source library targeting analytics/risk, transaction cost analytics,
+ * asset liability management analytics, capital, exposure, and margin analytics, valuation adjustment
+ * analytics, and portfolio construction analytics within and across fixed income, credit, commodity,
+ * equity, FX, and structured products. It also includes auxiliary libraries for algorithm support,
+ * numerical analysis, numerical optimization, spline builder, model validation, statistical learning,
+ * graph builder/navigator, and computational support.
+ *
+ * https://lakshmidrip.github.io/DROP/
+ *
+ * DROP is composed of three modules:
+ *
+ * - DROP Product Core - https://lakshmidrip.github.io/DROP-Product-Core/
+ * - DROP Portfolio Core - https://lakshmidrip.github.io/DROP-Portfolio-Core/
+ * - DROP Computational Core - https://lakshmidrip.github.io/DROP-Computational-Core/
+ *
+ * DROP Product Core implements libraries for the following:
+ * - Fixed Income Analytics
+ * - Loan Analytics
+ * - Transaction Cost Analytics
+ *
+ * DROP Portfolio Core implements libraries for the following:
+ * - Asset Allocation Analytics
+ * - Asset Liability Management Analytics
+ * - Capital Estimation Analytics
+ * - Exposure Analytics
+ * - Margin Analytics
+ * - XVA Analytics
+ *
+ * DROP Computational Core implements libraries for the following:
+ * - Algorithm Support
+ * - Computation Support
+ * - Function Analysis
+ * - Graph Algorithm
+ * - Model Validation
+ * - Numerical Analysis
+ * - Numerical Optimizer
+ * - Spline Builder
+ * - Statistical Learning
+ *
+ * Documentation for DROP is Spread Over:
+ *
+ * - Main => https://lakshmidrip.github.io/DROP/
+ * - Wiki => https://github.com/lakshmiDRIP/DROP/wiki
+ * - GitHub => https://github.com/lakshmiDRIP/DROP
+ * - Repo Layout Taxonomy => https://github.com/lakshmiDRIP/DROP/blob/master/Taxonomy.md
+ * - Javadoc => https://lakshmidrip.github.io/DROP/Javadoc/index.html
+ * - Technical Specifications => https://github.com/lakshmiDRIP/DROP/tree/master/Docs/Internal
+ * - Release Versions => https://lakshmidrip.github.io/DROP/version.html
+ * - Community Credits => https://lakshmidrip.github.io/DROP/credits.html
+ * - Issues Catalog => https://github.com/lakshmiDRIP/DROP/issues
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ *
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * MarketMakingPegScheme abstracts the core Market Making Scheme for Peg Orders. The References are:
+ *
+ *
+ *
+ * -
+ * Berkowitz, S. A., D. E. Logue, and E. A. J. Noser (1988): The Total Cost of Transactions on the
+ * NYSE Journal of Finance 43 (1) 97-112
+ *
+ * -
+ * Cont, R., and A. Kukanov (2017): Optimal Order Placement in Limit Order Markets Quantitative
+ * Finance 17 (1) 21-39
+ *
+ * -
+ * Vassilis, P. (2005a): A Realistic Model of Market Liquidity and Depth Journal of Futures
+ * Markets 25 (5) 443-464
+ *
+ * -
+ * Vassilis, P. (2005b): Slow and Fast Markets Journal of Economics and Business 57
+ * (6) 576-593
+ *
+ * -
+ * Weiss, D. (2006): After the Trade is Made: Processing Securities Transactions Portfolio
+ * Publishing London UK
+ *
+ *
+ *
+ *
+ *
+ *
+ * @author Lakshmi Krishnamurthy
+ */
+
+public abstract class MarketMakingPegScheme
+ implements PegScheme
+{
+ private Side _side = null;
+ private String _ticker = "";
+
+ protected MarketMakingPegScheme (
+ final String ticker,
+ final Side side)
+ throws Exception
+ {
+ if (null == (_ticker = ticker) || _ticker.isEmpty() || null == (_side = side))
+ {
+ throw new Exception (
+ "MarketMakingPegScheme Constructor => Invalid Inputs"
+ );
+ }
+ }
+
+ /**
+ * Retrieve the Ticker
+ *
+ * @return The Ticker
+ */
+
+ public String ticker()
+ {
+ return _ticker;
+ }
+
+ /**
+ * Retrieve the Side
+ *
+ * @return The Side
+ */
+
+ public Side side()
+ {
+ return _side;
+ }
+}
diff --git a/src/main/java/org/drip/oms/benchmark/MidPricePegScheme.java b/src/main/java/org/drip/oms/benchmark/MidPricePegScheme.java
new file mode 100644
index 00000000000..6ae8fbab464
--- /dev/null
+++ b/src/main/java/org/drip/oms/benchmark/MidPricePegScheme.java
@@ -0,0 +1,177 @@
+
+package org.drip.oms.benchmark;
+
+import org.drip.oms.depth.MontageL1Manager;
+import org.drip.oms.exchange.CrossVenueMontageDigest;
+
+/*
+ * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ */
+
+/*!
+ * Copyright (C) 2024 Lakshmi Krishnamurthy
+ *
+ * This file is part of DROP, an open-source library targeting analytics/risk, transaction cost analytics,
+ * asset liability management analytics, capital, exposure, and margin analytics, valuation adjustment
+ * analytics, and portfolio construction analytics within and across fixed income, credit, commodity,
+ * equity, FX, and structured products. It also includes auxiliary libraries for algorithm support,
+ * numerical analysis, numerical optimization, spline builder, model validation, statistical learning,
+ * graph builder/navigator, and computational support.
+ *
+ * https://lakshmidrip.github.io/DROP/
+ *
+ * DROP is composed of three modules:
+ *
+ * - DROP Product Core - https://lakshmidrip.github.io/DROP-Product-Core/
+ * - DROP Portfolio Core - https://lakshmidrip.github.io/DROP-Portfolio-Core/
+ * - DROP Computational Core - https://lakshmidrip.github.io/DROP-Computational-Core/
+ *
+ * DROP Product Core implements libraries for the following:
+ * - Fixed Income Analytics
+ * - Loan Analytics
+ * - Transaction Cost Analytics
+ *
+ * DROP Portfolio Core implements libraries for the following:
+ * - Asset Allocation Analytics
+ * - Asset Liability Management Analytics
+ * - Capital Estimation Analytics
+ * - Exposure Analytics
+ * - Margin Analytics
+ * - XVA Analytics
+ *
+ * DROP Computational Core implements libraries for the following:
+ * - Algorithm Support
+ * - Computation Support
+ * - Function Analysis
+ * - Graph Algorithm
+ * - Model Validation
+ * - Numerical Analysis
+ * - Numerical Optimizer
+ * - Spline Builder
+ * - Statistical Learning
+ *
+ * Documentation for DROP is Spread Over:
+ *
+ * - Main => https://lakshmidrip.github.io/DROP/
+ * - Wiki => https://github.com/lakshmiDRIP/DROP/wiki
+ * - GitHub => https://github.com/lakshmiDRIP/DROP
+ * - Repo Layout Taxonomy => https://github.com/lakshmiDRIP/DROP/blob/master/Taxonomy.md
+ * - Javadoc => https://lakshmidrip.github.io/DROP/Javadoc/index.html
+ * - Technical Specifications => https://github.com/lakshmiDRIP/DROP/tree/master/Docs/Internal
+ * - Release Versions => https://lakshmidrip.github.io/DROP/version.html
+ * - Community Credits => https://lakshmidrip.github.io/DROP/credits.html
+ * - Issues Catalog => https://github.com/lakshmiDRIP/DROP/issues
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ *
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * MidPricePegScheme implements Mid-Peg Price Scheme for Peg Orders. The References are:
+ *
+ *
+ *
+ * -
+ * Berkowitz, S. A., D. E. Logue, and E. A. J. Noser (1988): The Total Cost of Transactions on the
+ * NYSE Journal of Finance 43 (1) 97-112
+ *
+ * -
+ * Cont, R., and A. Kukanov (2017): Optimal Order Placement in Limit Order Markets Quantitative
+ * Finance 17 (1) 21-39
+ *
+ * -
+ * Vassilis, P. (2005a): A Realistic Model of Market Liquidity and Depth Journal of Futures
+ * Markets 25 (5) 443-464
+ *
+ * -
+ * Vassilis, P. (2005b): Slow and Fast Markets Journal of Economics and Business 57
+ * (6) 576-593
+ *
+ * -
+ * Weiss, D. (2006): After the Trade is Made: Processing Securities Transactions Portfolio
+ * Publishing London UK
+ *
+ *
+ *
+ *
+ *
+ *
+ * @author Lakshmi Krishnamurthy
+ */
+
+public class MidPricePegScheme
+ implements PegScheme
+{
+ private String _ticker = "";
+
+ /**
+ * MidPricePegScheme Constructor
+ *
+ * @param ticker Ticker
+ *
+ * @throws Exception Thrown if Inputs are Invalid
+ */
+
+ public MidPricePegScheme (
+ final String ticker)
+ throws Exception
+ {
+ if (null == (_ticker = ticker) || _ticker.isEmpty())
+ {
+ throw new Exception (
+ "MidPricePegScheme Constructor => Invalid Inputs"
+ );
+ }
+ }
+
+ /**
+ * Retrieve the Ticker
+ *
+ * @return The Ticker
+ */
+
+ public String ticker()
+ {
+ return _ticker;
+ }
+
+ @Override public double limitPrice (
+ final CrossVenueMontageDigest crossVenueMontageDigest)
+ throws Exception
+ {
+ if (null == crossVenueMontageDigest)
+ {
+ throw new Exception (
+ "MidPricePegScheme::limitPrice => Invalid Inputs"
+ );
+ }
+
+ MontageL1Manager montageL1Manager = crossVenueMontageDigest.retrieveTickerMontageL1Manager (
+ _ticker
+ );
+
+ if (null == montageL1Manager)
+ {
+ throw new Exception (
+ "MidPricePegScheme::limitPrice => Invalid L1 Montage Manager"
+ );
+ }
+
+ return montageL1Manager.midPrice();
+ }
+}
diff --git a/src/main/java/org/drip/oms/benchmark/PegScheme.java b/src/main/java/org/drip/oms/benchmark/PegScheme.java
index df1b30247a3..b598c57643d 100644
--- a/src/main/java/org/drip/oms/benchmark/PegScheme.java
+++ b/src/main/java/org/drip/oms/benchmark/PegScheme.java
@@ -2,7 +2,6 @@
package org.drip.oms.benchmark;
import org.drip.oms.exchange.CrossVenueMontageDigest;
-import org.drip.oms.transaction.Side;
/*
* -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -120,8 +119,6 @@ public interface PegScheme
/**
* Generate the Threshold Limit Price using the CrossVenueMontageDigest Market Data
*
- * @param ticker Ticker
- * @param side Side
* @param crossVenueMontageDigest CrossVenueMontageDigest Market Data
*
* @return The Generated Threshold Price
@@ -130,8 +127,6 @@ public interface PegScheme
*/
public abstract double limitPrice (
- final String ticker,
- final Side side,
final CrossVenueMontageDigest crossVenueMontageDigest)
throws Exception;
}
diff --git a/src/main/java/org/drip/oms/depth/MontageL1Manager.java b/src/main/java/org/drip/oms/depth/MontageL1Manager.java
index c2cb63c584f..8864a6cc1df 100644
--- a/src/main/java/org/drip/oms/depth/MontageL1Manager.java
+++ b/src/main/java/org/drip/oms/depth/MontageL1Manager.java
@@ -130,6 +130,9 @@ public class MontageL1Manager
public MontageL1Manager()
{
+ _orderedAskBook = new TreeMap();
+
+ _orderedBidBook = new TreeMap();
}
/**
@@ -393,6 +396,14 @@ public OrderBlock askNBBOBlock()
).topOfTheBook();
}
+ /**
+ * Compute the Mid-price
+ *
+ * @return The Mid-price
+ *
+ * @throws Exception Thrown if the mid-price cannot be calculated
+ */
+
public double midPrice()
throws Exception
{
diff --git a/src/main/java/org/drip/oms/exchange/CrossVenueMontageDigest.java b/src/main/java/org/drip/oms/exchange/CrossVenueMontageDigest.java
index 5ccebe59e54..358655d9a47 100644
--- a/src/main/java/org/drip/oms/exchange/CrossVenueMontageDigest.java
+++ b/src/main/java/org/drip/oms/exchange/CrossVenueMontageDigest.java
@@ -2,6 +2,7 @@
package org.drip.oms.exchange;
import java.util.Map;
+import java.util.Set;
import org.drip.oms.depth.MontageL1Manager;
@@ -149,4 +150,49 @@ public Map tickerL1ManagerMap()
{
return _tickerL1ManagerMap;
}
+
+ /**
+ * Retrieve the Set of Montage Tickers
+ *
+ * @return Set of Montage Tickers
+ */
+
+ public Set tickerSet()
+ {
+ return _tickerL1ManagerMap.keySet();
+ }
+
+ /**
+ * Indicate if the Specified Ticker is available in the Montage
+ *
+ * @param ticker Ticker
+ *
+ * @return TRUE - The Specified Ticker is available in the Montage
+ */
+
+ public boolean containsTicker (
+ final String ticker)
+ {
+ return null != ticker && !ticker.isEmpty() && _tickerL1ManagerMap.containsKey (
+ ticker
+ );
+ }
+
+ /**
+ * Retrieve the L1 Montage Manager Map for specified Ticker
+ *
+ * @param ticker Ticker
+ *
+ * @return L1 Montage Manager Map for specified Ticker
+ */
+
+ public MontageL1Manager retrieveTickerMontageL1Manager (
+ final String ticker)
+ {
+ return containsTicker (
+ ticker
+ ) ? _tickerL1ManagerMap.get (
+ ticker
+ ) : null;
+ }
}
diff --git a/src/main/java/org/drip/state/identifier/EntityEquityLabel.java b/src/main/java/org/drip/state/identifier/EntityEquityLabel.java
index b40ac529c76..1f70937d087 100644
--- a/src/main/java/org/drip/state/identifier/EntityEquityLabel.java
+++ b/src/main/java/org/drip/state/identifier/EntityEquityLabel.java
@@ -1,6 +1,8 @@
package org.drip.state.identifier;
+import org.drip.numerical.common.NumberUtil;
+
/*
* -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*/
@@ -90,6 +92,8 @@
*
*
* - EntityEquityLabel Constructor
+ * - Retrieve the Ticker
+ * - Retrieve the Tick Size
* - Make a Standard Equity Entity Label from the Reference Entity Name
*
*
@@ -113,6 +117,15 @@
public class EntityEquityLabel extends EntityDesignateLabel
{
+ /**
+ * Tick Size Default 1 cent
+ */
+
+ public static final double DEFAULT_TICK_SIZE = 0.01;
+
+ private String _ticker = "";
+ private double _tickSize = Double.NaN;
+
/**
* Make a Standard Equity Entity Label from the Reference Entity Name
*
@@ -127,7 +140,7 @@ public static final EntityEquityLabel Standard (
final String currency)
{
try {
- return new EntityEquityLabel (referenceEntity, currency);
+ return new EntityEquityLabel (referenceEntity, currency, referenceEntity, DEFAULT_TICK_SIZE);
} catch (Exception e) {
e.printStackTrace();
}
@@ -140,16 +153,53 @@ public static final EntityEquityLabel Standard (
*
* @param referenceEntity The Reference Entity
* @param currency The Currency
+ * @param ticker Ticker
+ * @param tickSize Default Tick Size
*
* @throws Exception Thrown if the inputs are invalid
*/
private EntityEquityLabel (
final String referenceEntity,
- final String currency)
+ final String currency,
+ final String ticker,
+ final double tickSize)
throws Exception
{
super (referenceEntity, currency);
+
+ if (null == (_ticker = ticker) || !_ticker.isEmpty() ||
+ !NumberUtil.IsValid (
+ _tickSize = tickSize
+ ) || 0. >= _tickSize
+ )
+ {
+ throw new Exception (
+ "EntityEquityLabel Constructor => Invalid Inputs"
+ );
+ }
+ }
+
+ /**
+ * Retrieve the Ticker
+ *
+ * @return The Ticker
+ */
+
+ public String ticker()
+ {
+ return _ticker;
+ }
+
+ /**
+ * Retrieve the Tick Size
+ *
+ * @return The Tick Size
+ */
+
+ public double tickSize()
+ {
+ return _tickSize;
}
@Override public boolean match (