| Overall Statistics |
|
Total Trades 338 Average Win 1.90% Average Loss -1.22% Compounding Annual Return 9.672% Drawdown 37.000% Expectancy 0.446 Net Profit 135.725% Sharpe Ratio 0.496 Loss Rate 43% Win Rate 57% Profit-Loss Ratio 1.56 Alpha 0.08 Beta 0.188 Annual Standard Deviation 0.185 Annual Variance 0.034 Information Ratio 0.136 Tracking Error 0.237 Treynor Ratio 0.488 Total Fees $5282.92 |
using QuantConnect.Indicators;
using System;
using System.Collections.Concurrent;
namespace QuantConnect
{
public class VolatilityEffect : QCAlgorithm
{
public readonly ConcurrentDictionary<Symbol, StandardDeviation> _symbolsData = new ConcurrentDictionary<Symbol, StandardDeviation>();
public int _month = 0;
public override void Initialize()
{
// backtest parameters
UniverseSettings.Leverage = 2.0m;
UniverseSettings.Resolution = Resolution.Daily;
SetStartDate(2008, 1, 1);
SetEndDate(DateTime.Now);
SetCash(100000);
AddUniverse( coarse =>
{
return
(
from cf in coarse
let std = _symbolsData.GetOrAdd(cf.Symbol, sym => new StandardDeviation(600))
where std.Update(cf.EndTime,cf.Price)
where cf.Price > 10.0m
orderby cf.DollarVolume descending
select cf.Symbol
).Take(100);
}
);
}
public override void OnData(Slice data)
{
if(Time.Month != _month)
{
_month = Time.Month;
foreach(var sym in Portfolio.Keys)
{
Liquidate(sym);
}
var leastVolatile = (from _symbol in data.Keys
orderby _symbolsData[_symbol]
select _symbol).Take(2);
foreach(var entry in leastVolatile)
{
SetHoldings(entry,0.5);
}
}
}
}
}