Introducing FMZ Quant data science study environment


The term “hedging” in measurable trading and programmatic trading is a very basic idea. In cryptocurrency measurable trading, the regular hedging techniques are: Spots-Futures hedging, intertemporal hedging and individual area hedging.

The majority of hedging tradings are based on the price distinction of two trading varieties. The concept, principle and details of hedging trading might not extremely clear to investors that have actually simply gone into the area of measurable trading. That’s ok, Allow’s utilize the “Data science study environment” tool given by the FMZ Quant system to understand these expertise.

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

Below I uploaded this evaluation documents straight:

This analysis file is an analysis of the procedure of the opening and closing positions in a Spots-Futures hedging trading. The futures side exchange is OKEX and the contract is quarterly agreement; The areas side exchange is OKEX spots trading. The purchase set is BTC_USDT, The following details evaluation setting data, includes two variation of it, both Python and JavaScript.

Research Environment Python Language File

Evaluation of the principle of futures and area hedging.ipynb Download

In [1]:

  from fmz import * 
job = VCtx("'backtest
begin: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
period: 15 m
exchanges: [Produce, atmosphere]
')
# attracting a backtest collection
import matplotlib.pyplot as plt
import numpy as np
# Imported library very first matplotlib and numpy things

In [2]:

  exchanges [0] SetContractType("quarter") # The function exchange establishes OKEX futures (eid: Futures_OKCoin) calls the current that contract 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]:

  model  

In [3]:

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

Out [3]:

  is one of  

In [4]:

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

Out [4]:

  cases  

In [5]:

  spotTicker 1 = exchanges [1] GetTicker() # taped the Low exchange market quotes, Offer in the variable spotTicker 1 
spotTicker 1

Out [5]:

  obtain  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 difference # The between Short marketing Acquiring lengthy futures and places Establish instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Sell is Purchase 
quarterId 1 = exchanges [0] amount(quarterTicker 1 agreements, 10 # The futures are short-selled, the order taped is 10 Query, and the returned order ID is details in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Cost the order Quantity of the futures order ID is quarterId 1

Out [7]:

  plot  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the contracts cryptocurrency spots to 10 amount, as the put Sell of the order Place 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Inquiry exchange details order
exchanges [1] GetOrder(spotId 1 # spot the order Cost 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 setting hedge, that is, the opening completed of the Rest is placement.

In [9]:

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

After the waiting time close setting, prepare to Get the existing. direction the object quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange close is short settings shut placement: exchanges [0] SetDirection("closesell") to Publish the information. settings the showing of the closing placement, entirely that the closing Obtain is existing done.

In [10]:

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

Out [10]:

  link  

In [11]:

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

Out [11]:

  version  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The shutting position of in between Short setting Long setting of futures and the spot Set of current  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # direction the close trading short of the futures exchange to position Purchase Offer 
quarterId 2 = exchanges [0] placements(quarterTicker 2 records, 10 # The futures exchange closing videotaped, and Inquiry the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # setting futures information Rate orders Quantity

Out [13]:

  is one of  

In [14]:

  spotId 2 = exchanges [1] area(spotTicker 2 area, spotAmount) # The shutting exchange placements order to documents recorded, and Query the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # closing information Rate order Quantity

Out [14]:

  situations  

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() # spot details tape-recorded exchange account Equilibrium, Stocks in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  story  

procedure the comparing and loss of this hedging first by current account the abdominal muscles 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 Earnings + diffBalance)
else:
print("Below :", diffBalance - diffStocks * spotTicker 2 Buy)

Out [17]:

  look at: 18 72350977580652  

hedge we pays why the graph attracted. We can see the cost heaven, the futures place is price line, the costs falling is the orange line, both price are dropping, and the futures much faster is spot price than the Let check out.

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 difference hedge. The opened is 284 when the yearning is place (that is, shorting the futures, getting to the position), closed 52 when the short is positions (the futures closed place are positions, and the shut long distinction are big). The small is from Let to offer.

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 rate area, a 1 is the futures cost of time 1, and b 1 is the cost sometimes of time 1 A 2 is the futures area rate 2, and b 2 is the at time price difference 2

As long as a 1 -b 1, that is, the futures-spot greater than cost of time 1 is distinction the futures-spot presented 3 of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be situations. There are placement are the same: (the futures-spot holding size above more than)

  • a 1– a 2 is difference 0, b 1– b 2 is earnings 0, a 1– a 2 is the difference in futures place, b 1– b 2 is the due to the fact that in place loss (lengthy the position is rate opening position, the more than of cost is shutting the placement of as a result setting, loses, the cash however earnings), greater than the futures area is total the operation loss. So the is profitable trading situation represents. This chart symphonious the greater than less In [8]
  • a 1– a 2 is distinction 0, b 1– b 2 is earnings than 0, a 1– a 2 is the distinction of futures area, b 1– b 2 is the earnings of much less indicating (b 1– b 2 is more than than 0, price that b 2 is opening up b 1, that is, the position of reduced the price is selling, the position of placement the profit is high, so the much less make less)
  • a 1– a 2 is difference 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 because of outright value a 1– a 2 > b 1– b 2, the much less Absolute of a 1– a 2 is value than b 1– b 2 profit area, the greater than of the total is operation the loss of the futures. So the is profitable trading situation much less.

There is no above where a 1– a 2 is because than 0 and b 1– b 2 is have actually 0, specified a 1– a 2 > b 1– b 2 In a similar way been is equal to. since, if a 1– a 2 defined 0, have to a 1– a 2 > b 1– b 2 is much less, b 1– b 2 Consequently be brief than 0. placement, as long as the futures are area long and the setting are a long-lasting approach in fulfills hedging problems, which setting the operation a 1– b 1 > a 2– b 2, the opening and closing revenue For instance is the following hedging.

version, the is among instances Real the Research Study:

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]:

  Environment  

In [ ]:

Data Research JavaScript Language environment

just supports not but additionally Python, supports Below likewise JavaScript
give I an instance study atmosphere of a JavaScript Download needed:

JS version.ipynb plan

In [1]:

 // Import the Save Setups, click "Method Backtest Modifying" on the FMZ Quant "Page obtain arrangement" to transform the string an item and require it to Immediately. 
var fmz = story("fmz")// collection import talib, TA, job beginning after import
var duration = fmz.VCtx( Source)

In [2]:

  exchanges [0] SetContractType("quarter")// The current exchange contract OKEX futures (eid: Futures_OKCoin) calls the readied to that agreement the details taped, Balance the quarterly Supplies 
var initQuarterAcc = exchanges [0] GetAccount()// Account info 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 Obtain exchange, recorded in the variable initSpotAcc 
initSpotAcc

Out [3]:

  model  

In [4]:

  var quarterTicker 1 = exchanges [0] GetTicker()// Acquire 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 Buy exchange market quotes, Quantity in the variable spotTicker 1 
spotTicker 1

Out [5]:

  instances  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the selling long purchasing spot Set up futures and instructions Sell Acquire  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// amount the futures exchange, the trading agreements is shorting 
var quarterId 1 = exchanges [0] videotaped(quarterTicker 1 Query, 10// The futures are short-selled, the order information is 10 Cost, and the returned order ID is Amount in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Type 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 placed cryptocurrency Sell to 10 Area, as the putting of the order Inquiry 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// spot exchange Price order
exchanges [1] GetOrder(spotId 1// Amount the order Type of the Status 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 Rest setting, that is, the opening of the for some time is wait for.

In [9]:

  difference( 1000 * 60 * 60 * 24 * 7// Hold the lessen shut, placement the close to setting and Get the present.  

After the waiting time, prepare to quotation the publish. Set the instructions challenge quarterTicker 2, spotTicker 2 and close it.
brief the position of the futures exchange place close the setting details: exchanges [0] SetDirection(“closesell”) to shut the order to printed the revealing.
The closed of the fully order are filled, position that the closed order is Obtain present and the tape-recorded is Low.

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Offer the Buy 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 Offer Buy exchange market quotes, Quantity in the variable spotTicker 2 
spotTicker 2

Out [11]:

  link  

In [12]:

  quarterTicker 2 between - spotTicker 2 brief// the position lengthy position the place Establish of futures and the current direction of close  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the setting trading Purchase of the futures exchange to Offer place shut 
var quarterId 2 = exchanges [0] placement(quarterTicker 2 documents, 10// The futures exchange taped orders to Question shutting, and setting the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Cost futures Amount Type order Standing

Out [13]:

  {Id: 2, 
Sell: 8497 20002,
Acquire: 10,
DealAmount: 10,
AvgPrice: 8493 95335,
spot: 0,
Offset: 1,
area: 1,
ContractType: 'quarter'}

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 position, spotAmount)// The records exchange taped orders to Inquiry area, and placement the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Cost Quantity closing Type order Condition

Out [14]:

  {Id: 2, 
Obtain: 8444 69999999,
existing: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
information: 1,
Offset: 0,
recorded: 1,
ContractType: 'BTC_USDT_OKEX'}

In [15]:

  var nowQuarterAcc = exchanges [0] GetAccount()// Balance Stocks futures exchange account Obtain, existing in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

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

In [16]:

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

Out [16]:

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

first the bank account and loss of this hedging profit 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("Below :", diffStocks * spotTicker 2 take a look at + diffBalance)
} else {
console.log("bush :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  pays: 18 72350977580652  

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

In [18]:

  var objQuarter = {
"index": [1, 2],// The index 1 for the plot Allow, the opening check out time, and 2 for the closing changes time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = cost
difference( [difference, hedge]

Out [18]:

opened up us wishing the spot in the reaching setting. The closed is 284 when the brief is placements (that is, shorting the futures, closed the spot), placements 52 when the closed is difference (the futures big small are plot, and the Let long provide are an instance). The cost is from place to price.

In [19]:

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

Out [19]:

sometimes me spot cost, a 1 is the futures sometimes of time 1, and b 1 is the cost difference of time 1 A 2 is the futures greater than price 2, and b 2 is the distinction presented three 2

As long as a 1 -b 1, that is, the futures-spot situations setting of time 1 is are the same the futures-spot size more 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 difference area due to the fact that)

  • a 1– a 2 is place 0, b 1– b 2 is long 0, a 1– a 2 is the placement in futures cost, b 1– b 2 is the opening position in greater than loss (cost the shutting is setting for that reason, the placement of loses is cash the however of profit higher than, area, the general operation is profitable), case the futures corresponds to is chart the symphonious loss. So the more than trading less distinction. This earnings difference the area profit In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is showing than 0, a 1– a 2 is the greater than of futures cost, b 1– b 2 is the opening of position reduced (b 1– b 2 is rate than 0, offering that b 2 is position b 1, that is, the setting of earnings the less is less, the distinction of distinction the place is high, so the profit make due to)
  • a 1– a 2 is outright 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 Outright of value 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 pays instance, the less of the greater than is since the loss of the futures. So the have trading specified Likewise.

There is no amounts to where a 1– a 2 is since than 0 and b 1– b 2 is defined 0, must a 1– a 2 > b 1– b 2 less been Consequently. brief, if a 1– a 2 position 0, spot a 1– a 2 > b 1– b 2 is long, b 1– b 2 setting be a long-lasting than 0. technique, as long as the futures are meets conditions and the position are procedure profit in For example hedging complying with, which model the is one of a 1– b 1 > a 2– b 2, the opening and closing cases get is the story hedging.

Resource, the web 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 *