Lean  $LEAN_TAG$
SerializedInsight.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 using Newtonsoft.Json;
17 using QuantConnect.Util;
18 using System;
19 
21 {
22  /// <summary>
23  /// DTO used for serializing an insight that was just generated by an algorithm.
24  /// This type does not contain any of the analysis dependent fields, such as scores
25  /// and estimated value
26  /// </summary>
27  public class SerializedInsight
28  {
29  private double _createdTime;
30 
31  /// <summary>
32  /// See <see cref="Insight.Id"/>
33  /// </summary>
34  public string Id { get; set; }
35 
36  /// <summary>
37  /// See <see cref="Insight.GroupId"/>
38  /// </summary>
39  public string GroupId { get; set; }
40 
41  /// <summary>
42  /// See <see cref="Insight.SourceModel"/>
43  /// </summary>
44  public string SourceModel { get; set; }
45 
46  /// <summary>
47  /// Pass-through for <see cref="CreatedTime"/>
48  /// </summary>
49  [Obsolete("Deprecated as of 2020-01-23. Please use the `CreatedTime` property instead.")]
50  public double GeneratedTime
51  {
52  get { return _createdTime; }
53  set { _createdTime = value; }
54  }
55 
56  /// <summary>
57  /// See <see cref="Insight.GeneratedTimeUtc"/>
58  /// </summary>
59  public double CreatedTime
60  {
61  get { return _createdTime; }
62  set { _createdTime = value; }
63  }
64 
65  /// <summary>
66  /// See <see cref="Insight.CloseTimeUtc"/>
67  /// </summary>
68  public double CloseTime { get; set; }
69 
70  /// <summary>
71  /// See <see cref="Insight.Symbol"/>
72  /// The symbol's security identifier string
73  /// </summary>
74  public string Symbol { get; set; }
75 
76  /// <summary>
77  /// See <see cref="Insight.Symbol"/>
78  /// The symbol's ticker at the generated time
79  /// </summary>
80  public string Ticker { get; set; }
81 
82  /// <summary>
83  /// See <see cref="Insight.Type"/>
84  /// </summary>
85  public InsightType Type { get; set; }
86 
87  /// <summary>
88  /// See <see cref="Insight.ReferenceValue"/>
89  /// </summary>
90  [JsonProperty("reference")]
91  public decimal ReferenceValue { get; set; }
92 
93  /// <summary>
94  /// See <see cref="Insight.ReferenceValueFinal"/>
95  /// </summary>
96  public decimal ReferenceValueFinal { get; set; }
97 
98  /// <summary>
99  /// See <see cref="Insight.Direction"/>
100  /// </summary>
101  public InsightDirection Direction { get; set; }
102 
103  /// <summary>
104  /// See <see cref="Insight.Period"/>
105  /// </summary>
106  public double Period { get; set; }
107 
108  /// <summary>
109  /// See <see cref="Insight.Magnitude"/>
110  /// </summary>
111  [JsonConverter(typeof(JsonRoundingConverter))]
112  public double? Magnitude { get; set; }
113 
114  /// <summary>
115  /// See <see cref="Insight.Confidence"/>
116  /// </summary>
117  [JsonConverter(typeof(JsonRoundingConverter))]
118  public double? Confidence { get; set; }
119 
120  /// <summary>
121  /// See <see cref="Insight.Weight"/>
122  /// </summary>
123  public double? Weight { get; set; }
124 
125  /// <summary>
126  /// See <see cref="InsightScore.IsFinalScore"/>
127  /// </summary>
128  public bool ScoreIsFinal { get; set; }
129 
130  /// <summary>
131  /// See <see cref="InsightScore.Magnitude"/>
132  /// </summary>
133  [JsonConverter(typeof(JsonRoundingConverter))]
134  public double ScoreMagnitude { get; set; }
135 
136  /// <summary>
137  /// See <see cref="InsightScore.Direction"/>
138  /// </summary>
139  [JsonConverter(typeof(JsonRoundingConverter))]
140  public double ScoreDirection { get; set; }
141 
142  /// <summary>
143  /// See <see cref="Insight.EstimatedValue"/>
144  /// </summary>
145  [JsonConverter(typeof(JsonRoundingConverter))]
146  public decimal EstimatedValue { get; set; }
147 
148  /// <summary>
149  /// See <see cref="Insight.Tag"/>
150  /// </summary>
151  public string Tag { get; set; }
152 
153  /// <summary>
154  /// Initializes a new default instance of the <see cref="SerializedInsight"/> class
155  /// </summary>
157  {
158  }
159 
160  /// <summary>
161  /// Initializes a new instance of the <see cref="SerializedInsight "/> class by copying the specified insight
162  /// </summary>
163  /// <param name="insight">The insight to copy</param>
164  public SerializedInsight(Insight insight)
165  {
166  Id = insight.Id.ToStringInvariant("N");
167  SourceModel = insight.SourceModel;
168  GroupId = insight.GroupId?.ToStringInvariant("N");
171  Symbol = insight.Symbol.ID.ToString();
172  Ticker = insight.Symbol.Value;
173  Type = insight.Type;
174  ReferenceValue = insight.ReferenceValue;
176  Direction = insight.Direction;
177  Period = insight.Period.TotalSeconds;
178  Magnitude = insight.Magnitude;
179  Confidence = insight.Confidence;
180  ScoreIsFinal = insight.Score.IsFinalScore;
181  ScoreMagnitude = insight.Score.Magnitude;
182  ScoreDirection = insight.Score.Direction;
183  EstimatedValue = insight.EstimatedValue;
184  Weight = insight.Weight;
185  Tag = insight.Tag;
186  }
187 
188  #region BackwardsCompatibility
189  [JsonProperty("group-id")]
190  string OldGroupId
191  {
192  set
193  {
194  GroupId = value;
195  }
196  }
197 
198  [JsonProperty("source-model")]
199  string OldSourceModel
200  {
201  set
202  {
203  SourceModel = value;
204  }
205  }
206 
207  [JsonProperty("generated-time")]
208  double OldGeneratedTime
209  {
210  set
211  {
212  GeneratedTime = value;
213  }
214  }
215 
216  [JsonProperty("created-time")]
217  public double OldCreatedTime
218  {
219  set
220  {
221  CreatedTime = value;
222  }
223  }
224 
225  [JsonProperty("close-time")]
226  public double OldCloseTime
227  {
228  set
229  {
230  CloseTime = value;
231  }
232  }
233 
234  [JsonProperty("reference-final")]
235  decimal OldReferenceValueFinal
236  {
237  set
238  {
239  ReferenceValueFinal = value;
240  }
241  }
242 
243  [JsonProperty("score-final")]
244  bool OldScoreIsFinal
245  {
246  set
247  {
248  ScoreIsFinal = value;
249  }
250  }
251 
252  [JsonProperty("score-magnitude")]
253  [JsonConverter(typeof(JsonRoundingConverter))]
254  double OldScoreMagnitude
255  {
256  set
257  {
258  ScoreMagnitude = value;
259  }
260  }
261 
262  [JsonProperty("score-direction")]
263  [JsonConverter(typeof(JsonRoundingConverter))]
264  double OldScoreDirection
265  {
266  set
267  {
268  ScoreDirection = value;
269  }
270  }
271 
272  [JsonProperty("estimated-value")]
273  [JsonConverter(typeof(JsonRoundingConverter))]
274  decimal OldEstimatedValue
275  {
276  set
277  {
278  EstimatedValue = value;
279  }
280  }
281  #endregion
282  }
283 }