.positions--table
%h5 Positions
%table.bordered
%thead
%tr
%th
%th.ticker
.a Stock
%th
.status
Status
%br
Expires on
%br
Strategy
%th.q Q
%th.strikes
-# .a outer_strike, inner_strike
Strike
%th.begin_price
.a Begin outer price, delta
%th.max-loss Max Loss
%th.max-gain Max Gain
%th
.end_price End Price, delta
%th
.net Net Amount (%)
%th
.breakeven Breakeven
%th.should_rollp
.a should_rollp
%th.next_position
.a
next_symbol
%br
next_delta
%br
next_outcome
-# wtf caching issue?!
- positions.map &:id
%tbody
- positions.each_with_index do |position, idx|
- pos = position
- if idx > 0
- prev_position = positions[idx-1]
- if prev_position && position.expires_on != prev_position.expires_on
%tr
%td{ colspan: 18 }
-# %hr
.h-50px
-## tr
%tr{ class: [ position.strategy.kind, position.strategy.long_or_short ] }
%td.actions
= position.status
.d-flex
= button_to 'x', position_path(position), method: :delete, data: { confirm: 'Are you sure?' }
= link_to '[~]', edit_position_path(position)
= link_to '[dup]', duplicate_position_path(position)
.d-flex
= link_to '[re]', refresh_position_path(pos)
- if true # position.next_reasons.present? && position.rollp > 0.5
= link_to '[roll]', prepare_to_roll_position_path(pos)
%td.ticker
= position.stock.ticker
%br
= pp_amount position.stock.last
%td.status.strategy.w-200px
%b
= position.expires_on.to_datetime.strftime("%b %d")
[#{ ( position.expires_on.to_date - Time.now.to_date ).to_i } DTE]
%br
%i.fa.fa-compress.collapse-expand{ id: "ce-pos-reasons-#{position.id}" }
#{position.strategy}
= render '/iro/strategies/show', strategy: position.strategy
%td.q
#{position.quantity}
%td.strikes
.long-or-short-item
.outer-strike= pp_amount position.outer_strike
.inner-strike= pp_amount position.inner_strike
%td.begin_price
.long-or-short-item
.begin-outer-price
= pp_amount position.begin_outer_price
D #{pp_delta position.begin_outer_delta}
.begin-inner-price
= pp_amount position.begin_inner_price
D #{pp_delta position.begin_inner_delta}
%td
.max-loss= pp_amount position.max_loss * pos.q * 100, precision: 0
%td
.max-gain= pp_amount position.max_gain * pos.q * 100, precision: 0
.max-gainp
-# = pp_percent( -1 * position.max_gain / position.max_loss ) rescue '-' # undef. for covered calls
%td.end_price
.long-or-short-item
.end-outer-price
= pp_amount position.end_outer_price
D #{pp_delta position.end_outer_delta}
.end-inner-price
= pp_amount position.end_inner_price
D #{pp_delta position.end_inner_delta}
%td.net
.a= pp_amount position.net_amount * pos.q * 100, precision: 0 rescue '@TODO'
.a #{pp_percent position.net_amount / position.max_gain rescue '@TODO'}
%td.breakeven
= pp_amount pos.breakeven rescue '@TODO'
%td.should_rollp
#{pp_percent position.rollp, precision: 0}
%td.next_position
- if position.next_reasons.present?
%i.fa.fa-expand.collapse-expand{ id: "pos-reasons-#{position.id}" } reasons
= render '/iro/positions/reasons', reasons: position.next_reasons
.a= position.next_symbol
.a= position.next_delta
.a
= pp_amount position.next_mark
\=>
= pp_amount position.next_outcome * 100 * position.quantity rescue nil