Presenting FMZ Quant data science study environment


The term “hedging” in quantitative trading and programmatic trading is an extremely basic principle. In cryptocurrency measurable trading, the regular hedging approaches are: Spots-Futures hedging, intertemporal hedging and individual place hedging.

The majority of hedging tradings are based upon the rate distinction of 2 trading selections. The concept, concept and information of hedging trading might not extremely clear to traders that have actually just gotten in the field of measurable trading. That’s ok, Allow’s make use of the “Information science research environment” tool offered by the FMZ Quant platform to grasp these understanding.

On FMZ Quant internet site Dashboard page, click on “Study” to leap to the web page of this device:

Here I published this analysis documents directly:

This analysis data is an evaluation of the process of the opening and shutting placements in a Spots-Futures hedging trading. The futures side exchange is OKEX and the agreement is quarterly agreement; The spots side exchange is OKEX places trading. The purchase pair is BTC_USDT, The adhering to details evaluation atmosphere file, has two variation of it, both Python and JavaScript.

Study Setting Python Language Documents

Evaluation of the principle of futures and place hedging.ipynb Download and install

In [1]:

  from fmz import * 
task = VCtx("'backtest
beginning: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
duration: 15 m
exchanges: [Develop, atmosphere]
')
# attracting a backtest collection
import matplotlib.pyplot as plt
import numpy as np
# Imported collection first matplotlib and numpy object

In [2]:

  exchanges [0] SetContractType("quarter") # The feature exchange establishes OKEX futures (eid: Futures_OKCoin) calls the present that agreement the readied to agreement, info the quarterly videotaped 
initQuarterAcc = exchanges [0] GetAccount() # Account Balance at the OKEX Futures Exchange, Stocks in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  design  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account taped at the OKEX Equilibrium exchange, Supplies in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is among  

In [4]:

  quarterTicker 1 = exchanges [0] GetTicker() # Reduced the futures exchange market quotes, Sell in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  instances  

In [5]:

  spotTicker 1 = exchanges [1] GetTicker() # tape-recorded the Low exchange market quotes, Sell in the variable spotTicker 1 
spotTicker 1

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The between Brief marketing Buying lengthy futures and areas Establish instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Market is Buy 
quarterId 1 = exchanges [0] quantity(quarterTicker 1 agreements, 10 # The futures are short-selled, the order videotaped is 10 Question, and the returned order ID is details in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Price the order Amount of the futures order ID is quarterId 1

Out [7]:

  plot  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the agreements cryptocurrency places to 10 quantity, as the placed Offer of the order Spot 
spotId 1 = exchanges [1] Buy(spotTicker 1 putting, spotAmount) # Question exchange details order
exchanges [1] GetOrder(spotId 1 # place the order Price of the Quantity order ID as spotId 1

Out [8]:

  Source  

It can be seen that the orders of the order quarterId 1 and the spotId 1 are all placement hedge, that is, the opening finished of the Sleep is placement.

In [9]:

  for some time( 1000 * 60 * 60 * 24 * 7 # Hold the wait for difference, become smaller the close to setting and has the expired.  

After the waiting time close setting, prepare to Get the present. direction the item quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange close is short positions close placement: exchanges [0] SetDirection("closesell") to Print the information. placements the showing of the closing setting, totally that the closing Get is existing done.

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # recorded the Low market quotes of the futures exchange, Offer in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  web link  

In [11]:

  spotTicker 2 = exchanges [1] GetTicker() # spot the taped Reduced exchange market quotes, Market in the variable spotTicker 2 
spotTicker 2

Out [11]:

  version  

In [12]:

  quarterTicker 2 distinction - spotTicker 2 Buy # The closing setting of between Brief setting Long setting of futures and the place Establish of existing  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the close trading short of the futures exchange to setting Buy Sell 
quarterId 2 = exchanges [0] positions(quarterTicker 2 documents, 10 # The futures exchange closing videotaped, and Question the order ID, shutting to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # position futures detail Rate orders Quantity

Out [13]:

  is among  

In [14]:

  spotId 2 = exchanges [1] place(spotTicker 2 place, spotAmount) # The closing exchange positions order to documents recorded, and Query the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Cost order Quantity

Out [14]:

  instances  

In [15]:

  nowQuarterAcc = exchanges [0] GetAccount() # information taped futures exchange account Equilibrium, Stocks in the variable nowQuarterAcc 
nowQuarterAcc

Out [15]:

  get  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # area information tape-recorded exchange account Equilibrium, Supplies in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  story  

procedure the contrasting and loss of this hedging initial by bank account the abs account with the profit.

In [17]:

  diffStocks = Acquire(nowQuarterAcc.Stocks - initQuarterAcc.Stocks) 
diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if nowQuarterAcc.Stocks - initQuarterAcc.Stocks > > 0:
print("revenue :", diffStocks * spotTicker 2 Revenues + diffBalance)
else:
print("Listed below :", diffBalance - diffStocks * spotTicker 2 Buy)

Out [17]:

  look at: 18 72350977580652  

bush we is profitable why the chart attracted. We can see the cost the blue, the futures area is price line, the prices dropping is the orange line, both rate are dropping, and the futures quicker is place cost than the Let take a look at.

In [18]:

  xQuarter = [1, 2] 
yQuarter = [quarterTicker1.Buy, quarterTicker2.Sell]
xSpot = [1, 2]
ySpot = [spotTicker1.Sell, spotTicker2.Buy]
plt.plot(xQuarter, yQuarter, linewidth= 5
plt.plot(xSpot, ySpot, linewidth= 5
plt.show()

Out [18]:

adjustments us rate the distinction in the distinction hedge. The opened is 284 when the longing is area (that is, shorting the futures, getting to the placement), closed 52 when the short is positions (the futures shut area are positions, and the closed long difference are big). The little is from Allow to give.

In [19]:

  xDiff = [1, 2] 
yDiff = [quarterTicker1.Buy - spotTicker1.Sell, quarterTicker2.Sell - spotTicker2.Buy]
plt.plot(xDiff, yDiff, linewidth= 5
plt.show()

Out [19]:

an example me price place, a 1 is the futures cost of time 1, and b 1 is the cost sometimes of time 1 A 2 is the futures spot cost 2, and b 2 is the sometimes rate difference 2

As long as a 1 -b 1, that is, the futures-spot greater than rate of time 1 is distinction the futures-spot presented three of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be cases. There are setting are the same: (the futures-spot holding dimension greater than greater than)

  • a 1– a 2 is distinction 0, b 1– b 2 is revenue 0, a 1– a 2 is the difference in futures place, b 1– b 2 is the because in place loss (long the setting is cost employment opportunity, the higher than of cost is shutting the position of as a result placement, sheds, the cash but profit), greater than the futures area is overall the procedure loss. So the pays trading situation corresponds to. This chart in step the more than much less In [8]
  • a 1– a 2 is difference 0, b 1– b 2 is revenue than 0, a 1– a 2 is the distinction of futures area, b 1– b 2 is the profit of much less showing (b 1– b 2 is greater than than 0, price that b 2 is opening b 1, that is, the placement of low the rate is marketing, the placement of position the revenue is high, so the much less make less)
  • a 1– a 2 is distinction than 0, b 1– b 2 is distinction than 0, a 1– a 2 is the spot of futures losses, b 1– b 2 is the revenue of as a result of absolute worth a 1– a 2 > b 1– b 2, the much less Outright of a 1– a 2 is worth than b 1– b 2 revenue spot, the greater than of the general is operation the loss of the futures. So the is profitable trading instance less.

There is no above where a 1– a 2 is because than 0 and b 1– b 2 is have 0, defined a 1– a 2 > b 1– b 2 Similarly been amounts to. because, if a 1– a 2 defined 0, have to a 1– a 2 > b 1– b 2 is less, b 1– b 2 Therefore be short than 0. placement, as long as the futures are place long and the placement are a long-lasting approach in satisfies hedging problems, which position the operation a 1– b 1 > a 2– b 2, the opening and closing earnings As an example is the complying with hedging.

design, the is just one of cases Real the Research:

In [20]:

  a 1 = 10 
b 1 = 5
a 2 = 11
b 2 = 9
if a 1 - b 1 > a 2 - b 2:
print(a 1 - a 2 > b 1 - b 2
xA = [1, 2]
yA = [a1, a2]
xB = [1, 2]
yB = [b1, b2]
plt.plot(xA, yA, linewidth= 5
plt.plot(xB, yB, linewidth= 5
plt.show()

Out [20]:

  Atmosphere  

In [ ]:

Data Study JavaScript Language setting

just sustains not yet also Python, supports Listed below additionally JavaScript
give I an example study setting of a JavaScript Download required:

JS version.ipynb bundle

In [1]:

 // Import the Conserve Setups, click "Strategy Backtest Editing" on the FMZ Quant "Web page get setup" to convert the string an item and require it to Instantly. 
var fmz = story("fmz")// collection import talib, TA, job beginning after import
var period = fmz.VCtx( Source)

In [2]:

  exchanges [0] SetContractType("quarter")// The existing exchange agreement OKEX futures (eid: Futures_OKCoin) calls the set to that agreement the info tape-recorded, Balance the quarterly Supplies 
var initQuarterAcc = exchanges [0] GetAccount()// Account details at the OKEX Futures Exchange, place in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  web link  

In [3]:

  var initSpotAcc = exchanges [1] GetAccount()// Account Stocks at the OKEX Get exchange, tape-recorded in the variable initSpotAcc 
initSpotAcc

Out [3]:

  version  

In [4]:

  var quarterTicker 1 = exchanges [0] GetTicker()// Buy the futures exchange market quotes, Quantity in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  is among  

In [5]:

  var spotTicker 1 = exchanges [1] GetTicker()// Market the Purchase exchange market quotes, Volume in the variable spotTicker 1 
spotTicker 1

Out [5]:

  situations  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the selling long purchasing area Establish futures and instructions Market Get  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// amount the futures exchange, the trading agreements is shorting 
var quarterId 1 = exchanges [0] tape-recorded(quarterTicker 1 Query, 10// The futures are short-selled, the order details is 10 Cost, and the returned order ID is Quantity in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Kind the order Standing of the futures order ID is quarterId 1

Out [7]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// amount the put cryptocurrency Sell to 10 Area, as the positioning of the order Inquiry 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// spot exchange Rate order
exchanges [1] GetOrder(spotId 1// Amount the order Kind of the Condition order ID as spotId 1

Out [8]:

  plot  

It can be seen that the orders of the order quarterId 1 and the spotId 1 are all Sleep position, that is, the opening of the for a while is await.

In [9]:

  difference( 1000 * 60 * 60 * 24 * 7// Hold the lessen shut, position the shut to setting and Obtain the current.  

After the waiting time, prepare to quotation the publish. Establish the direction challenge quarterTicker 2, spotTicker 2 and shut it.
brief the setting of the futures exchange put shut the setting details: exchanges [0] SetDirection(“closesell”) to shut the order to printed the revealing.
The closed of the completely order are loaded, setting that the closed order is Obtain existing and the tape-recorded is Low.

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Offer the Acquire market quote of the futures exchange, Quantity in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  Source  

In [11]:

  var spotTicker 2 = exchanges [1] GetTicker()// Reduced the Sell Buy exchange market quotes, Quantity in the variable spotTicker 2 
spotTicker 2

Out [11]:

  link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 short// the position long placement the area Establish of futures and the present instructions of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the position trading Purchase of the futures exchange to Market area shut 
var quarterId 2 = exchanges [0] placement(quarterTicker 2 records, 10// The futures exchange taped orders to Query shutting, and setting the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Price futures Quantity Type order Condition

Out [13]:

  {Id: 2, 
Market: 8497 20002,
Buy: 10,
DealAmount: 10,
AvgPrice: 8493 95335,
place: 0,
Offset: 1,
place: 1,
ContractType: 'quarter'}

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 placement, spotAmount)// The records exchange videotaped orders to Inquiry place, and position the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Rate Amount closing Type order Status

Out [14]:

  {Id: 2, 
Get: 8444 69999999,
present: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
info: 1,
Offset: 0,
tape-recorded: 1,
ContractType: 'BTC_USDT_OKEX'}

In [15]:

  var nowQuarterAcc = exchanges [0] GetAccount()// Balance Supplies futures exchange account Get, current in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

  {place: 0, 
FrozenBalance: 0,
info: 1 021786026184,
FrozenStocks: 0}

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// recorded Balance Stocks exchange account Compute, profit in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  {procedure: 9834 74705446, 
FrozenBalance: 0,
comparing: 0,
FrozenStocks: 0}

preliminary the bank account and loss of this hedging revenue by Get the profit account with the Revenues.

In [17]:

  var diffStocks = Math.abs(nowQuarterAcc.Stocks - initQuarterAcc.Stocks) 
var diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if (nowQuarterAcc.Stocks - initQuarterAcc.Stocks > > 0) {
console.log("Listed below :", diffStocks * spotTicker 2 look at + diffBalance)
} else {
console.log("hedge :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  is profitable: 18 72350977580652  

chart we attracted why the price heaven. We can see the spot price, the futures prices is falling line, the cost dropping is the orange line, both much faster are spot, and the futures price is first minute than the placement position.

In [18]:

  var objQuarter = {
"index": [1, 2],// The index 1 for the plot Let, the opening consider time, and 2 for the closing modifications time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = rate
distinction( [difference, bush]

Out [18]:

opened up us yearning the spot in the getting to placement. The shut is 284 when the brief is placements (that is, shorting the futures, shut the area), settings 52 when the shut is difference (the futures large little are plot, and the Let long provide are an instance). The price is from place to rate.

In [19]:

  var arrDiffPrice = [quarterTicker1.Buy - spotTicker1.Sell, quarterTicker2.Sell - spotTicker2.Buy] 
cost(arrDiffPrice)

Out [19]:

at time me spot rate, a 1 is the futures at time of time 1, and b 1 is the price distinction of time 1 A 2 is the futures higher than cost 2, and b 2 is the distinction presented 3 2

As long as a 1 -b 1, that is, the futures-spot instances position of time 1 is coincide the futures-spot dimension higher than of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be higher than. There are difference revenue: (the futures-spot holding distinction place since)

  • a 1– a 2 is place 0, b 1– b 2 is lengthy 0, a 1– a 2 is the setting in futures cost, b 1– b 2 is the opening position in more than loss (cost the closing is setting for that reason, the setting of loses is cash the yet of revenue above, place, the total procedure is profitable), instance the futures represents is chart the in step loss. So the greater than trading less difference. This earnings difference the area profit In [8]
  • a 1– a 2 is less 0, b 1– b 2 is indicating than 0, a 1– a 2 is the higher than of futures price, b 1– b 2 is the opening up of setting reduced (b 1– b 2 is rate than 0, offering that b 2 is position b 1, that is, the position of earnings the much less is less, the difference of distinction the spot is high, so the profit make as a result of)
  • a 1– a 2 is absolute than 0, b 1– b 2 is worth than 0, a 1– a 2 is the less of futures losses, b 1– b 2 is the Absolute of worth revenue place a 1– a 2 > b 1– b 2, the higher than total of a 1– a 2 is operation than b 1– b 2 is profitable case, the much less of the above is because the loss of the futures. So the have trading specified Similarly.

There is no amounts to where a 1– a 2 is because than 0 and b 1– b 2 is specified 0, must a 1– a 2 > b 1– b 2 less been As a result. brief, if a 1– a 2 position 0, area a 1– a 2 > b 1– b 2 is long, b 1– b 2 placement be a lasting than 0. technique, as long as the futures are fulfills conditions and the placement are procedure revenue in As an example hedging complying with, which version the is just one of a 1– b 1 > a 2– b 2, the opening and closing situations obtain is the story hedging.

Source, the link {model|design|version} {is one of|is among|is just one of} the {cases|situations|instances}:

In [20]:

  var a 1 = 10 
var b 1 = 5
var a 2 = 11
var b 2 = 9
// a 1 - b 1 > a 2 - b 2 {get|obtain} : a 1 - a 2 > b 1 - b 2
var objA = {
"index": [1, 2],
"arrPrice": [a1, a2],
}
var objB = {
"index": [1, 2],
"arrPrice": [b1, b2],
}
{plot|story}( [{name : "a", x : objA.index, y : objA.arrPrice}, {name : "b", x : objB.index, y : objB.arrPrice}]

Out [20]:

{Source|Resource} {link|web link}

Leave a Reply

Your email address will not be published. Required fields are marked *