Skip to content

Commit

Permalink
Refactor all
Browse files Browse the repository at this point in the history
  • Loading branch information
LouisSzeto committed Sep 10, 2024
1 parent 4b17979 commit 8af18e0
Show file tree
Hide file tree
Showing 8 changed files with 393 additions and 458 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,10 @@ public override void OnData(Slice slice)
MarketOrder(highStrikeCall.Symbol, 10);
var freeMarginPostTrade = Portfolio.MarginRemaining;

AssertOptionStrategyIsPresent(OptionStrategyDefinitions.CallBackspread.Name, 5);
// It is a combination of bear call spread and long call (not a group)
AssertOptionStrategyIsPresent(OptionStrategyDefinitions.BearCallSpread.Name, 5);

// Should only involve the bear call spread part
var expectedMarginUsage = (highStrikeCall.Strike - lowStrikeCall.Strike) * Securities[highStrikeCall.Symbol].SymbolProperties.ContractMultiplier * 5;

if (expectedMarginUsage != Portfolio.TotalMarginUsed)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,10 @@ public override void OnData(Slice slice)
MarketOrder(lowStrikePut.Symbol, 10);
var freeMarginPostTrade = Portfolio.MarginRemaining;

AssertOptionStrategyIsPresent(OptionStrategyDefinitions.PutBackspread.Name, 5);
// It is a combination of bull put spread and long put
AssertOptionStrategyIsPresent(OptionStrategyDefinitions.BullPutSpread.Name, 5);

// Should only involve the bull put spread part
var expectedMarginUsage = (highStrikePut.Strike - lowStrikePut.Strike) * Securities[highStrikePut.Symbol].SymbolProperties.ContractMultiplier * 5;

if (expectedMarginUsage != Portfolio.TotalMarginUsed)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,11 @@ public override void OnData(Slice slice)
MarketOrder(highStrikeCall.Symbol, -10);
var freeMarginPostTrade = Portfolio.MarginRemaining;

AssertOptionStrategyIsPresent(OptionStrategyDefinitions.ShortCallBackspread.Name, 5);
// It is a combination of bull call spread and naked call
AssertOptionStrategyIsPresent(OptionStrategyDefinitions.BullCallSpread.Name, 5);
AssertOptionStrategyIsPresent(OptionStrategyDefinitions.NakedCall.Name, 5);

// Should only involve the naked call part
var security = Securities[highStrikeCall.Symbol];
var expectedMarginUsage = security.BuyingPowerModel.GetMaintenanceMargin(MaintenanceMarginParameters.ForQuantityAtCurrentPrice(security, -5)).Value;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,11 @@ public override void OnData(Slice slice)
MarketOrder(lowStrikePut.Symbol, -10);
var freeMarginPostTrade = Portfolio.MarginRemaining;

AssertOptionStrategyIsPresent(OptionStrategyDefinitions.ShortPutBackspread.Name, 5);
// It is a combination of bear put spread and naked put
AssertOptionStrategyIsPresent(OptionStrategyDefinitions.BearPutSpread.Name, 5);
AssertOptionStrategyIsPresent(OptionStrategyDefinitions.NakedPut.Name, 5);

// Should only involve the naked put part
var security = Securities[lowStrikePut.Symbol];
var expectedMarginUsage = security.BuyingPowerModel.GetMaintenanceMargin(MaintenanceMarginParameters.ForQuantityAtCurrentPrice(security, -5)).Value;

Expand Down
8 changes: 4 additions & 4 deletions Common/Securities/Option/OptionStrategies.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1177,7 +1177,7 @@ DateTime expiration

return new OptionStrategy
{
Name = OptionStrategyDefinitions.CallBackspread.Name,
Name = "Call Backspread",
Underlying = canonicalOption.Underlying,
CanonicalOption = canonicalOption,
OptionLegs = new List<OptionStrategy.OptionLegData>
Expand Down Expand Up @@ -1220,7 +1220,7 @@ DateTime expiration

return new OptionStrategy
{
Name = OptionStrategyDefinitions.PutBackspread.Name,
Name = "Put Backspread",
Underlying = canonicalOption.Underlying,
CanonicalOption = canonicalOption,
OptionLegs = new List<OptionStrategy.OptionLegData>
Expand Down Expand Up @@ -1252,7 +1252,7 @@ public static OptionStrategy ShortCallBackspread(
DateTime expiration
)
{
return InvertStrategy(CallBackspread(canonicalOption, lowerStrike, higherStrike, expiration), OptionStrategyDefinitions.ShortCallBackspread.Name);
return InvertStrategy(CallBackspread(canonicalOption, lowerStrike, higherStrike, expiration), "Short Call Backspread");
}

/// <summary>
Expand All @@ -1271,7 +1271,7 @@ public static OptionStrategy ShortPutBackspread(
DateTime expiration
)
{
return InvertStrategy(PutBackspread(canonicalOption, higherStrike, lowerStrike, expiration), OptionStrategyDefinitions.ShortPutBackspread.Name);
return InvertStrategy(PutBackspread(canonicalOption, higherStrike, lowerStrike, expiration), "Short Put Backspread");
}

/// <summary>
Expand Down
Loading

0 comments on commit 8af18e0

Please sign in to comment.