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: + * + *

+ * + * + *

+ * + * + * @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: + * + *

+ * + * + *

+ * + * + * @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: + * + *

+ * + * + *

+ * + * + * @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: + * + *

+ * + * + *

+ * + * + * @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 (