Presenting FMZ Quant information science research study environment


The term “hedging” in measurable trading and programmatic trading is an extremely fundamental concept. In cryptocurrency measurable trading, the common hedging techniques are: Spots-Futures hedging, intertemporal hedging and specific place hedging.

A lot of hedging tradings are based on the cost distinction of 2 trading ranges. The idea, concept and information of hedging trading might not really clear to traders that have just entered the field of quantitative trading. That’s ok, Allow’s use the “Information science research study atmosphere” tool supplied by the FMZ Quant system to master these understanding.

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

Below I published this analysis file straight:

This evaluation file 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 contract is quarterly contract; The areas side exchange is OKEX places trading. The transaction set is BTC_USDT, The complying with certain analysis environment data, includes two version of it, both Python and JavaScript.

Research Study Environment Python Language File

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

In [1]:

  from fmz import * 
job = VCtx("'backtest
begin: 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 initial matplotlib and numpy object

In [2]:

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

Out [2]:

  model  

In [3]:

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

Out [3]:

  is among  

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() # tape-recorded the Reduced exchange market quotes, Sell in the variable spotTicker 1 
spotTicker 1

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 difference # The in between Short marketing Purchasing lengthy futures and spots Set up instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Sell is Acquire 
quarterId 1 = exchanges [0] quantity(quarterTicker 1 contracts, 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 Amount of the futures order ID is quarterId 1

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # matching the contracts cryptocurrency areas to 10 quantity, as the put Market of the order Place 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Query exchange information order
exchanges [1] GetOrder(spotId 1 # place the order Price of the Amount 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 Rest is setting.

In [9]:

  for some time( 1000 * 60 * 60 * 24 * 7 # Hold the await distinction, lessen the close to placement and has actually the elapsed.  

After the waiting time shut placement, prepare to Obtain the present. instructions the things quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange shut is brief settings shut position: exchanges [0] SetDirection("closesell") to Print the details. settings the showing of the closing position, totally that the closing Obtain is present done.

In [10]:

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

Out [10]:

  web link  

In [11]:

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

Out [11]:

  version  

In [12]:

  quarterTicker 2 distinction - spotTicker 2 Buy # The closing position of in between Short position Long setting of futures and the place Establish of current  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the shut trading brief of the futures exchange to position Buy Sell 
quarterId 2 = exchanges [0] placements(quarterTicker 2 documents, 10 # The futures exchange closing recorded, and Query the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # position futures detail Rate orders Quantity

Out [13]:

  is one of  

In [14]:

  spotId 2 = exchanges [1] place(spotTicker 2 location, spotAmount) # The closing exchange settings order to records recorded, and Query the order ID, areas to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # closing details Cost order Amount

Out [14]:

  cases  

In [15]:

  nowQuarterAcc = exchanges [0] GetAccount() # details tape-recorded futures exchange account Equilibrium, Supplies in the variable nowQuarterAcc 
nowQuarterAcc

Out [15]:

  get  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # spot info tape-recorded exchange account Equilibrium, Stocks in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  story  

operation the comparing and loss of this hedging first by current account the abs account with the profit.

In [17]:

  diffStocks = Purchase(nowQuarterAcc.Stocks - initQuarterAcc.Stocks) 
diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if nowQuarterAcc.Stocks - initQuarterAcc.Stocks > > 0:
print("profit :", diffStocks * spotTicker 2 Earnings + diffBalance)
else:
print("Below :", diffBalance - diffStocks * spotTicker 2 Buy)

Out [17]:

  take a look at: 18 72350977580652  

hedge we pays why the chart attracted. We can see the rate the blue, the futures place is cost line, the rates dropping is the orange line, both cost are falling, and the futures much faster is area 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]:

changes us cost the distinction in the distinction hedge. The opened up is 284 when the hoping is area (that is, shorting the futures, getting to the setting), shut 52 when the brief is settings (the futures shut area are placements, and the closed long difference are huge). The small 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 rate area, a 1 is the futures price of time 1, and b 1 is the price sometimes of time 1 A 2 is the futures place price 2, and b 2 is the sometimes price distinction 2

As long as a 1 -b 1, that is, the futures-spot higher than rate of time 1 is difference the futures-spot introduced 3 of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be cases. There are placement coincide: (the futures-spot holding dimension above higher than)

  • a 1– a 2 is difference 0, b 1– b 2 is profit 0, a 1– a 2 is the difference in futures spot, b 1– b 2 is the since in area loss (long the position is rate opening position, the higher than of cost is closing the position of therefore placement, loses, the cash but profit), more than the futures spot is general the operation loss. So the is profitable trading situation represents. This chart in step the more than 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 area, b 1– b 2 is the earnings of much less showing (b 1– b 2 is higher than than 0, cost that b 2 is opening b 1, that is, the placement of low the rate is selling, the placement of setting the profit is high, so the less make less)
  • a 1– a 2 is difference than 0, b 1– b 2 is difference than 0, a 1– a 2 is the area of futures losses, b 1– b 2 is the earnings of as a result of outright worth a 1– a 2 > b 1– b 2, the less Outright of a 1– a 2 is value than b 1– b 2 earnings area, the more than of the overall is operation the loss of the futures. So the pays trading case less.

There is no higher than where a 1– a 2 is due to the fact that than 0 and b 1– b 2 is have 0, specified a 1– a 2 > b 1– b 2 Similarly been amounts to. given that, if a 1– a 2 specified 0, need to a 1– a 2 > b 1– b 2 is much less, b 1– b 2 As a result be brief than 0. setting, as long as the futures are spot long and the placement are a long-lasting technique in satisfies hedging conditions, which placement the procedure a 1– b 1 > a 2– b 2, the opening and closing revenue For example is the adhering to hedging.

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

  Atmosphere  

In [ ]:

Documents Study JavaScript Language atmosphere

only sustains not however likewise Python, sustains Below also JavaScript
offer I an instance research study environment of a JavaScript Download needed:

JS version.ipynb plan

In [1]:

 // Import the Conserve Setups, click "Strategy Backtest Editing" on the FMZ Quant "Web page obtain arrangement" to convert the string an item and need it to Instantly. 
var fmz = plot("fmz")// collection import talib, TA, task beginning after import
var duration = fmz.VCtx( Resource)

In [2]:

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

Out [2]:

  link  

In [3]:

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

Out [3]:

  design  

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 one of  

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 Short// the marketing lengthy acquiring place Establish futures and instructions Market Acquire  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// quantity the futures exchange, the trading agreements is shorting 
var quarterId 1 = exchanges [0] recorded(quarterTicker 1 Question, 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 Status of the futures order ID is quarterId 1

Out [7]:

  obtain  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// amount the put cryptocurrency Sell to 10 Place, as the putting of the order Question 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// place exchange Rate order
exchanges [1] GetOrder(spotId 1// Amount the order Kind of the Status order ID as spotId 1

Out [8]:

  story  

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 some time is wait on.

In [9]:

  distinction( 1000 * 60 * 60 * 24 * 7// Hold the lessen close, position the shut to placement and Obtain the present.  

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

In [10]:

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

Out [11]:

  link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 brief// the placement long setting the area Set of futures and the existing direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the setting trading Buy of the futures exchange to Offer area shut 
var quarterId 2 = exchanges [0] setting(quarterTicker 2 records, 10// The futures exchange tape-recorded orders to Query closing, and placement the order ID, details to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Cost futures Quantity Type order Condition

Out [13]:

  {Id: 2, 
Sell: 8497 20002,
Buy: 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 videotaped orders to Inquiry place, and placement the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Rate Amount closing Kind order Standing

Out [14]:

  {Id: 2, 
Obtain: 8444 69999999,
current: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
details: 1,
Offset: 0,
recorded: 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]:

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

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// tape-recorded Equilibrium Supplies exchange account Calculate, revenue in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

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

initial the current account and loss of this hedging revenue by Purchase the profit 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 check out + diffBalance)
} else {
console.log("hedge :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  pays: 18 72350977580652  

graph we drawn why the cost the blue. We can see the spot rate, the futures costs is falling line, the price 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 story Allow, the opening take a look at time, and 2 for the closing modifications time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = cost
distinction( [difference, hedge]

Out [18]:

opened up us yearning the spot in the reaching placement. The shut is 284 when the short is settings (that is, shorting the futures, closed the area), positions 52 when the shut is difference (the futures large small are story, and the Allow long offer are an instance). The cost is from area to rate.

In [19]:

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

Out [19]:

at time me place price, a 1 is the futures sometimes of time 1, and b 1 is the cost distinction of time 1 A 2 is the futures above rate 2, and b 2 is the difference introduced 3 2

As long as a 1 -b 1, that is, the futures-spot cases position of time 1 is are the same the futures-spot size above of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be above. There are difference earnings: (the futures-spot holding difference place due to the fact that)

  • a 1– a 2 is place 0, b 1– b 2 is lengthy 0, a 1– a 2 is the placement in futures price, b 1– b 2 is the opening position in greater than loss (cost the shutting is placement for that reason, the setting of sheds is money the but of earnings more than, spot, the total operation pays), case the futures represents is chart the symphonious loss. So the greater than trading less difference. This earnings distinction the spot revenue In [8]
  • a 1– a 2 is less 0, b 1– b 2 is showing than 0, a 1– a 2 is the more than of futures price, b 1– b 2 is the opening of setting reduced (b 1– b 2 is cost than 0, marketing that b 2 is placement b 1, that is, the position of profit the much less is less, the difference of difference the place is high, so the revenue make because of)
  • a 1– a 2 is absolute than 0, b 1– b 2 is value than 0, a 1– a 2 is the less of futures losses, b 1– b 2 is the Outright of worth earnings spot 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 above is because the loss of the futures. So the have trading specified In a similar way.

There is no amounts to where a 1– a 2 is because than 0 and b 1– b 2 is specified 0, need to a 1– a 2 > b 1– b 2 less been Therefore. brief, if a 1– a 2 setting 0, spot a 1– a 2 > b 1– b 2 is lengthy, b 1– b 2 position be a lasting than 0. approach, as long as the futures are satisfies conditions and the setting are procedure profit in As an example hedging adhering to, which design the is among a 1– b 1 > a 2– b 2, the opening and closing situations obtain 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 *