Options Class Option

java.lang.Object Options.Option
Direct Known Subclasses:
CallAsPathDependent, DigitalOption, PathIndependentOption

public abstract class Option
extends java.lang.Object

Interface and default methods to price and hedge a possibly path * path dependent European option on a single underlying asset.

* *

We define a variety of methods by providing an implementation * which prints an error message and aborts the program. Admittedly * this is less elegant than throwing an exception but sorry I am too lazy * to write all these try-catch blocks. Mostly a call to such a method * when it is undefined is a fatal error in any case.

* *

It would be more elegant to define these methods as abstract but then * each concrete subclass has to implement them in some way. Proceeding * as we do we only have to implement what we need.

* *

Fundamental methods which must have nontrivial implementations in each * concrete subclass are declared as abstract if they cannot be implemented * at this level of generality.

* *

Pricing: analytic option prices (if analytic formulas exist) and * Monte Carlo prices with and without control variates are computed.

* * Default control variate: as default control * variate for the discounted option payoff we use the discounted * price S[T]=S^B(t) of the underlying at expiration simulated under the * risk neutral probability.

* *

Note that exp(qt)S^B(t) is a martingale in the risk neutral probability * P_B. Thus the conditional control variate mean is given as * E^{P_B}_t[S^B(T)]=exp(-q(T-t))S^B(t). * See book, chapter 3, section 1, equation 3.15.

* *

Hedging: The profit and loss of * hedging the option using various hedge deltas:

*
*
• analytic deltas
• *
• analytic quotient deltas
• *
• analytic market deltas
• *
• minimum variance deltas
• *
• Monte Carlo deltas
• *
• quotient deltas
• *
• market deltas
• *
*

is analyzed by computing mean and standard deviation from a sample of * price paths of the underlying asset. See the file "HedgeWeights.ps" * for the details.

* *

Information: the information available * at time t for conditioning is the history of the price path of the * underlying asset on the interval [0,t] (up to the present). * Conditioning on this information means to limit simulations of the price * of the underlying asset to paths which are branches of the current path where * branching occurs at time t.

* *

Warning: the abstract class Option does not initialize * the option price path. This is left to the concrete subclasses which can * decide wether analytic price formulas are available or not.

*

 Field Summary static int ANALYTIC_DELTA           Flag identifying hedge weights. static int ANALYTIC_MINIMUM_VARIANCE_DELTA           Flag identifying hedge weights. static int ANALYTIC_QUOTIENT_DELTA           Flag identifying hedge weights. static int MARKET_PROBABILITY           Flag indicating probability controlling paths of the underlying. static int MINIMUM_VARIANCE_DELTA           Flag identifying hedge weights. static int MONTE_CARLO_DELTA           Flag identifying hedge weights. static int QUOTIENT_DELTA           Flag identifying hedge weights. static int RISK_NEUTRAL_PROBABILITY           Flag indicating probability controlling paths of the underlying.

 Constructor Summary Option(Asset asset, java.lang.String name)           Constructor, does not initialize the option price path.

 Method Summary double analyticDelta(int t)           Delta dC/dS computed from discounted analytic price * C(t) Implementation at this level * is an error message and program exit. double analyticGamma(int t)           Gamma d^2C/dS^2 computed from discounted analytic price * C(t). double analyticMinimumVarianceDelta(int whichProbability, int t)           Analytic approximation to the minimumVarianceDelta(int, int, int) hedge * weights. double analyticQuotientDelta(int t)           Analytic approximation to the quotientDelta(int, int) hedge * weights. double analyticSGamma(int t)            S(t)*Gamma(t). double analyticTheta(int t)           Theta dC/dt computed from discounted analytic price * C(t). double analyticThetaDelta(int t)           Theta of delta dDelta/dt computed from discounted analytic * price C(t). double analyticVega(int t)           Vega dC/dsigma computed from discounted analytic price * C(t). double conditionalControlVariateCorrelation(int t, int nPaths)           Correlation of the discounted payoff with the control * variate conditioned on information * available at time t. double controlledDiscountedMonteCarloPrice(double precision, double confidence, int nSignChange)           Monte Carlo price at time t=0 using the * default control variate * with price paths of the underlying simulated until desired precision is * reached with desired confidence. double controlledDiscountedMonteCarloPrice(int nPath)            Monte Carlo price at time t=0 computed using the * default control variate. double controlledDiscountedMonteCarloPrice(int t, double precision, double confidence, int nSignChange)           Monte Carlo price at time t using the * default control variate * with price paths of the underlying simulated until desired precision is * reached with desired confidence. double controlledDiscountedMonteCarloPrice(int t, int nPath)            Monte Carlo price at time t computed using the * default control variate. ControlledRandomVariable controlledDiscountedPayoff()           The discounted payoff as a controlled random variable using the * default control variate. double controlVariateCorrelation(int nPaths)           Correlation of the discounted payoff with the control variate at * time t=0 (no information to condition on). double currentDiscountedHedgeGain(int whichDelta, int whichProbability, int nBranch, double fixed_trc, double prop_trc)           HEDGE ERROR: The discounted profit and loss of hedging a short * position in one call on one share of the underlying along one path of the * underlying. abstract  double currentDiscountedPayoff()           Option payoff discounted to time t=0 and computed from the current * discounted price path of the underlying. double discountedAnalyticPrice(int t)           Discounted option price C(t). RandomVariable discountedHedgeGain(int whichDelta, int whichProbability, int nBranch, double fixed_trc, double prop_trc)           The hedge gain as a random variable. double discountedMonteCarloPrice(double precision, double confidence, int nSignChange)           Monte Carlo price at time t=0 * with price paths of the underlying simulated until desired precision is * reached with desired confidence. double discountedMonteCarloPrice(int nPath)           Monte Carlo option price at time t=0. double discountedMonteCarloPrice(int t, double precision, double confidence, int nSignChange)           Monte Carlo price at time t computed as a conditional expectation * conditioned on information available at time t * with price paths of the underlying simulated until desired precision is * reached with desired confidence. double discountedMonteCarloPrice(int t, int nPath)           Monte Carlo price at time t computed as a conditional expectation * conditioned on information available at time t * and computed from a sample of nPath (branches of) the price path of the * underlying. RandomVariable discountedPayoff()           The discounted option payoff as a random variable. double[] get_C()           Reference to the array C[ ] containing the discounted option * price path. double get_dt()           Size of time step. int get_T()           Number of time steps to horizon. Asset get_underlying()           Reference to the underlying asset. java.lang.String getName()           The name of the option (a string). boolean hasAnalyticPrice()           True if and analytic formula for the option price * is implemented, false otherwise. double minimumVarianceDelta(int whichProbability, int t, int nPath)           The minimum variance delta at time t (see file "HedgeWeights.ps") * minimizing the squared hedge error over the next time step. double minimumVarianceDelta(int whichProbability, int t, int nPath, Trigger rebalance)           Same as minimumVarianceDelta(int,int,int) but the * hedge is rebalanced when the next hedge trade is triggered and the * squared error minimized over the stochastic time interval until * the next hedge trade. double monteCarloDelta(int t, int nPath)           The Monte Carlo delta at time t (see file "HedgeWeights.ps"). void newDiscountedPricePath(int whichProbability, int nPath)           Computes one path of the underlying S and a corresponding path C of the * option (discounted prices). double quotientDelta(int t, int nPath)           Weight w=E^P_t(\DeltaC(t))/E^P_t(\DeltaS(t)) mich makes the * conditional mean of the hedge error between hedge trades equal to zero. double quotientDelta(int t, int nPath, Trigger rebalance)           Same as quotientDelta(int,int) but the * hedge is rebalanced when the next hedge trade is triggered. boolean underlyingIsCVA()           Returns true if the underlying is a * ConstantVolatilityAsset, false otherwise. boolean underlyingIsDividendFreeCVA()           Returns true if the underlying is a dividend free * ConstantVolatilityAsset, false otherwise.

 Methods inherited from class java.lang.Object clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

 Field Detail

MARKET_PROBABILITY

public static final int MARKET_PROBABILITY
Flag indicating probability controlling paths of the underlying.

Constant Field Values

RISK_NEUTRAL_PROBABILITY

public static final int RISK_NEUTRAL_PROBABILITY
Flag indicating probability controlling paths of the underlying.

Constant Field Values

MINIMUM_VARIANCE_DELTA

public static final int MINIMUM_VARIANCE_DELTA
Flag identifying hedge weights.

Constant Field Values

ANALYTIC_MINIMUM_VARIANCE_DELTA

public static final int ANALYTIC_MINIMUM_VARIANCE_DELTA
Flag identifying hedge weights.

Constant Field Values

MONTE_CARLO_DELTA

public static final int MONTE_CARLO_DELTA
Flag identifying hedge weights.

Constant Field Values

ANALYTIC_DELTA

public static final int ANALYTIC_DELTA
Flag identifying hedge weights.

Constant Field Values

QUOTIENT_DELTA

public static final int QUOTIENT_DELTA
Flag identifying hedge weights.

Constant Field Values

ANALYTIC_QUOTIENT_DELTA

public static final int ANALYTIC_QUOTIENT_DELTA
Flag identifying hedge weights.

Constant Field Values
 Constructor Detail

Option

public Option(Asset asset,
java.lang.String name)

Constructor, does not initialize the option price path. * This is left to the concrete subclasses which can * decide wether analytic price formulas are available or not.

* * @param asset the underlying asset. * @param name name of the option.

 Method Detail

get_T

public int get_T()
Number of time steps to horizon.

get_dt

public double get_dt()
Size of time step.

get_C

public double[] get_C()
Reference to the array C[ ] containing the discounted option * price path.

getName

public java.lang.String getName()
The name of the option (a string).

get_underlying

public Asset get_underlying()
Reference to the underlying asset.

hasAnalyticPrice

public boolean hasAnalyticPrice()
True if and analytic formula for the option price * is implemented, false otherwise.

underlyingIsCVA

public boolean underlyingIsCVA()
Returns true if the underlying is a * ConstantVolatilityAsset, false otherwise. *

underlyingIsDividendFreeCVA

public boolean underlyingIsDividendFreeCVA()
Returns true if the underlying is a dividend free * ConstantVolatilityAsset, false otherwise. *

currentDiscountedPayoff

public abstract double currentDiscountedPayoff()
Option payoff discounted to time t=0 and computed from the current * discounted price path of the underlying.

discountedPayoff

public RandomVariable discountedPayoff()
The discounted option payoff as a random variable. * Underlying is modelled in the risk neutral probability.

controlledDiscountedPayoff

public ControlledRandomVariable controlledDiscountedPayoff()

The discounted payoff as a controlled random variable using the * default control variate. * Underlying is modelled in the risk neutral probability.

conditionalControlVariateCorrelation

public double conditionalControlVariateCorrelation(int t,
int nPaths)

Correlation of the discounted payoff with the control * variate conditioned on information * available at time t. * Underlying is modelled in the risk neutral probability.

* *

This method is used only to examine the quality of a control variate. * thus we forgo efficiency and simply reduce it to a random vector * correlation computation.

* * @param t current time. * @param nPaths number of paths generated to estimate the correlation.

controlVariateCorrelation

public double controlVariateCorrelation(int nPaths)

Correlation of the discounted payoff with the control variate at * time t=0 (no information to condition on). * Underlying is modelled in the risk neutral probability.

* *

Unconditional version of * conditionalControlVariateCorrelation(int,int).

discountedAnalyticPrice

public double discountedAnalyticPrice(int t)

Discounted option price C(t). Implementation at this level * is an error message and program exit. Overridden in subclasses where a * nontrivial implementation is possible.

* * @param t current time.

analyticDelta

public double analyticDelta(int t)

Delta dC/dS computed from discounted analytic price * C(t) Implementation at this level * is an error message and program exit. Overridden in subclasses where a * nontrivial implementation is possible.

* * @param t current time.

analyticTheta

public double analyticTheta(int t)

Theta dC/dt computed from discounted analytic price * C(t). Implementation at this level * is an error message and program exit. Overridden in subclasses where a * nontrivial implementation is possible.

* * @param t current time.

analyticVega

public double analyticVega(int t)

Vega dC/dsigma computed from discounted analytic price * C(t). Implementation at this level * is an error message and program exit. Overridden in subclasses where a * nontrivial implementation is possible.

* * @param t current time.

analyticGamma

public double analyticGamma(int t)

Gamma d^2C/dS^2 computed from discounted analytic price * C(t). Implementation at this level * is an error message and program exit. Overridden in subclasses where a * nontrivial implementation is possible.

* * @param t current time.

analyticSGamma

public double analyticSGamma(int t)

S(t)*Gamma(t). It's not defined here like that since it * is often easier to implement than Gamma(t) and can then be used to * implement Gamma(t). Implementation at this level * is an error message and program exit. Overridden in subclasses where a * nontrivial implementation is possible.

* * @param t current time.

public double analyticThetaDelta(int t)

Theta of delta dDelta/dt computed from discounted analytic * price C(t). Implementation at this level * is an error message and program exit. Overridden in subclasses where a * nontrivial implementation is possible.

* * @param t current time.

discountedMonteCarloPrice

public double discountedMonteCarloPrice(int t,
int nPath)

Monte Carlo price at time t computed as a conditional expectation * conditioned on information available at time t * and computed from a sample of nPath (branches of) the price path of the * underlying.

* *

No standard deviation is computed so we do not need to pay attention to * the fact that paths of the uderlying may come in groups of dependent paths * (sign changes in standard normal increments).

* * @param t current time (determines information to condition on). * @param nPath number of path branches used to compute the option price.

discountedMonteCarloPrice

public double discountedMonteCarloPrice(int nPath)

Monte Carlo option price at time t=0.

* * @param nPath number of asset price paths used to compute the option price.

discountedMonteCarloPrice

public double discountedMonteCarloPrice(int t,
double precision,
double confidence,
int nSignChange)

Monte Carlo price at time t computed as a conditional expectation * conditioned on information available at time t * with price paths of the underlying simulated until desired precision is * reached with desired confidence.

* *

Note: underlying.newPathBranch simulates asset price paths in groups of * dependent paths of size * sampleGroupsize=underlying.nSignChange.

* * @param t current time (determines information to condition on). * @param precision absolute error bound. * @param confidence probability with which the precision is reached. * @nSignChange size of groups of dependent price paths of the underlying.

discountedMonteCarloPrice

public double discountedMonteCarloPrice(double precision,
double confidence,
int nSignChange)

Monte Carlo price at time t=0 * with price paths of the underlying simulated until desired precision is * reached with desired confidence.

* * * * @param precision absolute error bound. * @param confidence probability with which the precision is reached. * @nSignChange size of groups of dependent price paths of the underlying.

controlledDiscountedMonteCarloPrice

public double controlledDiscountedMonteCarloPrice(int t,
int nPath)

Monte Carlo price at time t computed using the * default control variate.

* *

Same discountedMonteCarloPrice(int,int) using the * default control variate.

* * @param t current time. * @param nPath number of asset price path branches simulated.

controlledDiscountedMonteCarloPrice

public double controlledDiscountedMonteCarloPrice(int nPath)

Monte Carlo price at time t=0 computed using the * default control variate.

* *

Same as controlledDiscountedMonteCarloPrice(int,int) * at time t=0.

* * @param nPath number of asset price path branches simulated.

controlledDiscountedMonteCarloPrice

public double controlledDiscountedMonteCarloPrice(int t,
double precision,
double confidence,
int nSignChange)

Monte Carlo price at time t using the * default control variate * with price paths of the underlying simulated until desired precision is * reached with desired confidence.

* *

Same as controlledDiscountedMonteCarloPrice(int,int) * but paths simulated until desired precision is reached with desired * confidence.

* *

Note: underlying.newPathBranch simulates asset price paths in groups of * dependent paths of size * sampleGroupsize=underlying.nSignChange.

* * @param t current time (determines information to condition on). * @param precision absolute error bound. * @param confidence probability with which the precision is reached. * @nSignChange size of groups of dependent price paths of the underlying.

controlledDiscountedMonteCarloPrice

public double controlledDiscountedMonteCarloPrice(double precision,
double confidence,
int nSignChange)

Monte Carlo price at time t=0 using the * default control variate * with price paths of the underlying simulated until desired precision is * reached with desired confidence.

* *

Same as * controlledDiscountedMonteCarloPrice(int,double,double,int) * at time t=0.

* * @param precision absolute error bound. * @param confidence probability with which the precision is reached. * @nSignChange size of groups of dependent price paths of the underlying.

newDiscountedPricePath

public void newDiscountedPricePath(int whichProbability,
int nPath)

Computes one path of the underlying S and a corresponding path C of the * option (discounted prices).

* * @param whichProbability probability for simulation (risk neutral/market). * @param nPath number of asset price path branches used in the Monte Carlo * computation of the option price at each time step.

minimumVarianceDelta

public double minimumVarianceDelta(int whichProbability,
int t,
int nPath)

The minimum variance delta at time t (see file "HedgeWeights.ps") * minimizing the squared hedge error over the next time step. If * the underlying evolves in the risk neutral probability, the stepwise * hedge error have zero mean and are uncorrelated. In this case these weights * minimize the step wise and cumulative hedge error variance.

* *

It is assumed that a path S of the underlying has been computed * up to time t.

* *

Use for hedges rebalancing at each time step. * No standard deviation is computed so we do not need to pay attention to * the fact that paths of the underlying may come in groups of dependent paths. * It's not efficient here to introduce random variables to compute * the conditional expectations, we do it directly.

* *

WARNING: the computation is extremely slow (O(nPath^2)) if the * underlying evolves in the market probability and no analytic option * price is implemented. Otherwise it is O(nPath).

* * @param whichProbability probability for simulation (risk neutral/market). * @param t current time (time of branching). * @param nPath number of asset price path branches expended on each * conditional expectation.

minimumVarianceDelta

public double minimumVarianceDelta(int whichProbability,
int t,
int nPath,
Trigger rebalance)

Same as minimumVarianceDelta(int,int,int) but the * hedge is rebalanced when the next hedge trade is triggered and the * squared error minimized over the stochastic time interval until * the next hedge trade.

* *

WARNING: the computation is extremely slow (O(nPath^2)) if the * underlying evolves in the market probability and no analytic option * price is implemented. Otherwise it is O(nPath).

* * @param whichProbability probability for simulation (risk neutral/market). * @param t current time (time of branching). * @param nPath number of asset price path branches expended on each * conditional expectation. * @param rebalance triggers the hedge trades.

monteCarloDelta

public double monteCarloDelta(int t,
int nPath)

The Monte Carlo delta at time t (see file "HedgeWeights.ps").

* *

It is assumed that a price path of the underlying asset has been * computed up to time t. * No standard deviation is computed so we do not need to pay attention to * the fact that paths of the uderlying may come in groups of dependent paths. * It's not efficient here to introduce random variables to compute * the conditional expectations, we do it directly.

* *

WARNING: this assumes that Z[t]=(W[t+1]-W[t])/sqrt(dt), * where W(t) is the Brownian motion driving the paths of the * underlying. Presently this is correct only for * ConstantVolatilityAssets.

* * @param t current time (time of branching). * @param nPath number of asset price path branches expended on each * conditional expectation.

quotientDelta

public double quotientDelta(int t,
int nPath)

Weight w=E^P_t(\DeltaC(t))/E^P_t(\DeltaS(t)) mich makes the * conditional mean of the hedge error between hedge trades equal to zero. * Underlying must evolve in the market probability (otherwise denominator * is zero). Hedge rebalanced at each time step. See the file * "HedgeWeights.ps".

* *

WARNING: the computation is extremely slow (O(nPath^2)) if the * underlying evolves in the market probability and no analytic option * price is implemented. Otherwise it is O(nPath).

* * @param t current time. * @param nPath number of path branches spent on each conditional expectation.

quotientDelta

public double quotientDelta(int t,
int nPath,
Trigger rebalance)

Same as quotientDelta(int,int) but the * hedge is rebalanced when the next hedge trade is triggered.

* *

WARNING: the computation is extremely slow (O(nPath^2)) if the * underlying evolves in the market probability and no analytic option * price is implemented. Otherwise it is O(nPath).

* * @param t current time. * @param nPath number of path branches spent on each conditional expectation. * @param rebalance triggers the hedge trades.

analyticMinimumVarianceDelta

public double analyticMinimumVarianceDelta(int whichProbability,
int t)

Analytic approximation to the minimumVarianceDelta(int, int, int) hedge * weights. Implemented only if the underlying is a dividend free * ConstantVolatilityAsset. Exits program otherwise. See the file * "HedgeWeights.ps".

* * @param t current time. * @param whichProbability probability (risk neutral/market) for paths of * underlying

analyticQuotientDelta

public double analyticQuotientDelta(int t)

Analytic approximation to the quotientDelta(int, int) hedge * weights. Implemented only if the underlying is a dividend free * ConstantVolatilityAsset. Exits program otherwise. See the file * "HedgeWeights.ps".

* * @param t current time.

currentDiscountedHedgeGain

public double currentDiscountedHedgeGain(int whichDelta,
int whichProbability,
int nBranch,
double fixed_trc,
double prop_trc)

HEDGE ERROR: The discounted profit and loss of hedging a short * position in one call on one share of the underlying along one path of the * underlying.

* *

Price paths of the underlying asset can be simulated in the market * probability or risk neutral probability and the hedge is rebalance at each * time step. More general rebalance policies are implemented in the class * Hedge.

* *

Any one of the hedge weights (deltas) can be specified.

* *

At each time step nonanalytic hedge weights are derived from conditional * expectations. In the case of minimum variance deltas these conditional * expectations are computed in the same probability in which the underlying * asset price paths are simulated. Monte Carlo deltas are always computed * in the risk neutral probability.

* *

In each case the conditional expectations make it necessary to branch * price paths of the underlying asset, a very time consuming activity. * Each branch simulation destroys an existing price path of the underlying * asset from the time of branching forward. * Consequently we cannot simply compute a full path of the underlying and * then move the hedge along this path. Instead we evolve the path * simultaneous with the hedge in single time steps.

* *

The flags whichDelta, whichProbability indicate which type * of deltas are used in the hedge and under which probability the underlying * asset is evolved.

* *

Transaction costs have a fixed and a proportional component. The * fixed component also has to be normalized to cost per one share. * If you transact in lots of 1000 shares and such a trade costs 10 dollars * fixed transaction costs are 10/1000=0.01. The proportional transaction * costs come from bid-ask spread etc., 0.1 is a conservative number. * Transaction costs are assumed to remain constant in today's dollars.

* *

The option price path C must be initialized with the option price at * time zero before this routine is called.

* *

This method is superceded by the more general methods * in the class Hedge (for general options) but should be * left in place since some programs use it.

* * @param whichDelta type of delta employed. * @param whichProbability the probability under which deltas are computed. * @param nBranch number of branches spent on each conditional expectation. * @param fixed_trc fixed transaction costs (normalized to one share). * @param prop_trc proportional transaction costs.

discountedHedgeGain

public RandomVariable discountedHedgeGain(int whichDelta,
int whichProbability,
int nBranch,
double fixed_trc,
double prop_trc)

The hedge gain as a random variable.

* * @param whichDelta type of delta employed. * @param deltaProbability the probability under which deltas are computed. * @param nBranch number of branches spent on each conditional expectation. * @param assetPathProbability probability for asset path simulation. * @param fixed_trc fixed transaction costs (normalized to one share). * @param prop_trc proportional transaction costs.
{"ft_lang_label":"__label__en","ft_lang_prob":0.7709057,"math_prob":0.83018726,"size":23726,"snap":"2019-43-2019-47","text_gpt3_token_len":5361,"char_repetition_ratio":0.16103195,"word_repetition_ratio":0.53539073,"special_character_ratio":0.20665093,"punctuation_ratio":0.09861037,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.9957794,"pos_list":[0,1,2],"im_url_duplicate_count":[null,null,null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2019-10-22T04:57:12Z\",\"WARC-Record-ID\":\"<urn:uuid:cd4b0556-cbb9-43eb-a1f6-6c1be8ca13ee>\",\"Content-Length\":\"66187\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:00b7ef8c-dd4c-4e7d-a821-ff4b847bf2e3>\",\"WARC-Concurrent-To\":\"<urn:uuid:2a27bf98-f80b-4c07-8e61-aff6150dacca>\",\"WARC-IP-Address\":\"81.170.169.189\",\"WARC-Target-URI\":\"http://janroman.dhis.org/finance/martingale-dist/javadoc/Options/Option.html\",\"WARC-Payload-Digest\":\"sha1:QW5ELIT2VTKAAIDCW2EDFHJ3FGSZKKHT\",\"WARC-Block-Digest\":\"sha1:IQ7DHMS36Q6QSNECZNIUMCCBEXIDWXKI\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2019/CC-MAIN-2019-43/CC-MAIN-2019-43_segments_1570987798619.84_warc_CC-MAIN-20191022030805-20191022054305-00055.warc.gz\"}"}