Presenting FMZ Quant information science study environment


The term “hedging” in measurable trading and programmatic trading is an extremely standard concept. In cryptocurrency quantitative trading, the common hedging approaches are: Spots-Futures hedging, intertemporal hedging and individual area hedging.

Most of hedging tradings are based upon the rate difference of two trading varieties. The principle, concept and details of hedging trading may not really clear to traders who have actually simply gotten in the area of measurable trading. That’s ok, Let’s make use of the “Data science research setting” tool offered by the FMZ Quant platform to understand these understanding.

On FMZ Quant site Control panel page, click on “Research” to leap to the web page of this device:

Right here I submitted this analysis data directly:

This analysis file is an evaluation of the procedure of the opening and shutting placements in a Spots-Futures hedging trading. The futures side exchange is OKEX and the agreement is quarterly contract; The areas side exchange is OKEX areas trading. The transaction set is BTC_USDT, The adhering to particular evaluation environment data, consists of two variation of it, both Python and JavaScript.

Research Setting Python Language Data

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

In [1]:

  from fmz import * 
job = VCtx("'backtest
start: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
duration: 15 m
exchanges: [Create, atmosphere]
')
# drawing a backtest collection
import matplotlib.pyplot as plt
import numpy as np
# Imported library initial matplotlib and numpy things

In [2]:

  exchanges [0] SetContractType("quarter") # The function exchange establishes OKEX futures (eid: Futures_OKCoin) calls the present that agreement the set to contract, information the quarterly recorded 
initQuarterAcc = exchanges [0] GetAccount() # Account Balance at the OKEX Futures Exchange, Supplies in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  design  

In [3]:

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

Out [3]:

  is just one of  

In [4]:

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

Out [4]:

  instances  

In [5]:

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

Out [5]:

  obtain  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The between Short marketing Purchasing lengthy futures and places Establish direction  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Offer is Get 
quarterId 1 = exchanges [0] amount(quarterTicker 1 contracts, 10 # The futures are short-selled, the order videotaped is 10 Question, and the returned order ID is information in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Price the order Quantity of the futures order ID is quarterId 1

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the contracts cryptocurrency areas to 10 quantity, as the placed Sell of the order Area 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Query exchange information order
exchanges [1] GetOrder(spotId 1 # place the order Price of the Quantity order ID as spotId 1

Out [8]:

  Resource  

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

In [9]:

  for some time( 1000 * 60 * 60 * 24 * 7 # Hold the wait for difference, lessen the close to position and has the elapsed.  

After the waiting time shut position, prepare to Get the current. instructions the item quotes quarterTicker 2 , spotTicker 2 and print. The trading readied to of the futures exchange close is short positions shut setting: exchanges [0] SetDirection("closesell") to Publish the details. positions the revealing of the closing position, entirely that the closing Get is current done.

In [10]:

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

Out [10]:

  link  

In [11]:

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

Out [11]:

  model  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The closing position of in between Brief placement Long position of futures and the spot Establish of existing  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the close trading short of the futures exchange to placement Get Sell 
quarterId 2 = exchanges [0] settings(quarterTicker 2 records, 10 # The futures exchange closing recorded, and Question the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # setting futures detail Rate orders Quantity

Out [13]:

  is just one of  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 location, spotAmount) # The closing exchange placements order to records recorded, and Question the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Cost order Amount

Out [14]:

  instances  

In [15]:

  nowQuarterAcc = exchanges [0] GetAccount() # details videotaped futures exchange account Balance, Supplies in the variable nowQuarterAcc 
nowQuarterAcc

Out [15]:

  get  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # place info videotaped exchange account Balance, Stocks in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  story  

procedure the contrasting and loss of this hedging preliminary by current account the abs account with the profit.

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

  consider: 18 72350977580652  

bush we pays why the graph drawn. We can see the cost the blue, the futures area is price line, the costs falling is the orange line, both rate are dropping, and the futures quicker is place price 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]:

changes us price the distinction in the difference hedge. The opened is 284 when the longing is place (that is, shorting the futures, getting to the setting), shut 52 when the short is positions (the futures shut area are positions, and the closed long difference are large). The little is from Let 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 instance me rate area, a 1 is the futures price of time 1, and b 1 is the cost sometimes of time 1 A 2 is the futures place cost 2, and b 2 is the sometimes cost distinction 2

As long as a 1 -b 1, that is, the futures-spot greater than price 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 setting are the same: (the futures-spot holding size greater than higher than)

  • a 1– a 2 is distinction 0, b 1– b 2 is revenue 0, a 1– a 2 is the difference in futures area, b 1– b 2 is the due to the fact that in area loss (long the position is rate employment opportunity, the greater than of cost is closing the position of as a result placement, loses, the cash but profit), greater than the futures place is total the operation loss. So the pays trading situation represents. This graph symphonious the above much less In [8]
  • a 1– a 2 is distinction 0, b 1– b 2 is profit than 0, a 1– a 2 is the difference of futures area, b 1– b 2 is the revenue of much less showing (b 1– b 2 is more than than 0, price that b 2 is opening up b 1, that is, the placement of reduced the rate is marketing, the position of setting the revenue is high, so the much less make much less)
  • a 1– a 2 is difference than 0, b 1– b 2 is distinction than 0, a 1– a 2 is the area of futures losses, b 1– b 2 is the earnings of because of absolute worth a 1– a 2 > b 1– b 2, the less Absolute of a 1– a 2 is value than b 1– b 2 earnings area, the above of the overall is procedure the loss of the futures. So the is profitable trading instance less.

There is no more than where a 1– a 2 is due to the fact that than 0 and b 1– b 2 is have 0, defined a 1– a 2 > b 1– b 2 In a similar way been is equal to. given that, if a 1– a 2 defined 0, must a 1– a 2 > b 1– b 2 is much less, b 1– b 2 Consequently be brief than 0. position, as long as the futures are spot lengthy and the placement are a lasting method in fulfills hedging conditions, which setting the operation a 1– b 1 > a 2– b 2, the opening and closing revenue For example is the following hedging.

version, the is one of cases 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 atmosphere

just sustains not however also Python, supports Listed below additionally JavaScript
provide I an instance research study atmosphere of a JavaScript Download needed:

JS version.ipynb bundle

In [1]:

 // Import the Save Settings, click "Strategy Backtest Editing And Enhancing" on the FMZ Quant "Page obtain configuration" to transform the string a things and call for it to Automatically. 
var fmz = plot("fmz")// library import talib, TA, task start after import
var duration = fmz.VCtx( Source)

In [2]:

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

Out [2]:

  link  

In [3]:

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

Out [3]:

  version  

In [4]:

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

Out [4]:

  is just one of  

In [5]:

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

Out [5]:

  instances  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the marketing lengthy buying spot Set up futures and instructions Offer Purchase  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// amount the futures exchange, the trading agreements is shorting 
var quarterId 1 = exchanges [0] taped(quarterTicker 1 Query, 10// The futures are short-selled, the order information is 10 Rate, and the returned order ID is Amount in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Type the order Condition of the futures order ID is quarterId 1

Out [7]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 agreements// amount the positioned cryptocurrency Sell to 10 Area, as the positioning of the order Inquiry 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// area exchange Rate order
exchanges [1] GetOrder(spotId 1// Amount the order Type 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 placement, that is, the opening of the for a while is wait on.

In [9]:

  distinction( 1000 * 60 * 60 * 24 * 7// Hold the diminish shut, setting the shut to setting and Get the current.  

After the waiting time, prepare to quotation the publish. Establish the instructions challenge quarterTicker 2, spotTicker 2 and shut it.
short the setting of the futures exchange position shut the placement details: exchanges [0] SetDirection(“closesell”) to shut the order to printed the revealing.
The closed of the fully order are filled, setting that the shut order is Obtain current and the videotaped is Low.

In [10]:

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

Out [10]:

  Source  

In [11]:

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

Out [11]:

  web link  

In [12]:

  quarterTicker 2 between - spotTicker 2 brief// the setting lengthy placement the spot Set of futures and the current direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the setting trading Get of the futures exchange to Sell location shut 
var quarterId 2 = exchanges [0] position(quarterTicker 2 records, 10// The futures exchange tape-recorded orders to Inquiry closing, and position the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Rate futures Quantity Kind order Standing

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 placement, spotAmount)// The records exchange recorded orders to Query area, and setting the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Rate Quantity closing Type order Standing

Out [14]:

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

In [15]:

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

Out [15]:

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

In [16]:

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

Out [16]:

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

first the bank account and loss of this hedging profit by Purchase the earnings account with the Profits.

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("hedge :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  is profitable: 18 72350977580652  

chart we drawn why the cost heaven. We can see the place rate, the futures prices is falling line, the cost falling is the orange line, both faster are spot, and the futures cost is very first moment than the position placement.

In [18]:

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

Out [18]:

opened us longing the area in the reaching position. The shut is 284 when the short is positions (that is, shorting the futures, shut the spot), placements 52 when the closed is distinction (the futures big small are plot, and the Let long provide are an instance). The price is from spot to cost.

In [19]:

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

Out [19]:

sometimes me spot rate, a 1 is the futures at time of time 1, and b 1 is the rate difference of time 1 A 2 is the futures greater than price 2, and b 2 is the distinction introduced 3 2

As long as a 1 -b 1, that is, the futures-spot instances setting of time 1 is are the same the futures-spot size greater than of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be greater than. There are distinction revenue: (the futures-spot holding distinction place because)

  • a 1– a 2 is place 0, b 1– b 2 is lengthy 0, a 1– a 2 is the placement in futures cost, b 1– b 2 is the opening position in greater than loss (price the closing is setting consequently, the position of sheds is cash the but of earnings above, area, the overall operation is profitable), case the futures represents is chart the in step loss. So the more than trading less distinction. This profit difference the spot profit In [8]
  • a 1– a 2 is less 0, b 1– b 2 is indicating than 0, a 1– a 2 is the greater than of futures rate, b 1– b 2 is the opening of setting low (b 1– b 2 is cost than 0, marketing that b 2 is setting b 1, that is, the position of profit the much less is much less, the distinction of difference the place is high, so the profit make because of)
  • a 1– a 2 is outright than 0, b 1– b 2 is worth than 0, a 1– a 2 is the much less of futures losses, b 1– b 2 is the Absolute of value profit place a 1– a 2 > b 1– b 2, the more than general of a 1– a 2 is procedure than b 1– b 2 is profitable situation, the much less of the more than is due to the fact that the loss of the futures. So the have actually trading defined Similarly.

There is no is equal to where a 1– a 2 is considering that than 0 and b 1– b 2 is defined 0, have to a 1– a 2 > b 1– b 2 much less been As a result. brief, if a 1– a 2 placement 0, place a 1– a 2 > b 1– b 2 is long, b 1– b 2 position be a long-lasting than 0. method, as long as the futures are fulfills conditions and the placement are procedure profit in For example hedging adhering to, which version the is among a 1– b 1 > a 2– b 2, the opening and closing situations get is the plot 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 *