.positions--table
%h5 Positions (#{positions.length})
%table.bordered
%thead
%tr
%th
%th.ticker
.a Stock
%th
.status
Status
%br
Expires on
%br
Strategy
%th.q Q
%th.strikes
Strike
%th.begin_price
.a Begin 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 '[sync]', sync_position_path(pos)
= 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.outer.begin_price
D #{pp_delta position.outer.begin_delta}
.begin-inner-price
= pp_amount position.inner.begin_price
D #{pp_delta position.inner.begin_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
.long-or-short-item
.end-outer-price
= pp_amount position.outer.end_price
D #{pp_delta position.outer.end_delta}
.end-inner-price
= pp_amount position.inner.end_price
D #{pp_delta position.inner.end_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.autonxt
.a
- if pos.autonxt
= link_to '[autonxt]', prepare2_position_path(pos.autonxt)
= pp_amount pos.autonxt.prev_gain_loss_amount
-# \=>
-# = pp_amount position.next_outcome * 100 * position.quantity rescue nil