public ReverseDTD(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol) { requireOrdered("exitShortLevel", "triggerShort"); requireOrdered("triggerLong", "exitLongLevel"); requireOrdered("triggerLong", "exitShortLevel"); requireOrdered("exitLongLevel", "triggerShort"); if (!isActive()) { return; } richCheap = symbol.relatedSuffixFromFirstDot(".DTD.EQUITY.RICHCHEAP").doubles(bars); dtd = symbol.relatedSuffixFromFirstDot(".DTD.EQUITY").doubles(bars); stockPrice = symbol.relatedSuffixFromFirstDot(".UNADJSTOCKPRICE").doubles(bars); lengthZScore = parameter <int>("lengthZScore"); zScore = new ZScoreSpud(richCheap, lengthZScore, true); triggerLong = parameter <double>("triggerLong"); triggerShort = parameter <double>("triggerShort"); exitShort = parameter <double>("exitShortLevel"); exitLong = parameter <double>("exitLongLevel"); stopLoss = parameter <double>("stopLoss"); timeStopBars = parameter <double>("timeStopBars"); trailingStopFlag = parameter <double>("trailingStopFlag"); minPrice = parameter <double>("minPrice"); tradeSize = parameter <double>("tradeSize"); atr = new AverageTrueRangeEW(bars, parameter <int>("ATRLen")); trailingStop = 0; deactivate(() => dtd.hasContent() && richCheap.count() >= lengthZScore); addToPlot(dtd, "DTD", Color.Red, "dtd"); addToPlot(richCheap, "Rich / Cheap", Color.Blue, "richCheap"); }
public DTDRichCheapV2(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol) { requireOrdered("exitShortLevel", "triggerShort"); requireOrdered("triggerLong", "exitLongLevel"); requireOrdered("triggerLong", "exitShortLevel"); requireOrdered("exitLongLevel", "triggerShort"); if (!isActive()) { return; } richCheap = symbol.relatedSuffix("RICHCHEAP").doubles(bars); dtd = symbol.relatedSuffix("DTD").doubles(bars); spread = symbol.relatedSuffix("SPREAD").doubles(bars); lengthZScore = parameter <int>("lengthZScore"); zScore = new ZScoreSpud(richCheap, lengthZScore, true); dv01 = symbol.relatedSuffix("DV01").doubles(bars); triggerLong = parameter <double>("triggerLong"); triggerShort = parameter <double>("triggerShort"); exitShort = parameter <double>("exitShortLevel"); exitLong = parameter <double>("exitLongLevel"); stopLoss = parameter <double>("lossStopLevel"); timeStopBars = parameter <double>("timeStopBars"); trailingStopFlag = parameter <double>("trailingStopFlag"); maxSpread = parameter <double>("maxSpread"); profitObjectiveMultiple = parameter <double>("profitObjectiveMultiple"); trailingStop = 0; deactivate(() => dtd.hasContent() && richCheap.count() >= lengthZScore); addToPlot(dtd, "DTD", Color.Red, "dtd"); addToPlot(richCheap, "Rich / Cheap", Color.Blue, "richCheap"); }
public DTDRichCheap(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol) { requireOrdered("exitShortLevel", "triggerShort"); requireOrdered("triggerLong", "exitLongLevel"); requireOrdered("triggerLong", "exitShortLevel"); requireOrdered("exitLongLevel", "triggerShort"); if (!isActive()) { return; } richCheap = symbol.relatedSuffix("RICHCHEAP").doubles(bars); dtd = symbol.relatedSuffix("DTD").doubles(bars); lengthZScore = parameter <int>("lengthZScore"); zScore = new ZScoreSpud(richCheap, lengthZScore, true); triggerLong = parameter <double>("triggerLong"); triggerShort = parameter <double>("triggerShort"); exitShort = parameter <double>("exitShortLevel"); exitLong = parameter <double>("exitLongLevel"); stopLoss = parameter <double>("lossStopLevel"); deactivate(() => dtd.hasContent() && richCheap.count() >= lengthZScore); addToPlot(dtd, "DTD", Color.Red, "dtd"); addToPlot(richCheap, "Rich / Cheap", Color.Blue, "richCheap"); }
public CommodityCarry(QREBridgeBase bridge, Pair pair) : base(bridge, pair) { leftPrior = prior(pair.left).bars(bars[pair.left]); rightPrior = prior(pair.right).bars(bars[pair.right]); spread = new Minus(bars[pair.left].close, bars[pair.right].close); vol = new StdDeviationOfSample(spread, parameter <int>("volWindow")); cutoff = parameter <double>("payoutRatioCutoff"); payoutRatio = new RootSpud <double>(bridge.manager); }
public override void setUp() { base.setUp(); nextBarDate = date("2009/05/05"); if (arguments().runInNativeCurrency) { return; } fxSpud = bridge().fxRates.get(symbol()); fxSpud.enterTestMode(); }
public FXCarry(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol) { payoutRatio = payoutRatioSymbol(symbol).doubles(bars); atr = new AverageTrueRange(bars, 100); tradeSizeParameter = parameter <double>("TradeSize"); recoveryAmount = parameter <double>("RecoveryAmount") * tradeSizeParameter; recoveryPeriod = parameter <int>("RecoveryPeriod"); trigger = parameter <double>("Trigger"); maxTrigger = parameter <double>("MaxTrigger"); triggerCushion = parameter <double>("TriggerCushion"); addToPlot(payoutRatio, "payoutRatio", Color.Red, "payoutRatio"); bars.close.prepare(); stoppedOut(); }
public CouponSwap(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol) { //Set up signal data string tickerHeader; if (symbol.name.Substring(symbol.name.Length - 3, 3) == "TRS") { tickerHeader = symbol.name.Substring(0, 5); } else if (Regex.IsMatch(symbol.name, @"....\.\d")) { var tickerParts = symbol.name.Split(Convert.ToChar(".")); tickerHeader = (tickerParts[0] == "FNCL" ? "F" : "D"); tickerHeader = tickerHeader + tickerParts[1] + tickerParts[2]; tickerHeader = tickerHeader + tickerParts[3] + tickerParts[4]; } else { throw Bomb.toss("Bad symbol name, not able to figure out the signal data."); } modelPrice = new Symbol(tickerHeader + "MDL").doubles(bars); actualPrice = new Symbol(tickerHeader + "ACT").doubles(bars); rollDecimal = new Symbol(tickerHeader + "WRL").doubles(bars); rollTicks = new Times(rollDecimal, rollDecimal.manager.constant(32.0)); tradeSize = parameter <long>("TradeSize"); maxSize = parameter <long>("MaxPyramid") * tradeSize; entryTicks = parameter <double>("EntryTicks"); stopTicks = parameter <double>("StopTicks"); richCheap = new RichCheapSpud(modelPrice, actualPrice); longEntryCross = new CrossOverSpud <double>(richCheap, entryTicks); shortEntryCross = new CrossOverSpud <double>(richCheap, -entryTicks); longExitCross = new CrossOverSpud <double>(richCheap, parameter <double>("ExitTicks")); shortExitCross = new CrossOverSpud <double>(richCheap, -parameter <double>("ExitTicks")); longMA = new EWMA(richCheap, parameter <double>("HalfLife")); rollCutOff = parameter <double>("RollCutOff"); rollCutOffMargin = parameter <double>("RollCutOff.Margin"); longRollCross = new CrossOverSpud <double>(rollDecimal, -(rollCutOff - rollCutOffMargin) / 32); shortRollCross = new CrossOverSpud <double>(rollDecimal, (rollCutOff - rollCutOffMargin) / 32); //Add Plots addToPlot(modelPrice, "Model Price", Color.Red, "Coupon Swap"); addToPlot(actualPrice, "Actual Price", Color.Blue, "Coupon Swap"); addToPlot(rollTicks, "Weighted Roll", Color.Green, "Roll"); }
public LiqInjT(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol) { beta = symbol.relatedPrefix("LIB" + "10").doubles(bars); betaShort = symbol.relatedPrefix("LIO" + "10").doubles(bars); residual = symbol.relatedPrefix("LIV" + "10").doubles(bars); zScore = symbol.relatedPrefix("LIZ" + "10").doubles(bars, 0); tc = symbol.relatedPrefix("LIC" + "10").doublesNoLive(bars); acf = new EWAcf(zScore, parameter <double>("acfHalfLife"), parameter <int>("acfLag")); zScoreMin = parameter <double>("zScoreMin"); pScoreMin = parameter <double>("pScoreMin"); betaMin = parameter <double>("betaMin"); betaMax = parameter <double>("betaMax"); acfTrigger = parameter <double>("acfTrigger"); risk = parameter <long>("risk"); stopMultiple = parameter <double>("stopMultiple"); targetNetProfit = stopMultiple * risk; }
public LiqInj(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol) { version = symbol.name.Substring(3, 2); residual = symbol.relatedPrefix("PTV" + version).doubles(bars); tc = symbol.relatedPrefix("PTC" + version).doublesNoLive(bars); rSquare = symbol.relatedPrefix("PTR" + version).doubles(bars); hedge = symbol.relatedPrefix("PTH" + version).doubles(bars); scale = symbol.relatedPrefix("PTS" + version).doublesNoLive(bars, 0); var atrLength = parameter <int>("ATRLength"); nATR = parameter <double>("nATR"); if (nATR != 0 && atrLength != 0) { atr = new AverageTrueRange(bars, atrLength); } zScore = symbol.relatedPrefix("PTZ" + version).doubles(bars, 0); acf = new EWAcf(zScore, parameter <double>("acfHalfLife"), parameter <int>("acfLag")); zScoreMin = parameter <double>("zScoreMin"); pScoreMin = parameter <double>("pScoreMin"); rSquareMin = parameter <double>("rSquareMin"); hedgeSwitch = parameter <int>("hedgeSwitch"); hedgeMin = parameter <double>("hedgeMin"); hedgeMax = parameter <double>("hedgeMax"); acfTrigger = parameter <double>("acfTrigger"); scaleMin = parameter <double>("scaleMin"); startSize = parameter <long>("startSize"); stopMultiple = parameter <double>("stopMultiple"); bridge.manager.onLive += () => { if (startOfDayPosition != null) { livePosition = startOfDayPosition; } if (startOfDayTargetNetProfit.HasValue) { liveTargetNetProfit = startOfDayTargetNetProfit; } }; addToPlot(zScore, "zScore", Color.Red, "zScore"); }
public FXCarryV2(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol) { payoutRatioLong = payoutRatioSymbol(symbol, "Long").doubles(bars).allowStaleTicks(); payoutRatioShort = payoutRatioSymbol(symbol, "Short").doubles(bars).allowStaleTicks(); nATR = parameter <int>("nATR"); atrLen = parameter <int>("ATRLen"); atr = new AverageTrueRange(bars, atrLen); riskDollars = parameter <double>("RiskDollars"); bollingerBandBarsBack = parameter <int>("BollingerBandBarsBack"); ma = new Average(bars.close, bollingerBandBarsBack); bollingerBandDeviations = parameter <double>("BollingerBandDeviations"); trigger = parameter <double>("Trigger"); maxTrigger = parameter <double>("MaxTrigger"); triggerCushion = parameter <double>("TriggerCushion"); addToPlot(payoutRatioLong, "payoutRatioLong", Color.Red, "payoutRatioLong"); addToPlot(payoutRatioShort, "payoutRatioShort", Color.Red, "payoutRatioShort"); upperBand = new BollingerBand(bars.close, bollingerBandBarsBack, bollingerBandDeviations); lowerBand = new BollingerBand(bars.close, bollingerBandBarsBack, -bollingerBandDeviations); addToPlot(upperBand, "upperBand", Color.Blue); addToPlot(lowerBand, "lowerBand", Color.Blue); bars.close.prepare(); stoppedOut = true; }
public SymbolSpud <double> doublesNoLive(BarSpud spud, double defalt) { return(SymbolSpud <double> .doubles(this, spud, defalt, true)); }
public SymbolSpud <double> doubles(BarSpud spud, double defalt) { return(SymbolSpud <double> .doubles(this, spud, defalt)); }
public SymbolSpud <double> doubles(BarSpud spud) { return(SymbolSpud <double> .doubles(this, spud)); }
public SymbolSpud <Bar> bars(BarSpud spud) { return(SymbolSpud <Bar> .bars(this, spud)); }
public CdsSlippage(Symbol symbol, BarSpud bars) : base(symbol, bars) { spreads = symbol.relatedSuffix("SPREAD").doubles(bars); dv01 = symbol.relatedSuffix("DV01").doubles(bars); }