Front Running Detector Akuna Capital OA 2023 Solution

Page Contents

Finding Solution for Front Running Detector Akuna Capital OA 2023, your at right place we have covered lots of other companies OA like Amazon OA, Google OA and Microsoft OA. In this post we will try to answer Front Running Detector Akuna Capital OA 2023 Solution

Front Running Detector Akuna Capital Solution

Front-running is defined as trading a stock or another financial asset by a broker who has inside knowledge of a future transaction that is about to affect its price substantially. It is illegal and unethical.

Here’s an example of front-running: Say a trader gets an order from a broker to buy 50,000 shares of Tesla. Such a huge purchase is bound to drive up the price of the stock immediately, at least in the short term. The trader sets aside the broker request for a minute and first buys some Tesla stock for their own portfolio. Then the broker’s order is executed. The trader could then immediately sell the Tesla shares and collect a profit. The trader has made a profit based on information that was not public knowledge.

Your task is to create a Front-Running Detector that will process option trade data from different exchanges and determine if front-running has occurred. Your solution should be able to handle data from multiple exchanges, with the expectation that additional exchanges will need to be supported in the future. Your implementation should follow good OOP design practices. Given a trade feed, output a list of all (broker_trade_id, electronic_trade_id) pairs. Trade pairs should be ordered by the electronic trade time.

A trade pair is considered front-running if all of the following conditions are met:

  • a. One trade is of type “Broker” and the second trade is of type “Electronic”.
  • b. The Electronic trade occurs 1 minute or less before the Broker trade.
  • c. Both trades are for the same product.
  • d. Both trades are of the same type (Call/Put).
  • e. Both trades have the same side (Buy/Sell).
  • f. Both trades have the same expiry date.
  • g. Both trades have the same strike price.

Related: Amazon Online Assessment 2023 Questions Solution

Note: The incoming trades from CBOE do not have a side field, instead the quantity represents the side. A positive qty represents a buy and negative represents a sell.

Example:

  • Trade1: (date = ‘2022-03-15’, time=9:01:00, type=Broker, qty=-500, strike-1500, expiry=’2022
    04-28′, kind=P, exchange=CBOE, trade-id = 737acm, product=ABC)
  • Trade2: (date = ‘2022-03-15’, time=9:00:24, type-Electronic, qty=-200, strike=1500,
    expiry=’2022-04-28′, kind-P, exchange=CBOE, trade-id=w6c229, product-ABC)
  • Trade3: (date = ‘2022-03-15′, time=9:03:45, type=Electronic, qty=-100, strike=1500, expiry=’2022-04-28’, kind-P, exchange=CBOE, trade-id = tssrin, product=ABC) [Fails condition
    (b)]
  • Trade4: (date = ‘2022-03-15′, time=9:00:53, type=Electronic, qty=-500, strike=1500, expiry=’2022-04-28’, Kind-P, exchange=CBOE, trade-id = Ik451a, product=XYZ) [Fails condition (c)]
  • Trade5: (date = ‘2022-03-15′, time=9:00:05, type=Electronic, qty=-350, strike-1500, expiry=’2022-04-28’, Kind-C, exchange=CBOE, trade-id=9numpr, product=ABC) [Fails condition (d)]
  • Trade6: (date = ‘2022-03-15′, time=9:00:35, type=Electronic, qty=200, strike=1500, expiry=’2022-04-28’, Kind-P, exchange=CBOE, trade-id=922v3g, product-ABC) [Fails condition (e)]
  • Trade7: (date = ‘2022-03-15′, time=9:00:47, type=Electronic, qty=-150, strike=1500, expiry=’2022-04-21’, Kind-P, exchange=CBOE, trade-id=bg54nm, product=ABC) [Fails condition (f)]
  • Trade8: (date = ‘2022-03-15′, time-9:02:23, type=Electronic, qty=-200, strike=1550, expiry=’2022-04-28’, Kind-P, exchange=CBOE, trade-id = 6y7fhm, product=ABC) [Fails condition (g)]

Output: [(‘737acm’, ‘w6c229’)]

Related: Google OA 2022 Questions Solution

Front Running Detector Solution
Front Running Detector Solution

SOLUTION

Program: Front Running Detector Akuna Capital Solution in Python

class FrontRunningDetector:
def init(self):
self.di = dict()
def process(self,s):
t = s.split(":")

if len(self.di) == 0:
    self.di[(t[0], t[1])] = int(t[2])
    return None
else:
    for i, j in self.di.items():
        ma = 0
        if t[0] in i:
            if t[0]==i[0]:
                y = i[1]
            else:
                y = i[0]
            ma = max(ma, ma + j + int(t[2]))
        if t[1] in i:
            if t[1] == i[0]:
                y = i[0]
            else:
                y = i[1]
            ma = max(ma, ma + j + int(t[2]))

self.di[(t[0], t[1])] = int(t[2])
A, B = sorted([y, t[1]])
return ":".join([str(ma),A,t[0],B])

Note: We are preparing a complete List Akuna Capital OA 2022 Questions visit again to find new questions on Akuna Capital OA.

Leave a Comment

3 × 1 =