Lean  $LEAN_TAG$
IFactorProvider.cs
1 /*
2 * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
3 * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 *
15 */
16 
17 using System;
18 using System.Collections.Generic;
19 
21 {
22  /// <summary>
23  /// Providers price scaling factors for a permanent tick
24  /// </summary>
25  public interface IFactorProvider : IEnumerable<IFactorRow>
26  {
27  /// <summary>
28  /// Gets the symbol this factor file represents
29  /// </summary>
30  public string Permtick { get; }
31 
32  /// <summary>
33  /// The minimum tradeable date for the symbol
34  /// </summary>
35  /// <remarks>
36  /// Some factor files have INF split values, indicating that the stock has so many splits
37  /// that prices can't be calculated with correct numerical precision.
38  /// To allow backtesting these symbols, we need to move the starting date
39  /// forward when reading the data.
40  /// Known symbols: GBSN, JUNI, NEWL
41  /// </remarks>
42  public DateTime? FactorFileMinimumDate { get; set; }
43 
44  /// <summary>
45  /// Gets the price factor for the specified search date
46  /// </summary>
47  decimal GetPriceFactor(DateTime searchDate, DataNormalizationMode dataNormalizationMode, DataMappingMode? dataMappingMode = null, uint contractOffset = 0);
48  }
49 }