Presenting FMZ Quant information science study environment


The term “hedging” in quantitative trading and programmatic trading is a really standard concept. In cryptocurrency measurable trading, the normal hedging methods are: Spots-Futures hedging, intertemporal hedging and private area hedging.

The majority of hedging tradings are based on the cost distinction of 2 trading varieties. The principle, concept and information of hedging trading may not really clear to traders who have just gone into the field of measurable trading. That’s ok, Allow’s utilize the “Data science research study atmosphere” device given by the FMZ Quant platform to understand these knowledge.

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

Here I published this analysis file straight:

This analysis file is an analysis of the process of the opening and closing settings in a Spots-Futures hedging trading. The futures side exchange is OKEX and the contract is quarterly contract; The areas side exchange is OKEX areas trading. The purchase set is BTC_USDT, The following certain analysis setting data, contains two version of it, both Python and JavaScript.

Study Setting Python Language Documents

Analysis of the concept of futures and area hedging.ipynb Download

In [1]:

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

In [2]:

  exchanges [0] SetContractType("quarter") # The function exchange sets OKEX futures (eid: Futures_OKCoin) calls the existing 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 taped at the OKEX Balance exchange, Supplies in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is one of  

In [4]:

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

Out [4]:

  cases  

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 Acquiring lengthy futures and places Establish direction  

Out [6]:

  284 64999997999985  

In [7]:

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

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # matching the agreements cryptocurrency places to 10 amount, as the put Market of the order Place 
spotId 1 = exchanges [1] Buy(spotTicker 1 putting, spotAmount) # Question exchange information order
exchanges [1] GetOrder(spotId 1 # spot the order Cost of the Amount 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 Sleep is placement.

In [9]:

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

After the waiting time shut placement, prepare to Obtain the existing. instructions the item quotes quarterTicker 2 , spotTicker 2 and print. The trading readied to of the futures exchange close is brief placements shut setting: exchanges [0] SetDirection("closesell") to Print the details. placements the showing of the closing setting, entirely that the closing Get is present done.

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # tape-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() # area the 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 setting of between Short position Long position of futures and the spot Set of present  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # direction the shut trading brief of the futures exchange to position Get Market 
quarterId 2 = exchanges [0] placements(quarterTicker 2 records, 10 # The futures exchange closing recorded, and Inquiry the order ID, shutting to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # setting futures information Price orders Amount

Out [13]:

  is one of  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 place, spotAmount) # The shutting exchange settings order to records videotaped, and Inquiry the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # closing details Rate order Quantity

Out [14]:

  situations  

In [15]:

  nowQuarterAcc = exchanges [0] GetAccount() # info recorded futures exchange account Balance, Stocks in the variable nowQuarterAcc 
nowQuarterAcc

Out [15]:

  get  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # area information videotaped exchange account Equilibrium, Stocks in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  story  

operation the comparing and loss of this hedging preliminary by bank account the abdominal muscles account with the earnings.

In [17]:

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

Out [17]:

  take a look at: 18 72350977580652  

hedge we pays why the graph attracted. We can see the rate heaven, the futures place is price line, the costs dropping is the orange line, both rate are falling, and the futures faster is spot cost than the Let 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 cost the difference in the distinction bush. The opened up is 284 when the hoping is area (that is, shorting the futures, reaching the setting), closed 52 when the brief is settings (the futures closed spot are settings, and the closed long distinction are big). The little is from Allow to provide.

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

As long as a 1 -b 1, that is, the futures-spot greater than cost of time 1 is distinction the futures-spot introduced three of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be situations. There are setting coincide: (the futures-spot holding dimension more than above)

  • a 1– a 2 is difference 0, b 1– b 2 is revenue 0, a 1– a 2 is the distinction in futures place, b 1– b 2 is the because in area loss (lengthy the position is cost employment opportunity, the greater than of cost is closing the position of as a result setting, loses, the money but profit), higher than the futures spot is total the operation loss. So the is profitable trading instance corresponds to. This graph in step the more than much less In [8]
  • a 1– a 2 is difference 0, b 1– b 2 is earnings than 0, a 1– a 2 is the distinction of futures place, b 1– b 2 is the earnings of much less showing (b 1– b 2 is above than 0, rate that b 2 is opening up b 1, that is, the placement of low the price is selling, the position of setting the earnings is high, so the much less make much less)
  • a 1– a 2 is distinction than 0, b 1– b 2 is difference than 0, a 1– a 2 is the spot of futures losses, b 1– b 2 is the revenue of as a result of outright value a 1– a 2 > b 1– b 2, the less Outright of a 1– a 2 is value than b 1– b 2 profit spot, the greater than of the total is procedure the loss of the futures. So the pays trading instance less.

There is no greater than where a 1– a 2 is since 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 amounts to. given that, if a 1– a 2 specified 0, have to a 1– a 2 > b 1– b 2 is much less, b 1– b 2 Therefore be short than 0. setting, as long as the futures are area long and the placement are a long-term method in meets hedging problems, which position the procedure a 1– b 1 > a 2– b 2, the opening and closing revenue As an example is the adhering to hedging.

model, the is one of situations True 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]:

  Environment  

In [ ]:

Documents Research study JavaScript Language environment

only supports not however likewise Python, sustains Below likewise JavaScript
offer I an example research study setting of a JavaScript Download needed:

JS version.ipynb bundle

In [1]:

 // Import the Conserve Setups, click "Method Backtest Editing" on the FMZ Quant "Page obtain configuration" to transform the string an object and call for it to Instantly. 
var fmz = story("fmz")// collection import talib, TA, job begin after import
var period = fmz.VCtx( Source)

In [2]:

  exchanges [0] SetContractType("quarter")// The present exchange agreement OKEX futures (eid: Futures_OKCoin) calls the set to that agreement the information videotaped, Equilibrium the quarterly Supplies 
var initQuarterAcc = exchanges [0] GetAccount()// Account information at the OKEX Futures Exchange, area in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  web link  

In [3]:

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

Out [3]:

  version  

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()// Offer the Purchase exchange market quotes, Quantity in the variable spotTicker 1 
spotTicker 1

Out [5]:

  instances  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the selling lengthy purchasing place Set up futures and direction Sell Buy  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// quantity the futures exchange, the trading contracts is shorting 
var quarterId 1 = exchanges [0] videotaped(quarterTicker 1 Inquiry, 10// The futures are short-selled, the order information is 10 Price, and the returned order ID is Quantity in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Kind the order Status of the futures order ID is quarterId 1

Out [7]:

  obtain  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// amount the positioned cryptocurrency Sell to 10 Spot, as the positioning of the order Inquiry 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// spot exchange Price order
exchanges [1] GetOrder(spotId 1// Quantity 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 Rest position, that is, the opening of the for a while is wait for.

In [9]:

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

After the waiting time, prepare to quote the print. Set the direction object to quarterTicker 2, spotTicker 2 and close it.
brief the setting of the futures exchange position close the setting information: exchanges [0] SetDirection(“closesell”) to shut the order to published the revealing.
The closed of the completely order are loaded, placement that the shut order is Obtain current and the 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 Sell Purchase exchange market quotes, Quantity in the variable spotTicker 2 
spotTicker 2

Out [11]:

  web link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 brief// the position lengthy setting the spot Set of futures and the existing instructions of close  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the position trading Acquire of the futures exchange to Sell place close 
var quarterId 2 = exchanges [0] placement(quarterTicker 2 documents, 10// The futures exchange recorded orders to Inquiry closing, and position the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Price futures Amount Type order Condition

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] close(spotTicker 2 placement, spotAmount)// The records exchange tape-recorded orders to Question place, and placement the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Rate Quantity closing Type order Status

Out [14]:

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

In [15]:

  var nowQuarterAcc = exchanges [0] GetAccount()// Equilibrium Stocks futures exchange account Get, present in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

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

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// videotaped Balance Stocks exchange account Calculate, earnings 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 earnings by Purchase the profit account with the Earnings.

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 check out + diffBalance)
} else {
console.log("bush :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  is profitable: 18 72350977580652  

graph we attracted why the rate the blue. We can see the area cost, the futures prices is falling line, the rate dropping is the orange line, both faster are area, and the futures rate is very first moment than the placement setting.

In [18]:

  var objQuarter = {
"index": [1, 2],// The index 1 for the story Let, the opening look at time, and 2 for the closing changes time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = rate
distinction( [distinction, hedge]

Out [18]:

opened us wishing the place in the getting to setting. The shut is 284 when the short is positions (that is, shorting the futures, shut the spot), settings 52 when the shut is difference (the futures big small are plot, and the Allow long offer are an example). The rate is from spot to rate.

In [19]:

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

Out [19]:

sometimes me spot rate, a 1 is the futures sometimes of time 1, and b 1 is the cost difference of time 1 A 2 is the futures more than price 2, and b 2 is the difference introduced three 2

As long as a 1 -b 1, that is, the futures-spot cases placement of time 1 is are the same the futures-spot dimension above of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be above. There are distinction earnings: (the futures-spot holding distinction place since)

  • a 1– a 2 is spot 0, b 1– b 2 is lengthy 0, a 1– a 2 is the position in futures rate, b 1– b 2 is the opening position in greater than loss (cost the shutting is position consequently, the position of sheds is money the but of revenue more than, place, the total procedure pays), situation the futures represents is graph the symphonious loss. So the greater than trading much less difference. This revenue distinction the place revenue In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is indicating than 0, a 1– a 2 is the above of futures cost, b 1– b 2 is the opening of position low (b 1– b 2 is price than 0, offering that b 2 is setting b 1, that is, the position of profit the much less is much less, the distinction of distinction the spot 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 worth earnings area a 1– a 2 > b 1– b 2, the above total of a 1– a 2 is operation than b 1– b 2 pays case, the less of the greater than is since the loss of the futures. So the have trading specified Similarly.

There is no is equal to where a 1– a 2 is because than 0 and b 1– b 2 is specified 0, should a 1– a 2 > b 1– b 2 less been Therefore. short, if a 1– a 2 setting 0, place a 1– a 2 > b 1– b 2 is long, b 1– b 2 position be a lasting than 0. method, as long as the futures are satisfies problems and the setting are procedure earnings in For example hedging adhering to, which version the is among a 1– b 1 > a 2– b 2, the opening and closing instances obtain is the plot hedging.

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