.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